summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2022-06-14 16:33:21 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2022-06-14 16:33:21 +1000
commit1f26ec6836364ef523aa4e375c63186bd8fe323f (patch)
tree883f691395a7fbe71865a624844942d28124d7a8
parent4a4b718bc9d32b4cd55a90762c960165be2f6043 (diff)
parent6741eca4d61627072710dc86f458f34a3acf7c5c (diff)
Merge remote-tracking branch 'upstream/master'
# Conflicts: # scripts/build/verinfo.py # scripts/resources/windows/mame/mame.rc # scripts/src/main.lua # src/mame/drivers/8080bw.cpp
-rw-r--r--docs/man/mess.61332
-rw-r--r--docs/source/usingmame/mamemenus.rst8
-rw-r--r--hash/megadriv.xml1578
-rw-r--r--hash/psx.xml258
-rw-r--r--hash/vgmplay.xml1792
-rw-r--r--hash/x37_flop.xml175
-rw-r--r--scripts/resources/windows/mame/mame.rc3
-rw-r--r--scripts/resources/windows/mess/mess.icobin372526 -> 0 bytes
-rw-r--r--scripts/resources/windows/mess/mess.man16
-rw-r--r--scripts/resources/windows/mess/mess.rc14
-rw-r--r--scripts/src/machine.lua22
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--scripts/target/mame/mess.lua7
-rw-r--r--src/devices/bus/ti99/peb/myarcfdc.cpp59
-rw-r--r--src/devices/bus/ti99/peb/myarcfdc.h3
-rw-r--r--src/devices/bus/ti99/peb/peribox.cpp18
-rw-r--r--src/devices/bus/ti99/peb/peribox.h6
-rw-r--r--src/devices/cpu/mips/r4000.cpp240
-rw-r--r--src/devices/cpu/mips/r4000.h29
-rw-r--r--src/devices/cpu/patinhofeio/patinho_feio.cpp9
-rw-r--r--src/devices/cpu/patinhofeio/patinhofeio_cpu.h4
-rw-r--r--src/devices/cpu/rw5000/b5000.cpp2
-rw-r--r--src/devices/cpu/rw5000/b6000.cpp2
-rw-r--r--src/devices/cpu/rw5000/b6100.cpp2
-rw-r--r--src/devices/machine/archimedes_keyb.cpp (renamed from src/mame/machine/archimedes_keyb.cpp)0
-rw-r--r--src/devices/machine/archimedes_keyb.h (renamed from src/mame/machine/archimedes_keyb.h)0
-rw-r--r--src/devices/machine/dp83932c.cpp88
-rw-r--r--src/devices/machine/dp83932c.h4
-rw-r--r--src/devices/machine/fm_scsi.cpp (renamed from src/mame/machine/fm_scsi.cpp)0
-rw-r--r--src/devices/machine/fm_scsi.h (renamed from src/mame/machine/fm_scsi.h)0
-rw-r--r--src/devices/machine/genpc.h3
-rw-r--r--src/emu/debug/debugcon.cpp4
-rw-r--r--src/frontend/mame/ui/inputopts.cpp9
-rw-r--r--src/frontend/mame/ui/miscmenu.cpp2
-rw-r--r--src/lib/formats/fs_oric_jasmin.cpp4
-rw-r--r--src/lib/formats/fs_prodos.cpp4
-rw-r--r--src/lib/formats/fs_vtech.cpp2
-rw-r--r--src/lib/formats/fsmgr.h2
-rw-r--r--src/mame/drivers/8080bw.cpp111
-rw-r--r--src/mame/drivers/compc.cpp120
-rw-r--r--src/mame/drivers/d9final.cpp15
-rw-r--r--src/mame/drivers/dotrikun.cpp8
-rw-r--r--src/mame/drivers/ds90.cpp66
-rw-r--r--src/mame/drivers/exidy.cpp22
-rw-r--r--src/mame/drivers/igs017.cpp4470
-rw-r--r--src/mame/drivers/macquadra700.cpp27
-rw-r--r--src/mame/drivers/namcos10.cpp15
-rw-r--r--src/mame/drivers/patinho_feio.cpp1
-rw-r--r--src/mame/drivers/punchout.cpp8
-rw-r--r--src/mame/drivers/pwrview.cpp20
-rw-r--r--src/mame/drivers/sderby.cpp575
-rw-r--r--src/mame/drivers/segas16b.cpp4
-rw-r--r--src/mame/drivers/segaufo.cpp13
-rw-r--r--src/mame/drivers/supstarf.cpp18
-rw-r--r--src/mame/drivers/system16.cpp4
-rw-r--r--src/mame/drivers/tickee.cpp307
-rw-r--r--src/mame/drivers/toaplan2.cpp49
-rw-r--r--src/mame/drivers/warpwarp.cpp72
-rw-r--r--src/mame/includes/8080bw.h19
-rw-r--r--src/mame/includes/sderby.h78
-rw-r--r--src/mame/layout/igsslot.lay132
-rw-r--r--src/mame/machine/igs022.cpp440
-rw-r--r--src/mame/machine/igs022.h27
-rw-r--r--src/mame/machine/pgmprot_igs025_igs022.cpp21
-rw-r--r--src/mame/mame.cpp4
-rw-r--r--src/mame/mame.lst20
-rw-r--r--src/mame/mess.cpp23
-rw-r--r--src/mame/mess.flt1
-rw-r--r--src/mame/video/igs017_igs031.cpp8
-rw-r--r--src/mame/video/sderby.cpp133
-rw-r--r--src/osd/modules/debugger/qt/deviceswindow.cpp2
71 files changed, 7273 insertions, 5263 deletions
diff --git a/docs/man/mess.6 b/docs/man/mess.6
deleted file mode 100644
index 07293db867f..00000000000
--- a/docs/man/mess.6
+++ /dev/null
@@ -1,1332 +0,0 @@
-.\" -*- nroff -*-
-.\"
-.\" mess.6
-.\"
-.\" Man page created from usage and source information:
-.\" * commands: see src/emu/clifront.c clifront.h
-.\" * options: core entries, see src/emu/emuopts.c emuopts.h
-.\" SDL-specific entries, see src/osd/sdl/sdlmain.c osdsdl.h
-.\" Cesare Falco <c.falco@ubuntu.com>, March 2011
-.\"
-.\" Some text borrowed from the xmame 0.106 man page,
-.\" done by Rene Herrmann <rene.herrmann@berlin.de>, September 2000
-.\" and updated by Andrew Burton <burtona@gol.com>, July 2003
-.\"
-.\" Other info's taken from MESS Wiki as well:
-.\" http://mess.redump.net
-.\"
-.\"
-.TH MESS 6 2015-05-20 0.162 "MESS \- Multi Emulator Super System"
-.\"
-.\"
-.\" NAME chapter
-.SH NAME
-MESS \- Multi Emulator Super System
-.\"
-.\"
-.\" SYNOPSIS chapter
-.SH SYNOPSIS
-.B mess
-.I system
-.RI [ "media software" ]
-.RI [ options ]
-.\"
-.\"
-.\" DESCRIPTION chapter
-.SH DESCRIPTION
-MESS documents the hardware for a wide variety of (mostly vintage) computers,
-video game consoles, and calculators through software emulation. As a nice
-side effect, MESS allows software and games for these hardware platforms
-to run on modern PCs.
-.\"
-.\"
-.\" SOFTWARE chapter
-.SH SOFTWARE
-A \fIsoftware\fR entry may be specified to attach an image file to the
-emulated system. In such a case, the appropriate \fImedia\fR switch
-is also required:
-.TP
-.B \-cart, \-cart1
-Cartrigde, used mainly by game consoles
-.TP
-.B \-cass
-Cassette (tape), widely used by old home computers
-.TP
-.B \-flop, -flop1
-Floppy disk
-.TP
-.B \-cdrom
-CD-Rom
-.\"
-.\"
-.\" OPTIONS chapter
-.SH OPTIONS
-.\"
-.\" *******************************************************
-.SS Core commands
-.\" *******************************************************
-.TP
-.B \-help, \-?
-Displays current MESS version and copyright notice.
-.TP
-.B \-validate, \-valid
-Performs internal validation on every driver in MESS. Run this
-before submitting changes to ensure that you haven't violated any of
-the core system rules.
-.\"
-.\" *******************************************************
-.SS Configuration commands
-.\" *******************************************************
-.TP
-.B \-createconfig, \-cc
-Creates the default \fBmess.ini\fR file in the current directory. All the
-configuration options (not commands) described below can be permanently
-changed by editing this configuration file.
-.TP
-.B \-showconfig, \-sc
-Displays the current configuration settings.
-.TP
-.B \-showusage, \-su
-Displays a summary of all the command line options. For options that
-are not mentioned here, the short summary given by \fB\-showusage\fR
-is usually sufficient.
-.\"
-.\" *******************************************************
-.SS Frontend commands
-.\" *******************************************************
-All the list commands below write info to the screen.
-If you wish to write the info to a textfile instead, use redirection.
-For example,
-.B mess \-listxml > ~/messlist.xml
-writes the full list of supported systems to \fBmesslist.xml\fR in your
-home directory.
-.TP
-.B \-listxml, \-lx \fR[\fIsystem\fR|\fIwildcard\fR]
-List comprehensive details for all of the supported systems. The output
-is quite long, so it is usually better to redirect this into a file.
-The output is in XML format. By default all systems are listed; however,
-you can limit this list by specifying a driver name or wildcard after
-the \-listxml command.
-.TP
-.B \-listfull, \-ll \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of system driver names and descriptions. By default all
-systems are listed; however, you can limit this list by specifying a
-driver name or wildcard after the \-listfull command.
-.TP
-.B \-listsource, \-ls \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of drivers and the names of the source files their system
-drivers live in. Useful for finding which driver a system runs on in
-order to fix bugs. By default all systems are listed; however, you can
-limit this list by specifying a driver name or wildcard after the
-\-listsource command.
-.TP
-.B \-listclones, \-lc \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of clones. By default all clones are listed; however,
-you can limit this list by specifying a driver name or wildcard after
-the \-listclones command.
-.TP
-.B \-listbrothers, \-lb \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of "brothers" or other drivers from same sourcefile.
-By default all systems are listed; however, you can limit this list by
-specifying a driver name or wildcard after the \-listbrothers command.
-.TP
-.B \-listcrc
-Displays a full list of CRCs of all ROM images referenced by all
-drivers within MESS code.
-.TP
-.B \-listroms, \-lr \fIsystem
-Displays a list of ROM images referenced by the specified system.
-.TP
-.B \-listsamples \fIsystem
-Displays a list of samples referenced by the specified system.
-.TP
-.B \-verifyroms \fR[\fIsystem\fR|\fIwildcard\fR]
-Checks for invalid or missing ROM images. By default all drivers that
-have valid ZIP files or directories in the rom path are verified;
-however, you can limit this list by specifying a driver name or
-wildcard after the \-verifyroms command.
-.TP
-.B \-verifysamples \fR[\fIsystem\fR|\fIwildcard\fR]
-Checks for invalid or missing samples. By default all drivers that
-have valid ZIP files or directories in the samplepath are verified;
-however, you can limit this list by specifying a driver name or
-wildcard after the \-verifyroms command.
-.TP
-.B \-romident
-Attempts to identify ROM files, if they are known to MESS, in the
-specified .zip file or directory. This command can be used to try and
-identify ROM sets taken from unknown boards. On exit, the errorlevel
-is returned as one of the following:
-.br
-\fB0\fR all files were identified
-.br
-\fB7\fR all files were identified except for some "non\-ROM" files
-.br
-\fB8\fR some files were identified
-.br
-\fB9\fR no files were identified
-.TP
-.B \-listdevices, \-ld
-Output the list of devices referenced by a given system or set of systems.
-.TP
-.B \-listslots, \-lslot
-Output the list of available slots and slot devices for the system.
-.TP
-.B \-listmedia, \-lm
-Output the list of available media for the system.
-.TP
-.B \-listsoftware, \-lsoft
-Output the list of known software for the system.
-.TP
-.B \-verifysoftware, \-vsoft \fR[\fIgamename\fR|\fIwildcard\fR]
-Checks for invalid or missing ROM images in your software lists.
-By default all drivers that have valid ZIP files or directories
-in the rompath are verified; however, you can limit this list by
-specifying a specific driver name or wildcard.
-.TP
-.B \-getsoftlist, \-glist
-Retrieve software list by name.
-.TP
-.B \-verifysoftlist, \-vlist \fR[\fIsoftwarelistname\fR]
-Checks a specified software list for missing ROM images if files exist
-for issued softwarelistname. By default, all drivers that have valid
-ZIP files or directories in the rompath are verified; however, you can
-limit this list by specifying a specific softwarelistname (without .XML).
-.TP
-.B \-listmidi, \-mlist
-List available MIDI I/O devices.
-.TP
-.B \-listnetwork, \-nlist
-List available network adapters.
-.\"
-.\" *******************************************************
-.SS Configuration options
-.\" *******************************************************
-.TP
-.B \-[no]readconfig, \-[no]rc
-Enables or disables the reading of the config files. When enabled
-(which is the default), MESS reads the following config files in order:
-.br
-1. \fBmess.ini\fR
-.br
-the main configuration file
-.br
-2. \fI[driver]\fB.ini\fR
-.br
-based on the source file name of the system driver
-.br
-3. \fBdebug.ini\fR, if the debugger is enabled
-.br
-4. \fBvector.ini\fR, for vector games only
-.br
-5. \fI[driver]\fB.ini\fR
-.br
-based on the source filename of the game driver
-.br
-6. \fI[parent]\fB.ini\fR
-.br
-for clones only, may be called recursively
-.br
-4. \fI[system]\fB.ini\fR
-.br
-note this sometimes resolves to the same of the source driver
-.P
-The settings in the later ini's override those in the earlier ini's.
-The default is ON (\-readconfig).
-.TP
-.B \-[no]writeconfig, \-[no]wc
-Write configuration to \fI[driver]\fR.ini on exit.
-Default is OFF (\-nowriteconfig).
-.\"
-.\" *******************************************************
-.SS Search path options
-.\" *******************************************************
-Be careful to use the path, directory and file options in
-mess.ini ONLY. Otherwise, the outcome may be unpredictable and not
-consistent across releases.
-.TP
-.B \-rompath, \-rp, \-biospath, \-bp \fIpathname
-Specifies a list of paths within which to find ROM or hard disk images.
-Multiple paths can be specified by separating them with semicolons.
-The default is 'roms' (that is, a directory 'roms' in the same directory
-as the MESS executable).
-.TP
-.B \-hashpath \fIpathname
-Specifies a list of paths within which to search for software hash files.
-Multiple paths can be specified by separating them with semicolons.
-The default is 'hash' (that is, a directory 'hash' in the same directory
-as the MESS executable).
-.TP
-.B \-samplepath, \-sp \fIpathname
-Specifies a list of paths within which to find sample files. Multiple
-paths can be specified by separating them with semicolons. The default
-is 'samples' (that is, a directory 'samples' in the same directory as
-the MESS executable).
-.TP
-.B \-artpath, \-artwork_directory \fIpathname
-Specifies a list of paths within which to find artwork files. Multiple
-paths can be specified by separating them with semicolons. The default
-is 'artwork' (that is, a directory 'artwork' in the same directory as
-the MESS executable).
-.TP
-.B \-ctrlrpath, \-ctrlr_directory \fIpathname
-Specifies a list of paths within which to find controller\-specific
-configuration files. Multiple paths can be specified by separating
-them with semicolons. The default is 'ctrlr' (that is, a
-directory 'ctrlr' in the same directory as the MESS executable).
-.TP
-.B \-inipath \fIpathname
-Specifies a list of paths within which to find .ini files. Multiple
-paths can be specified by separating them with semicolons. The default
-is '/etc/mess'.
-.TP
-.B \-fontpath \fIpathname
-Specifies a list of paths within which to find .bdf font files. Multiple
-paths can be specified by separating them with semicolons. The default
-is '.' (that is, search in the same directory as the MESS executable).
-.TP
-.B \-cheatpath \fIpathname
-Specifies a list of paths within which to find cheat files. Multiple
-paths can be specified by separating them with semicolons. The default
-is 'cheat' (that is, a directory 'cheat' in the same directory as
-the MESS executable).
-.TP
-.B \-crosshairpath \fIpathname
-Specifies a list of paths within which to find crosshair files. Multiple
-paths can be specified by separating them with semicolons. The default
-is 'crosshair' (that is, a directory 'crosshair' in the same directory as
-the MESS executable). If the Crosshair is set to default in the menu,
-MESS will look for system/cross#.png and then cross#.png in the
-specified path, where # is the player number. Failing that,
-MESS will use built\-in default crosshairs.
-.TP
-.B \-pluginspath \fIpathname
-Specifies a single path within which to find plugins. The default
-is 'plugins' (that is, a directory 'plugins' in the same directory as
-the MESS executable).
-.TP
-.B \-languagepath \fIpathname
-Specifies a single path within which to find language files. The default
-is 'language' (that is, a directory 'language' in the same directory as
-the MESS executable).
-.\"
-.\" *******************************************************
-.SS Output Directory Options
-.\" *******************************************************
-.TP
-.B \-cfg_directory \fIpathname
-Specifies a single directory where configuration files are stored.
-Configuration files store user configurable settings that are read at
-startup and written when MESS exits. The default is 'cfg' (that is,
-a directory 'cfg' in the same directory as the MESS executable). If this
-directory does not exist, it will be automatically created.
-.TP
-.B \-nvram_directory \fIpathname
-Specifies a single directory where NVRAM files are stored. NVRAM files
-store the contents of EEPROM and non\-volatile RAM (NVRAM) for systems
-which used this type of hardware. This data is read at startup and
-written when MESS exits. The default is 'nvram' (that is, a
-directory 'nvram' in the same directory as the MESS executable). If this
-directory does not exist, it will be automatically created.
-.TP
-.B \-input_directory \fIpathname
-Specifies a single directory where input recording files are stored.
-Input recordings are created via the \-record option and played back via
-the \-playback option. The default is 'inp' (that is, a directory 'inp'
-in the same directory as the MESS executable). If this directory
-does not exist, it will be automatically created.
-.TP
-.B \-state_directory \fIpathname
-Specifies a single directory where save state files are stored. Save
-state files are read and written either upon user request, or when using
-the \-autosave option. The default is 'sta' (that is, a directory 'sta'
-in the same directory as the MESS executable). If this directory does
-not exist, it will be automatically created.
-.TP
-.B \-snapshot_directory \fIpathname
-Specifies a single directory where screen snapshots are stored, when
-requested by the user. The default is 'snap' (that is, a directory 'snap'
-in the same directory as the MESS executable). If this directory
-does not exist, it will be automatically created.
-.TP
-.B \-diff_directory \fIpathname
-Specifies a single directory where hard drive differencing files are
-stored. Hard drive differencing files store any data that is written
-back to a hard disk image, in order to preserve the original image. The
-differencing files are created at startup when a system with a hard disk
-image. The default is 'diff' (that is, a directory 'diff' in the same
-directory as the MESS executable). If this directory does not exist,
-it will be automatically created.
-.TP
-.B \-comment_directory \fIpathname
-Specifies a single directory where debugger comment files are stored.
-Debugger comment files are written by the debugger when comments are
-added to the disassembly for a system. The default is 'comments' (that is,
-a directory 'comments' in the same directory as the MESS executable).
-If this directory does not exist, it will be automatically created.
-.\"
-.\" *******************************************************
-.SS State/playback options
-.\" *******************************************************
-.TP
-.B \-state \fIslot
-Immediately after starting the specified system, will cause the save
-state in the specified \fIslot\fP to be loaded.
-.TP
-.B \-[no]autosave
-When enabled, automatically creates a save state file when exiting MESS
-and automatically attempts to reload it when later starting MESS with
-the same system. This only works for systems that have explicitly enabled
-save state support in their driver. The default is OFF (\-noautosave).
-.TP
-.B \-playback, \-pb \fIfilename
-Specifies a file from which to play back a series of system inputs. This
-feature does not work reliably for all systems, but can be used to watch
-a previously recorded system session from start to finish. In order to
-make things consistent, you should only record and playback with all
-configuration (.cfg), NVRAM (.nv), and memory card files deleted. The
-default is NULL (no playback).
-.TP
-.B \-[no]exit_after_playback
-If play back is enabled (see \-playback option) the program exits when
-end of file is reached. Otherwise the machine will continue to run.
-Default is OFF (\-noexit_after_playback).
-.TP
-.B \-record, \-rec \fIfilename
-Specifies a file to record all input from a system session. This can be
-used to record a system session for later playback. This feature does not
-work reliably for all systems, but can be used to watch a previously
-recorded system session from start to finish. In order to make things
-consistent, you should only record and playback with all configuration
-(.cfg), NVRAM (.nv), and memory card files deleted. The default is NULL
-(no recording).
-.TP
-.B \-[no]record_timecode
-Specify whether to create a timecode file. It contains a line with elapsed
-times on each press of timecode shortcut key (default is F12).
-This option works only when recording mode is enabled (\-record option).
-The file is saved on inp folder.
-Default is OFF (\-norecord_timecode).
-.TP
-.B \-mngwrite \fIfilename
-Writes each video frame to the given file in MNG format, producing
-an animation of the system session.
-Note that \-mngwrite only writes video frames; it does not save any audio
-data. Use \-wavwrite for that, and reassemble the audio/video using
-offline tools. The default is NULL (no recording).
-.TP
-.B \-aviwrite \fIfilename
-Stream video and sound data to the given file
-in AVI format, producing an animation of the system session complete
-with sound. The default is NULL (no recording).
-.TP
-.B \-wavwrite \fIfilename
-Writes the final mixer output to the given file
-in WAV format, producing an audio recording of the system session.
-The default is NULL (no recording).
-.TP
-.B \-snapname \fIstring
-Describes how MESS should name files for snapshots. \fIstring\fP
-provides a template that is used to generate a filename. Three
-simple substitutions are provided: the / character represents the
-path separator on any target platform (even Windows); the literal \fB%g\fP
-represents the driver name of the current system; and the literal \fB%i\fP
-represents an incrementing index. If \fB%i\fP is omitted, then each
-snapshot taken will overwrite the previous one; otherwise, MESS will
-find the next empty value for \fB%i\fP and use that for a filename. The
-default is \fB%g/%i\fP, which creates a separate folder for each system,
-and names the snapshots under it starting with 0000 and increasing
-from there. In addition to the above, for drivers using different
-media, like carts or floppy disks, you can also use the
-\fB%d\fP\fI_[media]\fP indicator. Replace \fI[media]\fP with the media
-switch you want to use. A few examples: if you use
-.B mess nes \-cart robby \-snapname %g/%d_cart
-snapshots will be saved as \fBsnaps/nes/robby.png\fP; if you use
-.B mess c64 \-flop1 robby \-snapname %g/%d_flop1/%i
-snapshots will be saved as \fBsnaps/c64/robby/0000.png\fP.
-.TP
-.B \-snapsize \fIwidth\fRx\fIheight
-Hard\-codes the size for snapshots and movie recording. By default,
-MESS will create snapshots at the system's current resolution in raw
-pixels, and will create movies at the system's starting resolution in
-raw pixels. If you specify this option, then MESS will create both
-snapshots and movies at the size specified, and will bilinear filter
-the result. Note that this size does not automatically rotate if the
-system is vertically oriented. The default is 'auto'.
-.TP
-.B \-snapview internal\fR|\fBauto\fR|\fIviewname
-Specifies the view to use when rendering snapshots and movies. By
-default, both use a special 'internal' view, which renders a separate
-snapshot per screen or renders movies only of the first screen. By
-specifying this option, you can override this default behavior and
-select a single view that will apply to all snapshots and movies.
-Note that \fIviewname\fP does not need to be a perfect match; rather, it
-will select the first view whose name matches all the characters
-specified by \fIviewname\fP. For example, \-snapview native will match the
-"Native (15:14)" view even though it is not a perfect match.
-\fIviewname\fP can also be 'auto', which selects the first view with all
-screens present. The default value is 'internal'.
-.TP
-.B \-[no]snapbilinear
-Specify whether snapshot/movie should have bilinear filtering applied.
-Default is ON (\-snapbilinear).
-.TP
-.B \-statename \fIstring
-Describes how MESS should store save state files, relative to the
-state_directory path. \fIstring\fP provides a template that
-is used to generate a relative path. Two simple substitutions are
-provided: the / character represents the path separator on any target
-platform (even Windows); the literal \fB%g\fP represents the driver name of
-the current game. The default is '%g', which creates a separate folder
-for each game. In addition to the above, for drivers using different
-media, like carts or floppy disks, you can also use the
-\fB%d_\fP\fI[media]\fP indicator. Replace \fI[media]\fP with the media
-switch you want to use. A few examples: if you use
-.B mess nes \-cart robby \-statename %g/%d_cart
-save states will be stored inside \fBsta/nes/robby/\fP; if you use
-.B mess c64 \-flop1 robby \-statename %g/%d_flop1
-save states will be stored inside \fBsta/c64/robby/\fP.
-.TP
-.B \-[no]burnin
-Tracks brightness of the screen during play and at the end of
-emulation generates a PNG that can be used to simulate burn\-in
-effects on other systems. The resulting PNG is created such that the
-least\-used areas of the screen are fully white (since burned\-in areas
-are darker, all other areas of the screen must be lightened a touch).
-The intention is that this PNG can be loaded via an artwork file with
-a low alpha (e.g, 0.1\-0.2 seems to work well) and blended over the
-entire screen. The PNG files are saved in the snap directory under
-the system/burnin\-<screen.name>.png. The default is OFF (\-noburnin).
-.\"
-.\" *******************************************************
-.SS Performance options
-.\" *******************************************************
-.TP
-.B \-[no]autoframeskip, \-[no]afs
-Automatically determines the frameskip level while you're playing the
-system, adjusting it constantly in a frantic attempt to keep the system
-running at full speed. Turning this on overrides the value you have set
-for \-frameskip below. The default is OFF (\-noautoframeskip).
-.TP
-.B \-frameskip, \-fs \fIvalue
-Specifies the frameskip value (autoframeskip must be disabled). This is the
-number of frames out of every 12 to drop when running. For example, if you
-say \-frameskip 2, then MESS will display 10 out of every 12 frames. By
-skipping those frames, you may be able to get full speed in a system that
-requires more horsepower than your computer has. The default value is 0,
-which skips no frames.
-.TP
-.B \-seconds_to_run, \-str \fIvalue
-This option can be used for benchmarking and automated testing. It tells
-MESS to stop execution after a fixed number of seconds. By combining
-this with a fixed set of other command line options, you can set up a
-consistent environment for benchmarking MESS performance. In addition,
-upon exit, the \-str option will write a screenshot called final.png
-to the system's snapshot directory.
-.TP
-.B \-[no]throttle
-Configures the default thottling setting. When throttling is on, MESS
-attempts to keep the system running at the system's intended speed. When
-throttling is off, MESS runs the system as fast as it can. Note that the
-fastest speed is more often than not limited by your graphics card,
-especially for older systems. The default is ON (\-throttle).
-.TP
-.B \-[no]sleep
-Allows MESS to give time back to the system when running with \-throttle.
-This allows other programs to have some CPU time, assuming that the
-system isn't taxing 100% of your CPU resources. This option can potentially
-cause hiccups in performance if other demanding programs are running.
-The default is ON (\-sleep).
-.TP
-.B \-speed \fIvalue
-Controls the speed of gameplay, relative to realtime; smaller numbers are
-slower. Default is 1.00.
-.TP
-.B \-[no]refreshspeed, \-[no]rs
-Automatically adjusts the \fB\-speed\fR parameter to keep the effective refresh
-rate below that of the lowest screen refresh rate.
-Default is OFF (\-norefreshspeed).
-.\"
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" OS specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-numprocessors, \-np \fIvalue
-Set number of processors; this overrides the number the system reports.
-.TP
-.B \-bench \fIvalue
-Benchmark for the given number of emulated seconds;
-implies \-video none \-sound none \-nothrottle.
-.\"
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-[no]sdlvideofps
-Show SDL video performance. Default is OFF (\-nosdlvideofps).
-.\"
-.\" *******************************************************
-.SS Rotation options
-.\" *******************************************************
-.TP
-.B \-[no]rotate
-Rotate the system to match its normal state (horizontal/vertical). This
-ensures that both vertically and horizontally oriented systems show up
-correctly without the need to rotate your monitor. If you want to keep
-the system displaying 'raw' on the screen the way the actual machine would
-have, turn this option off. The default is ON (\-rotate).
-.TP
-.B \-[no]ror \-[no]rol
-Rotate the system screen to the right (clockwise) or left
-(counter\-clockwise) relative to either its normal state (if \-rotate
-is specified) or its native state (if \-norotate is specified).
-Default for both is OFF (\-noror \-norol).
-.TP
-.B \-[no]autoror \-[no]autorol
-These options are designed for use with pivoting screens that only
-pivot in a single direction. If your screen only pivots clockwise,
-use \-autorol to ensure that the system will fill the screen either
-horizontally or vertically in one of the directions you can handle.
-If your screen only pivots counter\-clockwise, use \-autoror.
-Default for both is OFF (\-noautoror \-noautorol).
-.TP
-.B \-[no]flipx \-[no]flipy
-Flip (mirror) the system screen either horizontally (\-flipx) or
-vertically (\-flipy). The flips are applied after the \-rotate and
-\-ror/\-rol options are applied.
-Default for both is OFF (\-noflipx \-noflipy).
-.\"
-.\" *******************************************************
-.SS Artwork options
-.\" *******************************************************
-.TP
-.B \-[no]artwork_crop, \-[no]artcrop
-Enable cropping of artwork to the system screen area only. This
-option can also be controlled via the Video Options menu in the user
-interface. The default is OFF (\-noartwork_crop).
-.TP
-.B \-[no]use_backdrops, \-[no]backdrop
-Enables/disables the display of backdrops. The default is ON
-(\-use_backdrops).
-.TP
-.B \-[no]use_overlays, \-[no]overlay
-Enables/disables the display of overlays. The default is ON
-(\-use_overlays).
-.TP
-.B \-[no]use_bezels, \-[no]bezel
-Enables/disables the display of bezels. The default is ON
-(\-use_bezels).
-.TP
-.B \-[no]use_cpanels, \-[no]cpanel
-Enables/disables the display of cpanels. The default is ON
-(\-use_bezels).
-.TP
-.B \-[no]use_marquees, \-[no]marquee
-Enables/disables the display of marquees. The default is ON
-(\-use_bezels).
-.\"
-.\" *******************************************************
-.SS Screen options
-.\" *******************************************************
-.TP
-.B \-brightness \fIvalue
-Controls the default brightness, or black level, of the system screens.
-This option does not affect the artwork or other parts of the display.
-Using the MESS UI, you can individually set the brightness for each system
-screen; this option controls the initial value for all visible system
-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.
-.TP
-.B \-contrast \fIvalue
-Controls the contrast, or white level, of the system screens. This option
-does not affect the artwork or other parts of the display. Using the
-MESS UI, you can individually set the contrast for each system screen;
-this option controls the initial value for all visible system 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.
-.TP
-.B \-gamma \fIvalue
-Controls the gamma, which produces a potentially nonlinear black to
-white ramp, for the system screens. This option does not affect the
-artwork or other parts of the display. Using the MESS UI, you can
-individually set the gamma for each system screen; this option controls
-the initial value for all visible system 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,
-while selecting higher values (up to 3.0) will push the nonlinearity
-toward white. The default is 1.0.
-.TP
-.B \-pause_brightness \fIvalue
-This controls the brightness level when MESS is paused. The default
-value is 0.65.
-.TP
-.B \-effect\fR [\fInone\fR|\fIfilename[.png]\fR]
-Name of a PNG file to use for visual effects, or 'none'. Default is 'none'.
-.\"
-.\" *******************************************************
-.SS Vector rendering options
-.\" *******************************************************
-.TP
-.B \-beam_width_min \fIvalue
-.TP
-.B \-beam_width_max \fIvalue
-Sets the minimum and maximum width of the vectors. This is a scaling factor
-against the standard vector width, which is interpolated between minimum and
-maximum according to the beam's intensity. A value of 1.0 will keep the
-default vector line width. Smaller values will reduce the width, and larger
-values will increase the width. The default is 1.0.
-.TP
-.B \-beam_intensity_weight \fIvalue
-Applies an exponential weight to the minimum and maximum beam width. For
-positive values the interpolated scaling factor will affect lines with higher
-intensity more than lines with lower intensity. The default is 0.0.
-.TP
-.B \-flicker \fIvalue
-Simulates a vector "flicker" effect, similar to a vector monitor that
-needs adjustment. This option requires a float argument in the range of
-0.00\-100.00 (0=none, 100=maximum). The default is 0.
-.\"
-.\" *******************************************************
-.SS Video options
-.\" *******************************************************
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-video\fR [\fIsoft\fR|\fIopengl\fR|\fIbgfx\fR|\fInone\fR]
-Specifies which video subsystem to use for drawing:
-.br
-\fBsoft\fR uses software rendering, which is slower but more compatible.
-.br
-\fBopengl\fR uses OpenGL and your graphics accelerator to speed up many
-aspects of drawing MAME including compositing artwork, overlays, and
-bezels, as well as stretching the image to fit your screen.
-.br
-\fBbgfx\fR uses the bgfx renderer which supports portable shaders and
-multiple graphics APIs including OpenGL, OpenGL ES and DirectX.
-.br
-\fBnone\fR does no drawing and is intended for CPU benchmarking.
-.br
-Default is 'soft' on Linux or 'opengl' on macOS.
-.TP
-.B \-numscreens \fR[\fI1-4\fR]
-Number of screens to create; usually, you want just one. Default is '1'.
-.TP
-.B \-[no]window, \-[no]w
-Run MESS in either full screen or a window. This is a fully\-featured window
-mode where the window resizes as necessary to track what the system does.
-And you can resize it yourself with your OS's standard window controls.
-The default is OFF (\-nowindow).
-.TP
-.B \-[no]maximize, \-[no]max
-Controls initial window size in windowed mode. If it is set on, the
-window will initially be set to the maximum supported size when you
-start MESS. If it is turned off, the window will start out at the
-smallest supported size. This option only has an effect when the
-\-window option is used. The default is ON (\-maximize).
-.TP
-.B \-[no]keepaspect, \-[no]ka
-Forces the correct aspect ratio. This means when you're resizing the window
-in windowed mode the actual system image will resize in discrete steps to
-maintain the proper shape of the system graphics. If you turn this off you can
-resize the window to anything you like and get funny squishing and stretching.
-The same applies for full\-screen. Default is ON (\-keepaspect).
-.TP
-.B \-[no]unevenstretch, \-[no]ues
-Allow non\-integer stretch factors. Video purists should stay far, far away
-from this option, while everyone else will be happy to know that it lets you
-fill the screen properly in full\-screen mode. Default is ON (\-unevenstretch).
-.TP
-.B \-[no]unevenstretchx, \-[no]uesx
-Act as \-[no]unevenstretch on horizontal basis only.
-.TP
-.B \-[no]intoverscan, \-[no]ios
-Allow overscan on integer scaled targets.
-.TP
-.B \-intscalex, \-sx
-Set horizontal integer scale factor.
-.TP
-.B \-intscaley, \-sy
-Set vertical integer scale factor.
-.TP
-.B \-[no]centerh
-Center horizontally within the view area. Default is ON (\-centerh).
-.TP
-.B \-[no]centerv
-Center vertically within the view area. Default is ON (\-centerv).
-.TP
-.B \-[no]waitvsync, \-[no]vs
-Enable waiting for the start of VBLANK before flipping screens;
-reduces tearing effects. Default is OFF (\-nowaitvsync).
-.TP
-.B \-[no]syncrefresh, \-[no]srf
-Enable using the start of VBLANK for throttling instead of the game time.
-Default is OFF (\-nosyncrefresh).
-.\"
-.\" *******************************************************
-.SS Software video rendering subsystem options
-.\" *******************************************************
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.B NOTE:
-All the options in this group are available only with softare video
-rendering subsystem, i.e \fB\-video soft\fR.
-.TP
-.B \-prescale\fR [\fIvalue\fR]
-Scale screen rendering by this amount in software. Default is 1.
-.TP
-.B \-scalemode, \-sm \fR[\fInone\fR|\fIasync\fR|\fIyv12\fR|\fIyuy2\fR|\fIyv12x2\fR|\fIyuy2x2\fR]
-Hardware scaling mode.
-.br
-\fBnone\fR use software rendering.
-.br
-\fBasync\fR async overlay.
-.br
-\fByv12\fR yv12 overlay.
-.br
-\fByuy2\fR yuy2 overlay.
-.br
-\fByv12x2\fR yv12 overlay using x2 prescaling.
-.br
-\fByuy2x2\fR yuy2 overlay using x2 prescaling.
-.br
-Default is NONE.
-.\"
-.\" *******************************************************
-.SS OpenGL video rendering subsystem options
-.\" *******************************************************
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.B NOTE:
-All the options in this group are available only with OpenGL video
-rendering subsystem, i.e \fB\-video opengl\fR.
-.TP
-.B \-[no]filter, \-[no]glfilter, \-[no]flt
-Enable bilinear filtering on screen output. Default is ON (\-filter).
-.TP
-.B \-prescale\fR [\fIvalue\fR]
-Scale screen rendering by this amount in software. Default is 1.
-.TP
-.B \-[no]gl_forcepow2texture
-Force power of two textures. Default is OFF (\-nogl_forcepow2texture).
-.TP
-.B \-[no]gl_notexturerect
-Don't use OpenGL GL_ARB_texture_rectangle. Turn off if
-corruption occurs in OpenGL mode, at cost of some performance
-loss. Default is ON (\-gl_notexturerect).
-.TP
-.B \-[no]gl_vbo
-Enable OpenGL VBO, if available, for a performance increase.
-Turn off if corruption occurs. Default is ON (\-gl_vbo).
-.TP
-.B \-[no]gl_pbo
-Enable OpenGL PBO, if available, for a performance increase.
-Turn off if corruption occurs. Default is ON (\-gl_pbo).
-.TP
-.B \-[no]gl_glsl
-Enable OpenGL GLSL, if available, for a performance increase.
-Default is OFF (\-nogl_glsl).
-.TP
-.B \-gl_glsl_filter \fIvalue
-Enable OpenGL GLSL filtering instead of FF filtering 0=plain, 1=bilinear.
-Default is 1: bilinear.
-.TP
-.BR \-glsl_shader_mame[0\-9]
-Preferred custom OpenGL GLSL shader set mame bitmap (from 0 to 9).
-.TP
-.BR \-glsl_shader_screen[0\-9]
-Preferred custom OpenGL GLSL shader screen bitmap (from 0 to 9).
-.TP
-.B \-gl_glsl_vid_attr
-Enable OpenGL GLSL handling of brightness and contrast. Better RGB system
-performance for free. Default is ON.
-.TP
-.B \-screen
-Explicit name for all screens; 'auto' here will try to make a best guess.
-.TP
-.B \-aspect, \-screen_aspect
-Aspect ratio for all screens; 'auto' here will try to make a best guess.
-.TP
-.B \-resolution, \-r
-Preferred resolution for all screens;
-format is \fIwidth\fRx\fIheight\fR[@\fIrefreshrate\fR] or 'auto'.
-.TP
-.B \-view
-Preferred view for all screens
-.TP
-.B \-screen[0\-3]
-Explicit name of the first|second|third|fourth screen; 'auto' here will try
-to make a best guess.
-.TP
-.B \-aspect[0\-3]
-Aspect ratio of the first|second|third|fourth screen; 'auto' here will try
-to make a best guess.
-.TP
-.B \-resolution[0\-3], \-r[0\-3]
-Preferred resolution for the first|second|third|fourth screen;
-format is \fIwidth\fRx\fIheight\fR[@\fIrefreshrate\fR] or 'auto'.
-.TP
-.B \-view[0\-3]
-Preferred view for the first|second|third|fourth screen.
-.\"
-.\" *******************************************************
-.SS BGFX post\-processing options
-.\" *******************************************************
-.B NOTE:
-All the options in this group are available only when BGFX video
-post\-processing is enabled, i.e \fB\-video bgfx\fR. For full info on BGFX
-please visit official MAME documentation page:
-.br
-http://docs.mamedev.org/advanced/bgfx.html
-.TP
-.B \-bgfx_path \fIpathname
-This is where your BGFX shader files are stored.
-The default is 'bgfx' (that is, a directory "bgfx" in the same directory
-as the MESS executable).
-.TP
-.B \-bgfx_backend \fIauto\fR|\fIopengl\fR
-Selects a rendering backend for BGFX to use. The default is 'auto',
-which will let MESS choose the best selection for you.
-.TP
-.B \-bgfx_debug
-Enables BGFX debugging features. Most users will not need to use this.
-.TP
-.B \-bgfx_screen_chains \fIdefault\fR|\fIunfiltered\fR|\fIhlsl\fR[,...]
-This dictates how to handle BGFX rendering on a per\-display basis.
-For each display specify one of the possible choices:
-.br
-\fBdefault\fR default bilinear filterered output
-.br
-\fBunfiltered\fR nearest neighbor unfiltered output
-.br
-\fBhlsl\fR HLSL display simulation through shaders
-.br
-Separate directives for each window with a comma (,) and for each physical
-screen with a colon (:). For example, for an emulated game with 3 displays
-emulated on 3 windows on your monitor,
-.B \-bgfx_screen_chains default,unfiltered,default
-specifies to apply default filter on what is been rendered on the first
-and third window and leave the content of the second window unfiltered.
-.TP
-.B \-bgfx_shadow_mask \fIfilename
-This specifies the shadow mask effect PNG file. Default is 'slot-mask.png'.
-.TP
-.B \-bgfx_avi_name \fIfilename
-This specifies a filename for BGFX output logging.
-.\"
-.\" *******************************************************
-.SS Full screen options
-.\" *******************************************************
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-[no]switchres
-Affects full screen mode only. Chooses if MESS can try to change the screen
-resolution (color depth is normally left alone) when in full\-screen mode. If
-it's off, you always get your desktop resolution in full\-screen mode (which can
-be useful for LCDs). Default is OFF (\-noswitchres).
-.TP
-.B \-[no]useallheads
-Split full screen image across monitors. Default is OFF (\-nouseallhead).
-.\"
-.\" *******************************************************
-.SS Sound options
-.\" *******************************************************
-.TP
-.B \-sound\fR [\fIsdl\fR|\fIportaudio\fR|\fIcoreaudio\fR|\fIdsound\fR|\fIxaudio2\fR|\fInone\fR]
-Specifies which sound subsystem to use for audio output:
-.br
-\fBsdl\fR uses the Simple DirectMedia Layer audio output system
-(not available on Windows by default).
-.br
-\fBportaudio\fR uses the PortAudio library which supports low-latency
-output and multiple audio APIs.
-.br
-\fBcoreaudio\fR uses the Core Audio API which supports low-latency
-output and AudioUnit effects (only available on macOS).
-.br
-\fBdsound\fR uses the DirectSound API (only available on Windows).
-.br
-\fBxaudio2\fR uses the XAudio2 API which supports low-latency output
-(only available on Windows).
-.br
-\fBnone\fR produces no audio output.
-.br
-Default is 'dsound' on Windows, 'coreaudio' on macOS or 'sdl' on other
-platforms.
-.TP
-.B \-samplerate, \-sr \fIvalue
-Sets the audio sample rate. Smaller values (e.g. 11025) cause lower
-audio quality but faster emulation speed. Higher values (e.g. 48000)
-cause higher audio quality but slower emulation speed. The default is
-48000.
-.TP
-.B \-[no]samples
-Use samples if available. The default is ON (\-samples).
-.TP
-.B \-[no]compressor
-Enable audio compressor. It temporarily reduces the overall volume when
-the audio output is overdriven. The default is ON (\-compressor).
-.TP
-.B \-volume, \-vol \fIvalue
-Sets the startup volume. It can later be changed with the user interface
-(see Keys section). The volume is an attenuation in dB:
-for example, '\-volume \-12' will start with \-12dB attenuation.
-The default is 0.
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-audio_latency \fIvalue
-This controls the amount of latency built into the audio streaming.
-The exact behavior depends on the selected audio output module (see
-the \-sound option). Smaller values provide less audio delay while
-requiring better system performance. Higher values increase audio
-delay but may help avoid buffer under-runs and audio interruptions.
-The default is 1.
-.\"
-.\" *******************************************************
-.SS Input options
-.\" *******************************************************
-.TP
-.B \-[no]coin_lockout, \-[no]coinlock
-Enables simulation of the "coin lockout" feature that is implemented
-on a number of arcade game PCBs. It was up to the operator whether or not
-the coin lockout outputs were actually connected to the coin
-mechanisms. If this feature is enabled, then attempts to enter a coin
-while the lockout is active will fail and will display a popup message
-in the user interface. If this feature is disabled, the coin lockout
-signal will be ignored. The default is ON (\-coin_lockout).
-.TP
-.B \-ctrlr \fIcontroller
-Enables support for special controllers. Configuration files are
-loaded from the ctrlrpath. They are in the same format as the .cfg
-files that are saved, but only control configuration data is read
-from the file. The default is NULL (no controller file).
-.TP
-.B \-[no]mouse
-Controls whether or not MESS looks for a mouse controller to use. Note
-that in many cases, lightguns are treated as mice by the operating
-system, so you may need to enable this to enable lightgun support. When
-this is enabled, you will not be able to use your mouse while running
-MESS. If you want to get control of your computer back, you will need
-to either pause MESS or quit. The default is OFF (\-nomouse).
-.TP
-.B \-[no]joystick, \-[no]joy
-Controls whether or not MESS looks for joystick/gamepad controllers.
-The default is ON (\-joystick).
-.TP
-.B \-[no]lightgun, \-[no]gun
-Controls whether or not MESS makes use of lightgun controllers.
-Note that most lightguns map to the mouse, so using \-lightgun and
-\-mouse together may produce strange results. The default is OFF
-(\-nolightgun).
-.TP
-.B \-[no]multikeyboard, \-[no]multikey
-Determines whether MESS differentiates between multiple keyboards.
-Some systems may report more than one keyboard; by default, the data
-from all of these keyboards is combined so that it looks like a single
-keyboard. Turning this option on will enable MESS to report keypresses
-on different keyboards independently. The default is OFF
-(\-nomultikeyboard).
-.TP
-.B \-[no]multimouse
-Determines whether MESS differentiates between multiple mice. Some
-systems may report more than one mouse device; by default, the data
-from all of these mice is combined so that it looks like a single
-mouse. Turning this option on will enable MESS to report mouse
-movement and button presses on different mice independently. The
-default is OFF (\-nomultimouse).
-.TP
-.B \-[no]steadykey, \-[no]steady
-Some systems require two or more buttons to be pressed at exactly the
-same time to make special moves. Due to limitations in the PC keyboard
-hardware, it can be difficult or even impossible to accomplish that
-using the standard keyboard handling. This option selects a different
-handling that makes it easier to register simultaneous button presses,
-but has the disadvantage of making controls less responsive. The
-default is OFF (\-nosteadykey).
-.TP
-.B \-[no]ui_active
-Enable MESS user interface on top of emulated keyboard (if present).
-User interface may be toggled during execution by pressing the key
-defined with \-ui_modekey.
-Default is OFF (\-noui_active).
-.TP
-.B \-[no]offscreen_reload, \-[no]reload
-Controls whether or not MESS treats a second button input from a
-lightgun as a reload signal. In this case, MESS will report the gun's
-position as (0,MAX) with the trigger held, which is equivalent to an
-offscreen reload. This is only needed for systems that required you to
-shoot offscreen to reload, and then only if your gun does not support
-off screen reloads. The default is OFF (\-nooffscreen_reload).
-.TP
-.B \-joystick_map, \-joymap \fImap
-Controls how joystick values map to digital joystick controls.
-See /usr/share/doc/mame\-common/config.txt for full details on
-joymap format.
-.TP
-.B \-joystick_deadzone, \-joy_deadzone, \-jdz \fIvalue
-If you play with an analog joystick, the center can drift a little.
-joystick_deadzone tells how far along an axis you must move before the
-axis starts to change. This option expects a float in the range of
-0.0 to 1.0. Where 0 is the center of the joystick and 1 is the outer
-limit. The default is 0.3.
-.TP
-.B \-joystick_saturation, \-joy_saturation, \-jsat \fIvalue
-If you play with an analog joystick, the ends can drift a little,
-and may not match in the +/\- directions. joystick_saturation tells how
-far along an axis movement change will be accepted before it reaches
-the maximum range. This option expects a float in the range of 0.0 to
-1.0, where 0 is the center of the joystick and 1 is the outer limit.
-The default is 0.85.
-.TP
-.B \-[no]natural, \-[no]nat
-Allows user to specify whether or not to use a natural keyboard.
-This allows you to start your game or system in a 'native' mode, depending
-on your region, allowing compatibility for non\-"QWERTY" style keyboards.
-The default is OFF (\-nonatural).
-.TP
-.B \-[no]joystick_contradictory, \-[no]joy_contradictory
-Enable contradictory direction digital joystick input at the same time.
-Default is OFF (\-nojoystick_contradictory).
-.TP
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-uimodekey, \-umk \fIvalue
-Specifies the key used to toggle between full and partial UI mode.
-.TP
-.B \-uifontprovider \fIauto\fR|\fIsdl\fR|\fInone
-Provider for ui font.
-.TP
-.B \-output \fIconsole\fR|\fInetwork\fR|\fInone
-Provider for output.
-.TP
-.B \-keyboardprovider \fIauto\fR|\fIsdl\fR|\fInone
-Provider for keyboard input.
-.TP
-.B \-mouseprovider \fIauto\fR|\fIsdl\fR|\fInone
-Provider for mouse input.
-.TP
-.B \-lightgunprovider \fIauto\fR|\fInone
-Provider for lightgun input.
-.TP
-.B \-joystickprovider \fIauto\fR|\fIsdl\fR|\fInone
-Provider for joystick input.
-.TP
-.B \-[no]keymap
-Enable keymap for non\-QWERTY keyboards. Used in conjunction with
-\fB\-keymap_file\fR. Default is OFF (\-nokeymap).
-.TP
-.B \-keymap_file \fIkeymap_file
-Specifies the full path to the keymap file to be used. A few
-keymap files are available in /usr/share/games/mess/keymaps.
-.TP
-.B \-joy_idx[0\-8] \fIjoystick
-With these options you can assign a joystick to a
-specific index in MESS. Even if the kernel will list the joysticks
-in a different order on the next boot, MESS will still see the joystick
-as e.g. "Joystick 2". Use mame \-v to see which joysticks are recognized.
-Default is 'auto'.
-.TP
-.B \-[no]sixaxis
-Use special handling for PS3 Sixaxis controllers.
-Default is OFF (\-nosixaxis).
-.TP
-.B \-lightgun_index[1\-8]
-Map lightgun to specific index in MESS.
-.TP
-.B \-videodriver, \-vd x11\fR|\fBdirectfb\fR|\fBauto
-SDL video driver to use; auto selects SDL default.
-.TP
-.B \-audiodriver, \-ad alsa\fR|\fBarts\fR|\fBauto
-SDL audio driver to use; auto selects SDL default.
-.TP
-.B \-gl_lib alsa\fR|\fBarts\fR|\fBauto
-Alternative libGL.so to use; auto selects SDL default.
-.\"
-.\" *******************************************************
-.SS Input automatic enable options
-.\" *******************************************************
-.TP
-.B \-paddle_device, \-paddle \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-adstick_device, \-adstick \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-pedal_device, \-pedal \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-dial_device, \-dial \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-trackball_device, \-trackball \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-lightgun_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-positional_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-.TP
-.B \-mouse_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR]
-Each of these options controls automatically enabling the mouse, or
-joystick depending on the presence of a particular class of analog
-control for a particular system. For example, if you specify the option
-\-paddle mouse, then any system that has a paddle control will automatically
-enable mouse controls just as if you had explicitly specified \-mouse.
-Note that these controls override the values of \-[no]mouse, \-[no]joystick, etc.
-.\"
-.\" *******************************************************
-.SS Debugging options
-.\" *******************************************************
-.TP
-.B \-[no]log
-Creates a file called error.log which contains all of the internal
-log messages generated by the MESS core and system drivers. The default
-is OFF (\-nolog).
-.TP
-.B \-[no]verbose, \-[no]v
-Displays internal diagnostic information. This information is very
-useful for debugging problems with your configuration.
-Please use the \-verbose option and include the resulting information
-when reporting bugs. The default is OFF (\-noverbose).
-.TP
-.B \-[no]update_in_pause
-Enables updating the screen bitmap while the system is paused. This is
-useful for debuggin in some scenarios (and gets in the way in others).
-Default is OFF (\-noupdate_in_pause).
-.TP
-.B \-[no]debug, \-[no]d
-Activates the integrated debugger. By default, the debugger is entered
-by pressing the tilde (~) key during emulation. It is also entered
-immediately at startup. The default is OFF (\-nodebug).
-.TP
-.B \-debugscript \fIfilename
-Specifies a file that contains a list of debugger commands to execute
-immediately upon startup. The default is NULL (no commands).
-.\"
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.\" SDL specific
-.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-.TP
-.B \-debugger \fIdebugger_name
-Name of the debugger to use. Default is AUTO.
-.TP
-.B \-debugger_font, \-dfont \fIfont_name
-Specifies the font to use for debugging. Default is AUTO.
-.TP
-.B \-debugger_font_size, \-dfontsize \fIsize
-Specifies the font size to use for debugging.
-.TP
-.B \-[no]oslog
-Outputs the error.log data to the system debugger. This can be used at
-the same time as \-log to output the log data to both targets as well.
-Default is OFF (\-nooslog).
-.\"
-.\" *******************************************************
-.SS Misc options
-.\" *******************************************************
-.TP
-.B \-[no]drc
-Enable DRC cpu core if available. Default is ON (\-drc).
-.TP
-.B \-[no]drc_use_c
-Force DRC use C backend. Default is OFF (\-nodrc_use_c).
-.TP
-.B \-[no]drc_log_uml
-Write DRC UML disassembly log. Default is OFF (\-nodrc_log_uml).
-.TP
-.B \-[no]drc_log_native
-Write DRC native disassembly log. Default is OFF (\-no_drc_log_native).
-.TP
-.B \-bios \fIbiosname
-Specifies the specific BIOS to use with the current system, for
-systems that make use of a BIOS. The \-listxml output will list all of
-the possible BIOS names for a system. The default is 'default'.
-.TP
-.B \-[no]cheat, \-[no]c
-Activates the cheat menu with autofire options and other tricks from
-the cheat database, if present.
-The default is OFF (\-nocheat).
-.TP
-.B \-[no]skip_gameinfo
-Forces MESS to skip displaying the system info screen. The default is OFF
-(\-noskip_gameinfo).
-.TP
-.B \-uifont \fIfontname
-Specifies the name of a BDF font file to use for the UI font. If this
-font cannot be found or cannot be loaded, the system will fall back
-to its built\-in UI font. On some platforms \fIfontname\fP can be a system
-font name instead of a BDF font file. The default is 'default' (use
-the OSD\-determined default font).
-.TP
-.B \-ui \fIsimple\fR|\fIcabinet
-Type of UI.
-.TP
-.B \-ramsize, \-ram \fIvalue
-Size of RAM (if supported by driver).
-.TP
-.B \-[no]confirm_quit
-Display confirm quit screen on exit. Default is ON (\-confirm_quit).
-.TP
-.B \-[no]ui_mouse
-Display UI mouse cursor. Default is OFF (\-noui_mouse).
-.TP
-.B \-autoboot_command, \-ab \fIcommand
-Command string to execute after machine boot (in quotes ""). To issue
-a quote to the emulation, use \fB"""\fP in the string.
-Using \fB\\n\fP will issue a create a new line, issuing what was
-typed prior as a command. Example:
-\fB\-autoboot_command "load """$""",8,1\\n"\fP.
-.TP
-.B \-autoboot_delay \fR[\fIvalue\fP]
-Timer delay (in seconds) to trigger command execution on autoboot.
-Default is 2.
-.TP
-.B \-autoboot_script, \-script \fR[\fIfilename.lua\fP]
-File containing scripting to execute after machine boot.
-.TP
-.B \-[no]http
-Enable local http server. Default is OFF (\-nohttp).
-.TP
-.B \-http_port \fIport
-Internal webserver listener port.
-.TP
-.B \-http_path \fIpath
-Path to web files. Default is /usr/share/games/mess/web.
-.TP
-.B \-[no]console
-Enable emulator LUA console. Default is OFF (\-noconsole).
-.TP
-.B \-[no]plugins
-Enable LUA plugin support. Default is ON (\-plugins).
-.TP
-.B \-plugin \fIvalue
-List of plugins to enable.
-.TP
-.B \-noplugin \fIvalue
-List of plugins to disable.
-.TP
-.B \-language, \-lang \fIvalue
-Display language. Default is 'English'.
-.TP
-.B \-newui, \-nu
-Use the new MESS UI.
-.TP
-.B \-watchdog \fIvalue
-Specifies a number of seconds after which MESS should automatically exit
-if it detects that the emulation has locked up.
-.\"
-.\"
-.\" SEE ALSO chapter
-.SH SEE ALSO
-castool(1), chdman(1), floptool(1), imgtool(1)
-.\"
-.\"
-.\" LEGAL NOTICE chapter
-.SH LEGAL NOTICE
-Please visit the MAME website for some important legal information:
-.PP
-http://mamedev.org/legal.html
diff --git a/docs/source/usingmame/mamemenus.rst b/docs/source/usingmame/mamemenus.rst
index 0673528214d..297f3870a6d 100644
--- a/docs/source/usingmame/mamemenus.rst
+++ b/docs/source/usingmame/mamemenus.rst
@@ -165,10 +165,6 @@ from the :ref:`main menu <menus-main>`. The items shown on this menu depend on
available emulated inputs for the running system. Available emulated inputs may
depend on slot options, machine configuration settings and DIP switch settings.
-Input Assignments (general)
- Lets you select assign user interface controls, or assign default controls
- for all emulated systems. See the section on :ref:`configuring inputs
- <ui-inptcfg>` for more details.
Input Assignments (this system)
Lets you select assign controls to emulated inputs for the running system.
See the section on :ref:`configuring inputs <ui-inptcfg>` for more details.
@@ -190,6 +186,10 @@ Toggle Inputs
Shows the :ref:`Toggle Inputs menu <menus-inputtoggle>`, where you can view
and adjust the state of multi-position or toggle inputs. This item is not
shown if the running system has no enabled toggle inputs.
+Input Assignments (general)
+ Lets you select assign user interface controls, or assign default controls
+ for all emulated systems. See the section on :ref:`configuring inputs
+ <ui-inptcfg>` for more details.
Input Devices
Shows the :ref:`Input Devices menu <menus-inputdevices>`, which lists the
input devices recognised by MAME.
diff --git a/hash/megadriv.xml b/hash/megadriv.xml
index 1bf99b9ec05..9b28f70735c 100644
--- a/hash/megadriv.xml
+++ b/hash/megadriv.xml
@@ -371,7 +371,7 @@ The three available regions are PAL, NTSC-U and NTSC-J or a combination such as
<!-- Release binary equal with parent -->
<software name="aladdina" cloneof="aladdin">
- <description>Disney's Aladdin (Euro, Alt PCB)</description>
+ <description>Disney's Aladdin (Euro, alt PCB)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="serial" value="MK-1058-50"/>
@@ -423,7 +423,7 @@ The three available regions are PAL, NTSC-U and NTSC-J or a combination such as
<software name="alexkidd">
- <description>Alex Kidd in the Enchanted Castle (Euro, Rev. A)</description>
+ <description>Alex Kidd in the Enchanted Castle (Euro, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<info name="serial" value="MK-1005-50"/>
@@ -724,7 +724,7 @@ The three available regions are PAL, NTSC-U and NTSC-J or a combination such as
<!-- Release binary equal with parent -->
<software name="astergrea" cloneof="astergre">
- <description>Astérix and the Great Rescue (Euro, Alt PCB)</description>
+ <description>Astérix and the Great Rescue (Euro, alt PCB)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="serial" value="MK-1532-50"/>
@@ -1108,7 +1108,7 @@ The three available regions are PAL, NTSC-U and NTSC-J or a combination such as
<!-- Euro confirmed, USA or Kor too? -->
<software name="bnzabros">
- <description>Bonanza Bros. (Euro, USA, Kor, Rev. B)</description>
+ <description>Bonanza Bros. (Euro, USA, Kor, rev. B)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -1603,7 +1603,7 @@ Unsupported [Sega Mouse] peripheral
1 word at 0xcf14e removed (FC08), 1 word at 0xcf1fe (D011)
-->
<software name="cliffh1" cloneof="cliffh">
- <description>Cliffhanger (Euro, Alt)</description>
+ <description>Cliffhanger (Euro, alt)</description>
<year>1993</year>
<publisher>Sony Imagesoft</publisher>
<info name="serial" value="T-93036-50"/>
@@ -1740,7 +1740,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="coolspotp" cloneof="coolspot">
- <description>Cool Spot (Euro, Prototype)</description>
+ <description>Cool Spot (Euro, prototype)</description>
<year>1993</year>
<publisher>Virgin Games</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -1793,7 +1793,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="crkdown">
- <description>Crack Down (Euro, Jpn, Rev. A)</description>
+ <description>Crack Down (Euro, Jpn, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4024 (JPN)"/>
@@ -2138,7 +2138,7 @@ Unsupported [Sega Mouse] peripheral
<software name="mauimall">
- <description>Donald in Maui Mallard (Euro, Rev. A)</description>
+ <description>Donald in Maui Mallard (Euro, rev. A)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -2183,7 +2183,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="ddragon3">
- <description>Double Dragon 3 - The Arcade Game (Euro, USA, Rev. A?)</description>
+ <description>Double Dragon 3 - The Arcade Game (Euro, USA, rev. A?)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -2343,7 +2343,7 @@ No [VDP] sprites
<!-- Only Euro is confirmed -->
<software name="dynduke">
- <description>Dynamite Duke (World, Rev. A)</description>
+ <description>Dynamite Duke (World, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4038 (JPN)"/>
@@ -2517,7 +2517,7 @@ No [VDP] sprites
<!-- This board contains no SRAM, despite the header reporting 16k of battery -->
<software name="espnspedp" cloneof="espnsped">
- <description>ESPN Speedworld (USA, Prototype)</description>
+ <description>ESPN Speedworld (USA, prototype)</description>
<year>1994</year>
<publisher>Sony Imagesoft</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -2539,7 +2539,7 @@ No [VDP] sprites
<!-- This board contains no SRAM, despite the header reporting 16k of battery -->
<software name="espnnflp" cloneof="espnnfl" supported="no"> <!-- it freezes at head/tail -->
- <description>ESPN Sunday Night NFL (USA, Prototype)</description>
+ <description>ESPN Sunday Night NFL (USA, prototype)</description>
<year>1994</year>
<publisher>Sony Imagesoft</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -2561,7 +2561,7 @@ No [VDP] sprites
<!-- Both Euro & USA are confirmed -->
<software name="eswat">
- <description>ESWAT - City Under Siege (Euro, USA, Rev. A)</description>
+ <description>ESWAT - City Under Siege (Euro, USA, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -2777,7 +2777,7 @@ No [VDP] sprites
<!-- Euro, Jpn and USA confirmed -->
<software name="fantasia">
- <description>Fantasia (World, Rev. A)</description>
+ <description>Fantasia (World, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4061 (JPN)"/>
@@ -2901,7 +2901,7 @@ Crashes after EA logo, requires better [VDP] irq handling
<!-- Only Euro is confirmed -->
<software name="fatalrew" supported="no">
- <description>Fatal Rewind (Euro, USA, Rev. A)</description>
+ <description>Fatal Rewind (Euro, USA, rev. A)</description>
<year>1991</year>
<publisher>Electronic Arts</publisher>
<notes><![CDATA[
@@ -2918,7 +2918,7 @@ Crashes after EA logo, requires better [VDP] irq handling
<software name="ferrari">
- <description>Ferrari Grand Prix Challenge (Euro, Rev. A)</description>
+ <description>Ferrari Grand Prix Challenge (Euro, rev. A)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -3082,7 +3082,7 @@ Crashes after EA logo, requires better [VDP] irq handling
<software name="flashb">
- <description>Flashback (Euro, Rev. A)</description>
+ <description>Flashback (Euro, rev. A)</description>
<year>1993</year>
<publisher>U.S. Gold</publisher>
<part name="cart" interface="megadriv_cart">
@@ -3157,7 +3157,7 @@ Crashes after EA logo, requires better [VDP] irq handling
<!-- Only Euro is confirmed -->
<software name="forgottn">
- <description>Forgotten Worlds (World, Rev. A)</description>
+ <description>Forgotten Worlds (World, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4016 (JPN)"/>
@@ -3207,7 +3207,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="gground">
- <description>Gain Ground (World, Rev. A)</description>
+ <description>Gain Ground (World, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher> <!-- This was published by Renovation in the USA, in fact -->
<info name="serial" value="G-4036 (JPN)"/>
@@ -3243,7 +3243,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="gforce2">
- <description>Galaxy Force II (World, Rev. B)</description>
+ <description>Galaxy Force II (World, rev. B)</description>
<year>1991</year>
<publisher>CRI ~ Sega</publisher>
<info name="serial" value="T-68013 (JPN)"/>
@@ -3259,7 +3259,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="gameto" supported="no">
- <description>Game Toshokan (Jpn, Rev. A)</description>
+ <description>Game Toshokan (Jpn, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -3410,7 +3410,7 @@ Moans about [Sega Mega Modem] not hooked up, punts to a red screen
This is kept for a 1 MB address space (A19=0, A20=1). If we're leaving the address range everything starts again (128K ROM gets enabled).
-->
<software name="ghouls">
- <description>Ghouls'n Ghosts (Euro, USA, Kor, Rev. A)</description>
+ <description>Ghouls'n Ghosts (Euro, USA, Kor, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -3536,7 +3536,7 @@ Moans about [Sega Mega Modem] not hooked up, punts to a red screen
<!-- Euro and Jpn confirmed -->
<software name="goldnaxe">
- <description>Golden Axe (World, Rev. A)</description>
+ <description>Golden Axe (World, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4018 (JPN)"/>
@@ -4004,7 +4004,7 @@ Moans about [Sega Mega Modem] not hooked up, punts to a red screen
<software name="jlps">
- <description>J. League Pro Striker '93 (Jpn, Rev. A)</description> <!-- binary v1.3 -->
+ <description>J. League Pro Striker '93 (Jpn, rev. A)</description> <!-- binary v1.3 -->
<year>1993</year>
<publisher>Sega</publisher>
<info name="serial" value="G-5526"/>
@@ -4064,7 +4064,7 @@ Moans about [Sega Mega Modem] not hooked up, punts to a red screen
<software name="jb007">
- <description>James Bond 007 - The Duel (Euro, Rev. A)</description>
+ <description>James Bond 007 - The Duel (Euro, rev. A)</description>
<year>1992</year>
<publisher>Domark</publisher>
<part name="cart" interface="megadriv_cart">
@@ -4158,7 +4158,7 @@ Moans about [Sega Mega Modem] not hooked up, punts to a red screen
<!-- Only Euro is confirmed -->
<software name="jewelms">
- <description>Jewel Master (Euro, USA, Rev. A)</description>
+ <description>Jewel Master (Euro, USA, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -4524,7 +4524,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="krustyfh">
- <description>Krusty's Super Fun House (Euro, USA, Rev. A)</description>
+ <description>Krusty's Super Fun House (Euro, USA, rev. A)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -5182,7 +5182,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="mwalk">
- <description>Michael Jackson's Moonwalker (World, Rev. A)</description>
+ <description>Michael Jackson's Moonwalker (World, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4028 (JPN)"/>
@@ -5410,7 +5410,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="mystdef">
- <description>Mystic Defender (Euro, USA, Rev. A)</description>
+ <description>Mystic Defender (Euro, USA, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -5483,7 +5483,7 @@ Unsupported [Menacer] peripheral
<software name="nbajamjp" cloneof="nbajam">
- <description>NBA Jam (Jpn, Prototype)</description>
+ <description>NBA Jam (Jpn, prototype)</description>
<year>1994</year>
<publisher>Acclaim Japan</publisher>
<info name="alt_title" value="NBA ジャム"/>
@@ -5984,7 +5984,7 @@ Unsupported [Menacer] peripheral
<!-- Both USA and Jpn are confirmed -->
<software name="olympgldu" cloneof="olympgld">
- <description>Olympic Gold (Jpn, USA, Kor, Rev. A)</description>
+ <description>Olympic Gold (Jpn, USA, Kor, rev. A)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4081"/>
@@ -6031,7 +6031,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="outrun">
- <description>Out Run (Euro, USA, Rev. A?)</description>
+ <description>Out Run (Euro, USA, rev. A?)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -6414,7 +6414,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="pstar2">
- <description>Phantasy Star II (Euro, USA, Rev. A)</description>
+ <description>Phantasy Star II (Euro, USA, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -6452,7 +6452,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="pitfight">
- <description>Pit-Fighter (World, Rev. A)</description>
+ <description>Pit-Fighter (World, rev. A)</description>
<year>1991</year>
<publisher>Tengen</publisher>
<info name="serial" value="T-48033 (JPN)"/>
@@ -6712,7 +6712,7 @@ Unsupported [Menacer] peripheral
<!-- Only USA is confirmed -->
<software name="quacksht1" cloneof="quacksht">
- <description>QuackShot Starring Donald Duck ~ QuackShot - Guruzia Ou no Hihou (World, Alt PCB)</description>
+ <description>QuackShot Starring Donald Duck ~ QuackShot - Guruzia Ou no Hihou (World, alt PCB)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4054 (JPN)"/>
@@ -6777,7 +6777,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="rambo3">
- <description>Rambo III (World, Rev. A)</description>
+ <description>Rambo III (World, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4010 (JPN)"/>
@@ -6825,7 +6825,7 @@ Unsupported [Menacer] peripheral
<!-- Only USA is confirmed -->
<software name="revshin">
- <description>The Revenge of Shinobi (Euro, USA, Rev. B)</description>
+ <description>The Revenge of Shinobi (Euro, USA, rev. B)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -6840,7 +6840,7 @@ Unsupported [Menacer] peripheral
<!-- Only Euro is confirmed -->
<software name="revshin1" cloneof="revshin">
- <description>The Revenge of Shinobi (Euro, USA, Rev. A)</description>
+ <description>The Revenge of Shinobi (Euro, USA, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -7424,7 +7424,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="bartvssm">
- <description>The Simpsons - Bart Vs The Space Mutants (Euro, USA, Rev. A)</description>
+ <description>The Simpsons - Bart Vs The Space Mutants (Euro, USA, rev. A)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -7483,7 +7483,7 @@ Unsupported [Sega Mouse] peripheral
<software name="smurfs">
- <description>The Smurfs (Euro, Rev. A)</description>
+ <description>The Smurfs (Euro, rev. A)</description>
<year>1995</year>
<publisher>Infogrames</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -7566,7 +7566,7 @@ Unsupported [Sega Mouse] peripheral
<software name="soniccmp1" cloneof="soniccmp">
- <description>Sonic Compilation (Euro, Earlier)</description>
+ <description>Sonic Compilation (Euro, earlier)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -7634,7 +7634,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Euro and Jpn are confirmed -->
<software name="sonic2">
- <description>Sonic the Hedgehog 2 (World, Rev. A)</description>
+ <description>Sonic the Hedgehog 2 (World, rev. A)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4088 (JPN)"/>
@@ -7937,7 +7937,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Europe and Japan are confirmed -->
<software name="sor" supported="partial">
- <description>Streets of Rage (Euro, USA, Rev. A) ~ Bare Knuckle - Ikari no Tekken (Jpn, Rev. A)</description>
+ <description>Streets of Rage (Euro, USA, rev. A) ~ Bare Knuckle - Ikari no Tekken (Jpn, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -8111,7 +8111,7 @@ Unsupported [Sega Mouse] peripheral
<software name="supdaisn">
- <description>Super Daisenryaku (Jpn, Rev. A)</description>
+ <description>Super Daisenryaku (Jpn, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4501-02"/>
@@ -8160,7 +8160,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="shangon">
- <description>Super Hang-On (World, Rev. A)</description>
+ <description>Super Hang-On (World, rev. A)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4011 (JPN)"/>
@@ -8271,7 +8271,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="smgp">
- <description>Super Monaco GP (Euro, Jpn, Rev. A)</description>
+ <description>Super Monaco GP (Euro, Jpn, rev. A)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -8365,7 +8365,7 @@ Unsupported [Sega Mouse] peripheral
<software name="stbladej1" cloneof="stblade">
- <description>Super Thunder Blade (Jpn, Alt PCB)</description>
+ <description>Super Thunder Blade (Jpn, alt PCB)</description>
<year>1988</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4003"/>
@@ -8732,7 +8732,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Jpn is confirmed -->
<software name="toejam">
- <description>Toe Jam &amp; Earl (World, Rev. A)</description>
+ <description>Toe Jam &amp; Earl (World, rev. A)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4066 (JPN)"/>
@@ -9127,7 +9127,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="vf2a" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Euro, USA, Alt PCB)</description>
+ <description>Virtua Fighter 2 - Genesis (Euro, USA, alt PCB)</description>
<year>1997</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -9290,7 +9290,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only Euro is confirmed -->
<software name="wintchal">
- <description>Winter Challenge (Euro, USA, Rev. 1)</description>
+ <description>Winter Challenge (Euro, USA, rev. 1)</description>
<year>1992</year>
<publisher>Ballistic</publisher>
<part name="cart" interface="megadriv_cart">
@@ -9396,7 +9396,7 @@ Unsupported [Sega Mouse] peripheral
<!-- Only USA is confirmed -->
<software name="wcs" cloneof="wcup90">
- <description>World Championship Soccer (USA, Rev. B) ~ World Cup Soccer (Jpn, Rev. B)</description>
+ <description>World Championship Soccer (USA, rev. B) ~ World Cup Soccer (Jpn, rev. B)</description>
<year>1989</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4009 (JPN)"/>
@@ -10043,7 +10043,7 @@ Confirmed dump but no pcb pic
</software>
<software name="valis3j" cloneof="valis3">
- <description>Valis III (Jpn, Rev. A)</description>
+ <description>Valis III (Jpn, rev. A)</description>
<year>1991</year>
<publisher>Reno</publisher>
<info name="serial" value="T-49023"/>
@@ -10135,7 +10135,7 @@ but dumps still have to be confirmed.
</software>
<software name="3in1fwt" supported="no">
- <description>3 in 1 Flashback - World Championship Soccer - Tecmo World Cup 92 (Pirate)</description>
+ <description>3 in 1 Flashback - World Championship Soccer - Tecmo World Cup 92 (pirate)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<notes><![CDATA[
@@ -10149,7 +10149,7 @@ Only Flashback portion is present in the dump, the other two entries and menu ar
</software>
<software name="3in1rmb" supported="no">
- <description>3 in 1 Road Rash - Ms. Pac-Man - Block Out (Pirate)</description>
+ <description>3 in 1 Road Rash - Ms. Pac-Man - Block Out (pirate)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<notes><![CDATA[
@@ -10206,7 +10206,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="aaahhrmup" cloneof="aaahhrm">
- <description>Aaahh!!! Real Monsters (USA, Prototype 19950707)</description>
+ <description>Aaahh!!! Real Monsters (USA, prototype 19950707)</description>
<year>1995</year>
<publisher>Viacom New Media</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10235,7 +10235,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="action52a" cloneof="action52">
- <description>Action 52 (USA, Alt)</description>
+ <description>Action 52 (USA, alt)</description>
<year>1993</year>
<publisher>Active Enterprises</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10246,7 +10246,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="addfamp1" cloneof="addfam">
- <description>The Addams Family (USA, Prototype)</description>
+ <description>The Addams Family (USA, prototype)</description>
<year>1994</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10257,7 +10257,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="addfamp2" cloneof="addfam" supported="no">
- <description>The Addams Family (USA, Prototype, Alt)</description>
+ <description>The Addams Family (USA, prototype, alt)</description>
<year>1994</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10268,7 +10268,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advdaisn">
- <description>Advanced Daisenryaku - Deutsch Dengeki Sakusen (Jpn, Rev. A)</description>
+ <description>Advanced Daisenryaku - Deutsch Dengeki Sakusen (Jpn, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-5505"/>
@@ -10285,7 +10285,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advdaisnp" cloneof="advdaisn">
- <description>Advanced Daisenryaku - Deutsch Dengeki Sakusen (Jpn, Prototype 19910307)</description>
+ <description>Advanced Daisenryaku - Deutsch Dengeki Sakusen (Jpn, prototype 19910307)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10299,7 +10299,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp12" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950406)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950406)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10311,7 +10311,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp11" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950410)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950410)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -10323,7 +10323,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp10" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950411)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950411)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -10335,7 +10335,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp09" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950418)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950418)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -10347,7 +10347,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp08" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950419)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950419)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -10359,7 +10359,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp07" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950421)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950421)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10371,7 +10371,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp06" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950422)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950422)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10383,7 +10383,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp05" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950424)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950424)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10395,7 +10395,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp04" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950426)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950426)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J,NTSC-U"/>
@@ -10407,7 +10407,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp03" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950427)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950427)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J,NTSC-U"/>
@@ -10419,7 +10419,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp02" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950428)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950428)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J,NTSC-U"/>
@@ -10431,7 +10431,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="advbatrp01" cloneof="advbatr">
- <description>The Adventures of Batman &amp; Robin (Prototype, 19950501)</description>
+ <description>The Adventures of Batman &amp; Robin (prototype, 19950501)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J,NTSC-U"/>
@@ -10490,7 +10490,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="aerop" cloneof="aero">
- <description>Aero the Acro-Bat (Prototype)</description>
+ <description>Aero the Acro-Bat (prototype)</description>
<year>1993</year>
<publisher>Sunsoft</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -10645,7 +10645,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="aladdinup" cloneof="aladdin">
- <description>Disney's Aladdin (USA, Prototype)</description>
+ <description>Disney's Aladdin (USA, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10657,7 +10657,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="aladdinjp" cloneof="aladdin">
- <description>Disney's Aladdin (Jpn, Prototype 19930731)</description>
+ <description>Disney's Aladdin (Jpn, prototype 19930731)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10726,7 +10726,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="alien3">
- <description>Alien³ (Euro, USA, Rev. A)</description>
+ <description>Alien³ (Euro, USA, rev. A)</description>
<year>1993</year>
<publisher>Arena Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10824,7 +10824,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="agassiup" cloneof="agassi">
- <description>Andre Agassi Tennis (USA, Prototype)</description>
+ <description>Andre Agassi Tennis (USA, prototype)</description>
<year>1992</year>
<publisher>TecMagik</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10847,7 +10847,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="ootwp" cloneof="anotherw">
- <description>Out of This World (Prototype)</description>
+ <description>Out of This World (prototype)</description>
<year>1993</year>
<publisher>Virgin Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10910,7 +10910,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
<!-- This dump was originally tagged as Alt, but it matched Jeckidy's proto dump (cart with label ARROW FLASH #625A) -->
<software name="arrowp" cloneof="arrow">
- <description>Arrow Flash (USA, Prototype)</description>
+ <description>Arrow Flash (USA, prototype)</description>
<year>1990</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10921,7 +10921,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="aofp" cloneof="aof">
- <description>Art of Fighting (Prototype, 19940711)</description>
+ <description>Art of Fighting (prototype, 19940711)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -10933,7 +10933,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="arielp" cloneof="ariel">
- <description>Disney's Ariel the Little Mermaid (USA, Prototype 19921010)</description>
+ <description>Disney's Ariel the Little Mermaid (USA, prototype 19921010)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10944,7 +10944,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="arnoldpp" cloneof="arnoldp">
- <description>Arnold Palmer Tournament Golf (Prototype 19900322)</description>
+ <description>Arnold Palmer Tournament Golf (prototype 19900322)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -10985,7 +10985,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="artalivep" cloneof="artalive">
- <description>Art Alive! (USA, Prototype 19910920)</description>
+ <description>Art Alive! (USA, prototype 19910920)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11008,7 +11008,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="asterpgp" cloneof="asterpg">
- <description>Astérix and the Power of the Gods (Euro, Prototype)</description>
+ <description>Astérix and the Power of the Gods (Euro, prototype)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11069,7 +11069,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="atptourp4" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940802)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940802)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11084,7 +11084,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="atptourp3" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940805)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940805)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11099,7 +11099,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="atptourp2" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940808)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940808)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11115,7 +11115,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
<!-- TODO: check SRAM. The header says there should be 0x2001 of battery... for now I put 16k as in the other protos, but there might well be no SRAM at all (as in other protos) -->
<software name="atptourp6" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940719)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940719)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11130,7 +11130,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="atptourp5" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940723)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940723)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11158,7 +11158,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
<!-- TODO: check SRAM. The header says there should be no battery... for now I put 16k as in the other protos, but there might well be no SRAM at all (as in other protos) -->
<software name="atptourp7" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940509)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940509)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11173,7 +11173,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="atptourp1" cloneof="atptour">
- <description>ATP Tour Championship Tennis (Prototype, 19940908)</description>
+ <description>ATP Tour Championship Tennis (prototype, 19940908)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11307,7 +11307,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="bobp" cloneof="bob">
- <description>B.O.B. (USA, Prototype)</description>
+ <description>B.O.B. (USA, prototype)</description>
<year>1993</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11332,7 +11332,7 @@ Only Road Rash portion is present in the dump, the other two entries and menu ar
</software>
<software name="babyboom">
- <description>Baby Boom (Prototype, 19940811)</description>
+ <description>Baby Boom (prototype, 19940811)</description>
<year>1994</year>
<publisher>&lt;unknown&gt;</publisher>
<notes><![CDATA[
@@ -11347,7 +11347,7 @@ https://segaretro.org/Baby_Boom
</software>
<software name="babyboom1" cloneof="babyboom">
- <description>Baby Boom (Prototype, 19940603)</description>
+ <description>Baby Boom (prototype, 19940603)</description>
<year>1994</year>
<publisher>&lt;unknown&gt;</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11359,7 +11359,7 @@ https://segaretro.org/Baby_Boom
</software>
<software name="babyboom2" cloneof="babyboom">
- <description>Baby Boom (Prototype, 19940606)</description>
+ <description>Baby Boom (prototype, 19940606)</description>
<year>1994</year>
<publisher>&lt;unknown&gt;</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11371,7 +11371,7 @@ https://segaretro.org/Baby_Boom
</software>
<software name="babyd">
- <description>Baby's Day Out (USA, Prototype)</description>
+ <description>Baby's Day Out (USA, prototype)</description>
<year>1994?</year>
<publisher>Hi-Tech Expression</publisher>
<notes><![CDATA[
@@ -11386,7 +11386,7 @@ https://segaretro.org/Baby%27s_Day_Out
</software>
<software name="babydo" cloneof="babyd" supported="partial">
- <description>Baby's Day Out (USA, Prototype, Earlier)</description>
+ <description>Baby's Day Out (USA, prototype, earlier)</description>
<year>1994?</year>
<publisher>Hi-Tech Expression</publisher>
<notes><![CDATA[
@@ -11489,7 +11489,7 @@ No sound (btanb?)
<!-- The actual PCB contains 4 chips... how shall this be split? -->
<software name="barbiesmp" cloneof="barbiesm">
- <description>Barbie Super Model (USA, Prototype)</description>
+ <description>Barbie Super Model (USA, prototype)</description>
<year>1992</year>
<publisher>Hi Tech Expressions</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11500,7 +11500,7 @@ No sound (btanb?)
</software>
<software name="barbvac">
- <description>Barbie Vacation Adventure (USA, Prototype)</description>
+ <description>Barbie Vacation Adventure (USA, prototype)</description>
<year>1994</year>
<publisher>Hi Tech Expressions</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11527,7 +11527,7 @@ No sound (btanb?)
</software>
<software name="barkley2p" cloneof="barkley2">
- <description>Barkley Shut Up and Jam! 2 (USA, Prototype)</description>
+ <description>Barkley Shut Up and Jam! 2 (USA, prototype)</description>
<year>1995</year>
<publisher>Accolade</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11550,7 +11550,7 @@ No sound (btanb?)
</software>
<software name="barneyp" cloneof="barney">
- <description>Barney's Hide &amp; Seek Game (USA, Prototype 19930918)</description>
+ <description>Barney's Hide &amp; Seek Game (USA, prototype 19930918)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11668,7 +11668,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="battlesqp" cloneof="battlesq">
- <description>Battle Squadron (USA, Prototype 19910118)</description>
+ <description>Battle Squadron (USA, prototype 19910118)</description>
<year>1990</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11726,7 +11726,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="beastbal">
- <description>Beastball (Prototype)</description>
+ <description>Beastball (prototype)</description>
<year>199?</year>
<publisher>Spectrum Holobyte</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11748,7 +11748,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="beastwp" cloneof="beastw">
- <description>Beast Wrestler (USA, Prototype 19910913)</description>
+ <description>Beast Wrestler (USA, prototype 19910913)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11808,7 +11808,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="beavisup" cloneof="beavis" supported="no">
- <description>Beavis and Butt-Head (USA, Prototype)</description>
+ <description>Beavis and Butt-Head (USA, prototype)</description>
<year>1994</year>
<publisher>Viacom New Media</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11842,7 +11842,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp19" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940428)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940428)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11853,7 +11853,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp18" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940429)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940429)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11864,7 +11864,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp05" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940801)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940801)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11876,7 +11876,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp04" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940802)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940802)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11888,7 +11888,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp03" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940803)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940803)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11900,7 +11900,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp02" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940805)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940805)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11912,7 +11912,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp01" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940808)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940808)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11924,7 +11924,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp08" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940709)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940709)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11936,7 +11936,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp07" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940716)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940716)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11948,7 +11948,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp06" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940720)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940720)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11960,7 +11960,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp10" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940602)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940602)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11972,7 +11972,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp09" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940610)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940610)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -11984,7 +11984,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp20" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940323)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940323)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -11995,7 +11995,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp17" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940506)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940506)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12006,7 +12006,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp16" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940511)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940511)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12017,7 +12017,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp15" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940517)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940517)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12029,7 +12029,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp14" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940519)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940519)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12041,7 +12041,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp13" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940523)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940523)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12053,7 +12053,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp12" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940526)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940526)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12065,7 +12065,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="berensp11" cloneof="berens">
- <description>The Berenstain Bears' Camping Adventure (Prototype, 19940530)</description>
+ <description>The Berenstain Bears' Camping Adventure (prototype, 19940530)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12088,7 +12088,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="bestofp" cloneof="bestof">
- <description>Best of the Best - Championship Karate (Euro, Prototype)</description>
+ <description>Best of the Best - Championship Karate (Euro, prototype)</description>
<year>1993</year>
<publisher>Electro Brain</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12113,7 +12113,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="beyondzt">
- <description>Beyond Zero Tolerance (USA, Prototype)</description>
+ <description>Beyond Zero Tolerance (USA, prototype)</description>
<year>1995</year>
<publisher>Accolade</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12150,7 +12150,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="btomato">
- <description>Bill's Tomato Game (Prototype)</description>
+ <description>Bill's Tomato Game (prototype)</description>
<year>1994</year>
<publisher>Psygnosis</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12186,7 +12186,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="biohazrbp" cloneof="biohazrb">
- <description>Bio Hazard Battle (USA, Prototype)</description>
+ <description>Bio Hazard Battle (USA, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12234,7 +12234,7 @@ https://bootleggames.fandom.com/wiki/Barver_Battle_Saga:_Tai_Kong_Zhan_Shi
</software>
<software name="bmaster2p" cloneof="bmaster2">
- <description>Blaster Master 2 (USA, Prototype)</description>
+ <description>Blaster Master 2 (USA, prototype)</description>
<year>1993</year>
<publisher>Sunsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12293,7 +12293,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="bodycop" cloneof="bodyco" supported="partial">
- <description>Body Count (Euro, Prototype)</description>
+ <description>Body Count (Euro, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -12308,7 +12308,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bodycop4" cloneof="bodyco" supported="partial">
- <description>Body Count (USA, Prototype, 19940208)</description>
+ <description>Body Count (USA, prototype, 19940208)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -12335,7 +12335,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software-->
<software name="bodycop5" cloneof="bodyco" supported="partial">
- <description>Body Count (USA, Prototype, 19940127)</description>
+ <description>Body Count (USA, prototype, 19940127)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -12351,7 +12351,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bodycop3" cloneof="bodyco" supported="partial">
- <description>Body Count (USA, Prototype, 19940303)</description>
+ <description>Body Count (USA, prototype, 19940303)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -12378,7 +12378,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software-->
<software name="bodycop2" cloneof="bodyco">
- <description>Body Count (USA, Prototype, 19940308)</description>
+ <description>Body Count (USA, prototype, 19940308)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12390,7 +12390,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bnzabros1" cloneof="bnzabros">
- <description>Bonanza Bros. (Euro, Jpn, Rev. A)</description>
+ <description>Bonanza Bros. (Euro, Jpn, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4046"/>
@@ -12415,7 +12415,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bonkersp5" cloneof="bonkers">
- <description>Bonkers (USA, Prototype, 19940328)</description>
+ <description>Bonkers (USA, prototype, 19940328)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12427,7 +12427,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bonkersp4" cloneof="bonkers">
- <description>Bonkers (USA, Prototype, 19940503)</description>
+ <description>Bonkers (USA, prototype, 19940503)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12439,7 +12439,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bonkersp3" cloneof="bonkers">
- <description>Bonkers (USA, Prototype, 19941004)</description>
+ <description>Bonkers (USA, prototype, 19941004)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12451,7 +12451,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bonkersp2" cloneof="bonkers">
- <description>Bonkers (USA, Prototype, 19941025)</description>
+ <description>Bonkers (USA, prototype, 19941025)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12463,7 +12463,7 @@ Unsupported [Menacer] peripheral (joypad works)
</software>
<software name="bonkersp1" cloneof="bonkers">
- <description>Bonkers (USA, Prototype, 19941029)</description>
+ <description>Bonkers (USA, prototype, 19941029)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -12597,7 +12597,7 @@ No [VDP] sprites
</software>
<software name="bubbap" cloneof="bubba">
- <description>Bubba'n'Stix (Euro, Prototype)</description>
+ <description>Bubba'n'Stix (Euro, prototype)</description>
<year>1994</year>
<publisher>Core Design</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12657,7 +12657,7 @@ No [VDP] sprites
</software>
<software name="budokanup" cloneof="budokan">
- <description>Budokan - The Martial Spirit (USA, Prototype 19900925)</description>
+ <description>Budokan - The Martial Spirit (USA, prototype 19900925)</description>
<year>1990</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12738,7 +12738,7 @@ No [VDP] sprites
</software>
<software name="captavenup" cloneof="captaven">
- <description>Captain America and the Avengers (USA, Prototype)</description>
+ <description>Captain America and the Avengers (USA, prototype)</description>
<year>1992</year>
<publisher>Data East</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12785,7 +12785,7 @@ No [VDP] sprites
</software>
<software name="cvaniap" cloneof="cvania">
- <description>Castlevania - The New Generation (Euro, Prototype)</description>
+ <description>Castlevania - The New Generation (Euro, prototype)</description>
<year>1994</year>
<publisher>Konami</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12848,7 +12848,7 @@ No [VDP] sprites
</software>
<software name="centurp" cloneof="centur">
- <description>Centurion - Defender of Rome (Euro, Prototype, 19910528)</description>
+ <description>Centurion - Defender of Rome (Euro, prototype, 19910528)</description>
<year>1991</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12859,7 +12859,7 @@ No [VDP] sprites
</software>
<software name="chakanp" cloneof="chakan">
- <description>Chakan - The Forever Man (Prototype 19921006)</description>
+ <description>Chakan - The Forever Man (prototype 19921006)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -12976,7 +12976,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="chaosen2">
- <description>The Chaos Engine 2 (Euro, Prototype)</description>
+ <description>The Chaos Engine 2 (Euro, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13122,7 +13122,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="chukrck2up" cloneof="chukrck2">
- <description>Chuck Rock II - Son of Chuck (USA, Prototype)</description>
+ <description>Chuck Rock II - Son of Chuck (USA, prototype)</description>
<year>1993</year>
<publisher>Virgin Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13179,7 +13179,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="cliffhp" cloneof="cliffh">
- <description>Cliffhanger (Prototype)</description>
+ <description>Cliffhanger (prototype)</description>
<year>1993</year>
<publisher>Sony Imagesoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13271,7 +13271,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp19" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940413)</description>
+ <description>College Football's National Championship (prototype, 19940413)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13286,7 +13286,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp18" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940418)</description>
+ <description>College Football's National Championship (prototype, 19940418)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13301,7 +13301,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp17" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940419)</description>
+ <description>College Football's National Championship (prototype, 19940419)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13316,7 +13316,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp16" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940429)</description>
+ <description>College Football's National Championship (prototype, 19940429)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13331,7 +13331,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp08" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940601)</description>
+ <description>College Football's National Championship (prototype, 19940601)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13346,7 +13346,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp07" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940603)</description>
+ <description>College Football's National Championship (prototype, 19940603)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13361,7 +13361,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp06" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940607)</description>
+ <description>College Football's National Championship (prototype, 19940607)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13376,7 +13376,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp05" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940608)</description>
+ <description>College Football's National Championship (prototype, 19940608)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13391,7 +13391,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp04" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940614)</description>
+ <description>College Football's National Championship (prototype, 19940614)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13406,7 +13406,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp03" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940615)</description>
+ <description>College Football's National Championship (prototype, 19940615)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13421,7 +13421,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp02" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940618)</description>
+ <description>College Football's National Championship (prototype, 19940618)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13436,7 +13436,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp01" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940620)</description>
+ <description>College Football's National Championship (prototype, 19940620)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13451,7 +13451,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp15" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940503)</description>
+ <description>College Football's National Championship (prototype, 19940503)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13466,7 +13466,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp14" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940506)</description>
+ <description>College Football's National Championship (prototype, 19940506)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13481,7 +13481,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp13" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940511-A)</description>
+ <description>College Football's National Championship (prototype, 19940511-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13496,7 +13496,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp12" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940517-A)</description>
+ <description>College Football's National Championship (prototype, 19940517-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13511,7 +13511,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp11" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940520)</description>
+ <description>College Football's National Championship (prototype, 19940520)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13526,7 +13526,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp10" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940525)</description>
+ <description>College Football's National Championship (prototype, 19940525)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13541,7 +13541,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="collncp09" cloneof="collnc">
- <description>College Football's National Championship (Prototype, 19940531)</description>
+ <description>College Football's National Championship (prototype, 19940531)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13577,7 +13577,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="columnsp" cloneof="columns">
- <description>Columns (Prototype 19900621)</description>
+ <description>Columns (prototype 19900621)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13615,7 +13615,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="combat">
- <description>Combat Aces (Prototype)</description>
+ <description>Combat Aces (prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13626,7 +13626,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixp" cloneof="comix">
- <description>Comix Zone (Euro, Prototype, 19950628)</description>
+ <description>Comix Zone (Euro, prototype, 19950628)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13664,7 +13664,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software-->
<software name="comixup01" cloneof="comix">
- <description>Comix Zone (Euro, Prototype, 19950712)</description>
+ <description>Comix Zone (Euro, prototype, 19950712)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13675,7 +13675,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup08" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950601-B)</description>
+ <description>Comix Zone (USA, prototype, 19950601-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13686,7 +13686,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup07" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950601-C)</description>
+ <description>Comix Zone (USA, prototype, 19950601-C)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13697,7 +13697,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup06" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950601-D)</description>
+ <description>Comix Zone (USA, prototype, 19950601-D)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13708,7 +13708,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup05" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950601)</description>
+ <description>Comix Zone (USA, prototype, 19950601)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13719,7 +13719,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup04" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950602-B)</description>
+ <description>Comix Zone (USA, prototype, 19950602-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13731,7 +13731,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup03" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950602)</description>
+ <description>Comix Zone (USA, prototype, 19950602)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13743,7 +13743,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup02" cloneof="comix">
- <description>Comix Zone (USA, Prototype, 19950603)</description>
+ <description>Comix Zone (USA, prototype, 19950603)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13755,7 +13755,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup10" cloneof="comix">
- <description>Comix Zone (Prototype, 19950526)</description>
+ <description>Comix Zone (prototype, 19950526)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -13767,7 +13767,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup09" cloneof="comix">
- <description>Comix Zone (Prototype, 19950530)</description>
+ <description>Comix Zone (prototype, 19950530)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -13779,7 +13779,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixkp" cloneof="comix">
- <description>Comix Zone (Kor, Prototype, 19950609)</description>
+ <description>Comix Zone (Kor, prototype, 19950609)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U,NTSC-J"/>
@@ -13791,7 +13791,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixsc" cloneof="comix">
- <description>Comix Zone (Sega Channel, Prototype, 19950612)</description>
+ <description>Comix Zone (Sega Channel, prototype, 19950612)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13818,7 +13818,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="comixup" cloneof="comix">
- <description>Comix Zone (USA, Prototype)</description>
+ <description>Comix Zone (USA, prototype)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13829,7 +13829,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="congo">
- <description>Congo (Prototype)</description>
+ <description>Congo (prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13855,7 +13855,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="coolspotup" cloneof="coolspot">
- <description>Cool Spot (USA, Prototype)</description>
+ <description>Cool Spot (USA, prototype)</description>
<year>1994</year>
<publisher>Virgin Games</publisher>
<sharedfeat name="compatibility" value="NTSC-U,NTSC-J"/>
@@ -13914,7 +13914,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="xfirep" cloneof="xfire">
- <description>Cross Fire (USA, Prototype)</description>
+ <description>Cross Fire (USA, prototype)</description>
<year>1991</year>
<publisher>Kyugo Boueki</publisher>
<part name="cart" interface="megadriv_cart">
@@ -13987,7 +13987,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp06" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940701)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940701)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -13999,7 +13999,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp05" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940702)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940702)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14011,7 +14011,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp04" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940703)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940703)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14023,7 +14023,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp03" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940712-B)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940712-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14035,7 +14035,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp02" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940712)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940712)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14047,7 +14047,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp01" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940713)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940713)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14059,7 +14059,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp12" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940601)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940601)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14071,7 +14071,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp11" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940606)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940606)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14083,7 +14083,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp10" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940610)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940610)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14095,7 +14095,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp09" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940623)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940623)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14107,7 +14107,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp08" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940628)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940628)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14119,7 +14119,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp07" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940630)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940630)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -14131,7 +14131,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp15" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940511)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940511)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14143,7 +14143,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp14" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940519)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940519)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14155,7 +14155,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="crystlptp13" cloneof="crystlpt">
- <description>Crystal's Pony Tale (USA, Prototype, 19940526)</description>
+ <description>Crystal's Pony Tale (USA, prototype, 19940526)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -14167,7 +14167,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="cursep" cloneof="curse">
- <description>Curse (USA, Prototype 19900626)</description>
+ <description>Curse (USA, prototype 19900626)</description>
<year>1990</year>
<publisher>INTV Corp.</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14229,7 +14229,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
<!-- This dump comes from an internal "Confidential Preview" cart at Acclaim USA -->
<software name="cutthrp" cloneof="cutthr">
- <description>CutThroat Island (Prototype)</description>
+ <description>CutThroat Island (prototype)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14240,7 +14240,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="cyborgjp" cloneof="cyborgj">
- <description>Cyborg Justice (Prototype)</description>
+ <description>Cyborg Justice (prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14251,7 +14251,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="daffyp" cloneof="daffy">
- <description>Daffy Duck in Hollywood (Euro, Prototype)</description>
+ <description>Daffy Duck in Hollywood (Euro, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14287,7 +14287,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="twinhawkp" cloneof="twinhawk">
- <description>Daisenpuu (Jpn, Prototype 19900406)</description>
+ <description>Daisenpuu (Jpn, prototype 19900406)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14349,7 +14349,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="darwinp" cloneof="darwin">
- <description>Darwin 4081 (Jpn, Prototype 19900221)</description>
+ <description>Darwin 4081 (Jpn, prototype 19900221)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14371,7 +14371,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dashdesp1" cloneof="dashdes">
- <description>Dashin' Desperadoes (Euro, Prototype)</description>
+ <description>Dashin' Desperadoes (Euro, prototype)</description>
<year>1993</year>
<publisher>Data East</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14382,7 +14382,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dashdesp2" cloneof="dashdes">
- <description>Dashin' Desperadoes (USA, Prototype)</description>
+ <description>Dashin' Desperadoes (USA, prototype)</description>
<year>1993</year>
<publisher>Data East</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14418,7 +14418,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="drscjp" cloneof="drsc">
- <description>David Robinson's Supreme Court (Jpn, Prototype 19920415)</description>
+ <description>David Robinson's Supreme Court (Jpn, prototype 19920415)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14454,7 +14454,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="daviscp2">
- <description>Davis Cup World Tour Tennis 2 (Prototype 1)</description>
+ <description>Davis Cup World Tour Tennis 2 (prototype 1)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14465,7 +14465,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="daviscp2a" cloneof="daviscp2">
- <description>Davis Cup II (USA, Prototype)</description>
+ <description>Davis Cup II (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14488,7 +14488,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dazexmasp" cloneof="dazexmas">
- <description>Daze Before Christmas (Oceania, Prototype)</description>
+ <description>Daze Before Christmas (Oceania, prototype)</description>
<year>1994</year>
<publisher>Sunsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14547,7 +14547,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="deathdlp" cloneof="deathdl">
- <description>Death Duel (USA, Prototype 19920506)</description>
+ <description>Death Duel (USA, prototype 19920506)</description>
<year>1992</year>
<publisher>Razorsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14558,7 +14558,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="demomanp" cloneof="demoman">
- <description>Demolition Man (USA, Prototype)</description>
+ <description>Demolition Man (USA, prototype)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14569,7 +14569,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp9" cloneof="desrtdem" supported="no">
- <description>Desert Demolition (Prototype, 19941206)</description>
+ <description>Desert Demolition (prototype, 19941206)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14580,7 +14580,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp8" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941208)</description>
+ <description>Desert Demolition (prototype, 19941208)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14591,7 +14591,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp7" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941212-B)</description>
+ <description>Desert Demolition (prototype, 19941212-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14602,7 +14602,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp6" cloneof="desrtdem" supported="no">
- <description>Desert Demolition (Prototype, 19941212)</description>
+ <description>Desert Demolition (prototype, 19941212)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14613,7 +14613,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp5" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941213)</description>
+ <description>Desert Demolition (prototype, 19941213)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14624,7 +14624,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp4" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941214)</description>
+ <description>Desert Demolition (prototype, 19941214)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14635,7 +14635,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp3" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941215)</description>
+ <description>Desert Demolition (prototype, 19941215)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14646,7 +14646,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp2" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941216)</description>
+ <description>Desert Demolition (prototype, 19941216)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14657,7 +14657,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="desrtdemp1" cloneof="desrtdem">
- <description>Desert Demolition (Prototype, 19941219)</description>
+ <description>Desert Demolition (prototype, 19941219)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14682,7 +14682,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="devilishp" cloneof="devilish">
- <description>Devilish (USA, Prototype 19920116)</description>
+ <description>Devilish (USA, prototype 19920116)</description>
<year>1992</year>
<publisher>Sage's Creation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14779,7 +14779,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dinohirep3" cloneof="dinohire">
- <description>Tom Mason's Dinosaurs for Hire (Prototype, 19930426)</description>
+ <description>Tom Mason's Dinosaurs for Hire (prototype, 19930426)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14790,7 +14790,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dinohirep2" cloneof="dinohire">
- <description>Tom Mason's Dinosaurs for Hire (Prototype, 19930427)</description>
+ <description>Tom Mason's Dinosaurs for Hire (prototype, 19930427)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14801,7 +14801,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dinohirep1" cloneof="dinohire">
- <description>Tom Mason's Dinosaurs for Hire (Prototype, 19930502)</description>
+ <description>Tom Mason's Dinosaurs for Hire (prototype, 19930502)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14845,7 +14845,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="dominus">
- <description>Dominus (USA, Prototype)</description>
+ <description>Dominus (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -14911,7 +14911,7 @@ https://bootleggames.fandom.com/wiki/Chaoji_Dafuweng
</software>
<software name="ddragon2p" cloneof="ddragon2">
- <description>Double Dragon II - The Revenge (Jpn, Prototype 19911018)</description>
+ <description>Double Dragon II - The Revenge (Jpn, prototype 19911018)</description>
<year>1991</year>
<publisher>Palsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15059,7 +15059,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="dlair">
- <description>Dragon's Lair (USA, Prototype)</description>
+ <description>Dragon's Lair (USA, prototype)</description>
<year>199?</year>
<publisher>Taito</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15218,7 +15218,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="dyndukep" cloneof="dynduke">
- <description>Dynamite Duke (Prototype 19900621)</description>
+ <description>Dynamite Duke (prototype 19900621)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15244,7 +15244,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="dheadjp" cloneof="dhead">
- <description>Dynamite Headdy (Jpn, Prototype)</description>
+ <description>Dynamite Headdy (Jpn, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15255,7 +15255,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="dheadp3" cloneof="dhead">
- <description>Dynamite Headdy (Prototype, 19940614-CABEZA)</description>
+ <description>Dynamite Headdy (prototype, 19940614-CABEZA)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15278,7 +15278,7 @@ Choppy timings during gameplay (btanb?)
</software-->
<software name="dheadp2" cloneof="dhead">
- <description>Dynamite Headdy (Prototype, 19940616)</description>
+ <description>Dynamite Headdy (prototype, 19940616)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15289,7 +15289,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="dheadp1" cloneof="dhead">
- <description>Dynamite Headdy (Prototype, 19940622)</description>
+ <description>Dynamite Headdy (prototype, 19940622)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15336,7 +15336,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="earnestp" cloneof="earnest">
- <description>Earnest Evans (USA, Prototype 19940419)</description>
+ <description>Earnest Evans (USA, prototype 19940419)</description>
<year>1994</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15404,7 +15404,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="ecco2p" cloneof="ecco2">
- <description>Ecco - The Tides of Time (USA, Prototype)</description>
+ <description>Ecco - The Tides of Time (USA, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15416,7 +15416,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="ecco2p1" cloneof="ecco2">
- <description>Ecco - The Tides of Time (USA, Prototype, Alt)</description>
+ <description>Ecco - The Tides of Time (USA, prototype, alt)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15428,7 +15428,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="ecco2p2" cloneof="ecco2">
- <description>Ecco - The Tides of Time (USA, Prototype, 19940429)</description>
+ <description>Ecco - The Tides of Time (USA, prototype, 19940429)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15455,7 +15455,7 @@ Choppy timings during gameplay (btanb?)
</software>
<software name="ecco2px11" cloneof="ecco2">
- <description>Ecco - The Tides of Time (USA, Prototype X11, 19940413)</description>
+ <description>Ecco - The Tides of Time (USA, prototype X11, 19940413)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15621,7 +15621,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="steelempp" cloneof="empsteel">
- <description>Steel Empire (USA, Prototype 19920313)</description>
+ <description>Steel Empire (USA, prototype 19920313)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15646,7 +15646,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp10" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940418)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940418)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15658,7 +15658,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp06" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940602)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940602)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15670,7 +15670,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp05" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940607)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940607)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15682,7 +15682,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp04" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940610)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940610)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15694,7 +15694,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp03" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940614)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940614)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15706,7 +15706,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp02" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940618-A)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940618-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15718,7 +15718,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp01" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940620)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940620)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15730,7 +15730,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp11" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940309)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940309)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -15742,7 +15742,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp09" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940509)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940509)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -15754,7 +15754,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp08" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940518)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940518)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -15766,7 +15766,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="tazmarsp07" cloneof="tazmars">
- <description>Escape from Mars Starring Taz (Prototype, 19940523)</description>
+ <description>Escape from Mars Starring Taz (prototype, 19940523)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15804,7 +15804,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="espnhnp" cloneof="espnhn">
- <description>ESPN National Hockey Night (USA, Prototype)</description>
+ <description>ESPN National Hockey Night (USA, prototype)</description>
<year>1994</year>
<publisher>Sony Imagesoft</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -15849,7 +15849,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="eswatj" cloneof="eswat">
- <description>Cyber Police ESWAT (Jpn, Rev. 0)</description>
+ <description>Cyber Police ESWAT (Jpn, rev. 0)</description>
<year>1990</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4029"/>
@@ -15863,7 +15863,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="eternalcp" cloneof="eternalc">
- <description>Eternal Champions (Euro, Prototype)</description>
+ <description>Eternal Champions (Euro, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -15890,7 +15890,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="eternalcjp" cloneof="eternalc">
- <description>Eternal Champions (Jpn, Prototype, 19931117)</description>
+ <description>Eternal Champions (Jpn, prototype, 19931117)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15901,7 +15901,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="euroclubp" cloneof="euroclub">
- <description>European Club Soccer (Euro, Prototype 19911025)</description>
+ <description>European Club Soccer (Euro, prototype 19911025)</description>
<year>1992</year>
<publisher>Virgin Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15951,7 +15951,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="exilep" cloneof="exile">
- <description>Exile (USA, Prototype 19911213)</description>
+ <description>Exile (USA, prototype 19911213)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -15994,7 +15994,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="exosquadup" cloneof="exosquad">
- <description>Exo Squad (USA, Prototype)</description>
+ <description>Exo Squad (USA, prototype)</description>
<year>1995</year>
<publisher>Playmates Interactive</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -16042,7 +16042,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f15se2up" cloneof="f15se2">
- <description>F-15 Strike Eagle II (USA, Prototype)</description>
+ <description>F-15 Strike Eagle II (USA, prototype)</description>
<year>1993</year>
<publisher>Microprose</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16053,7 +16053,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f15se2upa" cloneof="f15se2">
- <description>F-15 Strike Eagle II (USA, Prototype, Alt)</description>
+ <description>F-15 Strike Eagle II (USA, prototype, alt)</description>
<year>1993</year>
<publisher>Microprose</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -16076,7 +16076,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f22p" cloneof="f22">
- <description>F-22 Interceptor (Euro, USA, Prototype)</description>
+ <description>F-22 Interceptor (Euro, USA, prototype)</description>
<year>1991</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16087,7 +16087,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f22p2" cloneof="f22">
- <description>F-22 Interceptor (Prototype 19910917)</description>
+ <description>F-22 Interceptor (prototype 19910917)</description>
<year>1991</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16115,7 +16115,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f1wcp" cloneof="f1wc">
- <description>F1 - World Championship Edition (Euro, Prototype)</description>
+ <description>F1 - World Championship Edition (Euro, prototype)</description>
<year>1993</year>
<publisher>Domark</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16126,7 +16126,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f1wcup" cloneof="f1wc">
- <description>F1 - World Championship Edition (US, Prototype)</description>
+ <description>F1 - World Championship Edition (US, prototype)</description>
<year>1994</year>
<publisher>Domark</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16157,7 +16157,7 @@ https://segaretro.org/Elitserien_96
</software>
<software name="f1circusp" cloneof="f1circus">
- <description>F1 Circus MD (USA, Prototype 19911228)</description>
+ <description>F1 Circus MD (USA, prototype 19911228)</description>
<year>1991</year>
<publisher>Nichibutsu</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16320,7 +16320,7 @@ https://segaretro.org/Feng_Kuang_Tao_Hua_Yuan
</software>
<software name="fengkuan1" cloneof="fengkuan">
- <description>Feng Kuang Tao Hua Yuan (Tw, Unprotected)</description>
+ <description>Feng Kuang Tao Hua Yuan (Tw, unprotected)</description>
<year>199?</year>
<publisher>Creaton Softech</publisher>
<info name="alt_title" value="瘋狂桃花源"/>
@@ -16353,7 +16353,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
<software name="fengshena" cloneof="fengshen">
<!-- Hacked according to NoIntro to have SRAM declared in header -->
<!-- Has "By Ken Xie" at $130 -->
- <description>Fēngshén Yīngjié Chuán (Tw, Alt?)</description>
+ <description>Fēngshén Yīngjié Chuán (Tw, alt?)</description>
<year>1996</year>
<publisher>Chuanpu Technologies</publisher>
<info name="alt_title" value="封神英傑傳"/>
@@ -16393,7 +16393,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="ferrarip" cloneof="ferrari">
- <description>Ferrari Grand Prix Challenge (Prototype)</description>
+ <description>Ferrari Grand Prix Challenge (prototype)</description>
<year>1992</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16426,7 +16426,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="fidodido">
- <description>Fido Dido (USA, Prototype)</description>
+ <description>Fido Dido (USA, prototype)</description>
<year>1994</year>
<publisher>Kaneko</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16437,7 +16437,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="futbol" cloneof="fifa95">
- <description>Futbol Argentino 98 - Pasion de Multitudes (Pirate)</description>
+ <description>Futbol Argentino 98 - Pasion de Multitudes (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16451,7 +16451,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="fifa99" cloneof="fifa96">
- <description>FIFA Soccer 99 (Pirate)</description>
+ <description>FIFA Soccer 99 (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16465,7 +16465,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="fifa2k" cloneof="fifa97">
- <description>FIFA Soccer 2000 Gold Edition (Pirate)</description>
+ <description>FIFA Soccer 2000 Gold Edition (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16555,7 +16555,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="fireshrku1" cloneof="fireshrk">
- <description>Fire Shark (USA, Alt)</description>
+ <description>Fire Shark (USA, alt)</description>
<year>1990</year>
<publisher>Dreamworks Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16580,7 +16580,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="samesamep" cloneof="fireshrk">
- <description>Same! Same! Same! (Jpn, Prototype 19900730)</description>
+ <description>Same! Same! Same! (Jpn, prototype 19900730)</description>
<year>1990</year>
<publisher>Toaplan</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16616,7 +16616,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="flashbu1" cloneof="flashb">
- <description>Flashback - The Quest for Identity (USA, Alt)</description>
+ <description>Flashback - The Quest for Identity (USA, alt)</description>
<year>1993</year>
<publisher>U.S. Gold</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -16628,7 +16628,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="flashp">
- <description>Flash Point (Jpn, Prototype)</description>
+ <description>Flash Point (Jpn, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16743,7 +16743,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
<!-- This was found by the developers in some old disks -->
<software name="frogdude">
- <description>Frog Dude (Prototype)</description>
+ <description>Frog Dude (prototype)</description>
<year>1993</year>
<publisher>Twilight</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16781,7 +16781,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="funcar">
- <description>Fun Car Rally (USA, Prototype)</description>
+ <description>Fun Car Rally (USA, prototype)</description>
<year>1993</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16792,7 +16792,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="glocp" cloneof="gloc">
- <description>G-LOC Air Battle (World, Prototype)</description>
+ <description>G-LOC Air Battle (World, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -16829,7 +16829,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
<!-- This dump was originally tagged as Alt, but it matched Jeckidy's proto dump (cart with label GAIN GROUND #DFE7) -->
<software name="gground1p" cloneof="gground">
- <description>Gain Ground (USA, Prototype)</description>
+ <description>Gain Ground (USA, prototype)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17036,7 +17036,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="ghostbstp" cloneof="ghostbst">
- <description>Ghostbusters (Prototype 19900501)</description>
+ <description>Ghostbusters (prototype 19900501)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17047,7 +17047,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="ghoulsp" cloneof="ghouls">
- <description>Ghouls'n Ghosts (USA, Prototype 19890622)</description>
+ <description>Ghouls'n Ghosts (USA, prototype 19890622)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17099,7 +17099,7 @@ https://segaretro.org/Feng_Shen_Ying_Jie_Chuan
</software>
<software name="mickmackup" cloneof="mickmack">
- <description>Mick &amp; Mack as the Global Gladiators (USA, Prototype)</description>
+ <description>Mick &amp; Mack as the Global Gladiators (USA, prototype)</description>
<year>1992</year>
<publisher>Virgin Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17153,7 +17153,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="godsup" cloneof="gods">
- <description>Gods (USA, Prototype)</description>
+ <description>Gods (USA, prototype)</description>
<year>1992</year>
<publisher>Mindscape</publisher>
<sharedfeat name="compatibility" value="NTSC-U,PAL"/>
@@ -17179,7 +17179,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="goldnaxep" cloneof="goldnaxe">
- <description>Golden Axe (Prototype 19891122)</description>
+ <description>Golden Axe (prototype 19891122)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17190,7 +17190,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="goldnax2p" cloneof="goldnax2">
- <description>Golden Axe II (World, Prototype)</description>
+ <description>Golden Axe II (World, prototype)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ゴールデンアックスII"/>
@@ -17375,7 +17375,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="growlp" cloneof="growl">
- <description>Growl (USA, Prototype 19910826)</description>
+ <description>Growl (USA, prototype 19910826)</description>
<year>1991</year>
<publisher>Taito</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17576,7 +17576,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="homeap" cloneof="homea">
- <description>Home Alone (USA, Prototype)</description>
+ <description>Home Alone (USA, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17600,7 +17600,7 @@ Unemulated [Sega Mega Modem] features
<!-- This is the same as the final, but without the padding up to 512Kb and with different checksum in the internal header -->
<software name="homea2p" cloneof="homea2">
- <description>Home Alone 2 - Lost in New York (USA, Prototype 19930929)</description>
+ <description>Home Alone 2 - Lost in New York (USA, prototype 19930929)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17666,7 +17666,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="hybridfp" cloneof="hybridf" supported="no">
- <description>The Hybrid Front (Jpn, Prototype)</description>
+ <description>The Hybrid Front (Jpn, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17709,7 +17709,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="hyperdnkjp" cloneof="hyperdnk">
- <description>Hyper Dunk - The Playoff Edition (Jpn, Prototype)</description>
+ <description>Hyper Dunk - The Playoff Edition (Jpn, prototype)</description>
<year>1994</year>
<publisher>Konami</publisher>
<!-- Compatibility not enforced -->
@@ -17769,7 +17769,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="crashdump" cloneof="crashdum">
- <description>The Incredible Crash Dummies (USA, Prototype)</description>
+ <description>The Incredible Crash Dummies (USA, prototype)</description>
<year>1993</year>
<publisher>Flying Edge</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17817,7 +17817,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp1" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -17829,7 +17829,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp2" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19941229)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19941229)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17841,7 +17841,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp3" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19941228-A)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19941228-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17853,7 +17853,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp8" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940101)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19940101)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17865,7 +17865,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp7" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940103)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19940103)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17877,7 +17877,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp6" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940126)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19940126)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17889,7 +17889,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp5" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940127)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19940127)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17901,7 +17901,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp4" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940923-A)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19940923-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -17913,7 +17913,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="instchp9" cloneof="instch">
- <description>Instruments of Chaos Starring Young Indiana Jones (Prototype, 19931228)</description>
+ <description>Instruments of Chaos Starring Young Indiana Jones (prototype, 19931228)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -17925,7 +17925,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="dinho98" cloneof="issdx">
- <description>Ronaldinho 98 (Pirate)</description>
+ <description>Ronaldinho 98 (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -17947,7 +17947,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="itchy">
- <description>The Itchy and Scratchy Game (USA, Prototype)</description>
+ <description>The Itchy and Scratchy Game (USA, prototype)</description>
<year>1994</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18059,7 +18059,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="finalbu" cloneof="jbdougko">
- <description>Final Blow (USA, James 'Buster' Douglas Knockout Boxing Prototype 19900116)</description>
+ <description>Final Blow (USA, James 'Buster' Douglas Knockout Boxing prototype 19900116)</description>
<year>1990</year>
<publisher>Taito</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18155,7 +18155,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jellyboy">
- <description>Jelly Boy (Euro, Prototype)</description>
+ <description>Jelly Boy (Euro, prototype)</description>
<year>1995</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18225,7 +18225,7 @@ Unsupported [Sega Mouse] peripheral
<!-- // BAD DUMP -->
<software name="jimpower">
- <description>Jim Power - The Arcade Game (USA, Prototype)</description>
+ <description>Jim Power - The Arcade Game (USA, prototype)</description>
<year>1994</year>
<publisher>Loriciel</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18258,7 +18258,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="joemont2">
- <description>Joe Montana II Sports Talk Football (World, Rev. A)</description>
+ <description>Joe Montana II Sports Talk Football (World, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4565 (JPN)"/>
@@ -18283,7 +18283,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="maddenp" cloneof="madden">
- <description>John Madden Football (Prototype, 19901107)</description>
+ <description>John Madden Football (prototype, 19901107)</description>
<year>1990</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18345,7 +18345,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jdreddp2" cloneof="jdredd">
- <description>Judge Dredd (USA, Prototype, Alt)</description>
+ <description>Judge Dredd (USA, prototype, alt)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18356,7 +18356,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jdreddp1" cloneof="jdredd">
- <description>Judge Dredd (USA, Prototype)</description>
+ <description>Judge Dredd (USA, prototype)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18393,7 +18393,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jstrikep" cloneof="jstrike">
- <description>Jungle Strike (USA, Prototype)</description>
+ <description>Jungle Strike (USA, prototype)</description>
<year>1993</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18418,7 +18418,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkp" cloneof="jpark">
- <description>Jurassic Park (Euro, Prototype 19930614)</description>
+ <description>Jurassic Park (Euro, prototype 19930614)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -18430,7 +18430,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkup" cloneof="jpark">
- <description>Jurassic Park (USA, Prototype)</description>
+ <description>Jurassic Park (USA, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18442,7 +18442,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkup2" cloneof="jpark">
- <description>Jurassic Park (USA, Prototype 19930526)</description>
+ <description>Jurassic Park (USA, prototype 19930526)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -18454,7 +18454,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep6" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940708)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940708)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18466,7 +18466,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep5" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940713)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940713)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18478,7 +18478,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep4" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940714)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940714)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18490,7 +18490,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep3" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940715)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940715)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18502,7 +18502,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep2" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940717)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940717)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18514,7 +18514,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep1" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940718)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940718)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -18526,7 +18526,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="jparkrep9" cloneof="jparkre" supported="no">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940620)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940620)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -18541,7 +18541,7 @@ Black screen
</software>
<software name="jparkrep8" cloneof="jparkre" supported="no">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940622)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940622)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -18556,7 +18556,7 @@ Black screen
</software>
<software name="jparkrep7" cloneof="jparkre">
- <description>Jurassic Park - Rampage Edition (Prototype, 19940630)</description>
+ <description>Jurassic Park - Rampage Edition (prototype, 19940630)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -18593,7 +18593,7 @@ Black screen
</software>
<software name="kawasakip" cloneof="kawasaki">
- <description>Kawasaki Superbike Challenge (USA, Prototype)</description>
+ <description>Kawasaki Superbike Challenge (USA, prototype)</description>
<year>1994</year>
<publisher>Time Warner Interactive</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18615,7 +18615,7 @@ Black screen
</software>
<software name="kidchamp" cloneof="kidcham">
- <description>Kid Chameleon (USA, Prototype 19911219)</description>
+ <description>Kid Chameleon (USA, prototype 19911219)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18749,7 +18749,7 @@ Black screen
</software>
<software name="klaxp" cloneof="klax">
- <description>Klax (USA, Prototype 19900621)</description>
+ <description>Klax (USA, prototype 19900621)</description>
<year>1990</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18872,7 +18872,7 @@ Black screen
</software>
<software name="landstlkup" cloneof="landstlk">
- <description>Landstalker - Treasure of King Nole (USA, Prototype)</description>
+ <description>Landstalker - Treasure of King Nole (USA, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -18886,7 +18886,7 @@ Black screen
</software>
<software name="landstlkup2" cloneof="landstlk">
- <description>Landstalker - The Treasures of King Nole (USA, Prototype 19930713)</description>
+ <description>Landstalker - The Treasures of King Nole (USA, prototype 19930713)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -19065,7 +19065,7 @@ Unsupported [Justifier] peripheral (joypad works)
</software>
<software name="lethalenup" cloneof="lethalen" supported="partial">
- <description>Lethal Enforcers (USA, Prototype)</description>
+ <description>Lethal Enforcers (USA, prototype)</description>
<year>1993</year>
<publisher>Konami</publisher>
<notes><![CDATA[
@@ -19170,7 +19170,7 @@ Unsupported [Justifier] peripheral (joypad works)
</software>
<software name="lightcrsp" cloneof="lightcrs">
- <description>Light Crusader (Prototype, 19950608)</description>
+ <description>Light Crusader (prototype, 19950608)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19199,7 +19199,7 @@ Unsupported [Justifier] peripheral (joypad works)
</software>
<software name="lobo">
- <description>Lobo (USA, Prototype)</description>
+ <description>Lobo (USA, prototype)</description>
<year>1996</year>
<publisher>Ocean</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19255,7 +19255,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="lostvikp" cloneof="lostvik">
- <description>The Lost Vikings (Euro, Prototype)</description>
+ <description>The Lost Vikings (Euro, prototype)</description>
<year>1993</year>
<publisher>Interplay</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19292,7 +19292,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="lotus2p" cloneof="lotus2">
- <description>Lotus II (USA, Prototype)</description>
+ <description>Lotus II (USA, prototype)</description>
<year>1993</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19304,7 +19304,7 @@ Unsupported [Sega Mouse] peripheral
<!-- These were recovered from a preview floppy disk. The composite ROM has CRC 2b4c3ec1 -->
<software name="lufia">
- <description>Lufia &amp; The Fortress of Doom (USA, Early Prototype)</description>
+ <description>Lufia &amp; The Fortress of Doom (USA, early prototype)</description>
<year>1993</year>
<publisher>Taito</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19419,7 +19419,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp05" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950411)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950411)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19430,7 +19430,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp04" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950421)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950421)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19441,7 +19441,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp03" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950425)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950425)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19452,7 +19452,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp02" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950428)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950428)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19463,7 +19463,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp11" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950202)</description>
+ <description>The Magic School Bus (prototype, 19950202)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -19475,7 +19475,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp10" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950217)</description>
+ <description>The Magic School Bus (prototype, 19950217)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19486,7 +19486,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp12" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950112)</description>
+ <description>The Magic School Bus (prototype, 19950112)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -19498,7 +19498,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp09" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950307)</description>
+ <description>The Magic School Bus (prototype, 19950307)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19509,7 +19509,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp08" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950314)</description>
+ <description>The Magic School Bus (prototype, 19950314)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19520,7 +19520,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp07" cloneof="msb">
- <description>The Magic School Bus (Prototype, 19950327)</description>
+ <description>The Magic School Bus (prototype, 19950327)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19531,7 +19531,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp06" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950331)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950331)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19542,7 +19542,7 @@ https://segaretro.org/Ma_Qiao_E_Mo_Ta:_Devilish_Mahjong_Tower
</software>
<software name="msbp01" cloneof="msb">
- <description>Scholastic's The Magic School Bus (Prototype, 19950505)</description>
+ <description>Scholastic's The Magic School Bus (prototype, 19950505)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19649,7 +19649,7 @@ Unsupported [Sega Mouse] peripheral (trackball)
</software>
<software name="markop" cloneof="marko">
- <description>Marko's Magic Football (Euro, Prototype)</description>
+ <description>Marko's Magic Football (Euro, prototype)</description>
<year>1994</year>
<publisher>Domark</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19715,7 +19715,7 @@ Unsupported [Sega Mouse] peripheral (trackball)
</software>
<software name="mastmonsjp" cloneof="mastmons">
- <description>Master of Monsters (Jpn, Prototype 19910426)</description>
+ <description>Master of Monsters (Jpn, prototype 19910426)</description>
<year>1991</year>
<publisher>Toshiba EMI</publisher>
<part name="cart" interface="megadriv_cart">
@@ -19824,7 +19824,7 @@ Unsupported [Sega Mouse] peripheral (trackball)
</software>
<software name="mcdonaldjp" cloneof="mcdonald">
- <description>McDonald's Treasure Land Adventure (Jpn, Prototype)</description>
+ <description>McDonald's Treasure Land Adventure (Jpn, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="alt_title" value="マクドナルド トレジャーランド アドベンチャー"/>
@@ -19920,7 +19920,7 @@ Unsupported [Sega Mouse] peripheral (trackball)
</software>
<software name="rockman1" cloneof="megaman" supported="no">
- <description>Rockman Mega World (Jpn, Alt)</description>
+ <description>Rockman Mega World (Jpn, alt)</description>
<year>1994</year>
<publisher>Capcom</publisher>
<notes><![CDATA[
@@ -19954,7 +19954,7 @@ Black screen
</software>
<software name="megaswivb" cloneof="megaswiv">
- <description>Mega SWIV (Euro, Pirate)</description>
+ <description>Mega SWIV (Euro, pirate)</description>
<year>1994</year>
<publisher>Time Warner Interactive</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20108,7 +20108,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmaniaup" cloneof="mmania">
- <description>Mickey Mania - The Timeless Adventures of Mickey Mouse (USA, Prototype)</description>
+ <description>Mickey Mania - The Timeless Adventures of Mickey Mouse (USA, prototype)</description>
<year>1994</year>
<publisher>Sony Imagesoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20130,7 +20130,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="micromaca" cloneof="micromac">
- <description>Micro Machines (Euro, USA, Alt)</description>
+ <description>Micro Machines (Euro, USA, alt)</description>
<year>1993</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20141,7 +20141,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="micromacb" cloneof="micromac">
- <description>Micro Machines (Euro, USA, Alt 2)</description>
+ <description>Micro Machines (Euro, USA, alt 2)</description>
<year>1993</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20175,7 +20175,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="micromc2a" cloneof="micromc2">
- <description>Micro Machines 2 - Turbo Tournament (Euro, J-Cart, Alt)</description>
+ <description>Micro Machines 2 - Turbo Tournament (Euro, J-Cart, alt)</description>
<year>1994</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20262,7 +20262,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mightmg3">
- <description>Might and Magic III - Isles of Terra (USA, Prototype)</description>
+ <description>Might and Magic III - Isles of Terra (USA, prototype)</description>
<year>1993</year>
<publisher>FCI?</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20297,7 +20297,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp4" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (USA, Prototype, 19940804)</description>
+ <description>Mighty Morphin Power Rangers (USA, prototype, 19940804)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20309,7 +20309,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp3" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (USA, Prototype, 19940808)</description>
+ <description>Mighty Morphin Power Rangers (USA, prototype, 19940808)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20321,7 +20321,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp2" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (Prototype, 19940809)</description>
+ <description>Mighty Morphin Power Rangers (prototype, 19940809)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20333,7 +20333,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp1" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (Prototype, 19940810)</description>
+ <description>Mighty Morphin Power Rangers (prototype, 19940810)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -20345,7 +20345,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp6" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (Prototype, 19940708)</description>
+ <description>Mighty Morphin Power Rangers (prototype, 19940708)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20356,7 +20356,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprp5" cloneof="mmpr">
- <description>Mighty Morphin Power Rangers (Prototype, 19940718)</description>
+ <description>Mighty Morphin Power Rangers (prototype, 19940718)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20379,7 +20379,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprtmp4" cloneof="mmprtm">
- <description>Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950713)</description>
+ <description>Mighty Morphin Power Rangers - The Movie (USA, prototype, 19950713)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20390,7 +20390,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprtmp3" cloneof="mmprtm">
- <description>Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950717)</description>
+ <description>Mighty Morphin Power Rangers - The Movie (USA, prototype, 19950717)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20402,7 +20402,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprtmp2" cloneof="mmprtm">
- <description>Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950722)</description>
+ <description>Mighty Morphin Power Rangers - The Movie (USA, prototype, 19950722)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20414,7 +20414,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mmprtmp1" cloneof="mmprtm">
- <description>Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950724)</description>
+ <description>Mighty Morphin Power Rangers - The Movie (USA, prototype, 19950724)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20437,7 +20437,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="ditkapf1" cloneof="ditkapf">
- <description>Mike Ditka Power Football (Euro, USA, Alt)</description>
+ <description>Mike Ditka Power Football (Euro, USA, alt)</description>
<year>1991</year>
<publisher>Ballistic</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20499,7 +20499,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="mk5a" cloneof="mk5">
- <description>MK 5 - Mortal Combat - SubZero (Pirate)</description>
+ <description>MK 5 - Mortal Combat - SubZero (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20535,7 +20535,7 @@ Needs [megadriv_z80_z80_bank_w] workaround to work (emulator copy protection?)
</software>
<software name="monopolyp" cloneof="monopoly">
- <description>Monopoly (USA, Prototype)</description>
+ <description>Monopoly (USA, prototype)</description>
<year>1992</year>
<publisher>Parker Brothers</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20659,7 +20659,7 @@ Notice that these are not working on real hardware due to bugged code with VDP i
- CRC: 237fb077 (2012-04-25) - 'fixed' version for hardware which patches the source code to make the game work on a console
-->
<software name="mrnutz2">
- <description>Mr. Nutz - Hoppin' Mad (Prototype)</description>
+ <description>Mr. Nutz - Hoppin' Mad (prototype)</description>
<year>1994</year>
<publisher>Ocean</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20670,7 +20670,7 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</software>
<software name="mspacmanpir" cloneof="mspacman">
- <description>Ms. Pac-Man (Pirate, Ripped from Golden 10 in 1)</description>
+ <description>Ms. Pac-Man (pirate, ripped from Golden 10 in 1)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20778,7 +20778,7 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</software>
<software name="mystdefp" cloneof="mystdef">
- <description>Mystic Defender (Prototype, 19890914)</description>
+ <description>Mystic Defender (prototype, 19890914)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -20906,7 +20906,7 @@ Notice that these are not working on real hardware due to bugged code with VDP i
</software>
<software name="nbaactp3" cloneof="nbaact" supported="no">
- <description>NBA Action (Prototype, 19940104)</description>
+ <description>NBA Action (prototype, 19940104)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -20920,7 +20920,7 @@ Crashes after team selection
</software>
<software name="nbaactp2" cloneof="nbaact">
- <description>NBA Action (Prototype, 19940116)</description>
+ <description>NBA Action (prototype, 19940116)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -20935,7 +20935,7 @@ Crashes after team selection
</software>
<software name="nbaactp1" cloneof="nbaact" supported="no">
- <description>NBA Action (Prototype, 19940127, Broken - C08 missing)</description>
+ <description>NBA Action (prototype, 19940127, broken - C08 missing)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -20953,7 +20953,7 @@ Black screen
</software>
<software name="nbaact95p23" cloneof="nbaact95" supported="no">
- <description>NBA Action '95 (Prototype, 19941202-B)</description>
+ <description>NBA Action '95 (prototype, 19941202-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -20970,7 +20970,7 @@ Crashes after disclaimer
</software>
<software name="nbaact95p22" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941209)</description>
+ <description>NBA Action '95 (prototype, 19941209)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -20987,7 +20987,7 @@ Only Celtics vs. Lakers exibition match available (btanb)
</software>
<software name="nbaact95p21" cloneof="nbaact95" supported="no">
- <description>NBA Action '95 (Prototype, 19941215)</description>
+ <description>NBA Action '95 (prototype, 19941215)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21004,7 +21004,7 @@ Black screen
</software>
<software name="nbaact95p20" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941222-A)</description>
+ <description>NBA Action '95 (prototype, 19941222-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21018,7 +21018,7 @@ Black screen
</software>
<software name="nbaact95p19" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941224-A)</description>
+ <description>NBA Action '95 (prototype, 19941224-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21032,7 +21032,7 @@ Black screen
</software>
<software name="nbaact95p18" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941229)</description>
+ <description>NBA Action '95 (prototype, 19941229)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21046,7 +21046,7 @@ Black screen
</software>
<software name="nbaact95p17" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941230)</description>
+ <description>NBA Action '95 (prototype, 19941230)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21060,7 +21060,7 @@ Black screen
</software>
<software name="nbaact95p16" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941231)</description>
+ <description>NBA Action '95 (prototype, 19941231)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21074,7 +21074,7 @@ Black screen
</software>
<software name="nbaact95p03" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950201, Alt)</description>
+ <description>NBA Action '95 (prototype, 19950201, alt)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21089,7 +21089,7 @@ Black screen
<!-- is the date correct? -->
<software name="nbaact95p02" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950201)</description>
+ <description>NBA Action '95 (prototype, 19950201)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21103,7 +21103,7 @@ Black screen
</software>
<software name="nbaact95p01" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950202)</description>
+ <description>NBA Action '95 (prototype, 19950202)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21117,7 +21117,7 @@ Black screen
</software>
<software name="nbaact95p15" cloneof="nbaact95" supported="no">
- <description>NBA Action '95 (Prototype, 19950103)</description>
+ <description>NBA Action '95 (prototype, 19950103)</description>
<year>1995</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21135,7 +21135,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1df064
</software>
<software name="nbaact95p14" cloneof="nbaact95" supported="no">
- <description>NBA Action '95 (Prototype, 19950108)</description>
+ <description>NBA Action '95 (prototype, 19950108)</description>
<year>1995</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21153,7 +21153,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1df7be
</software>
<software name="nbaact95p13" cloneof="nbaact95" supported="no">
- <description>NBA Action '95 (Prototype, 19950112)</description>
+ <description>NBA Action '95 (prototype, 19950112)</description>
<year>1995</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21171,7 +21171,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc4
</software>
<software name="nbaact95p12" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950115-A)</description>
+ <description>NBA Action '95 (prototype, 19950115-A)</description>
<year>1995</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21188,7 +21188,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p11" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950121)</description>
+ <description>NBA Action '95 (prototype, 19950121)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21202,7 +21202,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p10" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950122-B)</description>
+ <description>NBA Action '95 (prototype, 19950122-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21216,7 +21216,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p09" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950124-B)</description>
+ <description>NBA Action '95 (prototype, 19950124-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21230,7 +21230,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p08" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950127-A)</description>
+ <description>NBA Action '95 (prototype, 19950127-A)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21244,7 +21244,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p07" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950127-B)</description>
+ <description>NBA Action '95 (prototype, 19950127-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21258,7 +21258,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p06" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950128-A)</description>
+ <description>NBA Action '95 (prototype, 19950128-A)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21272,7 +21272,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p05" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950128)</description>
+ <description>NBA Action '95 (prototype, 19950128)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21286,7 +21286,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p04" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19950130)</description>
+ <description>NBA Action '95 (prototype, 19950130)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21300,7 +21300,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p25" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941118)</description>
+ <description>NBA Action '95 (prototype, 19941118)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21314,7 +21314,7 @@ Black screen, crashes at ROM+SRAM check PC=0x1defc8
</software>
<software name="nbaact95p24" cloneof="nbaact95">
- <description>NBA Action '95 (Prototype, 19941123-A)</description>
+ <description>NBA Action '95 (prototype, 19941123-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21401,7 +21401,7 @@ No [EEPROM] save
</software>
<software name="nbajamtef" cloneof="nbajamte" supported="no">
- <description>NBA Jam Tournament Edition (World, 2002 Fix Release)</description>
+ <description>NBA Jam Tournament Edition (World, 2002 fix release)</description>
<year>2002?</year>
<publisher>Acclaim Entertainment</publisher>
<notes><![CDATA[
@@ -21430,7 +21430,7 @@ No [EEPROM] save
</software>
<software name="bullvsblj1" cloneof="bullvsbl">
- <description>NBA Playoffs - Bulls Vs Blazers (Jpn, Alt)</description>
+ <description>NBA Playoffs - Bulls Vs Blazers (Jpn, alt)</description>
<year>1993</year>
<publisher>Electronic Arts Victor</publisher>
<info name="serial" value="EM20017"/>
@@ -21462,7 +21462,7 @@ No [EEPROM] save
<!-- is this really a beta, or has it just an intro attached? -->
<software name="nbashowp" cloneof="nbashow">
- <description>NBA Showdown '94 (USA, Prototype, Hacked)</description>
+ <description>NBA Showdown '94 (USA, prototype, hacked)</description>
<year>1994</year>
<publisher>Electronic Arts</publisher>
<sharedfeat name="compatibility" value="NTSC-U,PAL"/>
@@ -21588,7 +21588,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p21" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940801)</description>
+ <description>NFL '95 (prototype, 19940801)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21599,7 +21599,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p20" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940805)</description>
+ <description>NFL '95 (prototype, 19940805)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21610,7 +21610,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p19" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940810)</description>
+ <description>NFL '95 (prototype, 19940810)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21621,7 +21621,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p18" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940812)</description>
+ <description>NFL '95 (prototype, 19940812)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21632,7 +21632,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p17" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940812, Alt)</description>
+ <description>NFL '95 (prototype, 19940812, alt)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21643,7 +21643,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p16" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940817-B)</description>
+ <description>NFL '95 (prototype, 19940817-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21654,7 +21654,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p15" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940817)</description>
+ <description>NFL '95 (prototype, 19940817)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21665,7 +21665,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p14" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940822)</description>
+ <description>NFL '95 (prototype, 19940822)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21676,7 +21676,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p13" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940830)</description>
+ <description>NFL '95 (prototype, 19940830)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21687,7 +21687,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p12" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940831)</description>
+ <description>NFL '95 (prototype, 19940831)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21698,7 +21698,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p11" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940901)</description>
+ <description>NFL '95 (prototype, 19940901)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21712,7 +21712,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p10" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940902)</description>
+ <description>NFL '95 (prototype, 19940902)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21726,7 +21726,7 @@ Broken Mindscape and title screen GFXs
</software>
<software name="nfl95p09" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940904)</description>
+ <description>NFL '95 (prototype, 19940904)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -21743,7 +21743,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p08" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940905-B)</description>
+ <description>NFL '95 (prototype, 19940905-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21757,7 +21757,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p07" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940905)</description>
+ <description>NFL '95 (prototype, 19940905)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21771,7 +21771,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p06" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940906)</description>
+ <description>NFL '95 (prototype, 19940906)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21785,7 +21785,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p05" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940907)</description>
+ <description>NFL '95 (prototype, 19940907)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21799,7 +21799,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p04" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940908)</description>
+ <description>NFL '95 (prototype, 19940908)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21813,7 +21813,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p03" cloneof="nfl95" supported="no">
- <description>NFL '95 (Prototype, 19940909)</description>
+ <description>NFL '95 (prototype, 19940909)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21827,7 +21827,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p02" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940911-B)</description>
+ <description>NFL '95 (prototype, 19940911-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21841,7 +21841,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl95p01" cloneof="nfl95">
- <description>NFL '95 (Prototype, 19940911)</description>
+ <description>NFL '95 (prototype, 19940911)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21887,7 +21887,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nfl94jp" cloneof="nfl94">
- <description>NFL Football '94 Starring Joe Montana (Jpn, Prototype 19931104)</description>
+ <description>NFL Football '94 Starring Joe Montana (Jpn, prototype 19931104)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -21948,7 +21948,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp03" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941201-B)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941201-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -21963,7 +21963,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp02" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941201)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941201)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -21978,7 +21978,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp01" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941202)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941202)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -21993,7 +21993,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp12" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941107)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941107)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22004,7 +22004,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp11" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941109)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941109)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22016,7 +22016,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp10" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941119)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941119)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22028,7 +22028,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp09" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941121)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941121)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22040,7 +22040,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp08" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941122)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941122)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22052,7 +22052,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp07" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941123)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941123)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22067,7 +22067,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp06" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941127)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941127)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22082,7 +22082,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp05" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941128)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941128)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22097,7 +22097,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp04" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941129)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941129)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -22112,7 +22112,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp14" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941001)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941001)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22123,7 +22123,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp13" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19941021)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19941021)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22134,7 +22134,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp16" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19940914)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19940914)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22145,7 +22145,7 @@ Crashes showing a Falcons helmet
</software>
<software name="nhlasp15" cloneof="nhlas">
- <description>NHL All-Star Hockey '95 (Prototype, 19940929)</description>
+ <description>NHL All-Star Hockey '95 (prototype, 19940929)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22213,7 +22213,7 @@ Crashes showing a Falcons helmet
</software>
<software name="ncirc1" cloneof="ncirc">
- <description>Nightmare Circus (Bra, Alt)</description>
+ <description>Nightmare Circus (Bra, alt)</description>
<year>1995</year>
<publisher>Tec Toy</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22227,7 +22227,7 @@ Crashes showing a Falcons helmet
</software>
<software name="ncircp" cloneof="ncirc">
- <description>Nightmare Circus (Prototype)</description>
+ <description>Nightmare Circus (prototype)</description>
<year>199?</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22273,7 +22273,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="ninjabp" cloneof="ninjab">
- <description>Ninja Burai Densetsu (Jpn, Prototype 19910528)</description>
+ <description>Ninja Burai Densetsu (Jpn, prototype 19910528)</description>
<year>1991</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22285,7 +22285,7 @@ Unemulated [Sega Mega Modem] features
</software>
<software name="ngaiden">
- <description>Ninja Gaiden (Jpn, Prototype)</description>
+ <description>Ninja Gaiden (Jpn, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22404,7 +22404,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="olympgldu2" cloneof="olympgld" supported="no">
- <description>Olympic Gold (USA, Alt)</description>
+ <description>Olympic Gold (USA, alt)</description>
<year>1992</year>
<publisher>U.S. Gold</publisher>
<notes><![CDATA[
@@ -22468,7 +22468,7 @@ Black screen at intro
</software>
<software name="oozep01" cloneof="ooze">
- <description>The Ooze (Euro, Prototype, 19950728)</description>
+ <description>The Ooze (Euro, prototype, 19950728)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -22480,7 +22480,7 @@ Black screen at intro
</software>
<software name="oozep07" cloneof="ooze">
- <description>The Ooze (Prototype, 19950615)</description>
+ <description>The Ooze (prototype, 19950615)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22491,7 +22491,7 @@ Black screen at intro
</software>
<software name="oozep06" cloneof="ooze">
- <description>The Ooze (Prototype, 19950619)</description>
+ <description>The Ooze (prototype, 19950619)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22502,7 +22502,7 @@ Black screen at intro
</software>
<software name="oozep03" cloneof="ooze">
- <description>The Ooze (Prototype, 19950629-B)</description>
+ <description>The Ooze (prototype, 19950629-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22513,7 +22513,7 @@ Black screen at intro
</software>
<software name="oozep02" cloneof="ooze">
- <description>The Ooze (Prototype, 19950629)</description>
+ <description>The Ooze (prototype, 19950629)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22524,7 +22524,7 @@ Black screen at intro
</software>
<software name="oozep05" cloneof="ooze">
- <description>The Ooze (Prototype 104, 19950622)</description>
+ <description>The Ooze (prototype 104, 19950622)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22535,7 +22535,7 @@ Black screen at intro
</software>
<software name="oozep04" cloneof="ooze">
- <description>The Ooze (Prototype 112, 19950626)</description>
+ <description>The Ooze (prototype 112, 19950626)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22591,7 +22591,7 @@ Black screen at intro
</software>
<software name="ottifantg" cloneof="ottifant">
- <description>The Ottifants (Ger, Prototype)</description>
+ <description>The Ottifants (Ger, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22663,7 +22663,7 @@ Black screen at intro
<!-- this 'prototype' set has also been found on a PAL/UK Radica Out Run 2019 Plug & Play unit (see rad_orun in megadriv_rad.cpp) -->
<software name="outr2019up" cloneof="outr2019">
- <description>Out Run 2019 (USA, Prototype)</description>
+ <description>Out Run 2019 (USA, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22674,7 +22674,7 @@ Black screen at intro
</software>
<software name="junker" cloneof="outr2019">
- <description>Junker's High (Jpn, Prototype)</description>
+ <description>Junker's High (Jpn, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22832,7 +22832,7 @@ Black screen at intro
</software>
<software name="pagemstrup" cloneof="pagemstr">
- <description>The Pagemaster (USA, Prototype)</description>
+ <description>The Pagemaster (USA, prototype)</description>
<year>1994</year>
<publisher>Fox Interactive</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22857,7 +22857,7 @@ Black screen at intro
</software>
<software name="pcottonp" cloneof="pcotton">
- <description>Panorama Cotton (Jpn, Prototype 19931127)</description>
+ <description>Panorama Cotton (Jpn, prototype 19931127)</description>
<year>1993</year>
<publisher>Sunsoft</publisher>
<info name="serial" value="T-15103"/>
@@ -22871,7 +22871,7 @@ Black screen at intro
</software>
<software name="paperboyp" cloneof="paperboy">
- <description>Paperboy (USA, Prototype 19911028)</description>
+ <description>Paperboy (USA, prototype 19911028)</description>
<year>1992</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -22949,7 +22949,7 @@ Black screen at intro
</software>
<software name="pebblep" cloneof="pebble">
- <description>Pebble Beach Golf Links (Prototype, 19940214)</description>
+ <description>Pebble Beach Golf Links (prototype, 19940214)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23027,7 +23027,7 @@ Black screen at intro
</software>
<software name="sampras1" cloneof="sampras">
- <description>Pete Sampras Tennis (Euro, USA, J-Cart, Alt)</description>
+ <description>Pete Sampras Tennis (Euro, USA, J-Cart, alt)</description>
<year>1994</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23039,7 +23039,7 @@ Black screen at intro
</software>
<software name="sampras2" cloneof="sampras">
- <description>Pete Sampras Tennis (Euro, USA, J-Cart, Alt 2)</description>
+ <description>Pete Sampras Tennis (Euro, USA, J-Cart, alt 2)</description>
<year>1994</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23096,7 +23096,7 @@ Black screen at intro
</software>
<software name="pstar2p" cloneof="pstar2">
- <description>Phantasy Star II (USA, Prototype 19890728)</description>
+ <description>Phantasy Star II (USA, prototype 19890728)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23324,7 +23324,7 @@ Black screen at intro
</software>
<software name="pstar4p3" cloneof="pstar4">
- <description>Phantasy Star - The End of the Millennium (Prototype, 19940815)</description>
+ <description>Phantasy Star - The End of the Millennium (prototype, 19940815)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23339,7 +23339,7 @@ Black screen at intro
</software>
<software name="pstar4p4" cloneof="pstar4">
- <description>Phantasy Star - The End of the Millennium (Prototype, 19940608)</description>
+ <description>Phantasy Star - The End of the Millennium (prototype, 19940608)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23354,7 +23354,7 @@ Black screen at intro
</software>
<software name="pstar4p5" cloneof="pstar4">
- <description>Phantasy Star - The End of the Millennium (Prototype, 19940530)</description>
+ <description>Phantasy Star - The End of the Millennium (prototype, 19940530)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23369,7 +23369,7 @@ Black screen at intro
</software>
<software name="pstar4p1" cloneof="pstar4" supported="no">
- <description>Phantasy Star - The End of the Millennium (Prototype, 19941107)</description>
+ <description>Phantasy Star - The End of the Millennium (prototype, 19941107)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -23386,7 +23386,7 @@ Black screen
</software>
<software name="pstar4p2" cloneof="pstar4">
- <description>Phantasy Star - The End of the Millennium (Prototype, 19941027)</description>
+ <description>Phantasy Star - The End of the Millennium (prototype, 19941027)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23424,7 +23424,7 @@ Black screen
</software>
<software name="psolar">
- <description>Pier Solar and the Great Architects (World, Rev. C)</description>
+ <description>Pier Solar and the Great Architects (World, rev. C)</description>
<year>2010</year>
<publisher>WaterMelon</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23436,7 +23436,7 @@ Black screen
</software>
<software name="psolara" cloneof="psolar">
- <description>Pier Solar and the Great Architects (World, Rev. B)</description>
+ <description>Pier Solar and the Great Architects (World, rev. B)</description>
<year>2010</year>
<publisher>WaterMelon</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23448,7 +23448,7 @@ Black screen
</software>
<software name="psolarb" cloneof="psolar">
- <description>Pier Solar and the Great Architects (World, Rev. A)</description>
+ <description>Pier Solar and the Great Architects (World, rev. A)</description>
<year>2010</year>
<publisher>WaterMelon</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23460,7 +23460,7 @@ Black screen
</software>
<software name="psolarp" cloneof="psolar">
- <description>Pier Solar and the Great Architects (World, Prototype)</description>
+ <description>Pier Solar and the Great Architects (World, prototype)</description>
<year>2010</year>
<publisher>WaterMelon</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23475,7 +23475,7 @@ Black screen
</software>
<software name="pinkp" cloneof="pink">
- <description>Pink Goes to Hollywood (USA, Prototype)</description>
+ <description>Pink Goes to Hollywood (USA, prototype)</description>
<year>1993</year>
<publisher>TecMagik</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -23523,7 +23523,7 @@ Black screen
</software>
<software name="piratesp" cloneof="pirates">
- <description>Pirates! Gold (USA, Prototype)</description>
+ <description>Pirates! Gold (USA, prototype)</description>
<year>1993</year>
<publisher>Microprose</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23584,7 +23584,7 @@ Black screen
</software>
<software name="pokemona" cloneof="pokemon">
- <description>Pocket Monsters (Alt Protection)</description>
+ <description>Pocket Monsters (alt protection)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23726,7 +23726,7 @@ Black screen
</software>
<software name="ppersiap" cloneof="ppersia">
- <description>Prince of Persia (Prototype)</description>
+ <description>Prince of Persia (prototype)</description>
<year>1993</year>
<publisher>Tengen</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -23738,7 +23738,7 @@ Black screen
</software>
<software name="ppersiap1" cloneof="ppersia">
- <description>Prince of Persia (Prototype, Earlier)</description>
+ <description>Prince of Persia (prototype, earlier)</description>
<year>1993</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -23761,7 +23761,7 @@ Black screen
</software>
<software name="ppersia2">
- <description>Prince of Persia 2 - The Shadow and the Flame (Euro, Prototype)</description>
+ <description>Prince of Persia 2 - The Shadow and the Flame (Euro, prototype)</description>
<year>1995</year>
<publisher>Psygnosis</publisher>
<info name="developer" value="Microids"/>
@@ -23866,7 +23866,7 @@ Black screen
</software>
<software name="puggsyp" cloneof="puggsy">
- <description>Puggsy (Prototype)</description>
+ <description>Puggsy (prototype)</description>
<year>1993</year>
<publisher>Psygnosis</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24150,7 +24150,7 @@ https://segaretro.org/Queen_of_Poker_Club
</software>
<software name="rbibb3p" cloneof="rbibb3" supported="no">
- <description>R.B.I. Baseball 3 (USA, Prototype 19910718)</description>
+ <description>R.B.I. Baseball 3 (USA, prototype 19910718)</description>
<year>1991</year>
<publisher>Tengen</publisher>
<notes><![CDATA[
@@ -24175,7 +24175,7 @@ Black screen
</software>
<software name="rbibb4p" cloneof="rbibb4">
- <description>R.B.I. Baseball 4 (Prototype)</description>
+ <description>R.B.I. Baseball 4 (prototype)</description>
<year>1992</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24343,7 +24343,7 @@ Black screen
</software>
<software name="exranzap" cloneof="rangerx">
- <description>Ex-Ranza (Jpn, Prototype)</description>
+ <description>Ex-Ranza (Jpn, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="alt_title" value="エクスランザー"/>
@@ -24402,7 +24402,7 @@ https://segaretro.org/Rastan_Saga_II
<!-- This is the same as the final, but without the padding up to 1Mb and with no checksum in the internal header -->
<software name="renstimp" cloneof="renstim">
- <description>Stimpy's Invention Starring Starring Ren Hoëk &amp; Stimpy (Euro, Prototype 19931209)</description>
+ <description>Stimpy's Invention Starring Starring Ren Hoëk &amp; Stimpy (Euro, prototype 19931209)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="alt_title" value="The Ren &amp; Stimpy Show Presents Stimpy's Invention (Box)"/>
@@ -24428,7 +24428,7 @@ https://segaretro.org/Rastan_Saga_II
</software>
<software name="renstimup" cloneof="renstim">
- <description>Stimpy's Invention Starring Starring Ren Hoëk &amp; Stimpy (USA, Prototype)</description>
+ <description>Stimpy's Invention Starring Starring Ren Hoëk &amp; Stimpy (USA, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24456,7 +24456,7 @@ https://segaretro.org/Rastan_Saga_II
</software>
<software name="resq">
- <description>Resq (Euro, Prototype)</description>
+ <description>Resq (Euro, prototype)</description>
<year>1994</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24467,7 +24467,7 @@ https://segaretro.org/Rastan_Saga_II
</software>
<software name="revshinp" cloneof="revshin">
- <description>The Revenge of Shinobi (USA, Rev. B, Prototype 19900201)</description>
+ <description>The Revenge of Shinobi (USA, rev. B, prototype 19900201)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24489,7 +24489,7 @@ https://segaretro.org/Rastan_Saga_II
</software>
<software name="revshin2p" cloneof="revshin">
- <description>The Revenge of Shinobi (Prototype 19890821)</description>
+ <description>The Revenge of Shinobi (prototype 19890821)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24543,7 +24543,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp6" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940809)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940809)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24555,7 +24555,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp5" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940815)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940815)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24567,7 +24567,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp4" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940816-B)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940816-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24579,7 +24579,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp3" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940817)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940817)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24591,7 +24591,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp2" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940825)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940825)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24603,7 +24603,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="rsbtp1" cloneof="rsbt" supported="no">
- <description>Richard Scarry's Busytown (Prototype, 19940826)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940826)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -24618,7 +24618,7 @@ Red screen
</software>
<software name="rsbtp7" cloneof="rsbt">
- <description>Richard Scarry's Busytown (Prototype, 19940721)</description>
+ <description>Richard Scarry's Busytown (prototype, 19940721)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -24691,7 +24691,7 @@ Red screen
</software>
<software name="ristarp2" cloneof="ristar">
- <description>Ristar (Prototype, 19940812)</description>
+ <description>Ristar (prototype, 19940812)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24702,7 +24702,7 @@ Red screen
</software>
<software name="ristarp1" cloneof="ristar">
- <description>Ristar (Prototype, 19940826)</description>
+ <description>Ristar (prototype, 19940826)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24713,7 +24713,7 @@ Red screen
</software>
<software name="ristarp4" cloneof="ristar">
- <description>Ristar (Prototype, 19940701)</description>
+ <description>Ristar (prototype, 19940701)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24724,7 +24724,7 @@ Red screen
</software>
<software name="ristarp3" cloneof="ristar">
- <description>Ristar (Prototype, 19940718)</description>
+ <description>Ristar (prototype, 19940718)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24793,7 +24793,7 @@ Red screen
</software>
<software name="rrash3p" cloneof="rrash3">
- <description>Road Rash 3 - World Warriors (USA, Prototype)</description>
+ <description>Road Rash 3 - World Warriors (USA, prototype)</description>
<year>1995</year>
<publisher>Electronic Arts</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24829,7 +24829,7 @@ Red screen
</software>
<software name="roadblstp" cloneof="roadblst">
- <description>RoadBlasters (USA, Prototype 19910627)</description>
+ <description>RoadBlasters (USA, prototype 19910627)</description>
<year>1992</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24871,7 +24871,7 @@ Red screen
</software>
<software name="robotermp" cloneof="roboterm">
- <description>RoboCop versus The Terminator (Prototype)</description>
+ <description>RoboCop versus The Terminator (prototype)</description>
<year>1994</year>
<publisher>Virgin Interactive</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -24883,7 +24883,7 @@ Red screen
</software>
<software name="robotermp1" cloneof="roboterm">
- <description>Robocop versus The Terminator (Prototype, Alt)</description>
+ <description>Robocop versus The Terminator (prototype, alt)</description>
<year>1994</year>
<publisher>Virgin Interactive</publisher>
<part name="cart" interface="megadriv_cart">
@@ -24920,7 +24920,7 @@ Red screen
</software>
<software name="robowrek" cloneof="cyborgj">
- <description>Robot Wreckage (USA, Prototype)</description>
+ <description>Robot Wreckage (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<info name="developer" value="Novotrade"/>
@@ -24971,7 +24971,7 @@ Red screen
</software>
<software name="rocketup" cloneof="rocket">
- <description>Rocket Knight Adventures (USA, Prototype 19930615)</description>
+ <description>Rocket Knight Adventures (USA, prototype 19930615)</description>
<year>1993</year>
<publisher>Konami</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25288,7 +25288,7 @@ Unsupported [Sega Mega Modem] features
</software>
<software name="scrabble">
- <description>Scrabble (Euro, Prototype)</description>
+ <description>Scrabble (Euro, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25321,7 +25321,7 @@ Unsupported [Sega Mega Modem] features
</software>
<software name="sensiblep" cloneof="sensible" supported="no">
- <description>Sensible Soccer (Prototype)</description>
+ <description>Sensible Soccer (prototype)</description>
<year>1993</year>
<publisher>Renegade</publisher>
<notes><![CDATA[
@@ -25378,7 +25378,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shdancerp" cloneof="shdancer">
- <description>Shadow Dancer - The Secret of Shinobi (Prototype, 19901002)</description>
+ <description>Shadow Dancer - The Secret of Shinobi (prototype, 19901002)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25444,7 +25444,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shadowrnp4" cloneof="shadowrn">
- <description>Shadowrun (USA, Prototype, 19931228)</description>
+ <description>Shadowrun (USA, prototype, 19931228)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25459,7 +25459,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shadowrnp3" cloneof="shadowrn">
- <description>Shadowrun (USA, Prototype, 19931231)</description>
+ <description>Shadowrun (USA, prototype, 19931231)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25474,7 +25474,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shadowrnp2" cloneof="shadowrn">
- <description>Shadowrun (USA, Prototype, 19940125-C)</description>
+ <description>Shadowrun (USA, prototype, 19940125-C)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25489,7 +25489,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shadowrnp1" cloneof="shadowrn">
- <description>Shadowrun (USA, Prototype, 19940125)</description>
+ <description>Shadowrun (USA, prototype, 19940125)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25515,7 +25515,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shangh2p" cloneof="shangh2">
- <description>Shanghai II - Dragon's Eye (USA, Prototype)</description>
+ <description>Shanghai II - Dragon's Eye (USA, prototype)</description>
<year>1994</year>
<publisher>Activision</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25527,7 +25527,7 @@ Black screen, requires better [VDP] irq handling
</software>
<software name="shangh2p1" cloneof="shangh2">
- <description>Shanghai II - Dragon's Eye (USA, Prototype, Alt)</description>
+ <description>Shanghai II - Dragon's Eye (USA, prototype, alt)</description>
<year>1994</year>
<publisher>Activision</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25571,7 +25571,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="shinfrceup" cloneof="shinfrce">
- <description>Shining Force - The Legacy of Great Intention (USA, Prototype)</description>
+ <description>Shining Force - The Legacy of Great Intention (USA, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25620,7 +25620,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="shinfrc2p2" cloneof="shinfrc2">
- <description>Shining Force II (USA, Prototype, 19940404)</description>
+ <description>Shining Force II (USA, prototype, 19940404)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25635,7 +25635,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="shinfrc2p1" cloneof="shinfrc2">
- <description>Shining Force II (USA, Prototype, 19940607)</description>
+ <description>Shining Force II (USA, prototype, 19940607)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25696,7 +25696,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="shinobi3up" cloneof="shinobi3">
- <description>Shinobi III - Return of the Ninja Master (USA, Prototype 19930629)</description>
+ <description>Shinobi III - Return of the Ninja Master (USA, prototype 19930629)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -25723,7 +25723,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="supshin2p1" cloneof="shinobi3">
- <description>The Super Shinobi II (Jpn, Prototype)</description>
+ <description>The Super Shinobi II (Jpn, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ザ・スーパー忍II"/>
@@ -25735,7 +25735,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="supshin2p2" cloneof="shinobi3">
- <description>The Super Shinobi II (Jpn, Prototype, Earlier)</description>
+ <description>The Super Shinobi II (Jpn, prototype, earlier)</description>
<year>1993</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ザ・スーパー忍II"/>
@@ -25837,7 +25837,7 @@ https://segaretro.org/Shi_Jie_Zhi_Bang_Zheng_Ba_Zhan:_World_Pro_Baseball_94
</software>
<software name="sdmilha2a" cloneof="sdmilha2">
- <description>Show do Milhão Volume 2 (Bra, Alt)</description>
+ <description>Show do Milhão Volume 2 (Bra, alt)</description>
<year>2002</year>
<publisher>Tec Toy</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25942,7 +25942,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="slamshaq">
- <description>Slam - Shaq vs. the Legends (Prototype)</description>
+ <description>Slam - Shaq vs. the Legends (prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -25989,7 +25989,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="slaughtrp" cloneof="slaughtr">
- <description>Slaughter Sport (USA, Prototype 19910927)</description>
+ <description>Slaughter Sport (USA, prototype 19910927)</description>
<year>1991</year>
<publisher>Razorsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26000,7 +26000,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="mondufp" cloneof="slaughtr">
- <description>Mondu's Fight Palace (USA, Prototype 19900703)</description>
+ <description>Mondu's Fight Palace (USA, prototype 19900703)</description>
<year>1990</year>
<publisher>Razorsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26087,7 +26087,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="soldeacep" cloneof="soldeace">
- <description>Sol-Deace (USA, Prototype 19920203)</description>
+ <description>Sol-Deace (USA, prototype 19920203)</description>
<year>1992</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26146,7 +26146,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="ragnacenp" cloneof="soleil">
- <description>Shin Souseiki Ragnacenty (Jpn, Prototype)</description>
+ <description>Shin Souseiki Ragnacenty (Jpn, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<info name="alt_title" value="新創世紀ラグナセンティ"/>
@@ -26189,7 +26189,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp06" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0606, 19940606, 10.02)</description>
+ <description>Sonic &amp; Knuckles (prototype 0606, 19940606, 10.02)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26202,7 +26202,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp05" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0608, 19940608, 05.03)</description>
+ <description>Sonic &amp; Knuckles (prototype 0608, 19940608, 05.03)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26215,7 +26215,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp04" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0610, 19940610, 07.49)</description>
+ <description>Sonic &amp; Knuckles (prototype 0610, 19940610, 07.49)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26228,7 +26228,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp03" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0612, 19940612, 18.27)</description>
+ <description>Sonic &amp; Knuckles (prototype 0612, 19940612, 18.27)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26241,7 +26241,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp02" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0618, 19940618, 09.15)</description>
+ <description>Sonic &amp; Knuckles (prototype 0618, 19940618, 09.15)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26254,7 +26254,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp01" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0619, 19940619, 08.18)</description>
+ <description>Sonic &amp; Knuckles (prototype 0619, 19940619, 08.18)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26267,7 +26267,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="skp07" cloneof="sk">
- <description>Sonic &amp; Knuckles (Prototype 0525, 19940525, 15.28)</description>
+ <description>Sonic &amp; Knuckles (prototype 0525, 19940525, 15.28)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26278,7 +26278,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="knucklp">
- <description>Knuckles in Sonic 2 (Prototype 0524, 19940527, 10.46)</description>
+ <description>Knuckles in Sonic 2 (prototype 0524, 19940527, 10.46)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26289,7 +26289,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3c">
- <description>Sonic 3C (Prototype 0408, 19940408, 17.29)</description>
+ <description>Sonic 3C (prototype 0408, 19940408, 17.29)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26303,7 +26303,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3ca">
- <description>Sonic 3C (Prototype 0517, 19940517, 17.08)</description>
+ <description>Sonic 3C (prototype 0517, 19940517, 17.08)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26317,7 +26317,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp8" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 73, 19960703, 13.58)</description>
+ <description>Sonic 3D Blast (prototype 73, 19960703, 13.58)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26328,7 +26328,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp7" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 814, 19960815, 07.55)</description>
+ <description>Sonic 3D Blast (prototype 814, 19960815, 07.55)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26339,7 +26339,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp6" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 819, 19960819, 19.49)</description>
+ <description>Sonic 3D Blast (prototype 819, 19960819, 19.49)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26350,7 +26350,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp5" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 825, 19960826, 15.46)</description>
+ <description>Sonic 3D Blast (prototype 825, 19960826, 15.46)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26361,7 +26361,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp4" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 830, 19960831, 08.19)</description>
+ <description>Sonic 3D Blast (prototype 830, 19960831, 08.19)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26372,7 +26372,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp3" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 831, 19960903, 10.07)</description>
+ <description>Sonic 3D Blast (prototype 831, 19960903, 10.07)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26383,7 +26383,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp2" cloneof="sonic3d">
- <description>Sonic 3D Blast (Prototype 94, 19960904, 12.01)</description>
+ <description>Sonic 3D Blast (prototype 94, 19960904, 12.01)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26394,7 +26394,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonic3dp1" cloneof="sonic3d">
- <description>Sonic 3D Blast (USA, Prototype)</description>
+ <description>Sonic 3D Blast (USA, prototype)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26406,7 +26406,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
<software name="scrack">
<!-- "19940401" according to title screen -->
- <description>Sonic Crackers (Jpn, Prototype)</description>
+ <description>Sonic Crackers (Jpn, prototype)</description>
<year>1994</year>
<!-- Sega? -->
<publisher>&lt;unknown&gt;</publisher>
@@ -26429,7 +26429,7 @@ https://bootleggames.fandom.com/wiki/Shui_Hu_Feng_Yun_Zhuan
</software>
<software name="sonicjam" supported="no">
- <description>Sonic Jam 6 (Alt)</description>
+ <description>Sonic Jam 6 (alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<notes><![CDATA[
@@ -26494,7 +26494,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sspinua" cloneof="sspin">
- <description>Sonic Spinball (USA, Alt)</description>
+ <description>Sonic Spinball (USA, alt)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -26506,7 +26506,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonicpir" cloneof="sonic">
- <description>Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1)</description>
+ <description>Sonic the Hedgehog (pirate, ripped from Golden 10 in 1)</description>
<year>1991?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26608,7 +26608,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic2p2" cloneof="sonic2">
- <description>Sonic the Hedgehog 2 (Prototype)</description>
+ <description>Sonic the Hedgehog 2 (prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26619,7 +26619,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic2b" cloneof="sonic2">
- <description>Sonic the Hedgehog 2 (World, Rev. 01a)</description>
+ <description>Sonic the Hedgehog 2 (World, rev. 01a)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4088 (JPN)"/>
@@ -26633,7 +26633,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic2c" cloneof="sonic2">
- <description>Sonic the Hedgehog 2 (World, Rev. SC02)</description>
+ <description>Sonic the Hedgehog 2 (World, rev. SC02)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4088 (JPN)"/>
@@ -26647,7 +26647,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic2p1" cloneof="sonic2">
- <description>Sonic the Hedgehog 2 (World, Prototype)</description>
+ <description>Sonic the Hedgehog 2 (World, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26704,7 +26704,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic3pir" cloneof="sonic3">
- <description>Sonic the Hedgehog 3 (Pirate)</description>
+ <description>Sonic the Hedgehog 3 (pirate)</description>
<year>1994?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26741,7 +26741,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="sonic3up" cloneof="sonic3">
- <description>Sonic the Hedgehog 3 (USA, Prototype 19931120)</description>
+ <description>Sonic the Hedgehog 3 (USA, prototype 19931120)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -26953,7 +26953,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="speedbl2up" cloneof="speedbl2">
- <description>Speedball 2 - Brutal Deluxe (USA, Prototype 19910607)</description>
+ <description>Speedball 2 - Brutal Deluxe (USA, prototype 19910607)</description>
<year>1991</year>
<publisher>Arena</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26975,7 +26975,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="spidermnp1" cloneof="spidermn">
- <description>Spider-Man (USA, Prototype)</description>
+ <description>Spider-Man (USA, prototype)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -26986,7 +26986,7 @@ Black screen, writes in ROM area then jumps to PC=1a2000 (encryption?)
</software>
<software name="spidermnp2" cloneof="spidermn">
- <description>Spider-Man (USA, Prototype, Earlier)</description>
+ <description>Spider-Man (USA, prototype, earlier)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27137,7 +27137,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="patrileyp" cloneof="srealbas">
- <description>Pat Riley Basketball (USA, Prototype 19900614)</description>
+ <description>Pat Riley Basketball (USA, prototype 19900614)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27190,7 +27190,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="starodysp" cloneof="starodys">
- <description>Star Odyssey (USA, Prototype 19920116)</description>
+ <description>Star Odyssey (USA, prototype 19920116)</description>
<year>1990</year>
<publisher>Sage's Creation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27247,7 +27247,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<!-- Should it be 19931228? -->
<software name="sttngp06" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19941228)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19941228)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27262,7 +27262,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<!-- Should it be 19931229? -->
<software name="sttngp05" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19941229)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19941229)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27276,7 +27276,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sttngp04" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940103)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19940103)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27290,7 +27290,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sttngp03" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940110)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19940110)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27304,7 +27304,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sttngp02" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940118)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19940118)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27318,7 +27318,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sttngp01" cloneof="sttng">
- <description>Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940125)</description>
+ <description>Star Trek - The Next Generation - Echoes from the Past (prototype, 19940125)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27379,7 +27379,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="stargatep" cloneof="stargate">
- <description>Stargate (Euro, Prototype, older)</description>
+ <description>Stargate (Euro, prototype, older)</description>
<year>1994</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27390,7 +27390,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="stargatepa" cloneof="stargate">
- <description>Stargate (Prototype)</description>
+ <description>Stargate (prototype)</description>
<year>1994</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27415,7 +27415,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="steeltalp" cloneof="steeltal">
- <description>Steel Talons (USA, Prototype)</description>
+ <description>Steel Talons (USA, prototype)</description>
<year>1992</year>
<publisher>Tengen</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27426,7 +27426,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="stonprot">
- <description>Stone Protectors (USA, Prototype)</description>
+ <description>Stone Protectors (USA, prototype)</description>
<year>1994</year>
<publisher>Vic Tokai</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27512,7 +27512,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<!-- // BAD DUMP -->
<software name="thorjp" cloneof="thor">
- <description>The Story of Thor (Jpn, Prototype)</description>
+ <description>The Story of Thor (Jpn, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ストーリー オブ トア 〜光を継ぐ者〜"/>
@@ -27539,7 +27539,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="thorp2" cloneof="thor">
- <description>The Story of Thor (USA, Prototype, 19941004)</description>
+ <description>The Story of Thor (USA, prototype, 19941004)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27554,7 +27554,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="thorp1" cloneof="thor">
- <description>The Story of Thor (USA, Prototype, 19941017)</description>
+ <description>The Story of Thor (USA, prototype, 19941017)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27569,7 +27569,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="beyoasisp" cloneof="thor">
- <description>Beyond Oasis (USA, Prototype, 19941101)</description>
+ <description>Beyond Oasis (USA, prototype, 19941101)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27675,7 +27675,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<software name="sf2pir" cloneof="sf2">
<!-- Based off protos, with fixed status bars (later proto rev?) -->
- <description>Street Fighter II' Turbo (Pirate)</description>
+ <description>Street Fighter II' Turbo (pirate)</description>
<year>1994</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27713,7 +27713,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="ssmartp" cloneof="ssmart">
- <description>Street Smart (Prototype, 19900629)</description>
+ <description>Street Smart (prototype, 19900629)</description>
<year>1991</year>
<publisher>Treco</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27736,7 +27736,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="bk2p" cloneof="sor2">
- <description>Bare Knuckle II (Jpn, Prototype)</description>
+ <description>Bare Knuckle II (Jpn, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ベア・ナックルII 死闘への鎮魂歌"/>
@@ -27760,7 +27760,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3p5" cloneof="sor3">
- <description>Streets of Rage 3 (Euro, Prototype, 19940412)</description>
+ <description>Streets of Rage 3 (Euro, prototype, 19940412)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -27772,7 +27772,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3p4" cloneof="sor3">
- <description>Streets of Rage 3 (Euro, Prototype, 19940413)</description>
+ <description>Streets of Rage 3 (Euro, prototype, 19940413)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -27784,7 +27784,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3p3" cloneof="sor3">
- <description>Streets of Rage 3 (Euro, Prototype, 19940415)</description>
+ <description>Streets of Rage 3 (Euro, prototype, 19940415)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -27796,7 +27796,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3p2" cloneof="sor3">
- <description>Streets of Rage 3 (Euro, Prototype, 19940420)</description>
+ <description>Streets of Rage 3 (Euro, prototype, 19940420)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -27808,7 +27808,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3p1" cloneof="sor3">
- <description>Streets of Rage 3 (Euro, Prototype, 19940425)</description>
+ <description>Streets of Rage 3 (Euro, prototype, 19940425)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -27820,7 +27820,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up06" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940401)</description>
+ <description>Streets of Rage 3 (prototype, 19940401)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27832,7 +27832,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up05" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940404)</description>
+ <description>Streets of Rage 3 (prototype, 19940404)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27844,7 +27844,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up04" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940408)</description>
+ <description>Streets of Rage 3 (prototype, 19940408)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27856,7 +27856,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up03" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940411)</description>
+ <description>Streets of Rage 3 (prototype, 19940411)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27868,7 +27868,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up02" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940412)</description>
+ <description>Streets of Rage 3 (prototype, 19940412)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27880,7 +27880,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up01" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940413)</description>
+ <description>Streets of Rage 3 (prototype, 19940413)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27892,7 +27892,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up10" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940308)</description>
+ <description>Streets of Rage 3 (prototype, 19940308)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27903,7 +27903,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up09" cloneof="sor3" supported="no">
- <description>Streets of Rage 3 (Prototype, 19940317)</description>
+ <description>Streets of Rage 3 (prototype, 19940317)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27914,7 +27914,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up08" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940318)</description>
+ <description>Streets of Rage 3 (prototype, 19940318)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -27925,7 +27925,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sor3up07" cloneof="sor3">
- <description>Streets of Rage 3 (Prototype, 19940328)</description>
+ <description>Streets of Rage 3 (prototype, 19940328)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -27965,7 +27965,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="bk3p" cloneof="sor3">
- <description>Bare Knuckle III (Jpn, Prototype)</description>
+ <description>Bare Knuckle III (Jpn, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ベア・ナックルIII"/>
@@ -28003,7 +28003,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="strikerp" cloneof="striker">
- <description>Striker (Euro, Prototype)</description>
+ <description>Striker (Euro, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -28018,7 +28018,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="subterrp1" cloneof="subterr">
- <description>SubTerrania (Prototype)</description>
+ <description>SubTerrania (prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -28030,7 +28030,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="subterrp2" cloneof="subterr">
- <description>SubTerrania (Prototype, Earlier)</description>
+ <description>SubTerrania (prototype, earlier)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28053,7 +28053,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="subterrp3" cloneof="subterr">
- <description>SubTerrania (Jpn, Prototype, 19940202)</description>
+ <description>SubTerrania (Jpn, prototype, 19940202)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28156,7 +28156,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<!-- This is the same as the final build, except for the internal header... -->
<software name="shangonp" cloneof="shangon">
- <description>Super Hang-On (Prototype 19890818)</description>
+ <description>Super Hang-On (prototype 19890818)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28206,7 +28206,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="suphydlup" cloneof="suphydl">
- <description>Super Hydlide (USA, Prototype 19891016)</description>
+ <description>Super Hydlide (USA, prototype 19891016)</description>
<year>1989</year>
<publisher>Seismic</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28231,7 +28231,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="lasordap" cloneof="suprleag">
- <description>Tommy Lasorda Baseball (USA, Prototype 19890430)</description>
+ <description>Tommy Lasorda Baseball (USA, prototype 19890430)</description>
<year>1989</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28242,7 +28242,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="smba" cloneof="smb">
- <description>Super Mario World ~ Super Mario Bros. (Pirate, Alt)</description>
+ <description>Super Mario World ~ Super Mario Bros. (pirate, alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28253,7 +28253,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="smbb" cloneof="smb">
- <description>Super Mario World ~ Super Mario Bros. (Pirate, Alt 2)</description>
+ <description>Super Mario World ~ Super Mario Bros. (pirate, alt 2)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28330,7 +28330,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="sskidp" cloneof="sskid">
- <description>Super Skidmarks (USA, Prototype)</description>
+ <description>Super Skidmarks (USA, prototype)</description>
<year>1995</year>
<publisher>Codemasters</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28417,7 +28417,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="svolley1" cloneof="svolley">
- <description>Super Volley Ball (USA, Alt)</description>
+ <description>Super Volley Ball (USA, alt)</description>
<year>1991</year>
<publisher>Video System</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28442,7 +28442,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="supermanp" cloneof="superman">
- <description>Superman (USA, Prototype)</description>
+ <description>Superman (USA, prototype)</description>
<year>1992</year>
<publisher>Sunsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28483,7 +28483,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="swamp">
- <description>Swamp Thing (USA, Prototype)</description>
+ <description>Swamp Thing (USA, prototype)</description>
<year>1991</year>
<publisher>NuVision</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28530,7 +28530,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="vermilp" cloneof="vermil">
- <description>Sword of Vermilion (USA, Prototype 19931118)</description>
+ <description>Sword of Vermilion (USA, prototype 19931118)</description>
<year>1990</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28591,7 +28591,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="t2agp" cloneof="t2ag">
- <description>T2 - The Arcade Game (USA, Prototype)</description>
+ <description>T2 - The Arcade Game (USA, prototype)</description>
<year>1992</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28670,7 +28670,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="trgearthp" cloneof="trgearth">
- <description>Target Earth (USA, Prototype 19900216)</description>
+ <description>Target Earth (USA, prototype 19900216)</description>
<year>1990</year>
<publisher>Dreamworks Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28756,7 +28756,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="tecnocopp1" cloneof="tecnocop">
- <description>Technocop (USA, Prototype)</description>
+ <description>Technocop (USA, prototype)</description>
<year>1990</year>
<publisher>Razorsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28767,7 +28767,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="tecnocopp2" cloneof="tecnocop">
- <description>Technocop (USA, Prototype 19900912)</description>
+ <description>Technocop (USA, prototype 19900912)</description>
<year>1990</year>
<publisher>Razorsoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28778,7 +28778,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
</software>
<software name="bsteam3" cloneof="tecmocup">
- <description>Boy Soccer Team III (Jpn, Pirate)</description>
+ <description>Boy Soccer Team III (Jpn, pirate)</description>
<year>199?</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -28790,7 +28790,7 @@ $040000-$0fffff, $280000-$2fffff, $380000-$3fffff - junk copies of above
<!-- // BAD DUMP -->
<software name="tecmocup">
- <description>Tecmo Cup (Jpn, Prototype?)</description>
+ <description>Tecmo Cup (Jpn, prototype?)</description>
<year>1993</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29095,7 +29095,7 @@ No BGMs
</software>
<software name="termintrp" cloneof="termintr">
- <description>The Terminator (Prototype, 19920414)</description>
+ <description>The Terminator (prototype, 19920414)</description>
<year>1991</year>
<publisher>Virgin Games</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29184,7 +29184,7 @@ No BGMs
</software>
<software name="tf3p" cloneof="tf3">
- <description>Thunder Force III (Prototype 19900801)</description>
+ <description>Thunder Force III (prototype 19900801)</description>
<year>1990</year>
<publisher>Technosoft</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29249,7 +29249,7 @@ No BGMs
</software>
<software name="jesseven" cloneof="tpwres">
- <description>Jesse "The Body" Ventura Wrestling Superstars (USA, Prototype 19920302)</description>
+ <description>Jesse "The Body" Ventura Wrestling Superstars (USA, prototype 19920302)</description>
<year>1992</year>
<publisher>DreamWorks</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29294,7 +29294,7 @@ No BGMs
</software>
<software name="timetrax">
- <description>Time Trax (Prototype)</description>
+ <description>Time Trax (prototype)</description>
<year>1994</year>
<publisher>Black Pearl</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29447,7 +29447,7 @@ No BGMs
</software>
<software name="toejam2p" cloneof="toejam2">
- <description>Toe Jam &amp; Earl in Panic on Funkotron (Prototype)</description>
+ <description>Toe Jam &amp; Earl in Panic on Funkotron (prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -29460,7 +29460,7 @@ No BGMs
<!-- This is the same as the final, but with "Sega_Channel" XORed at the end. -->
<software name="toejam2p2" cloneof="toejam2">
- <description>Toe Jam &amp; Earl in Panic on Funkotron (Prototype 19930911)</description>
+ <description>Toe Jam &amp; Earl in Panic on Funkotron (prototype 19930911)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -29472,7 +29472,7 @@ No BGMs
</software>
<software name="toki">
- <description>Toki - Going Ape Spit ~ JuJu Densetsu (World, Rev. A)</description>
+ <description>Toki - Going Ape Spit ~ JuJu Densetsu (World, rev. A)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="serial" value="G-4064 (JPN)"/>
@@ -29653,7 +29653,7 @@ No BGMs
</software>
<software name="traysiap" cloneof="traysia">
- <description>Traysia (USA, Prototype 19920122)</description>
+ <description>Traysia (USA, prototype 19920122)</description>
<year>1992</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29716,7 +29716,7 @@ No BGMs
</software>
<software name="tplayglda" cloneof="tplaygld">
- <description>Triple Play Gold (USA, Alt)</description>
+ <description>Triple Play Gold (USA, alt)</description>
<year>1995</year>
<publisher>Electronic Arts</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -29743,7 +29743,7 @@ No BGMs
</software>
<software name="troubshtp" cloneof="troubsht">
- <description>Trouble Shooter (USA, Prototype 19910912)</description>
+ <description>Trouble Shooter (USA, prototype 19910912)</description>
<year>1991</year>
<publisher>Vic Tokai</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29768,7 +29768,7 @@ No BGMs
</software>
<software name="btlmaniap" cloneof="troubsht">
- <description>Battle Mania (Jpn, Prototype 19910528)</description>
+ <description>Battle Mania (Jpn, prototype 19910528)</description>
<year>1992</year>
<publisher>Vic Tokai</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29818,7 +29818,7 @@ No BGMs
</software>
<software name="toutrunp" cloneof="toutrun">
- <description>Turbo Out Run (Prototype, 19911209)</description>
+ <description>Turbo Out Run (prototype, 19911209)</description>
<year>1992</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -29873,7 +29873,7 @@ No BGMs
</software>
<software name="twocrudep" cloneof="twocrude">
- <description>Two Crude Dudes (Prototype, 19911124)</description>
+ <description>Two Crude Dudes (prototype, 19911124)</description>
<year>1992</year>
<publisher>Data East</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30092,7 +30092,7 @@ No BGMs
</software>
<software name="valisp" cloneof="valis">
- <description>Valis (USA, Prototype 19911025)</description>
+ <description>Valis (USA, prototype 19911025)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30125,7 +30125,7 @@ No BGMs
</software>
<software name="vaportrp" cloneof="vaportr">
- <description>Vapor Trail (USA, Prototype 19910526)</description>
+ <description>Vapor Trail (USA, prototype 19910526)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30150,7 +30150,7 @@ No BGMs
</software>
<software name="vecmanp1" cloneof="vecman">
- <description>Vectorman (Prototype)</description>
+ <description>Vectorman (prototype)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30161,7 +30161,7 @@ No BGMs
</software>
<software name="vecmanp2" cloneof="vecman">
- <description>Vectorman (Prototype, Alt)</description>
+ <description>Vectorman (prototype, alt)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30172,7 +30172,7 @@ No BGMs
</software>
<software name="vecmanp3" cloneof="vecman">
- <description>Vectorman (Prototype, 19950724)</description>
+ <description>Vectorman (prototype, 19950724)</description>
<year>1995</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30197,7 +30197,7 @@ No BGMs
</software>
<software name="vecman2p1" cloneof="vecman2">
- <description>Vectorman 2 (Prototype)</description>
+ <description>Vectorman 2 (prototype)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30208,7 +30208,7 @@ No BGMs
</software>
<software name="vecman2p6" cloneof="vecman2">
- <description>Vectorman 2 (Prototype, 19960815)</description>
+ <description>Vectorman 2 (prototype, 19960815)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30219,7 +30219,7 @@ No BGMs
</software>
<software name="vecman2p5" cloneof="vecman2">
- <description>Vectorman 2 (Prototype, 19960816)</description>
+ <description>Vectorman 2 (prototype, 19960816)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30230,7 +30230,7 @@ No BGMs
</software>
<software name="vecman2p4" cloneof="vecman2">
- <description>Vectorman 2 (Prototype, 19960819)</description>
+ <description>Vectorman 2 (prototype, 19960819)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30241,7 +30241,7 @@ No BGMs
</software>
<software name="vecman2p3" cloneof="vecman2">
- <description>Vectorman 2 (Prototype, 19960826)</description>
+ <description>Vectorman 2 (prototype, 19960826)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30252,7 +30252,7 @@ No BGMs
</software>
<software name="vecman2p2" cloneof="vecman2">
- <description>Vectorman 2 (Prototype, 19960827)</description>
+ <description>Vectorman 2 (prototype, 19960827)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30291,7 +30291,7 @@ No BGMs
</software>
<software name="viewpoinp" cloneof="viewpoin">
- <description>Viewpoint (USA, Prototype)</description>
+ <description>Viewpoint (USA, prototype)</description>
<year>1994</year>
<publisher>American Sammy</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30302,7 +30302,7 @@ No BGMs
</software>
<software name="vf2p5" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Prototype, 19960819)</description>
+ <description>Virtua Fighter 2 - Genesis (prototype, 19960819)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30313,7 +30313,7 @@ No BGMs
</software>
<software name="vf2p4" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Prototype, 19960830)</description>
+ <description>Virtua Fighter 2 - Genesis (prototype, 19960830)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30324,7 +30324,7 @@ No BGMs
</software>
<software name="vf2p3" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Prototype, 19960913)</description>
+ <description>Virtua Fighter 2 - Genesis (prototype, 19960913)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30335,7 +30335,7 @@ No BGMs
</software>
<software name="vf2p2" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Prototype, 19960920)</description>
+ <description>Virtua Fighter 2 - Genesis (prototype, 19960920)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30346,7 +30346,7 @@ No BGMs
</software>
<software name="vf2p1" cloneof="vf2">
- <description>Virtua Fighter 2 - Genesis (Prototype, 19960927)</description>
+ <description>Virtua Fighter 2 - Genesis (prototype, 19960927)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30399,7 +30399,7 @@ No BGMs
</software>
<software name="wackyrac">
- <description>Wacky Races (USA, Prototype)</description>
+ <description>Wacky Races (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30428,7 +30428,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wworldsp3" cloneof="wworlds">
- <description>Wacky Worlds (Prototype, 19940808)</description>
+ <description>Wacky Worlds (prototype, 19940808)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30439,7 +30439,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wworldsp2" cloneof="wworlds">
- <description>Wacky Worlds (Prototype, 19940817)</description>
+ <description>Wacky Worlds (prototype, 19940817)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30450,7 +30450,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wworldsp1" cloneof="wworlds" supported="no">
- <description>Wacky Worlds (Prototype, 19940819)</description>
+ <description>Wacky Worlds (prototype, 19940819)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30500,7 +30500,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="warlockp" cloneof="warlock">
- <description>Warlock (USA, Prototype)</description>
+ <description>Warlock (USA, prototype)</description>
<year>1994</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30592,7 +30592,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="warsongp" cloneof="warsong">
- <description>Warsong (USA, Prototype 19911001)</description>
+ <description>Warsong (USA, prototype 19911001)</description>
<year>1991</year>
<publisher>Treco</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30606,7 +30606,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="waterwld">
- <description>WaterWorld (Euro, Prototype)</description>
+ <description>WaterWorld (Euro, prototype)</description>
<year>1995?</year>
<publisher>Ocean</publisher>
<sharedfeat name="compatibility" value="PAL"/>
@@ -30746,7 +30746,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="whiprushp" cloneof="whiprush">
- <description>Whip Rush (USA, Prototype 19900129)</description>
+ <description>Whip Rush (USA, prototype 19900129)</description>
<year>1990</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30771,7 +30771,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wildsnak">
- <description>Wild Snake (USA, Prototype)</description>
+ <description>Wild Snake (USA, prototype)</description>
<year>1994</year>
<publisher>Bullet-Proof Software</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -30810,7 +30810,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wimbledup" cloneof="wimbled">
- <description>Wimbledon Championship Tennis (USA, Prototype)</description>
+ <description>Wimbledon Championship Tennis (USA, prototype)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -30822,7 +30822,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wintchalp" cloneof="wintchal">
- <description>Winter Challenge (Prototype)</description>
+ <description>Winter Challenge (prototype)</description>
<year>1992</year>
<publisher>Ballistic</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30909,7 +30909,7 @@ Unsupported [Sega Mouse] peripheral
</software>
<software name="wboy5p" cloneof="wboymw" supported="partial">
- <description>Wonder Boy V - Monster World III (Jpn, Prototype 19910725)</description>
+ <description>Wonder Boy V - Monster World III (Jpn, prototype 19910725)</description>
<year>1991</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -30963,7 +30963,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p17" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940223)</description>
+ <description>World Championship Soccer II (prototype, 19940223)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30974,7 +30974,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p12" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940309)</description>
+ <description>World Championship Soccer II (prototype, 19940309)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -30997,7 +30997,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software-->
<software name="wcs2p08" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940323)</description>
+ <description>World Championship Soccer II (prototype, 19940323)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31008,7 +31008,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p07" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940324)</description>
+ <description>World Championship Soccer II (prototype, 19940324)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31019,7 +31019,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p06" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940325)</description>
+ <description>World Championship Soccer II (prototype, 19940325)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31030,7 +31030,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p05" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940326)</description>
+ <description>World Championship Soccer II (prototype, 19940326)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31041,7 +31041,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p04" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940327)</description>
+ <description>World Championship Soccer II (prototype, 19940327)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31052,7 +31052,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p03" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940329-B)</description>
+ <description>World Championship Soccer II (prototype, 19940329-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31063,7 +31063,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p02" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940329)</description>
+ <description>World Championship Soccer II (prototype, 19940329)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31074,7 +31074,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p01" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype, 19940330)</description>
+ <description>World Championship Soccer II (prototype, 19940330)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31085,7 +31085,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p18" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype G, 19940222)</description>
+ <description>World Championship Soccer II (prototype G, 19940222)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31096,7 +31096,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p16" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype J, 19940228)</description>
+ <description>World Championship Soccer II (prototype J, 19940228)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31107,7 +31107,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p15" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype N, 19940303)</description>
+ <description>World Championship Soccer II (prototype N, 19940303)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31118,7 +31118,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p14" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype O, 19940303)</description>
+ <description>World Championship Soccer II (prototype O, 19940303)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31129,7 +31129,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p13" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype P, 19940304)</description>
+ <description>World Championship Soccer II (prototype P, 19940304)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31140,7 +31140,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p11" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype R, 19940309)</description>
+ <description>World Championship Soccer II (prototype R, 19940309)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31151,7 +31151,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2p10" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype U, 19940314)</description>
+ <description>World Championship Soccer II (prototype U, 19940314)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31163,7 +31163,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
<!-- From this proto on, they implemented region lock! -->
<software name="wcs2p09" cloneof="wcs2">
- <description>World Championship Soccer II (Prototype Y, 19940318)</description>
+ <description>World Championship Soccer II (prototype Y, 19940318)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31174,7 +31174,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="wcs2up" cloneof="wcs2">
- <description>World Championship Soccer II (USA, Prototype)</description>
+ <description>World Championship Soccer II (USA, prototype)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31234,7 +31234,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whp02" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940331-B)</description>
+ <description>World Heroes (USA, prototype, 19940331-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31246,7 +31246,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whp01" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940331)</description>
+ <description>World Heroes (USA, prototype, 19940331)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31258,7 +31258,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whjp4" cloneof="wh">
- <description>World Heroes (Jpn, Prototype, 19940408)</description>
+ <description>World Heroes (Jpn, prototype, 19940408)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J"/>
@@ -31270,7 +31270,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whjp3" cloneof="wh">
- <description>World Heroes (Jpn, Prototype, 19940415)</description>
+ <description>World Heroes (Jpn, prototype, 19940415)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J"/>
@@ -31282,7 +31282,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whjp2" cloneof="wh">
- <description>World Heroes (Jpn, Prototype, 19940420-B)</description>
+ <description>World Heroes (Jpn, prototype, 19940420-B)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J"/>
@@ -31294,7 +31294,7 @@ Unsupported Mega-CD/Wondermega cart allowing EBXA format to be played back
</software>
<software name="whjp1" cloneof="wh" supported="no">
- <description>World Heroes (Jpn, Prototype, 19940420, broken - C05 missing)</description>
+ <description>World Heroes (Jpn, prototype, 19940420, broken - C05 missing)</description>
<year>1994</year>
<publisher>Sega</publisher>
<notes><![CDATA[
@@ -31309,7 +31309,7 @@ Black screen
</software>
<software name="whjp5" cloneof="wh">
- <description>World Heroes (Jpn, Prototype, 19940330)</description>
+ <description>World Heroes (Jpn, prototype, 19940330)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-J"/>
@@ -31321,7 +31321,7 @@ Black screen
</software>
<software name="whp13" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940223)</description>
+ <description>World Heroes (USA, prototype, 19940223)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31345,7 +31345,7 @@ Black screen
</software-->
<software name="whp12" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940303)</description>
+ <description>World Heroes (USA, prototype, 19940303)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31357,7 +31357,7 @@ Black screen
</software>
<software name="whp11" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940307)</description>
+ <description>World Heroes (USA, prototype, 19940307)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31369,7 +31369,7 @@ Black screen
</software>
<software name="whp10" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940309)</description>
+ <description>World Heroes (USA, prototype, 19940309)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31381,7 +31381,7 @@ Black screen
</software>
<software name="whp09" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940315)</description>
+ <description>World Heroes (USA, prototype, 19940315)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31393,7 +31393,7 @@ Black screen
</software>
<software name="whp08" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940316)</description>
+ <description>World Heroes (USA, prototype, 19940316)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31405,7 +31405,7 @@ Black screen
</software>
<software name="whp07" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940318)</description>
+ <description>World Heroes (USA, prototype, 19940318)</description>
<year>1994</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31417,7 +31417,7 @@ Black screen
</software>
<software name="whp06" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940322, broken - C07 missing)</description>
+ <description>World Heroes (USA, prototype, 19940322, broken - C07 missing)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31429,7 +31429,7 @@ Black screen
</software>
<software name="whp05" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940323)</description>
+ <description>World Heroes (USA, prototype, 19940323)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31441,7 +31441,7 @@ Black screen
</software>
<software name="whp04" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940324)</description>
+ <description>World Heroes (USA, prototype, 19940324)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31453,7 +31453,7 @@ Black screen
</software>
<software name="whp03" cloneof="wh">
- <description>World Heroes (USA, Prototype, 19940330)</description>
+ <description>World Heroes (USA, prototype, 19940330)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31465,7 +31465,7 @@ Black screen
</software>
<software name="worldilljp" cloneof="worldill">
- <description>World of Illusion - Fushigi na Magic Box (Jpn, Prototype)</description>
+ <description>World of Illusion - Fushigi na Magic Box (Jpn, prototype)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="alt_title" value="ワールド オブ イリュージョン アイラブ ミッキー&amp;ドナルド - ふしぎなマジックボックス"/>
@@ -31518,7 +31518,7 @@ Black screen
</software>
<software name="wsb95p23" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19941208)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19941208)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31530,7 +31530,7 @@ Black screen
</software>
<software name="wsb95p22" cloneof="wsb95" supported="no">
- <description>World Series Baseball '95 (USA, Prototype, 19941214)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19941214)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31542,7 +31542,7 @@ Black screen
</software>
<software name="wsb95p21" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19941228-SB)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19941228-SB)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31557,7 +31557,7 @@ Black screen
</software>
<software name="wsb95p09" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950202)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950202)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31572,7 +31572,7 @@ Black screen
</software>
<software name="wsb95p08" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950203)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950203)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31587,7 +31587,7 @@ Black screen
</software>
<software name="wsb95p07" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950207)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950207)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31602,7 +31602,7 @@ Black screen
</software>
<software name="wsb95p06" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950209-B)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950209-B)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31617,7 +31617,7 @@ Black screen
</software>
<software name="wsb95p05" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950209)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950209)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31632,7 +31632,7 @@ Black screen
</software>
<software name="wsb95p04" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950211)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950211)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31647,7 +31647,7 @@ Black screen
</software>
<software name="wsb95p03" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950212)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950212)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31662,7 +31662,7 @@ Black screen
</software>
<software name="wsb95p02" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950213)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950213)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31677,7 +31677,7 @@ Black screen
</software>
<software name="wsb95p01" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950214)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950214)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31692,7 +31692,7 @@ Black screen
</software>
<software name="wsb95p20" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950101-TST)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950101-TST)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31707,7 +31707,7 @@ Black screen
</software>
<software name="wsb95p19" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950103-TST)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950103-TST)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31722,7 +31722,7 @@ Black screen
</software>
<software name="wsb95p18" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950105)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950105)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31737,7 +31737,7 @@ Black screen
</software>
<software name="wsb95p17" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950109-TST)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950109-TST)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31752,7 +31752,7 @@ Black screen
</software>
<software name="wsb95p16" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950110)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950110)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31767,7 +31767,7 @@ Black screen
</software>
<software name="wsb95p15" cloneof="wsb95" supported="no">
- <description>World Series Baseball '95 (USA, Prototype, 19950114-RM)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950114-RM)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31779,7 +31779,7 @@ Black screen
</software>
<software name="wsb95p14" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950116)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950116)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31794,7 +31794,7 @@ Black screen
</software>
<software name="wsb95p13" cloneof="wsb95" supported="no">
- <description>World Series Baseball '95 (USA, Prototype, 19950118-RM)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950118-RM)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31806,7 +31806,7 @@ Black screen
</software>
<software name="wsb95p12" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950120)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950120)</description>
<year>1995</year>
<publisher>Sega</publisher>
<!-- Compatibility not enforced -->
@@ -31821,7 +31821,7 @@ Black screen
</software>
<software name="wsb95p11" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950125)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950125)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31836,7 +31836,7 @@ Black screen
</software>
<software name="wsb95p10" cloneof="wsb95">
- <description>World Series Baseball '95 (USA, Prototype, 19950130)</description>
+ <description>World Series Baseball '95 (USA, prototype, 19950130)</description>
<year>1995</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31880,7 +31880,7 @@ Black screen
</software>
<software name="wsbp09" cloneof="wsb" supported="no">
- <description>World Series Baseball (USA, Prototype, 19931222)</description>
+ <description>World Series Baseball (USA, prototype, 19931222)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31891,7 +31891,7 @@ Black screen
</software>
<software name="wsbp08" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19931226)</description>
+ <description>World Series Baseball (USA, prototype, 19931226)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31906,7 +31906,7 @@ Black screen
</software>
<software name="wsbp07" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19931229)</description>
+ <description>World Series Baseball (USA, prototype, 19931229)</description>
<year>1993</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31921,7 +31921,7 @@ Black screen
</software>
<software name="wsbp03" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19940218)</description>
+ <description>World Series Baseball (USA, prototype, 19940218)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31936,7 +31936,7 @@ Black screen
</software>
<software name="wsbp06" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19940103)</description>
+ <description>World Series Baseball (USA, prototype, 19940103)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31951,7 +31951,7 @@ Black screen
</software>
<software name="wsbp05" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19940106)</description>
+ <description>World Series Baseball (USA, prototype, 19940106)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31966,7 +31966,7 @@ Black screen
</software>
<software name="wsbp04" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19940116)</description>
+ <description>World Series Baseball (USA, prototype, 19940116)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -31981,7 +31981,7 @@ Black screen
</software>
<software name="wsbp02" cloneof="wsb" supported="no">
- <description>World Series Baseball (USA, Prototype, 19940304)</description>
+ <description>World Series Baseball (USA, prototype, 19940304)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -31992,7 +31992,7 @@ Black screen
</software>
<software name="wsbp01" cloneof="wsb">
- <description>World Series Baseball (USA, Prototype, 19940527)</description>
+ <description>World Series Baseball (USA, prototype, 19940527)</description>
<year>1994</year>
<publisher>Sega</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -32007,7 +32007,7 @@ Black screen
</software>
<software name="wsbp10" cloneof="wsb" supported="no">
- <description>World Series Baseball (USA, Prototype, 19931001)</description>
+ <description>World Series Baseball (USA, prototype, 19931001)</description>
<year>1993</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32031,7 +32031,7 @@ Black screen
<software name="wormsp" cloneof="worms">
<!-- TODO: Claims USA really, dumper mistake? -->
- <description>Worms (Euro, Prototype)</description>
+ <description>Worms (Euro, prototype)</description>
<year>1995</year>
<publisher>Ocean</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/>
@@ -32043,7 +32043,7 @@ Black screen
</software>
<software name="wrestwarp" cloneof="wrestwar">
- <description>Wrestle War (Jpn, Prototype)</description>
+ <description>Wrestle War (Jpn, prototype)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="alt_title" value="レッスル ウォー"/>
@@ -32088,7 +32088,7 @@ Black screen
</software>
<software name="wukongc1" cloneof="wukong">
- <description>Wu Kong Wai Zhuan (Chi, Unprotected)</description>
+ <description>Wu Kong Wai Zhuan (Chi, unprotected)</description>
<year>1996</year>
<publisher>Ming</publisher>
<info name="serial" value="GM-95701"/>
@@ -32133,7 +32133,7 @@ Black screen
</software>
<software name="wwfagp" cloneof="wwfag" supported="no">
- <description>WWF WrestleMania - The Arcade Game (USA, Prototype)</description>
+ <description>WWF WrestleMania - The Arcade Game (USA, prototype)</description>
<year>1995</year>
<publisher>Acclaim Entertainment</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32156,7 +32156,7 @@ Black screen
</software>
<software name="xmen2p12" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941202)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941202)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32167,7 +32167,7 @@ Black screen
</software>
<software name="xmen2p11" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941203)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941203)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32178,7 +32178,7 @@ Black screen
</software>
<software name="xmen2p10" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941206)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941206)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32189,7 +32189,7 @@ Black screen
</software>
<software name="xmen2p09" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941207)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941207)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32200,7 +32200,7 @@ Black screen
</software>
<software name="xmen2p08" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941208)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941208)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32211,7 +32211,7 @@ Black screen
</software>
<software name="xmen2p07" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941209)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941209)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32222,7 +32222,7 @@ Black screen
</software>
<software name="xmen2p06" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941210)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941210)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32233,7 +32233,7 @@ Black screen
</software>
<software name="xmen2p05" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941211-A)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941211-A)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32244,7 +32244,7 @@ Black screen
</software>
<software name="xmen2p04" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941211)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941211)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32255,7 +32255,7 @@ Black screen
</software>
<software name="xmen2p03" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941214)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941214)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32266,7 +32266,7 @@ Black screen
</software>
<software name="xmen2p02" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941215)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941215)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32277,7 +32277,7 @@ Black screen
</software>
<software name="xmen2p01" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941216)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941216)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32288,7 +32288,7 @@ Black screen
</software>
<software name="xmen2p19" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19940506)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19940506)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32299,7 +32299,7 @@ Black screen
</software>
<software name="xmen2p18" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19940510)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19940510)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32310,7 +32310,7 @@ Black screen
</software>
<software name="xmen2p16" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941117)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941117)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32321,7 +32321,7 @@ Black screen
</software>
<software name="xmen2p15" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941123)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941123)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32332,7 +32332,7 @@ Black screen
</software>
<software name="xmen2p14" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941128)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941128)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32343,7 +32343,7 @@ Black screen
</software>
<software name="xmen2p13" cloneof="xmen2">
- <description>X-Men 2 - Clone Wars (Prototype, 19941130)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941130)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32354,7 +32354,7 @@ Black screen
</software>
<software name="xmen2p17" cloneof="xmen2" supported="no">
- <description>X-Men 2 - Clone Wars (Prototype, 19941018)</description>
+ <description>X-Men 2 - Clone Wars (prototype, 19941018)</description>
<year>1994</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32377,7 +32377,7 @@ Black screen
</software>
<software name="xpertsp" cloneof="xperts">
- <description>X-perts (Prototype)</description>
+ <description>X-perts (prototype)</description>
<year>1996</year>
<publisher>Sega</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32439,7 +32439,7 @@ Black screen
</software>
<software name="xinqig1" cloneof="beggarp">
- <description>Xin Qi Gai Wang Zi (Chi, Alt)</description>
+ <description>Xin Qi Gai Wang Zi (Chi, alt)</description>
<year>1996</year>
<publisher>C&amp;E</publisher>
<info name="alt_title" value="新乞丐王子"/>
@@ -32490,7 +32490,7 @@ Black screen
</software>
<software name="youngind">
- <description>The Young Indiana Jones Chronicles (USA, Prototype)</description>
+ <description>The Young Indiana Jones Chronicles (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32515,7 +32515,7 @@ Black screen
</software>
<software name="ys3p" cloneof="ys3">
- <description>Ys III (USA, Prototype 19910828)</description>
+ <description>Ys III (USA, prototype 19910828)</description>
<year>1991</year>
<publisher>Renovation</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32659,7 +32659,7 @@ Crashes often if you use level select in options menu, particularly later on.
</software>
<software name="zombhigh">
- <description>Zombie High (USA, Prototype)</description>
+ <description>Zombie High (USA, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32900,7 +32900,7 @@ Jumps to unmapped area at PC=0xffd004e8
<!-- This cart is missing the higher bank containing Dragon Ball game -->
<software name="12in1">
- <description>12 in 1 (Incomplete Dump)</description>
+ <description>12 in 1 (incomplete dump)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32912,7 +32912,7 @@ Jumps to unmapped area at PC=0xffd004e8
</software>
<software name="4in1">
- <description>4 in 1 (Pirate)</description>
+ <description>4 in 1 (pirate)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -32936,7 +32936,7 @@ Jumps to unmapped area at PC=0xffd004e8
</software>
<software name="bugslifea" cloneof="bugslife">
- <description>A Bug's Life (Alt?)</description>
+ <description>A Bug's Life (alt?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33052,7 +33052,7 @@ Crashes during attract or in character select, copy protection
<!-- Different PCB type needed? -->
<software name="kof99a" cloneof="kof99" supported="partial">
- <description>The King of Fighters '99 (Alt)</description>
+ <description>The King of Fighters '99 (alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33117,7 +33117,7 @@ Crashes during attract or in character select, copy protection
</software>
<software name="majianqra" cloneof="majianqr">
- <description>Ma Jiang Qing Ren - Ji Ma Jiang Zhi (Chi, Alt)</description>
+ <description>Ma Jiang Qing Ren - Ji Ma Jiang Zhi (Chi, alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="姬麻將之 麻將情人"/>
@@ -33170,7 +33170,7 @@ https://segaretro.org/Rockman_X3_(Mega_Drive)
</software>
<software name="soulblada" cloneof="soulblad">
- <description>Soul Blade (Alt)</description>
+ <description>Soul Blade (alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33196,7 +33196,7 @@ https://bootleggames.fandom.com/wiki/Squirrel_King
</software>
<software name="s15in1">
- <description>Super 15 in 1 (Pirate)</description>
+ <description>Super 15 in 1 (pirate)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33210,7 +33210,7 @@ https://bootleggames.fandom.com/wiki/Squirrel_King
<!-- This dump is incomplete and is missing the entire second half -->
<software name="s19in1" supported="partial">
- <description>Super 19 in 1 (Pirate)</description>
+ <description>Super 19 in 1 (pirate)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33289,7 +33289,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="smb">
- <description>Super Mario World ~ Super Mario Bros. (Pirate)</description>
+ <description>Super Mario World ~ Super Mario Bros. (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33326,7 +33326,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="redcliffa" cloneof="redcliff">
- <description>San Guo Yan Yi - Huo Shao Chi Bi (Tw, Hacked out Protection?)</description>
+ <description>San Guo Yan Yi - Huo Shao Chi Bi (Tw, hacked out protection?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="三國演義 火燒赤壁"/>
@@ -33443,7 +33443,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
<!-- Are these unprotected versions legit? or were they hacked to work with emus? -->
<software name="chinf3a" cloneof="chinf3">
- <description>Tenchi wo Kurau III - Sanguo Wai Chuan - Chinese Fighter (Chi, Unprotected?)</description>
+ <description>Tenchi wo Kurau III - Sanguo Wai Chuan - Chinese Fighter (Chi, unprotected?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="天地を喰らうⅢ三国外伝"/>
@@ -33455,7 +33455,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="kof98a" cloneof="kof98">
- <description>K.O.F 98' (Unprotected?)</description>
+ <description>K.O.F 98' (unprotected?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33467,7 +33467,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
<!-- Invincibility and infinite lives on -->
<software name="lionkin2a" cloneof="lionkin2">
- <description>Shi Zi Wang II - Lion King II (Pirate, Hacked?)</description>
+ <description>Shi Zi Wang II - Lion King II (pirate, hacked?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33478,7 +33478,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="sdkong99a" cloneof="sdkong99">
- <description>Super Donkey Kong 99 (Unprotected)</description>
+ <description>Super Donkey Kong 99 (unprotected)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33567,7 +33567,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="ultsoccrp" cloneof="ultsoccr">
- <description>Ultimate Soccer (Euro, Prototype)</description>
+ <description>Ultimate Soccer (Euro, prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33589,7 +33589,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="lionkin3a" cloneof="lionkin3">
- <description>Lion King 3 (Alt?)</description>
+ <description>Lion King 3 (alt?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="Shi Zi Wang 3 - The Lion King 3 (Box?)"/>
@@ -33602,7 +33602,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="lionkin3b" cloneof="lionkin3">
- <description>Lion King 3 (Alt 2?)</description>
+ <description>Lion King 3 (alt 2?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="alt_title" value="Shi Zi Wang 3 - The Lion King 3 (Box?)"/>
@@ -33626,7 +33626,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="mbubblea" cloneof="mbubble">
- <description>Magic Bubble (Alt)</description>
+ <description>Magic Bubble (alt)</description>
<year>1993</year>
<publisher>C&amp;E</publisher>
<info name="alt_title" value="魔法氣泡 ~ Mo Fa Qi Pao (Cart)"/>
@@ -33650,7 +33650,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
</software>
<software name="sonicjamh" cloneof="sonicjam">
- <description>Sonic Jam 6 (Hacked?)</description>
+ <description>Sonic Jam 6 (hacked?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33662,7 +33662,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
<!-- This is the original protected dump. Eke emulated the protection in his emu, so we have a reference to implement this -->
<software name="souledge" supported="no">
- <description>Soul Edge vs Samurai Spirits (Pirate)</description>
+ <description>Soul Edge vs Samurai Spirits (pirate)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33675,7 +33675,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
<!-- This has been cracked to make the dump work in emus. It has to be removed as soon as we emulated the real dump -->
<software name="souledgea" cloneof="souledge">
- <description>Soul Edge vs Samurai Spirits (Pirate, Cracked)</description>
+ <description>Soul Edge vs Samurai Spirits (pirate, cracked)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33700,7 +33700,7 @@ https://bootleggames.fandom.com/wiki/Super_Bubble_Bobble_MD
<!-- Other Dumps to be sorted -->
<software name="dynoblaz">
- <description>Dyno Blaze (Early Prototype)</description>
+ <description>Dyno Blaze (early prototype)</description>
<year>1995?</year>
<publisher>Virgin Interactive</publisher>
<notes><![CDATA[
@@ -33750,7 +33750,7 @@ Boots to a pink screen (btanb)
</software>
<software name="biohaz3s" cloneof="bodyco">
- <description>Biohazard 3 - SARS war (Pirate)</description>
+ <description>Biohazard 3 - SARS war (pirate)</description>
<year>200?</year>
<publisher>Glorysun</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33783,7 +33783,7 @@ Boots to a pink screen (btanb)
</software>
<software name="chessa" cloneof="chess">
- <description>Chess (Rus, Alt)</description>
+ <description>Chess (Rus, alt)</description>
<year>1998</year>
<publisher>BSComp</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33827,7 +33827,7 @@ Boots to a pink screen (btanb)
</software>
<software name="cnc">
- <description>Command &amp; Conquer (Prototype)</description>
+ <description>Command &amp; Conquer (prototype)</description>
<year>199?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33981,7 +33981,7 @@ Unsupported lightgun or mouse?
</software>
<software name="fifa2k5" cloneof="fifa98">
- <description>FIFA 2005 (Pirate)</description>
+ <description>FIFA 2005 (pirate)</description>
<year>199?</year>
<publisher>Glorysun</publisher>
<part name="cart" interface="megadriv_cart">
@@ -33992,7 +33992,7 @@ Unsupported lightgun or mouse?
</software>
<software name="fifa2k6" cloneof="fifa98">
- <description>FIFA World Cup - Germany 2006 (Pirate)</description>
+ <description>FIFA World Cup - Germany 2006 (pirate)</description>
<year>199?</year>
<publisher>Glorysun</publisher>
<part name="cart" interface="megadriv_cart">
@@ -34150,7 +34150,7 @@ Unsupported lightgun or mouse?
<software name="iraqwara" cloneof="iraqwar">
<!-- Look the Same as iraqwar -->
- <description>Iraq War 2003 (Alt)</description>
+ <description>Iraq War 2003 (alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -34478,7 +34478,7 @@ BGM sometimes goes silent (does several [YM2612] 68k writes without bus)
</software>
<software name="pokecda" cloneof="pokecd">
- <description>Pokemon Crazy Drummer (Alt)</description>
+ <description>Pokemon Crazy Drummer (alt)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<part name="cart" interface="megadriv_cart">
@@ -34489,7 +34489,7 @@ BGM sometimes goes silent (does several [YM2612] 68k writes without bus)
</software>
<software name="prman2k5" cloneof="prmanger">
- <description>Premier Manager - English Premier League 2005 (Pirate)</description>
+ <description>Premier Manager - English Premier League 2005 (pirate)</description>
<year>200?</year>
<publisher>Glorysun</publisher>
<part name="cart" interface="megadriv_cart">
@@ -34816,7 +34816,7 @@ Needs own slot type with mountable carts
</software>
<software name="ggenie">
- <description>Game Genie (Euro, USA, Rev. A)</description>
+ <description>Game Genie (Euro, USA, rev. A)</description>
<year>1992</year>
<publisher>Codemasters</publisher>
<notes><![CDATA[
@@ -34876,7 +34876,7 @@ Jumps to invalid address, needs own slot type with mountable carts
</software>
<software name="par2a" cloneof="par2" supported="no">
- <description>Pro Action Replay 2 (Euro, Alt)</description>
+ <description>Pro Action Replay 2 (Euro, alt)</description>
<year>1994</year>
<publisher>Datel</publisher>
<notes><![CDATA[
@@ -35059,7 +35059,7 @@ rockman x3 (unl).bin [1/2] xxx3.bin [1/2] 88.159271%
rockman x3 (unl).bin [2/2] xxx3.bin [2/2] IDENTICAL
-->
<software name="rockmnx3b" cloneof="rockmnx3" supported="no">
- <description>Rockman X3 (Bad? Hacked?)</description>
+ <description>Rockman X3 (bad? hacked?)</description>
<year>199?</year>
<publisher>&lt;unlicensed&gt;</publisher>
<notes><![CDATA[
diff --git a/hash/psx.xml b/hash/psx.xml
index 2890083f521..1627db56651 100644
--- a/hash/psx.xml
+++ b/hash/psx.xml
@@ -30354,7 +30354,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Wipeout XL (USA) (Beta) (Track 11).bin" size="66091200" crc="104ad63a" sha1="9685cac56bb7cee6bfd6139cb9946c4e7a3ade56"/>
<rom name="Wipeout XL (USA) (Beta) (Track 12).bin" size="55885872" crc="280d423e" sha1="601507f68eeae7df49384b7d968c5651a0f984d8"/>
-->
- <description>Wipeout XL (USA, Prototype)</description>
+ <description>Wipeout XL (USA, prototype)</description>
<year>1996</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SCUS-94351"/>
@@ -33046,7 +33046,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Thousand Arms (USA) (Demo).cue" size="92" crc="0143e7f9" sha1="988067267b460098323702d3b010e5189c534bc7"/>
<rom name="Thousand Arms (USA) (Demo).bin" size="235089456" crc="be868278" sha1="62b1f853a09578f1e9e33068f355b0b76d69908d"/>
-->
- <description>Thousand Arms (USA, Demo)</description>
+ <description>Thousand Arms (USA, demo)</description>
<year>1999</year>
<publisher>Atlus U.S.A.</publisher>
<info name="serial" value="SLUS-90059"/>
@@ -33063,7 +33063,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Oddworld - Abe's Oddysee (USA) (Demo).cue" size="103" crc="a213da4b" sha1="b2c599d7f9341cffd9facc4ee567788875fbd264"/>
<rom name="Oddworld - Abe's Oddysee (USA) (Demo).bin" size="44401056" crc="15e38fa1" sha1="4c24bdc94d2771313b7e3db6036cb85f7eea315d"/>
-->
- <description>Oddworld - Abe's Oddysee (USA, Demo)</description>
+ <description>Oddworld - Abe's Oddysee (USA, demo)</description>
<year>1997</year>
<publisher>GT Interactive Software</publisher>
<info name="serial" value="SLUS-90004"/>
@@ -33081,7 +33081,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Ape Escape (USA) (Demo) (Track 1).bin" size="125573280" crc="b77099da" sha1="07a1cf017e1546985c431a6e8c884faa40706281"/>
<rom name="Ape Escape (USA) (Demo) (Track 2).bin" size="1401792" crc="780b1fc7" sha1="d11089e8cd3f7d9fc4dfd1156e1a02f2f992897a"/>
-->
- <description>Ape Escape (USA, Demo)</description>
+ <description>Ape Escape (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94489"/>
@@ -33098,7 +33098,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Bust A Groove (USA) (Demo).cue" size="92" crc="b2f7b662" sha1="e28952131f8a5d3c152c5884a647f2697dfe1730"/>
<rom name="Bust A Groove (USA) (Demo).bin" size="433798176" crc="d687a8b3" sha1="97dfea5b93d2d5d275b50efbad5d4ec8c8667563"/>
-->
- <description>Bust A Groove (USA, Demo)</description>
+ <description>Bust A Groove (USA, demo)</description>
<year>1998</year>
<publisher>989 Studios</publisher>
<info name="serial" value="SCUS-94376"/>
@@ -33146,7 +33146,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Burning Road (USA) (Demo) (Track 31).bin" size="27525456" crc="02c27366" sha1="656bb3fb8ecff4b045ee39be408bff5bf7884493"/>
<rom name="Burning Road (USA) (Demo) (Track 32).bin" size="27525456" crc="02c27366" sha1="656bb3fb8ecff4b045ee39be408bff5bf7884493"/>
-->
- <description>Burning Road (USA, Demo)</description>
+ <description>Burning Road (USA, demo)</description>
<year>1996</year>
<publisher>Playmates Interactive Entertainment</publisher>
<info name="serial" value="SLUS-90002"/>
@@ -33164,7 +33164,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Crash Bash &amp; Spyro - Year of the Dragon (USA) (Demo) (Track 1).bin" size="149321424" crc="1e28b12f" sha1="131bdcd9520dda427e85701cc990c9d02c9affe7"/>
<rom name="Crash Bash &amp; Spyro - Year of the Dragon (USA) (Demo) (Track 2).bin" size="1401792" crc="780b1fc7" sha1="d11089e8cd3f7d9fc4dfd1156e1a02f2f992897a"/>
-->
- <description>Crash Bash &amp; Spyro - Year of the Dragon (USA, Demo)</description>
+ <description>Crash Bash &amp; Spyro - Year of the Dragon (USA, demo)</description>
<year>2001</year>
<publisher>Universal Interactive</publisher>
<info name="serial" value="SCUS-94654"/>
@@ -33185,7 +33185,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Contender (USA) (Demo) (Track 4).bin" size="1667568" crc="9cd75aa3" sha1="aba2f37bbf17638c8df90a9e8a51282f1a846c22"/>
<rom name="Contender (USA) (Demo) (Track 5).bin" size="32354112" crc="e49b3127" sha1="01de730b1e7a8f18f9effe9341266681c2145db8"/>
-->
- <description>Contender (USA, Demo)</description>
+ <description>Contender (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94380"/>
@@ -33202,7 +33202,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Cool Boarders 2001 (USA) (Demo).cue" size="97" crc="363d80c1" sha1="071db7da2f531614854fc342171b3eb1a3848e97"/>
<rom name="Cool Boarders 2001 (USA) (Demo).bin" size="99804768" crc="fdc70f6e" sha1="86ace60872cd133c37af1bcaf5dd8017863137d8"/>
-->
- <description>Cool Boarders 2001 (USA, Demo)</description>
+ <description>Cool Boarders 2001 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94625"/>
@@ -33219,7 +33219,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Cool Boarders 4 (USA) (Demo).cue" size="94" crc="1c9a897b" sha1="aea14fd65155c0ee591c13b935bf9c6bcaef2241"/>
<rom name="Cool Boarders 4 (USA) (Demo).bin" size="233146704" crc="07ea6292" sha1="e3177665d71d9f9575f3c06df3cc4f4cf32a507d"/>
-->
- <description>Cool Boarders 4 (USA, Demo)</description>
+ <description>Cool Boarders 4 (USA, demo)</description>
<year>1999</year>
<publisher>989 Studios</publisher>
<info name="serial" value="SCUS-94388"/>
@@ -33237,7 +33237,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Crime Killer (USA) (Demo) (Track 1).bin" size="17195472" crc="50c0772b" sha1="4650797d3b3aff2bdcd3761dbb76bf80bc8e75b8"/>
<rom name="Crime Killer (USA) (Demo) (Track 2).bin" size="42594720" crc="e8496b14" sha1="186deef4825d89419e56884aad5570a7e6ddba82"/>
-->
- <description>Crime Killer (USA, Demo)</description>
+ <description>Crime Killer (USA, demo)</description>
<year>1998</year>
<publisher>Interplay Entertainment</publisher>
<info name="serial" value="SLUS-90020"/>
@@ -33254,7 +33254,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Croc 2 (USA) (Demo).cue" size="85" crc="8d64e758" sha1="125289124d85428150ac8f8dfd12da1abe255f86"/>
<rom name="Croc 2 (USA) (Demo).bin" size="70769328" crc="9a5f1c52" sha1="a03b375c9da59ea752f2a1e6900b25107fd60722"/>
-->
- <description>Croc 2 (USA, Demo)</description>
+ <description>Croc 2 (USA, demo)</description>
<year>1999</year>
<publisher>Fox Interactive</publisher>
<info name="serial" value="SLUS-90056"/>
@@ -33275,7 +33275,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Colony Wars - Vengeance (USA) (Demo) (Track 4).bin" size="17896368" crc="b0b7fc09" sha1="e45f08e2b6a34157133af25def21efa3d9d078a9"/>
<rom name="Colony Wars - Vengeance (USA) (Demo) (Track 5).bin" size="17896368" crc="b0b7fc09" sha1="e45f08e2b6a34157133af25def21efa3d9d078a9"/>
-->
- <description>Colony Wars - Vengeance (USA, Demo)</description>
+ <description>Colony Wars - Vengeance (USA, demo)</description>
<year>1998</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90037A"/>
@@ -33292,7 +33292,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Dino Crisis (USA) (Demo).cue" size="90" crc="af5ede50" sha1="8cdfd5c04e7b71edf8383a10528e5c292442b34b"/>
<rom name="Dino Crisis (USA) (Demo).bin" size="27638352" crc="a247c98b" sha1="c426d1edd161b328bce63de77e2a5176b4023e10"/>
-->
- <description>Dino Crisis (USA, Demo)</description>
+ <description>Dino Crisis (USA, demo)</description>
<year>1999</year>
<publisher>Capcom Entertainment</publisher>
<info name="serial" value="SLUS-90066"/>
@@ -33309,7 +33309,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Driver 2 (USA) (Demo).cue" size="87" crc="469e7dc3" sha1="3bae84f9cda154bfe5c0dccbe18cb6f890279796"/>
<rom name="Driver 2 (USA) (Demo).bin" size="83063232" crc="291ce1d7" sha1="17c63ce45ffb7a4f20fe163f3515f220a19e32fd"/>
-->
- <description>Driver 2 (USA, Demo)</description>
+ <description>Driver 2 (USA, demo)</description>
<year>2000</year>
<publisher>Infogrames</publisher>
<info name="serial" value="SLUS 90094"/>
@@ -33326,7 +33326,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Driver - You Are the Wheelman (USA) (Demo).cue" size="108" crc="7323b33c" sha1="4be74dcdd19335fbbddb232cc6112c50ec0e3337"/>
<rom name="Driver - You Are the Wheelman (USA) (Demo).bin" size="47482176" crc="4250d693" sha1="faed020439def8287993c8d38ca0bbbd0060f980"/>
-->
- <description>Driver - You Are the Wheelman (USA, Demo)</description>
+ <description>Driver - You Are the Wheelman (USA, demo)</description>
<year>1999</year>
<publisher>GT Interactive Software</publisher>
<info name="serial" value="SLUS-90053"/>
@@ -33343,7 +33343,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Duke Nukem - Time to Kill (USA) (Demo).cue" size="104" crc="aa45b70c" sha1="4a2d18dcd9e989e7aa993562eb25058e19fb5f5a"/>
<rom name="Duke Nukem - Time to Kill (USA) (Demo).bin" size="139252512" crc="be052dcf" sha1="7be0248928539529667b99691917b95ea918ef38"/>
-->
- <description>Duke Nukem - Time to Kill (USA, Demo)</description>
+ <description>Duke Nukem - Time to Kill (USA, demo)</description>
<year>1998</year>
<publisher>GT Interactive Software</publisher>
<info name="serial" value="SLUS-90036"/>
@@ -33377,7 +33377,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Future Cop - L.A.P.D. (USA) (Demo).cue" size="100" crc="5d3e4714" sha1="cc99ec57fef57e90afbd9bf3ea915127f65baa32"/>
<rom name="Future Cop - L.A.P.D. (USA) (Demo).bin" size="85457568" crc="de0b5b5f" sha1="47dd7d16d4247cc5f34051fc50b04433a243c4e2"/>
-->
- <description>Future Cop - L.A.P.D. (USA, Demo)</description>
+ <description>Future Cop - L.A.P.D. (USA, demo)</description>
<year>1998</year>
<publisher>Electronic Arts</publisher>
<info name="serial" value="SLUS-90034"/>
@@ -33394,7 +33394,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Grind Session (USA) (Demo).cue" size="92" crc="deba2585" sha1="c19adb9ce04d16c967e7773881e6e2e6147ff26d"/>
<rom name="Grind Session (USA) (Demo).bin" size="94764432" crc="581a4f4f" sha1="70ee799a91d94dc6078800375c6ec28e8fedfa1a"/>
-->
- <description>Grind Session (USA, Demo)</description>
+ <description>Grind Session (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94598"/>
@@ -33411,7 +33411,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Gran Turismo (USA) (Demo).cue" size="91" crc="dbe9eb9c" sha1="b0e46e8c44bae1ba7baa4dc58b26eb22d72d22fc"/>
<rom name="Gran Turismo (USA) (Demo).bin" size="615365520" crc="9d5454d8" sha1="edb9076dadc372c150e17559a6b1b5ea58f9c1fa"/>
-->
- <description>Gran Turismo (USA, Demo)</description>
+ <description>Gran Turismo (USA, demo)</description>
<year>1998</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94257"/>
@@ -33428,7 +33428,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Hot Shots Golf 2 (USA) (Demo).cue" size="95" crc="e781caf4" sha1="e98a6dc0e1ca77c6cdb031a4e697ec47ed21bb9a"/>
<rom name="Hot Shots Golf 2 (USA) (Demo).bin" size="70691712" crc="8e864d2e" sha1="3a90864d607aede257090ede2de2cd73019fb310"/>
-->
- <description>Hot Shots Golf 2 (USA, Demo)</description>
+ <description>Hot Shots Golf 2 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94495"/>
@@ -33445,7 +33445,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Advanced Dungeons &amp; Dragons - Iron &amp; Blood - Warriors of Ravenloft (USA) (Demo) (Track 1).bin" size="62683152" crc="28e0137e" sha1="4890dae42b32d2f6951e16e7c8bdd2591bfd04be"/>
<rom name="Advanced Dungeons &amp; Dragons - Iron &amp; Blood - Warriors of Ravenloft (USA) (Demo) (Track 2).bin" size="32163600" crc="9eb22530" sha1="bea344b803475b463195df6fd60834069afe246e"/>
-->
- <description>Advanced Dungeons &amp; Dragons - Iron &amp; Blood - Warriors of Ravenloft (USA, Demo)</description>
+ <description>Advanced Dungeons &amp; Dragons - Iron &amp; Blood - Warriors of Ravenloft (USA, demo)</description>
<year>1996</year>
<publisher>Acclaim Entertainment</publisher>
<info name="serial" value="SLUS-00212"/>
@@ -33462,7 +33462,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Jade Cocoon - Story of the Tamamayu (USA) (Demo).cue" size="114" crc="1e57cead" sha1="14162042a1881e5d2ab8632192417d08284c6648"/>
<rom name="Jade Cocoon - Story of the Tamamayu (USA) (Demo).bin" size="432690384" crc="06c3dae4" sha1="717ad6ab1e98601ee30540af5e9b57053f036f9a"/>
-->
- <description>Jade Cocoon - Story of the Tamamayu (USA, Demo)</description>
+ <description>Jade Cocoon - Story of the Tamamayu (USA, demo)</description>
<year>1999</year>
<publisher>Crave Entertainment</publisher>
<info name="serial" value="SLUS-90054"/>
@@ -33479,7 +33479,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Um Jammer Lammy (USA) (Demo).cue" size="94" crc="dd04eacf" sha1="75ab9620667ace28aab920de971a549d2ea9f355"/>
<rom name="Um Jammer Lammy (USA) (Demo).bin" size="741122256" crc="8090ade2" sha1="119d543d206a5fe6667fda203b91443888d0fac8"/>
-->
- <description>Um Jammer Lammy (USA, Demo)</description>
+ <description>Um Jammer Lammy (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94398"/>
@@ -33496,7 +33496,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Jet Moto 3 (USA) (Demo).cue" size="89" crc="e1b1767f" sha1="5042f1d7ea924d141aac86ed84b2e21b6493239c"/>
<rom name="Jet Moto 3 (USA) (Demo).bin" size="348517008" crc="a697e172" sha1="c6ba7ec4347d407ee4cf96f9cc7ea1e91db88ddd"/>
-->
- <description>Jet Moto 3 (USA, Demo)</description>
+ <description>Jet Moto 3 (USA, demo)</description>
<year>1999</year>
<publisher>989 Studios</publisher>
<info name="serial" value="SCUS-94384"/>
@@ -33514,7 +33514,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Kagero - Deception II (USA) (Demo) (Track 1).bin" size="354319392" crc="bb8cef52" sha1="0388e208eba8a42a8c7ec75a6b16d002f9916d63"/>
<rom name="Kagero - Deception II (USA) (Demo) (Track 2).bin" size="34868400" crc="6ffc200e" sha1="48408f40661816d60d4d490ece0b449b3ee3b4a2"/>
-->
- <description>Kagero - Deception II (USA, Demo)</description>
+ <description>Kagero - Deception II (USA, demo)</description>
<year>1998</year>
<publisher>Tecmo</publisher>
<info name="serial" value="SLUS-90041"/>
@@ -33531,7 +33531,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Legend of Legaia (USA) (Demo).cue" size="95" crc="d2f4eaf1" sha1="44b6a69589ecb43b5d63bf312e7d8212522ef1db"/>
<rom name="Legend of Legaia (USA) (Demo).bin" size="132281184" crc="27f39fef" sha1="1480376fbbdfaaec2d3e7bbd9ee2dc3de8f85b81"/>
-->
- <description>Legend of Legaia (USA, Demo)</description>
+ <description>Legend of Legaia (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94366"/>
@@ -33548,7 +33548,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Lunar 2 - Eternal Blue Complete (USA) (Demo).cue" size="110" crc="4dd7f116" sha1="99ec8dc23eb2c6ef3282f3a157024762ea2db3d7"/>
<rom name="Lunar 2 - Eternal Blue Complete (USA) (Demo).bin" size="622654368" crc="f63c79e0" sha1="0426d5bb260d467625beb2b07db3c00d747df377"/>
-->
- <description>Lunar 2 - Eternal Blue Complete (USA, Demo)</description>
+ <description>Lunar 2 - Eternal Blue Complete (USA, demo)</description>
<year>2000</year>
<publisher>Working Designs</publisher>
<info name="serial" value="SLUS-90083"/>
@@ -33567,7 +33567,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Lunar - Silver Star Story Complete (USA) (Demo) (Track 2).bin" size="26570544" crc="242e16cb" sha1="733c9ae32570590e2dff34e483792b7325f16dd7"/>
<rom name="Lunar - Silver Star Story Complete (USA) (Demo) (Track 3).bin" size="8041488" crc="c3d61aa5" sha1="4aa2fa14f8cee60cccb308f2380e35d83bc49c7b"/>
-->
- <description>Lunar - Silver Star Story Complete (USA, Demo)</description>
+ <description>Lunar - Silver Star Story Complete (USA, demo)</description>
<year>1999</year>
<publisher>Working Designs</publisher>
<info name="serial" value="SLUS-90055"/>
@@ -33584,7 +33584,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="MediEvil (USA) (Demo).cue" size="87" crc="edcd03a7" sha1="cf73ef87b2070691722a01918183f8a3b7c4cd09"/>
<rom name="MediEvil (USA) (Demo).bin" size="98892192" crc="e3bac2ec" sha1="dcf663adc28c719b3d2b0136f8597f219e4a8141"/>
-->
- <description>MediEvil (USA, Demo)</description>
+ <description>MediEvil (USA, demo)</description>
<year>1998</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94291"/>
@@ -33601,7 +33601,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="MLB 2001 (USA) (Demo).cue" size="87" crc="c676a9c7" sha1="4a1f5bf654ace29cd0927bb9fa82072c2c2fc9a7"/>
<rom name="MLB 2001 (USA) (Demo).bin" size="584526096" crc="43ff2b40" sha1="5e6e091058c070aa1432eaaf540e7a965ba5edb6"/>
-->
- <description>MLB 2001 (USA, Demo)</description>
+ <description>MLB 2001 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94479"/>
@@ -33618,7 +33618,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="MLB 2002 (USA) (Demo).cue" size="87" crc="34d78c6b" sha1="ca44c53ca5ec7770e63d3ec09a03af9d165a6162"/>
<rom name="MLB 2002 (USA) (Demo).bin" size="634501392" crc="1f815d7e" sha1="ce8697022c979e0ca393e13801048f860ada0e55"/>
-->
- <description>MLB 2002 (USA, Demo)</description>
+ <description>MLB 2002 (USA, demo)</description>
<year>2001</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94648"/>
@@ -33636,7 +33636,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Mega Man Legends 2 (USA) (Demo) (Track 1).bin" size="97822032" crc="b6bed1bf" sha1="c5707558c13e2f27f892b28ebb5728a3a4095f51"/>
<rom name="Mega Man Legends 2 (USA) (Demo) (Track 2).bin" size="37396800" crc="7976083e" sha1="d9f92af296360772e62caa4cb276de3fa74f5538"/>
-->
- <description>Mega Man Legends 2 (USA, Demo)</description>
+ <description>Mega Man Legends 2 (USA, demo)</description>
<year>2000</year>
<publisher>Capcom Entertainment</publisher>
<info name="serial" value="SLUS-90078"/>
@@ -33653,7 +33653,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Metal Gear Solid (USA) (Demo).cue" size="95" crc="2c5cd004" sha1="1561b0f1bc13e39a2bf99fa493d701d8b71c5ef8"/>
<rom name="Metal Gear Solid (USA) (Demo).bin" size="93101568" crc="d8b049de" sha1="6ecbc0109e44e23bf8214e5c3b2cd80067f8a16a"/>
-->
- <description>Metal Gear Solid (USA, Demo)</description>
+ <description>Metal Gear Solid (USA, demo)</description>
<year>1998</year>
<publisher>Konami of America</publisher>
<info name="serial" value="SLUS-90035"/>
@@ -33670,7 +33670,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Metal Gear Solid - VR Missions (USA) (Demo).cue" size="109" crc="5d4f18d6" sha1="7df494e9e1576a312f3152710473b115d2a90cc7"/>
<rom name="Metal Gear Solid - VR Missions (USA) (Demo).bin" size="123924528" crc="74160611" sha1="fffe5ba2f6183f295822f18b578b5d68b5103bf7"/>
-->
- <description>Metal Gear Solid - VR Missions (USA, Demo)</description>
+ <description>Metal Gear Solid - VR Missions (USA, demo)</description>
<year>1999</year>
<publisher>Konami of America</publisher>
<info name="serial" value="SLUS-90062"/>
@@ -33687,7 +33687,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Monster Rancher 2 (USA) (Demo).cue" size="96" crc="309666c0" sha1="ffdab990c595d662c914aa0efdd3b19c5d1fda80"/>
<rom name="Monster Rancher 2 (USA) (Demo).bin" size="451280592" crc="5224ffa3" sha1="94db63a03aed73b97241273a2d7fe531c45efb6c"/>
-->
- <description>Monster Rancher 2 (USA, Demo)</description>
+ <description>Monster Rancher 2 (USA, demo)</description>
<year>1999</year>
<publisher>Tecmo</publisher>
<info name="serial" value="SLUS-90071"/>
@@ -33710,7 +33710,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Ms. Pac-Man Maze Madness (USA) (Demo) (Track 6).bin" size="21252672" crc="fc47ad70" sha1="2e96e52e70a4aa40b20d37a12e0936b5e4cfd101"/>
<rom name="Ms. Pac-Man Maze Madness (USA) (Demo) (Track 7).bin" size="28002912" crc="53138a3e" sha1="53bf773f2fd1e9ac3bf219555bf61a36c93a19a9"/>
-->
- <description>Ms. Pac-Man Maze Madness (USA, Demo)</description>
+ <description>Ms. Pac-Man Maze Madness (USA, demo)</description>
<year>2000</year>
<publisher>Namco Hometek</publisher>
<info name="serial" value="SLUS-90080"/>
@@ -33728,7 +33728,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NBA ShootOut 2001 (USA) (Demo) (Track 1).bin" size="294021168" crc="ee049800" sha1="23a3fa47325add5bc014e96524429dc8ea09c686"/>
<rom name="NBA ShootOut 2001 (USA) (Demo) (Track 2).bin" size="43678992" crc="8fb5bc0d" sha1="7fd700a8db314aaa74bd5f261f6fd9e6fa953d11"/>
-->
- <description>NBA ShootOut 2001 (USA, Demo)</description>
+ <description>NBA ShootOut 2001 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94582"/>
@@ -33746,7 +33746,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NBA ShootOut 2002 (USA) (Demo) (Track 1).bin" size="261568272" crc="e0e6c0c5" sha1="fb099c8611b1618f03cee08ff043ab60a9eb825e"/>
<rom name="NBA ShootOut 2002 (USA) (Demo) (Track 2).bin" size="52106208" crc="09a8b170" sha1="1f762b7237ec674f5a5f8e6be77a51bc4624f000"/>
-->
- <description>NBA ShootOut 2002 (USA, Demo)</description>
+ <description>NBA ShootOut 2002 (USA, demo)</description>
<year>2001</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94660"/>
@@ -33764,7 +33764,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NCAA GameBreaker 2001 (USA) (Demo) (Track 1).bin" size="556946544" crc="2b263a75" sha1="b79a68a5dc35e066fc41ef87673ee13639040f06"/>
<rom name="NCAA GameBreaker 2001 (USA) (Demo) (Track 2).bin" size="13361712" crc="b0ef8b04" sha1="8ff5d315ca7b0b9ffd9865e9ca8720db35b2db16"/>
-->
- <description>NCAA GameBreaker 2001 (USA, Demo)</description>
+ <description>NCAA GameBreaker 2001 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94574"/>
@@ -33782,7 +33782,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NFL GameDay 99 (USA) (Demo) (Track 1).bin" size="626422272" crc="d78bee54" sha1="cb48070a3017727474961e8ca585ea766572e5c2"/>
<rom name="NFL GameDay 99 (USA) (Demo) (Track 2).bin" size="13361712" crc="b0ef8b04" sha1="8ff5d315ca7b0b9ffd9865e9ca8720db35b2db16"/>
-->
- <description>NFL GameDay 99 (USA, Demo)</description>
+ <description>NFL GameDay 99 (USA, demo)</description>
<year>1998</year>
<publisher>989 Sports</publisher>
<info name="serial" value="SCUS-94285"/>
@@ -33799,7 +33799,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NFL Xtreme (USA) (Demo).cue" size="89" crc="53a73c54" sha1="dade8e46c723ccc597dd7365c46619bb201ed1d0"/>
<rom name="NFL Xtreme (USA) (Demo).bin" size="88063584" crc="e5898ed4" sha1="9c0d004125576f2c49880d76cd8bc431dde4f012"/>
-->
- <description>NFL Xtreme (USA, Demo)</description>
+ <description>NFL Xtreme (USA, demo)</description>
<year>1998</year>
<publisher>989 Sports</publisher>
<info name="serial" value="SCUS-94271"/>
@@ -33816,7 +33816,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NHL Faceoff 2001 (USA) (Demo).cue" size="95" crc="6e2cc0d6" sha1="cd97b9f9000dd1b18f1f06681fc4685f873bc326"/>
<rom name="NHL Faceoff 2001 (USA) (Demo).bin" size="465256176" crc="50417a67" sha1="fab02afa8313511deb991b63412598d63fad813b"/>
-->
- <description>NHL FaceOff 2001 (USA, Demo)</description>
+ <description>NHL FaceOff 2001 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94578"/>
@@ -33833,7 +33833,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="NHL FaceOff 99 (USA) (Demo).cue" size="93" crc="7f8813b8" sha1="e3af74efe23ee713e07229e22232905da054824c"/>
<rom name="NHL FaceOff 99 (USA) (Demo).bin" size="441404544" crc="c4adf9f2" sha1="c3ec8ccf76fc061bcdeac23f4a9493c97d8243c0"/>
-->
- <description>NHL FaceOff 99 (USA, Demo)</description>
+ <description>NHL FaceOff 99 (USA, demo)</description>
<year>1998</year>
<publisher>989 Sports</publisher>
<info name="serial" value="SCUS-94372"/>
@@ -33850,7 +33850,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Nuclear Strike - The Lost Missions (USA) (Demo).cue" size="113" crc="280cee08" sha1="079b5f007e5dc06ece8d9f46b21c905f57603dfe"/>
<rom name="Nuclear Strike - The Lost Missions (USA) (Demo).bin" size="165449088" crc="2118b7e9" sha1="063e8ed5f8c65520057641e2438672c87fe34ad5"/>
-->
- <description>Nuclear Strike - The Lost Missions (USA, Demo)</description>
+ <description>Nuclear Strike - The Lost Missions (USA, demo)</description>
<year>1997</year>
<publisher>Electronic Arts</publisher>
<info name="serial" value="SLUS 90006"/>
@@ -33867,7 +33867,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="O.D.T. (USA) (Demo).cue" size="85" crc="be61b0ca" sha1="5bfba467fb8d5944446f2aa190d4c7162a3b20ca"/>
<rom name="O.D.T. (USA) (Demo).bin" size="158755296" crc="c3fe7e0c" sha1="1d8267703f72b2979dcf09e780bb8bb9a8d49f50"/>
-->
- <description>O.D.T. (USA, Demo)</description>
+ <description>O.D.T. (USA, demo)</description>
<year>1997</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90043"/>
@@ -33895,7 +33895,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Pac-Man World (USA) (Demo) (v1.1) (Track 11).bin" size="8979936" crc="e3f637dc" sha1="62cba665e8e678c44d3b8285d07702a282fc6d24"/>
<rom name="Pac-Man World (USA) (Demo) (v1.1) (Track 12).bin" size="28002912" crc="53138a3e" sha1="53bf773f2fd1e9ac3bf219555bf61a36c93a19a9"/>
-->
- <description>Pac-Man World (USA, Demo, v1.1)</description>
+ <description>Pac-Man World (USA, demo, v1.1)</description>
<year>1999</year>
<publisher>Namco Hometek</publisher>
<info name="serial" value="SLUS-90057"/>
@@ -33912,7 +33912,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="PaRappa the Rapper (USA) (Demo).cue" size="97" crc="83dad869" sha1="60eb46b05e8dfc32e864b9e38f6fc28c806c190f"/>
<rom name="PaRappa the Rapper (USA) (Demo).bin" size="59985408" crc="b358f4ea" sha1="7628db1f549cfd6c175b18edba7b919d4b0b80df"/>
-->
- <description>PaRappa the Rapper (USA, Demo)</description>
+ <description>PaRappa the Rapper (USA, demo)</description>
<year>1997</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS 94195"/>
@@ -33931,7 +33931,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Pitfall 3D - Beyond the Jungle (USA) (Demo) (Track 2).bin" size="59268048" crc="4fbb5bc9" sha1="b543306a2d16fd3eec51249764607a3a2b220e96"/>
<rom name="Pitfall 3D - Beyond the Jungle (USA) (Demo) (Track 3).bin" size="20394192" crc="6cef6e00" sha1="3d05c413d13fb5d54c6aa455fe8c34de7c6b1ff1"/>
-->
- <description>Pitfall 3D - Beyond the Jungle (USA, Demo)</description>
+ <description>Pitfall 3D - Beyond the Jungle (USA, demo)</description>
<year>1998</year>
<publisher>Activision</publisher>
<info name="serial" value="SLUS-90017"/>
@@ -33951,7 +33951,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Rascal (USA) (Demo) (Track 3).bin" size="2288496" crc="6b9cbab0" sha1="bf6e420f757814c722578def2130d3bed2a521cd"/>
<rom name="Rascal (USA) (Demo) (Track 4).bin" size="33908784" crc="857edda8" sha1="28a06c34d53442f736fed283c086340d7c56321e"/>
-->
- <description>Rascal (USA, Demo)</description>
+ <description>Rascal (USA, demo)</description>
<year>1998</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90015"/>
@@ -33989,7 +33989,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Rayman (USA) (Playable Game Preview) (Track 21).bin" size="7646352" crc="0697df82" sha1="d3e4cd67d199d817f5795978e68160177900cf3d"/>
<rom name="Rayman (USA) (Playable Game Preview) (Track 22).bin" size="6225744" crc="324846b9" sha1="5589a012c00cee6e49b9ce79563b050053ff71ce"/>
-->
- <description>Rayman (USA, Playable Game Preview)</description>
+ <description>Rayman (USA, playable game preview)</description>
<year>1995</year>
<publisher>Ubi Soft Entertainment Software</publisher>
<info name="serial" value="SLUS-90001"/>
@@ -34006,7 +34006,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Resident Evil 2 (USA) (Demo).cue" size="94" crc="837c32a7" sha1="afbd447342cebe377b73592e4f3d46ee4174b118"/>
<rom name="Resident Evil 2 (USA) (Demo).bin" size="162836016" crc="b3b611d5" sha1="48ede47de5d1e10ed0ed09d385a09c914d663f1a"/>
-->
- <description>Resident Evil 2 (USA, Demo)</description>
+ <description>Resident Evil 2 (USA, demo)</description>
<year>1997</year>
<publisher>Capcom Entertainment</publisher>
<info name="serial" value="SLUS-90009"/>
@@ -34023,7 +34023,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Resident Evil 3 - Nemesis (USA) (Demo).cue" size="104" crc="f1064a7b" sha1="db0e3408215579b81e96f85b302a5ef8383ccc39"/>
<rom name="Resident Evil 3 - Nemesis (USA) (Demo).bin" size="247446864" crc="7b70af82" sha1="709e347add5f311081a2f399bbe32d5234ad5d02"/>
-->
- <description>Resident Evil 3 - Nemesis (USA, Demo)</description>
+ <description>Resident Evil 3 - Nemesis (USA, demo)</description>
<year>1999</year>
<publisher>Capcom Entertainment</publisher>
<info name="serial" value="SLUS-90064"/>
@@ -34041,7 +34041,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Rollcage (USA) (Demo) (Track 1).bin" size="3650304" crc="2d49ca5b" sha1="0e3587340d5a4ecdba8e44578c1a8cc1796d97e4"/>
<rom name="Rollcage (USA) (Demo) (Track 2).bin" size="36439536" crc="49d92b4b" sha1="daec33c31013f1dc4f3a1c1b7aad22291aa34bd4"/>
-->
- <description>Rollcage (USA, Demo)</description>
+ <description>Rollcage (USA, demo)</description>
<year>1999</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90052"/>
@@ -34098,7 +34098,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Running Wild (USA) (Demo) (Track 40).bin" size="973728" crc="62eae1f5" sha1="2f91b30e6a1ed6f8de3d561b4be67f79d80331d1"/>
<rom name="Running Wild (USA) (Demo) (Track 41).bin" size="983136" crc="c8e05f9a" sha1="47e4608314b746cffc2ca8b635baef0b5eccb5b5"/>
-->
- <description>Running Wild (USA, Demo)</description>
+ <description>Running Wild (USA, demo)</description>
<year>1998</year>
<publisher>989 Studios</publisher>
<info name="serial" value="SCUS-94373"/>
@@ -34124,7 +34124,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="SuperCross Circuit (USA) (Demo) (Track 09).bin" size="27396096" crc="4b8488da" sha1="bb421a61504d69f7ed6df1915616357360f33244"/>
<rom name="SuperCross Circuit (USA) (Demo) (Track 10).bin" size="21539616" crc="cee2bbd1" sha1="367724c7f0241448856c16a816e18fdba87a575c"/>
-->
- <description>SuperCross Circuit (USA, Demo)</description>
+ <description>SuperCross Circuit (USA, demo)</description>
<year>1999</year>
<publisher>989 Sports</publisher>
<info name="serial" value="SCUS-94396"/>
@@ -34143,7 +34143,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Shadow Madness (USA) (Demo) (Track 2).bin" size="8603616" crc="759c43f5" sha1="938f593b06411e6f5d68f8be77ffc28f0c2efbc0"/>
<rom name="Shadow Madness (USA) (Demo) (Track 3).bin" size="1401792" crc="780b1fc7" sha1="d11089e8cd3f7d9fc4dfd1156e1a02f2f992897a"/>
-->
- <description>Shadow Madness (USA, Demo)</description>
+ <description>Shadow Madness (USA, demo)</description>
<year>1999</year>
<publisher>Crave Entertainment</publisher>
<info name="serial" value="SLUS-90031"/>
@@ -34160,7 +34160,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Shipwreckers! (USA) (Demo).cue" size="92" crc="37c95992" sha1="174e6e1e74f7c2af0464d3efc166c83af930a6cd"/>
<rom name="Shipwreckers! (USA) (Demo).bin" size="44937312" crc="6af9ce38" sha1="22bb814f2b7b118b7e471dce46078125ead480b9"/>
-->
- <description>Shipwreckers! (USA, Demo)</description>
+ <description>Shipwreckers! (USA, demo)</description>
<year>1997</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90013"/>
@@ -34177,7 +34177,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Speed Punks (USA) (Demo).cue" size="90" crc="01c912a5" sha1="f8aef610ce24cd417369d0917ea24914d5302cf3"/>
<rom name="Speed Punks (USA) (Demo).bin" size="119352240" crc="d9f60418" sha1="aa1288cf5c8c974caf823a37f242d8ad18c70c96"/>
-->
- <description>Speed Punks (USA, Demo)</description>
+ <description>Speed Punks (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94572"/>
@@ -34195,7 +34195,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Spyro 2 - Ripto's Rage! (USA) (Demo) (Track 1).bin" size="110341728" crc="d4685fa2" sha1="4e8b7cd677c4e73ea87f0e439af15afed83a98ca"/>
<rom name="Spyro 2 - Ripto's Rage! (USA) (Demo) (Track 2).bin" size="1401792" crc="780b1fc7" sha1="d11089e8cd3f7d9fc4dfd1156e1a02f2f992897a"/>
-->
- <description>Spyro 2 - Ripto's Rage! (USA, Demo)</description>
+ <description>Spyro 2 - Ripto's Rage! (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94460"/>
@@ -34212,7 +34212,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Spyro the Dragon (USA) (Demo 1).cue" size="97" crc="b7cbca0e" sha1="e2f505a39df3586e214c89ac6895dda3da96a916"/>
<rom name="Spyro the Dragon (USA) (Demo 1).bin" size="106286880" crc="ed3e533a" sha1="32e7a2efc0a946294466ef32ae7ec3d52895d624"/>
-->
- <description>Spyro the Dragon (USA, Demo 1)</description>
+ <description>Spyro the Dragon (USA, demo 1)</description>
<year>1998</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94290"/>
@@ -34229,7 +34229,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Spyro the Dragon (USA) (Demo 2).cue" size="97" crc="b696ecdf" sha1="a2c5fc46f531441dc56b9cb577afd60c553b6b04"/>
<rom name="Spyro the Dragon (USA) (Demo 2).bin" size="132062448" crc="d4bba3d5" sha1="b3d03bcc3ad71145eafb5e473c4f93a62899950a"/>
-->
- <description>Spyro the Dragon (USA, Demo 2)</description>
+ <description>Spyro the Dragon (USA, demo 2)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94439"/>
@@ -34267,7 +34267,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Tail Concerto (USA) (Demo) (Track 1).bin" size="548077152" crc="eec9708f" sha1="f882452b26f204fdc501f4aa172ca5f7f67911e1"/>
<rom name="Tail Concerto (USA) (Demo) (Track 2).bin" size="32104800" crc="9b94ea54" sha1="bd1fde88c2b79e3cf8821c969373460d51f3155a"/>
-->
- <description>Tail Concerto (USA, Demo)</description>
+ <description>Tail Concerto (USA, demo)</description>
<year>1999</year>
<publisher>Atlus U.S.A.</publisher>
<info name="serial" value="SLUS-90060"/>
@@ -34284,7 +34284,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Thrasher - Skate and Destroy (USA) (Demo).cue" size="107" crc="1e477ff9" sha1="e643df934de5b34507156fe238e9a361a745ff0f"/>
<rom name="Thrasher - Skate and Destroy (USA) (Demo).bin" size="35254128" crc="032dc4c0" sha1="6181ca097180c0e8a135ffb8ac04a43a66541e69"/>
-->
- <description>Thrasher - Skate and Destroy (USA, Demo)</description>
+ <description>Thrasher - Skate and Destroy (USA, demo)</description>
<year>1999</year>
<publisher>Rockstar Games</publisher>
<info name="serial" value="SLUS-90067"/>
@@ -34301,7 +34301,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Titan A.E. (USA) (Demo).cue" size="89" crc="8aebad86" sha1="b98ce70f9d49808d19ccf2c0d3cd736b1c5b53ab"/>
<rom name="Titan A.E. (USA) (Demo).bin" size="421835904" crc="c025c351" sha1="ae164c823569b34ebdd027dcae143622d5a78bca"/>
-->
- <description>Titan A.E. (USA, Demo)</description>
+ <description>Titan A.E. (USA, demo)</description>
<year>2000</year>
<publisher>Fox Interactive</publisher>
<info name="serial" value="SLUS-90082"/>
@@ -34318,7 +34318,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Tomba! (USA) (Demo).cue" size="85" crc="f3408f1a" sha1="e666ca5778f7c5070b8f991001e6e2347a1e9e15"/>
<rom name="Tomba! (USA) (Demo).bin" size="116708592" crc="b9a33432" sha1="7f8cc551eece9cd6e0f5008549e477b4b3ba4f65"/>
-->
- <description>Tomba! (USA, Demo)</description>
+ <description>Tomba! (USA, demo)</description>
<year>1998</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94255"/>
@@ -34336,7 +34336,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Tomba! 2 - The Evil Swine Return (USA) (Demo) (Track 1).bin" size="65486736" crc="a52a0566" sha1="79e583d00eba4d280c2cf89384e1cba5023b6fc2"/>
<rom name="Tomba! 2 - The Evil Swine Return (USA) (Demo) (Track 2).bin" size="1401792" crc="780b1fc7" sha1="d11089e8cd3f7d9fc4dfd1156e1a02f2f992897a"/>
-->
- <description>Tomba! 2 - The Evil Swine Return (USA, Demo)</description>
+ <description>Tomba! 2 - The Evil Swine Return (USA, demo)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94464"/>
@@ -34353,7 +34353,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Tyco R-C - Assault with a Battery (USA) (Demo).cue" size="112" crc="7f2351e0" sha1="a424f3d09970ef5738ead698e88a7346cfaf581d"/>
<rom name="Tyco R-C - Assault with a Battery (USA) (Demo).bin" size="12169248" crc="fb6ec55b" sha1="5b16aa056dee14eff92891c24ca7cf71d263077d"/>
-->
- <description>Tyco R/C - Assault with a Battery (USA, Demo)</description>
+ <description>Tyco R/C - Assault with a Battery (USA, demo)</description>
<year>2000</year>
<publisher>Mattel Interactive</publisher>
<info name="serial" value="SLUS-90085"/>
@@ -34380,7 +34380,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Vigilante 8 (USA) (Demo) (Track 10).bin" size="1599360" crc="567e0b81" sha1="b09de860cc29f4dd8cfce04b335fc6cdcfbf5320"/>
<rom name="Vigilante 8 (USA) (Demo) (Track 11).bin" size="34075776" crc="752febcc" sha1="4afb205363be53b60de8e223f277e38f9a076a4e"/>
-->
- <description>Vigilante 8 (USA, Demo)</description>
+ <description>Vigilante 8 (USA, demo)</description>
<year>1998</year>
<publisher>Activision</publisher>
<info name="serial" value="SLUS-90022"/>
@@ -34397,7 +34397,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="Wild Arms 2 (USA) (Demo).cue" size="90" crc="065985d5" sha1="52224ae14dc72549c027ad70aad1a2f01b29fc8c"/>
<rom name="Wild Arms 2 (USA) (Demo).bin" size="212338560" crc="26e97cd6" sha1="771142196075e9680de8955a7571b0b8b2fb66f8"/>
-->
- <description>Wild Arms 2 (USA, Demo)</description>
+ <description>Wild Arms 2 (USA, demo)</description>
<year>2000</year>
<publisher>Sony Computer Entertainment America</publisher>
<info name="serial" value="SCUS-94592"/>
@@ -34415,7 +34415,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="WipEout 3 (USA) (Demo) (Track 1).bin" size="42495936" crc="ec4f77a4" sha1="0ed595bc1e9b1dfeae7f8e446d2d42ed7bcb83f5"/>
<rom name="WipEout 3 (USA) (Demo) (Track 2).bin" size="39179616" crc="98fd1501" sha1="1ff406e9976fa09e220991477b029364f1f7b2c3"/>
-->
- <description>WipEout 3 (USA, Demo)</description>
+ <description>WipEout 3 (USA, demo)</description>
<year>1999</year>
<publisher>Psygnosis</publisher>
<info name="serial" value="SLUS-90063"/>
@@ -34432,7 +34432,7 @@ For an overview of US PS1 discs that have not been dumped and added to redump's
<rom name="You Don't Know Jack (USA) (Demo).cue" size="98" crc="c28ab357" sha1="aa7f2564fb79672a49618bc9053366186162cea3"/>
<rom name="You Don't Know Jack (USA) (Demo).bin" size="347402160" crc="e2917810" sha1="63d80b59b853c01d66fa1b162a6b00646143e151"/>
-->
- <description>You Don't Know Jack (USA, Demo)</description>
+ <description>You Don't Know Jack (USA, demo)</description>
<year>1999</year>
<publisher>Sierra On-Line</publisher>
<info name="serial" value="SLUS-90061"/>
@@ -59990,7 +59990,7 @@ The entries in this section are intended to replace the existing "low-grade" Jap
<!-- http://redump.org/disc/61313/ -->
<software name="frontms3e" cloneof="frontms3">
- <description>Front Mission 3 (Euro, Prototype 20000616)</description>
+ <description>Front Mission 3 (Euro, prototype 20000616)</description>
<year>2000</year>
<publisher>Square Europe</publisher>
<info name="release" value="20000616" />
@@ -60823,7 +60823,7 @@ A few comments on these:
<rom name="bb2.bin" size="62620864" crc="1c2c9f63" sha1="2d9cf9e34057c93fe1d40940428c463a7224444e"/>
<rom name="bb2.cue" size="69" crc="096e5077" sha1="a56c5425f32b5ead296ecd4d3b1ac909d8144972"/>
-->
- <description>Bubble Bobble II (Euro, Prototype)</description>
+ <description>Bubble Bobble II (Euro, prototype)</description>
<year>1995</year>
<publisher>Taito</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60842,7 +60842,7 @@ A few comments on these:
<rom name="baldur's gate - disc 3.bin" size="772415616" crc="18558807" sha1="133829649e2311e1656e77b4610129c3ebbbe90d"/>
<rom name="baldur's gate - disc 3.cue" size="88" crc="d7c114f1" sha1="f6f14f0239789b62cfe5499899b20fde5e273673"/>
-->
- <description>Baldur's Gate (USA, Prototype)</description>
+ <description>Baldur's Gate (USA, prototype)</description>
<year>19??</year>
<publisher>Interplay</publisher>
<info name="serial" value="SLUS-01037" />
@@ -60870,7 +60870,7 @@ A few comments on these:
<rom name="biohazard - 1995 - 08 - 04 - sample.bin" size="20057856" crc="a64e5922" sha1="c1a293f0183c3fb912794dc4cbbca3ca71d7ef31"/>
<rom name="biohazard - 1995 - 08 - 04 - sample.cue" size="101" crc="389803a9" sha1="be53c93c21aefa9e2fcdedc6eec7be381b2032b6"/>
-->
- <description>BioHazard (Jpn, Prototype 19950804)</description>
+ <description>BioHazard (Jpn, prototype 19950804)</description>
<year>1995</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60885,7 +60885,7 @@ A few comments on these:
<rom name="biohazard - 1995 - 10 - 04 - sample.bin" size="100420992" crc="e417d9a6" sha1="f9f8afac9b08fd1a79d9ecfd93027defaac7fc7e"/>
<rom name="biohazard - 1995 - 10 - 04 - sample.cue" size="101" crc="39e8977b" sha1="24a10fe354a45a87b6cf08b49a8741e4c3f3de95"/>
-->
- <description>BioHazard (Jpn, Prototype 19951004)</description>
+ <description>BioHazard (Jpn, prototype 19951004)</description>
<year>1995</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60900,7 +60900,7 @@ A few comments on these:
<rom name="bio hazard (j) (sample 1996.01.31) [slps-00222].bin" size="735818496" crc="af067e3c" sha1="35a718d090bbedcb40974f2f07d33e255dc57529"/>
<rom name="bio hazard (j) (sample 1996.01.31) [slps-00222].cue" size="115" crc="bf382b9a" sha1="6d918de5f48d78546c569e374c2aa45f340e80c9"/>
-->
- <description>BioHazard (Jpn, Prototype 19960131)</description>
+ <description>BioHazard (Jpn, prototype 19960131)</description>
<year>1996</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60916,7 +60916,7 @@ A few comments on these:
<rom name="biohazard-2-beta.ccd" size="743" crc="7c549fd8" sha1="442760fd3c8e080b4860b17951f85f77a04c56e9"/>
<rom name="biohazard-2-beta.sub" size="28164096" crc="9af638a3" sha1="e89a6ea0dee1a217d2faedbb2d6769992b2b4aeb"/>
-->
- <description>BioHazard 2 (Jpn, Prototype)</description>
+ <description>BioHazard 2 (Jpn, prototype)</description>
<year>1998</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60931,7 +60931,7 @@ A few comments on these:
<rom name="biohazard 2 (beta 2).bin" size="780788736" crc="b7e5b1b9" sha1="354cd30e1c570e85accaf3af716d0843614dfc40"/>
<rom name="biohazard 2 (beta 2).cue" size="86" crc="1fd0def1" sha1="00bb06023a89a3ef11b9fcd58593eaef813f8e2a"/>
-->
- <description>BioHazard 2 (Jpn, Prototype, Alt)</description>
+ <description>BioHazard 2 (Jpn, prototype, alt)</description>
<year>1998</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60945,7 +60945,7 @@ A few comments on these:
<!-- Original images (unknown source)
<rom name="BH2P_PVB.ISO" size="124300848" crc="598a6bfd" sha1="ecac141d16ee0c8cfa946fb3860cf9dae75b6752"/>
-->
- <description>BioHazard 2 (Jpn, Early Prototype)</description>
+ <description>BioHazard 2 (Jpn, early prototype)</description>
<year>1998</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60961,7 +60961,7 @@ A few comments on these:
<rom name="breakneck.ccd" size="788" crc="2662a57c" sha1="176e43ccfe1eb79941cc2e9b69f0376a0a6a1748"/>
<rom name="breakneck.sub" size="5769120" crc="d7034ad8" sha1="fd2ab53f8d0ebb72a8cedae7b5768ff9a6ed8ffd"/>
-->
- <description>Breakneck (Prototype)</description>
+ <description>Breakneck (prototype)</description>
<year>19??</year>
<publisher>Radical</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60976,7 +60976,7 @@ A few comments on these:
<rom name="COMMANDO.BIN" size="3370416" crc="7b9442ef" sha1="aed79c2859e8949c7f3303f9de2e7a188e07d8c9"/>
<rom name="COMMANDO.CUE" size="74" crc="7f9d7a10" sha1="f91833587f7ca34b1d53868f47169db040dfa493"/>
-->
- <description>Command &amp; Conquerer - Commando (Tech Demo, 19970714)</description>
+ <description>Command &amp; Conquerer - Commando (tech demo, 19970714)</description>
<year>19??</year>
<publisher>POV</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -60992,7 +60992,7 @@ A few comments on these:
<rom name="CRASHBANDICOOT.img" size="183627696" crc="e0cb00ae" sha1="bdebf6ec7a7f4732daa2e0cb570d962b34de565d"/>
<rom name="CRASHBANDICOOT.sub" size="7495008" crc="2fb45167" sha1="0596388a74c6e5486f64f6806f9776ed8cce9a38"/>
-->
- <description>Crash Bandicoot (USA, Prototype, 19960511)</description>
+ <description>Crash Bandicoot (USA, prototype, 19960511)</description>
<year>1996</year>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61008,7 +61008,7 @@ A few comments on these:
<rom name="crash.img" size="167431824" crc="79827883" sha1="837c7a9c1af9262fbe1842e798cd341ed221bc83"/>
<rom name="crash.sub" size="6833952" crc="86466038" sha1="3b57d344c4c813f8436c4c7acf3369591293ecaa"/>
-->
- <description>Crash Bandicoot (USA, Prototype, 19960408)</description>
+ <description>Crash Bandicoot (USA, prototype, 19960408)</description>
<year>1996</year>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61022,7 +61022,7 @@ A few comments on these:
<!-- Original images (unknown source)
<rom name="Crash Bandicoot 2 - Cortex Strikes Back (BETA_08-09-1997).bin" size="249636576" crc="9bb04050" sha1="895fd4b675adbdcc8c395a8031cb6105767c90f5"/>
-->
- <description>Crash Bandicoot 2 - Cortex Strikes Back (USA, Prototype 19970908)</description>
+ <description>Crash Bandicoot 2 - Cortex Strikes Back (USA, prototype 19970908)</description>
<year>1997</year>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61037,7 +61037,7 @@ A few comments on these:
<rom name="CROC_0_12.BIN" size="513862608" crc="f9c683f1" sha1="69c4e514243f5c326190d8a36539dca0cdf11ca2"/>
<rom name="CROC_0_12.cue" size="138" crc="b3487209" sha1="5e3a0bb57d33c9b8f5e60631c3b588e7051382e1"/>
-->
- <description>Croc - Legend of the Gobbos (Prototype)</description>
+ <description>Croc - Legend of the Gobbos (prototype)</description>
<year>1997</year>
<publisher>Fox Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61052,7 +61052,7 @@ A few comments on these:
<rom name="CROC_DEMO.BIN" size="323106000" crc="c7f47362" sha1="1feb55ba93b28ebadfbf429df1f7009b7eebe8ce"/>
<rom name="CROC_DEMO.cue" size="1194" crc="0af47fd2" sha1="46ca82b29d4425aa2d8ab933f545e946ffd46c06"/>
-->
- <description>Croc (Earlier Prototype)</description>
+ <description>Croc (earlier prototype)</description>
<year>1997</year>
<publisher>Fox Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61066,7 +61066,7 @@ A few comments on these:
<!-- Original images (unknown source)
<rom name="CTR - Review.bin" size="514189536" crc="16a14528" sha1="b7ac1d239edff79ea8c3b1c1a8abeed79fe11c9e"/>
-->
- <description>CTR - Crash Team Racing (USA, Prototype)</description>
+ <description>CTR - Crash Team Racing (USA, prototype)</description>
<year>1999</year>
<publisher>Sony Computer Entertainment America</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61081,7 +61081,7 @@ A few comments on these:
<rom name="deuce.bin" size="28336896" crc="db149c5e" sha1="e25c80c45e9443476fb4425c7753c96ac4737793"/>
<rom name="deuce.cue" size="337" crc="1ae16327" sha1="6473fe8ce38bb175153b8210138bf507757bbd67"/>
-->
- <description>Deuce (USA, Prototype)</description>
+ <description>Deuce (USA, prototype)</description>
<year>2000</year>
<publisher>Midway</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61096,7 +61096,7 @@ A few comments on these:
<rom name="diablo.iso" size="783745200" crc="3a0268cd" sha1="c29775b8eadca5be2ba35ec2a76f956d18416edc"/>
<rom name="diablo.cue" size="327" crc="4ba55415" sha1="af32c37875d28eb30e6e841fe3ba35d943576e5f"/>
-->
- <description>Diablo (Prototype)</description>
+ <description>Diablo (prototype)</description>
<year>1997</year>
<publisher>Electronic Arts</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61110,7 +61110,7 @@ A few comments on these:
<!-- Original images (unknown source)
<rom name="driver_you_are_the_wheelman_demo.iso" size="47482176" crc="8c11918d" sha1="64b75114d91cbd8fbfb62af595e000f3b4339727"/>
-->
- <description>Driver (Prototype Demo)</description>
+ <description>Driver (prototype demo)</description>
<year>19??</year>
<publisher>GT Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61125,7 +61125,7 @@ A few comments on these:
<rom name="ttk.mdf" size="287174880" crc="66ce93d8" sha1="17dc62d346b705fbf1fa657f6075075f11e7929e"/>
<rom name="ttk.mds" size="494" crc="a068816f" sha1="66a69f81ed0d7d7b6967ce855364714f85f34792"/>
-->
- <description>Duke Nukem Time to Kill (USA, Prototype)</description>
+ <description>Duke Nukem Time to Kill (USA, prototype)</description>
<year>1998</year>
<publisher>GT Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61140,7 +61140,7 @@ A few comments on these:
<rom name="global domination [ntsc-u][slus-01419].bin" size="611564688" crc="f5e70299" sha1="35b457af1241c333d82a5f606f68818f28ea4403"/>
<rom name="global domination [ntsc-u][slus-01419].cue" size="105" crc="8a9e7192" sha1="3eef0d1ebe2ffc2b54e07d68dcf059a2093517cd"/>
-->
- <description>Global Domination (USA, Prototype)</description>
+ <description>Global Domination (USA, prototype)</description>
<year>1998?</year>
<publisher>Psygnosis</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61155,7 +61155,7 @@ A few comments on these:
<rom name="IMSA.bin" size="61283712" crc="7941f9b8" sha1="260d958310382073f756a447c6749c6de4dab64e"/>
<rom name="IMSA.cue" size="126" crc="f42a8822" sha1="479cfc179893836701069643ec56bdb76eb1911a"/>
-->
- <description>IMSA Racing (Tech Demo, 19970715)</description>
+ <description>IMSA Racing (tech demo, 19970715)</description>
<year>19??</year>
<publisher>POV</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61172,7 +61172,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="Jetmoto 2124.bin" size="188084736" crc="1c041492" sha1="c9404c1af14b52dc37c70b23efdb3f9b6f7098b9"/>
<rom name="Jetmoto 2124.cue" size="78" crc="e71df0dd" sha1="94d5c9980391b630d9c62b6a28f85d8bde992d0f"/>
-->
- <description>Jetmoto 2124 (USA, Prototype)</description>
+ <description>Jetmoto 2124 (USA, prototype)</description>
<year>1999?</year>
<publisher>989 Studios</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61186,7 +61186,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<!-- Original images (unknown source)
<rom name="legacy of kain - soul reaver [beta 6-28-99][ntsc-u] [slus-00708].iso" size="687872976" crc="6df2681d" sha1="6c97af43e5c7d78ac7afdc7443ce8440033a0cf1"/>
-->
- <description>Legacy of Kain - Soul Reaver (USA, Prototype 19990628)</description>
+ <description>Legacy of Kain - Soul Reaver (USA, prototype 19990628)</description>
<year>1999</year>
<publisher>Eidos</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61202,7 +61202,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="sr1-psx-beta.img" size="635820864" crc="22f06bfd" sha1="a2f1833f63e934f35f09c48c6bf5f6dc58661e9a"/>
<rom name="sr1-psx-beta.sub" size="25951872" crc="4183f8c3" sha1="acb107be9144e873757624f7dcad11e5bcff088c"/>
-->
- <description>Legacy of Kain - Soul Reaver (USA, Prototype 19990512)</description>
+ <description>Legacy of Kain - Soul Reaver (USA, prototype 19990512)</description>
<year>1999</year>
<publisher>Eidos</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61217,7 +61217,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="madden96.bin" size="189646464" crc="4d9f6048" sha1="d8d9ea110e26138eaf9a14ce02e635cd8af836a1"/>
<rom name="madden96.cue" size="78" crc="243f16c7" sha1="f1f6613572bf62cf62c4eb0e8d5dbdd9e8190685"/>
-->
- <description>Madden NFL 96 (USA, Prototype)</description>
+ <description>Madden NFL 96 (USA, prototype)</description>
<year>1995</year>
<publisher>Electronic Arts</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61234,7 +61234,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="medievil beta [sces_033.11] (pal).bin" size="525436800" crc="94d7c8f7" sha1="65c8474c8e18d599d090cacfc1d68d8428cea290"/>
<rom name="medievil beta [sces_033.11] (pal).cue" size="200" crc="eb01c924" sha1="f749eecc4d196b3bff03b773d4592396f0af5d05"/>
-->
- <description>MediEvil (Euro, Prototype)</description>
+ <description>MediEvil (Euro, prototype)</description>
<year>1998</year>
<publisher>Sony Computer Entertainment Europe</publisher>
<info name="serial" value="SCES-03311?"/>
@@ -61250,7 +61250,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="slpm.mdf" size="79669296" crc="f32426af" sha1="61099819f6623cf46bab78b14df6333ad13c7f40"/>
<rom name="slpm.mds" size="486" crc="d5ae5351" sha1="58b07e384070a58092417ac0942bd1bca934d8d3"/>
-->
- <description>Metal Gear Solid (Pilot Disk)</description>
+ <description>Metal Gear Solid (pilot disk)</description>
<year>1998</year>
<publisher>Konami</publisher>
<info name="serial" value="SLPM-80254" />
@@ -61266,7 +61266,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="MISSILECOMMAND.BIN" size="328602624" crc="7eeabdc7" sha1="cf2a4916c103eff856046a44f7b6e134a812180f"/>
<rom name="MISSILECOMMAND.CUE" size="121" crc="1af0a4f5" sha1="e173bf59f5a6f612ac7d45cac9b331a92bab5448"/>
-->
- <description>Missile Command (USA, Prototype 19990812)</description>
+ <description>Missile Command (USA, prototype 19990812)</description>
<year>1999</year>
<publisher>Atari Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61282,7 +61282,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="persona2xus.bin" size="724992240" crc="9eb5619d" sha1="8dfb6d2e08257525566c80d8e17c141928290d47"/>
<rom name="persona2xus.cue" size="77" crc="9d8dc4db" sha1="8977b08c99e52e3b1acf8c40b131faba2f9acb5a"/>
-->
- <description>Persona 2 - Eternal Punishment (Prototype? Debug)</description>
+ <description>Persona 2 - Eternal Punishment (prototype? debug)</description>
<year>2000</year>
<publisher>Atlus</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61297,7 +61297,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="SLUS_00904.BIN" size="289194864" crc="774c1174" sha1="3edb5222987ff95f30bf680e6b4b8771736520fe"/>
<rom name="SLUS_00904.CUE" size="101" crc="2d0364af" sha1="e9726433173434a1b9653550ef797dc10935b88e"/>
-->
- <description>Q*bert (Euro?, Prototype 19990928)</description>
+ <description>Q*bert (Euro?, prototype 19990928)</description>
<year>1999</year>
<publisher>Atari Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61312,7 +61312,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="rockman 8 beta v1.bin" size="53352768" crc="bb8df0ca" sha1="69ed6c03831f9dae6bcf8c2e54a92935261a9cd3"/>
<rom name="rockman 8 beta v1.cue" size="80" crc="5ff4ae72" sha1="34e8a485039859d2d54e1fb75097da4651a08f31"/>
-->
- <description>Rockman 8 (Jpn, Prototype v1)</description>
+ <description>Rockman 8 (Jpn, prototype v1)</description>
<year>1996</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61327,7 +61327,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="rockman 8 beta 1.bin" size="53352768" crc="67c78d88" sha1="ee9fbb2157a983d11ac4aa71684292294678f1a7"/>
<rom name="rockman 8 beta 1.cue" size="79" crc="bae58743" sha1="9b3e6a0bb19b89e2079f12b157381ccc678a4dce"/>
-->
- <description>Rockman 8 (Jpn, Prototype 1)</description>
+ <description>Rockman 8 (Jpn, prototype 1)</description>
<year>1996</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61342,7 +61342,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="rockman 8 beta 2.bin" size="58710624" crc="1c8b620a" sha1="b9ca669a9d45359d10e2e419a278b84413041919"/>
<rom name="rockman 8 beta 2.cue" size="79" crc="65ac97f6" sha1="3d7f8fd05f0e5f5f38877a786df676c6c2c9a810"/>
-->
- <description>Rockman 8 (Jpn, Prototype 2)</description>
+ <description>Rockman 8 (Jpn, prototype 2)</description>
<year>1996</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61356,7 +61356,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<!-- Original images (unknown source)
<rom name="[rpm] rockman dash beta 'capcom friendly club' (j).iso" size="155017968" crc="b18f4d41" sha1="0327559875a3825c82337aa931c56a3478151e66"/>
-->
- <description>Rockman Dash (Capcom Friendly Club Demo)</description>
+ <description>Rockman Dash (Capcom Friendly Club demo)</description>
<year>1997</year>
<publisher>Capcom</publisher>
<info name="serial" value="SLPM-80158" />
@@ -61372,7 +61372,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="rockman_x6.bin" size="396577776" crc="b1442c95" sha1="51ec61dbb32c8144a48649309e9464a44672d654"/>
<rom name="rockman_x6.cue" size="73" crc="5c05610d" sha1="3968ac1969c9bbcc9b2d3fa04682cc5efb98e23f"/>
-->
- <description>Rockman X6 (Jpn, Prototype 20010928)</description>
+ <description>Rockman X6 (Jpn, prototype 20010928)</description>
<year>2001</year>
<publisher>Capcom</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61387,7 +61387,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="silent1.bin" size="616518000" crc="8326dd8f" sha1="97c7d476c9e821b3d932139a0644c0c7593e1955"/>
<rom name="silent1.cue" size="68" crc="670aa37f" sha1="14fc981dd80051cbec08aec18afa8e5679be959f"/>
-->
- <description>Silent Hill (USA, Prototype)</description>
+ <description>Silent Hill (USA, prototype)</description>
<year>1999</year>
<publisher>Konami</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61402,7 +61402,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="spirit master (u) (prototype).bin" size="13547520" crc="92bf9773" sha1="98d5b62fed0ec04ba09577654f4366529bc0cab4"/>
<rom name="spirit master (u) (prototype).cue" size="95" crc="9fdd687b" sha1="4184f28f49f29bb14387f9a364ce21b448da8147"/>
-->
- <description>Spirit Master (USA, Prototype)</description>
+ <description>Spirit Master (USA, prototype)</description>
<year>19??</year>
<publisher>Acclaim</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61418,7 +61418,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="starcon_t02.wav" size="44763308" crc="14cd232a" sha1="c5095ba5eb1eb3b4757f6d86764a6d1ccd4971b4"/>
<rom name="starcon.cue" size="168" crc="cedd64ed" sha1="bcef7f0f691f3a266c8aa040d32e9ffcde28a7c8"/>
-->
- <description>StarCon (Prototype)</description>
+ <description>StarCon (prototype)</description>
<year>1998</year>
<publisher>Accolade</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61433,7 +61433,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="thrill kill [sles-01337].bin" size="543892944" crc="ecee0c8e" sha1="b31ded0a99acc51a98c8fdbf7ef353d3d27b8aba"/>
<rom name="thrill kill [sles-01337].cue" size="603" crc="ab9afb6e" sha1="e8a40c6456dac23e120c2d1dd9f1b0e7c5010d6f"/>
-->
- <description>Thrill Kill (Euro, Prototype)</description>
+ <description>Thrill Kill (Euro, prototype)</description>
<year>1998</year>
<publisher>Virgin Interactive</publisher>
<info name="serial" value="SLES-01337?"/>
@@ -61449,7 +61449,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="thrill kill.bin" size="625629648" crc="ab7aa9a2" sha1="8a0a68c4fa1d5d6e68acd878ea4e22c1cbcf5d24"/>
<rom name="thrill kill.cue" size="601" crc="b10890b1"/>
-->
- <description>Thrill Kill (USA, Prototype)</description>
+ <description>Thrill Kill (USA, prototype)</description>
<year>1998</year>
<publisher>Virgin Interactive</publisher>
<info name="serial" value="SLUS-00752?"/>
@@ -61465,7 +61465,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="thrill kill (usa) beta [slus-12345].bin" size="164430672" crc="f72ccb2a" sha1="ec359a95b0bfe153b46f6ecf1e160030a13f62e9"/>
<rom name="thrill kill (usa) beta [slus-12345].cue" size="467" crc="86f88cef" sha1="979aeab2cf4e59e595b9f1ecbc8fb64ad947ab24"/>
-->
- <description>Thrill Kill (USA, Prototype Earlier?)</description>
+ <description>Thrill Kill (USA, prototype Earlier?)</description>
<year>1998</year>
<publisher>Virgin Interactive</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61480,7 +61480,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="tombraider.bin" size="615734784" crc="63999513" sha1="672efcd03a8342b0e54904adc606c5d140610c9b"/>
<rom name="tombraider.cue" size="2238" crc="a1d37c30" sha1="fa46b66a3346a226817a6f1b5c5b843994854d64"/>
-->
- <description>Tomb Raider (Prototype, 19960722)</description>
+ <description>Tomb Raider (prototype, 19960722)</description>
<year>1996</year>
<publisher>Core Design</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61497,7 +61497,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="tomb raider 2 [beta] [ntsc] [psx].img" size="755624688" crc="c3330f3c" sha1="8d4f6409c9b70c460686ea4a709ce9e22651afaf"/>
<rom name="tomb raider 2 [beta] [ntsc] [psx].sub" size="30841824" crc="19143fb6" sha1="9eeeb08b6b697ec1689904213a5375c2639b4976"/>
-->
- <description>Tomb Raider II (USA, Prototype)</description>
+ <description>Tomb Raider II (USA, prototype)</description>
<year>1997</year>
<publisher>Core Design</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61512,7 +61512,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="tony hawk's pro skater (usa) [beta].bin" size="36764112" crc="4dc94772" sha1="662f7aa67e1b9ac67cb479f80b55c0cf44305a34"/>
<rom name="tony hawk's pro skater (usa) [beta].cue" size="110" crc="d4a2b89d" sha1="05c43fcd61f10a50e6594e4c2a92eadf3d76bb44"/>
-->
- <description>Tony Hawk's Pro Skater (USA, Prototype)</description>
+ <description>Tony Hawk's Pro Skater (USA, prototype)</description>
<year>1999</year>
<publisher>Activision</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61526,7 +61526,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<!-- Original images (unknown source)
<rom name="killwheel.nrg" size="379698268" crc="4bb001c3" sha1="99be78ad2b3df1f18c826c64382983543b749b08"/>
-->
- <description>Torc - Legend of the Ogre Crown (Prototype)</description>
+ <description>Torc - Legend of the Ogre Crown (prototype)</description>
<year>19??</year>
<publisher>Head Games</publisher> <!-- Head Games were actually the developer, but I was unable to dig any info about actual publishing deals -->
<part name="cdrom" interface="psx_cdrom">
@@ -61543,7 +61543,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="virtuoso (japan) (prototype 1996-05-14) (track 3).bin" size="40045152" crc="209896a4" sha1="37d11c227eb6ffcd28ecb94414689d9ecb3e99bc"/>
<rom name="virtuoso (japan) (prototype 1996-05-14).cue" size="381" crc="76ce14e0" sha1="86be87af128d63f164147ccc1081cf76bb6f7985"/>
-->
- <description>Virtuoso (Prototype, 19960514)</description>
+ <description>Virtuoso (prototype, 19960514)</description>
<year>1996</year>
<publisher>Data East?</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61558,7 +61558,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="virtuoso (japan) (prototype 1995-12-19).bin" size="4287696" crc="8163083d" sha1="0c032fbe9d0bf2d719b87e1c35d28cdc7cffdead"/>
<rom name="virtuoso (japan) (prototype 1995-12-19).cue" size="105" crc="0de27535" sha1="3034741d5e5cccb81782038583d7f506b0090651"/>
-->
- <description>Virtuoso (Prototype, 19951219)</description>
+ <description>Virtuoso (prototype, 19951219)</description>
<year>1995</year>
<publisher>Data East?</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61573,7 +61573,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="wwf smackdown! (usa) [beta].bin" size="588961968" crc="4ac3a9b7" sha1="f650a04c7ca155b7776deb72d98cfc526b03734d"/>
<rom name="wwf smackdown! (usa) [beta].cue" size="105" crc="21a5c146" sha1="dbe108e9816e01a6c6750a1c0f3ea73d53eb2fcf"/>
-->
- <description>WWF Smackdown! (USA, Prototype 20000106)</description>
+ <description>WWF Smackdown! (USA, prototype 20000106)</description>
<year>2000</year>
<publisher>THQ</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61591,7 +61591,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="(PSX) Resident Evil 2 (Preview) (SLED-00977).bin" size="170583504" crc="acbf1ead" sha1="2d5aa8554dfd7bbe54ff6c981788570117d7f16e"/>
<rom name="(PSX) Resident Evil 2 (Preview) (SLED-00977).cue" size="113" crc="4f074fd1" sha1="4cecd78cc2fa8bcbfe069b9ecb7e7c8821225c08"/>
-->
- <description>Resident Evil 2 Preview (Euro, CD Consoles No.38)</description>
+ <description>Resident Evil 2 (Euro, preview, CD Consoles No.38)</description>
<year>1997</year>
<publisher>Capcom</publisher>
<info name="serial" value="SLED-00977" />
@@ -61607,7 +61607,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="sled_02541.bin" size="239762880" crc="fb7fb080" sha1="b50b4d6f18ca33534f9d5632e031d30372675d7a"/>
<rom name="sled_02541.cue" size="76" crc="b18c113c" sha1="be6fd57ea5f29c09c44af8e026282772559be495"/>
-->
- <description>Resident Evil 3 (Euro, Demo)</description>
+ <description>Resident Evil 3 (Euro, demo)</description>
<year>1999</year>
<publisher>Capcom</publisher>
<info name="serial" value="SLED-02541" />
@@ -61641,7 +61641,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="castlevania - symphony of the night e3 demo.ccd" size="964" crc="d6a03944" sha1="b1a1e08e3837d3d39949097fb1c5f12b648aa5ce"/>
<rom name="castlevania - symphony of the night e3 demo.cue" size="163" crc="919c7241" sha1="09413093892a1cb79b5bf99e0424000ace0eeae8"/>
-->
- <description>Castlevania - Symphony of the Night (E3 Demo, 1997)</description>
+ <description>Castlevania - Symphony of the Night (E3 demo, 1997)</description>
<year>1997</year>
<publisher>Konami</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61656,7 +61656,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="gen13.bin" size="1251264" crc="006d49c5" sha1="abf73cebb7e65d928409b654855d3b057222f79d"/>
<rom name="gen13.cue" size="68" crc="21ae2764" sha1="b254dcb574a62724609d2c9b3cb17c7d1a3bab5f"/>
-->
- <description>Gen13 (Tech Demo)</description>
+ <description>Gen13 (tech demo)</description>
<year>199?</year>
<publisher>Realtime Associates</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61673,7 +61673,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="robocop.bin" size="1502928" crc="2de33042" sha1="88cb83a706eaa65b49eeeccbdac53d2fa17acf1c"/>
<rom name="robocop.cue" size="73" crc="a72d02f6" sha1="bee10d96b71bf372a0de2607240fa88513953193"/>
-->
- <description>Robocop (Tech Demo)</description>
+ <description>Robocop (tech demo)</description>
<year>199?</year>
<publisher>Realtime Associates</publisher>
<part name="cdrom" interface="psx_cdrom">
@@ -61688,7 +61688,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="Silent Hill (Trade Demo) [NTSC-U] [SLUS-80707].bin" size="615045648" crc="4f60c3ec" sha1="49695af2c2b8b19a31b01da4cd4dbc758445ccef"/>
<rom name="Silent Hill (Trade Demo) [NTSC-U] [SLUS-80707].cue" size="112" crc="1ca1d493" sha1="a4cf762ddbcf24809296d0d9e28c0a1c076db484"/>
-->
- <description>Silent Hill (USA, Trade Demo)</description>
+ <description>Silent Hill (USA, trade demo)</description>
<year>1999</year>
<publisher>Konami of America</publisher>
<info name="serial" value="SLUS-80707" />
@@ -61705,7 +61705,7 @@ use an alternate design found on the demo disk... It might be possible to enable
<rom name="tr1.img" size="2293200" crc="9905010d" sha1="6a43d5840e1cb49c0522d8546219f1cc2c467438"/>
<rom name="tr1.sub" size="93600" crc="97ae0bfa" sha1="72016fcb74997ae12c8cca271d2c14622b3a8599"/>
-->
- <description>Tomb Raider (E3 Demo, 19960520)</description>
+ <description>Tomb Raider (E3 demo, 19960520)</description>
<year>1996</year>
<publisher>SCEI</publisher>
<part name="cdrom" interface="psx_cdrom">
diff --git a/hash/vgmplay.xml b/hash/vgmplay.xml
index 3d70070630d..5f9bf4b7871 100644
--- a/hash/vgmplay.xml
+++ b/hash/vgmplay.xml
@@ -292703,6 +292703,1798 @@ license:CC0
</part>
</software>
+ <!-- vgmrips.net update - June 3, 2022 - 20 New Entries -->
+
+ <software name="androdun">
+ <description>Andro Dunos (SNK Neo Geo)</description>
+ <year>1992</year>
+ <publisher>SNK</publisher>
+ <info name="cores" value="YM2610"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title.vgz" />
+ <dataarea name="quik" size="25632">
+ <rom name="01 title.vgz" size="25632" crc="f04b017b" sha1="31057076aae283dc53040ed141314760d0bd5823" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 how to play, ending.vgz" />
+ <dataarea name="quik" size="46396">
+ <rom name="02 how to play, ending.vgz" size="46396" crc="fcdf4d58" sha1="83268442667d5d4cc950702c760bbf07ad162f56" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 opening.vgz" />
+ <dataarea name="quik" size="30948">
+ <rom name="03 opening.vgz" size="30948" crc="b2145a9a" sha1="3b632399650d8851836b4f6ee73fb0968c48f732" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 the moon (stage 1).vgz" />
+ <dataarea name="quik" size="31393">
+ <rom name="04 the moon (stage 1).vgz" size="31393" crc="7cb99d24" sha1="f821d554310a0b23db5c7cdb951a5487307cdead" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 boss 1, 5.vgz" />
+ <dataarea name="quik" size="33715">
+ <rom name="05 boss 1, 5.vgz" size="33715" crc="5c2036a2" sha1="326b2178bf7965a6d3af92780245a176eb417839" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 stage clear.vgz" />
+ <dataarea name="quik" size="23531">
+ <rom name="06 stage clear.vgz" size="23531" crc="cb59960f" sha1="24064e46f9504b0c80bb526b750b14a6e4374b4f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 mechanized unit (stage 2).vgz" />
+ <dataarea name="quik" size="41931">
+ <rom name="07 mechanized unit (stage 2).vgz" size="41931" crc="b68d693f" sha1="5d439ce1cc23e0d88752308e6dff55fedff114dd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 boss 2, 4.vgz" />
+ <dataarea name="quik" size="36285">
+ <rom name="08 boss 2, 4.vgz" size="36285" crc="a2ea810c" sha1="76cd8c72b32b5eb5a0535fafa58c4ca8fe39096a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 alien (stage 3).vgz" />
+ <dataarea name="quik" size="35691">
+ <rom name="09 alien (stage 3).vgz" size="35691" crc="8da0ebb9" sha1="ca1717092ec3f47d718eeeb0cf5459160ccec966" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 boss 3, 6.vgz" />
+ <dataarea name="quik" size="43990">
+ <rom name="10 boss 3, 6.vgz" size="43990" crc="d5079fcd" sha1="cd4a93e78a4ce434a3506d855fc4dd7f1fc0b019" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 cave (stage 4).vgz" />
+ <dataarea name="quik" size="23717">
+ <rom name="11 cave (stage 4).vgz" size="23717" crc="4aa5c8ef" sha1="c1bdedb5ce4be1e7e0f914b0cff8ff7111d84fba" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 meteorite (stage 5).vgz" />
+ <dataarea name="quik" size="28144">
+ <rom name="12 meteorite (stage 5).vgz" size="28144" crc="1d73549a" sha1="743794257f856a70d505317a46b113d9d03c4c67" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 secret base (stage 6).vgz" />
+ <dataarea name="quik" size="26981">
+ <rom name="13 secret base (stage 6).vgz" size="26981" crc="2d868450" sha1="133c1f8dd73ffa8001d71fae071c22ee3f721601" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 core (stage 7).vgz" />
+ <dataarea name="quik" size="29658">
+ <rom name="14 core (stage 7).vgz" size="29658" crc="89e7b532" sha1="23f51478007e74d0a99663c81940f71ca4a5faa5" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 last boss.vgz" />
+ <dataarea name="quik" size="42807">
+ <rom name="15 last boss.vgz" size="42807" crc="180099e0" sha1="a4f4d089c1f0ae69e1099171288e71b92716315d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 escape.vgz" />
+ <dataarea name="quik" size="26218">
+ <rom name="16 escape.vgz" size="26218" crc="037b6af9" sha1="97416ef19862bf22b6f7ca718b105f92a3728d51" offset="0" />
+ </dataarea>
+ </part>
+ <part name="017" interface="vgm_quik">
+ <feature name="part_id" value="17 game over.vgz" />
+ <dataarea name="quik" size="27952">
+ <rom name="17 game over.vgz" size="27952" crc="9413b3e0" sha1="59183af54d425eff9a9b4adfbf18ded6c1b38816" offset="0" />
+ </dataarea>
+ </part>
+ <part name="018" interface="vgm_quik">
+ <feature name="part_id" value="18 name entry.vgz" />
+ <dataarea name="quik" size="5176">
+ <rom name="18 name entry.vgz" size="5176" crc="746e8b60" sha1="c012616430a195145209953436dbd4d35aff17b0" offset="0" />
+ </dataarea>
+ </part>
+ <part name="019" interface="vgm_quik">
+ <feature name="part_id" value="19 unused.vgz" />
+ <dataarea name="quik" size="25528">
+ <rom name="19 unused.vgz" size="25528" crc="d19a16eb" sha1="6db4ee0f283b5fd8cbfdc978cac79b6b645caa69" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="arabfgt">
+ <description>Arabian Fight (Sega System 32)</description>
+ <year>1991</year>
+ <publisher>Sega</publisher>
+ <info name="cores" value="2xYM3438, RF5C68"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 credit.vgz" />
+ <dataarea name="quik" size="1033">
+ <rom name="01 credit.vgz" size="1033" crc="46131e1b" sha1="4b86e1951a337b31f9d13a561848c71c51cb3949" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 player select, pirate ship [stage 1].vgz" />
+ <dataarea name="quik" size="160350">
+ <rom name="02 player select, pirate ship [stage 1].vgz" size="160350" crc="bf9d8116" sha1="af1a50d9e22049e93d8d012a3f7b56b2b8407b5a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 shoulder [boss].vgz" />
+ <dataarea name="quik" size="212208">
+ <rom name="03 shoulder [boss].vgz" size="212208" crc="6ba36126" sha1="3aae942184bbe7787ec2a4bd1b5fc10b7022e571" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 map.vgz" />
+ <dataarea name="quik" size="59964">
+ <rom name="04 map.vgz" size="59964" crc="af7d6482" sha1="f43eab04e42737f27da064bd1666333d47b59e51" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 pyramid power [stage 2].vgz" />
+ <dataarea name="quik" size="282995">
+ <rom name="05 pyramid power [stage 2].vgz" size="282995" crc="8a2b953c" sha1="37203ba49376df06b5b8aefce5e99c1c1ffbe1a7" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 desert storm [stage 3].vgz" />
+ <dataarea name="quik" size="191565">
+ <rom name="06 desert storm [stage 3].vgz" size="191565" crc="1b4019b1" sha1="67105a1b5f3c06524b23f35474f33139dfe1c4eb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 fire street, panic in the palace [stage 4, 5].vgz" />
+ <dataarea name="quik" size="235469">
+ <rom name="07 fire street, panic in the palace [stage 4, 5].vgz" size="235469" crc="aa901569" sha1="8382069fdc89c544c3e45ea6c49ea9c2090d0296" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 hell on the hill [stage 6].vgz" />
+ <dataarea name="quik" size="211141">
+ <rom name="08 hell on the hill [stage 6].vgz" size="211141" crc="a88bcde3" sha1="b00a92795665bd6f437c636e626e931bb3196a6c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 castle of the devil [stage 7].vgz" />
+ <dataarea name="quik" size="208050">
+ <rom name="09 castle of the devil [stage 7].vgz" size="208050" crc="7c184a88" sha1="8bf2f8b2410251fdb3c455d91eb9ee01728fd804" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 ending.vgz" />
+ <dataarea name="quik" size="130977">
+ <rom name="10 ending.vgz" size="130977" crc="6c25bce8" sha1="9f643d7fc64f78722a19b662147c9c21a4e2994a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 game over.vgz" />
+ <dataarea name="quik" size="58817">
+ <rom name="11 game over.vgz" size="58817" crc="f44c51ca" sha1="7a0c6ae22ff80e3f1ef76ac9991b6718082e7211" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cattlemu_98">
+ <description>Cattle Mutilation (NEC PC-9801)</description>
+ <year>1993</year>
+ <publisher>Onion Soft</publisher>
+ <info name="cores" value="YM2203"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 mutilated city.vgz" />
+ <dataarea name="quik" size="20933">
+ <rom name="01 mutilated city.vgz" size="20933" crc="8ed8e8d4" sha1="ebbf4f79a9a27f2d57a7e111aeb79aa9aadd6f6e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 here comes... ebes.vgz" />
+ <dataarea name="quik" size="1334">
+ <rom name="02 here comes... ebes.vgz" size="1334" crc="d3a454b4" sha1="4a1eedb729afe2f275a50c92b55de424a67d8782" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 mutilation over.vgz" />
+ <dataarea name="quik" size="2105">
+ <rom name="03 mutilation over.vgz" size="2105" crc="7398adca" sha1="781be68d2ccb3940a66bf005206670dec802d0e6" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 night of the ranch.vgz" />
+ <dataarea name="quik" size="11562">
+ <rom name="04 night of the ranch.vgz" size="11562" crc="b3436293" sha1="e47b2b6815b16914900063b4d2380c9c4262da9c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 fantastic ruin.vgz" />
+ <dataarea name="quik" size="2162">
+ <rom name="05 fantastic ruin.vgz" size="2162" crc="66a992fc" sha1="df869379cb61df4179a35cbc9bd8044795a44c43" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 ebes step.vgz" />
+ <dataarea name="quik" size="4325">
+ <rom name="06 ebes step.vgz" size="4325" crc="36dd1432" sha1="f8568cb4d21b835153524e3b5acdcc5cfef2f264" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 dancing in the back of the moon.vgz" />
+ <dataarea name="quik" size="2892">
+ <rom name="07 dancing in the back of the moon.vgz" size="2892" crc="620113b8" sha1="487951ac2e111b20f2a32e6458bba76253575c2f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 further.vgz" />
+ <dataarea name="quik" size="4806">
+ <rom name="08 further.vgz" size="4806" crc="7d14887e" sha1="705e54de0e54b12fe4277a4a1e2b728a8a4086a2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 the last day.vgz" />
+ <dataarea name="quik" size="20824">
+ <rom name="09 the last day.vgz" size="20824" crc="a39306bd" sha1="8b2d16cacd57acd6ecb2714c1e8c556403d24803" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 explode.vgz" />
+ <dataarea name="quik" size="741">
+ <rom name="10 explode.vgz" size="741" crc="e045b69a" sha1="a260a9bf7ca8420efd0ebda70d685d4783bed865" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 take me home, ebes.vgz" />
+ <dataarea name="quik" size="10376">
+ <rom name="11 take me home, ebes.vgz" size="10376" crc="1253ca42" sha1="4e1f76411966453a37f53e54f20cb97bb6640261" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cninja">
+ <description>Caveman Ninja (Arcade)</description>
+ <year>1991</year>
+ <publisher>Data East</publisher>
+ <info name="cores" value="YM2151, YM2203, OKIM6295"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 credit.vgz" />
+ <dataarea name="quik" size="2356">
+ <rom name="01 credit.vgz" size="2356" crc="80ee0a20" sha1="294fef203f56675fd95c5f230e4b27b22efeee25" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 start demo.vgz" />
+ <dataarea name="quik" size="14702">
+ <rom name="02 start demo.vgz" size="14702" crc="ee4374df" sha1="609c054101141da140b8ed3fdf458b64301271db" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 bgm 1 (stage 1, 3).vgz" />
+ <dataarea name="quik" size="194642">
+ <rom name="03 bgm 1 (stage 1, 3).vgz" size="194642" crc="39667811" sha1="63b15058c7894a21d22ee79c11e80e1eacd9f2fa" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 bgm 2 (stage 2, 5).vgz" />
+ <dataarea name="quik" size="55362">
+ <rom name="04 bgm 2 (stage 2, 5).vgz" size="55362" crc="a6e4ec25" sha1="9a2aaeec405061f5da26db05b9b3bebebee9781a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 bgm 3 (stage 4).vgz" />
+ <dataarea name="quik" size="46329">
+ <rom name="05 bgm 3 (stage 4).vgz" size="46329" crc="da150c38" sha1="d347aba0778467c6b2700c61778178fc7d0ed792" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 stage clear &amp; course select.vgz" />
+ <dataarea name="quik" size="34368">
+ <rom name="06 stage clear &amp; course select.vgz" size="34368" crc="34a5e3c1" sha1="8c0c16ec4d364bc18c2cef2984b22cc5d8bde977" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 boss bgm.vgz" />
+ <dataarea name="quik" size="61648">
+ <rom name="07 boss bgm.vgz" size="61648" crc="567f6c4f" sha1="65f0772ca241bcf2cee408ee6b9f8b490a8d707b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 stage clear theme.vgz" />
+ <dataarea name="quik" size="14987">
+ <rom name="08 stage clear theme.vgz" size="14987" crc="b1ee505d" sha1="195f2eeb549c096a839c4257ed730060e5493afb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 rescue.vgz" />
+ <dataarea name="quik" size="60872">
+ <rom name="09 rescue.vgz" size="60872" crc="19560ba1" sha1="1fccb4000a53144629958ccce8bae025709c261d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 continue.vgz" />
+ <dataarea name="quik" size="792">
+ <rom name="10 continue.vgz" size="792" crc="2cd3701d" sha1="71f5646e86dab5c689d7f0528edb04befd8d9776" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 ending a (bad).vgz" />
+ <dataarea name="quik" size="136896">
+ <rom name="11 ending a (bad).vgz" size="136896" crc="388f3544" sha1="2c80c2d96da9ac591643e4b61aaba58834b04f37" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 ending b (bad).vgz" />
+ <dataarea name="quik" size="132618">
+ <rom name="12 ending b (bad).vgz" size="132618" crc="1f517381" sha1="0b2c4b6c1a68704cfbdadf3ed687d07a6af70416" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 ending c (good).vgz" />
+ <dataarea name="quik" size="136583">
+ <rom name="13 ending c (good).vgz" size="136583" crc="6d7b142c" sha1="a6ac3dba5920d0e619811bd35b40812e14259082" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 unused.vgz" />
+ <dataarea name="quik" size="74531">
+ <rom name="14 unused.vgz" size="74531" crc="7144d481" sha1="aa0ac5e2155cc66ca0ab7f0a361fa933023d9d41" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="hugo2_gb">
+ <description>Hugo 2 (Nintendo Game Boy)</description>
+ <year>1997</year>
+ <publisher>Laguna (GB) / Infogrames (GBC)</publisher>
+ <info name="cores" value="Game Boy DMG (LR35902)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 titelbildschirm, flugzeug-level.vgz" />
+ <dataarea name="quik" size="12838">
+ <rom name="01 titelbildschirm, flugzeug-level.vgz" size="12838" crc="1a94035d" sha1="ceb9e600b49f78d564306aa46a185e849e8cb7d9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 snowboard-level.vgz" />
+ <dataarea name="quik" size="24251">
+ <rom name="02 snowboard-level.vgz" size="24251" crc="d01ff3aa" sha1="477746dbd94cca3d370f50425c53514cb5b88f26" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 schwimmer-level.vgz" />
+ <dataarea name="quik" size="19163">
+ <rom name="03 schwimmer-level.vgz" size="19163" crc="0402dba5" sha1="eaccc7f45977242c3e3e0b18d09480a43a950488" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 eishoehle-level.vgz" />
+ <dataarea name="quik" size="23583">
+ <rom name="04 eishoehle-level.vgz" size="23583" crc="4cf9d1ca" sha1="4b17025aa7aebed52c5858ba1f861a7f1d84d8df" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 eishoehle geschafft.vgz" />
+ <dataarea name="quik" size="2678">
+ <rom name="05 eishoehle geschafft.vgz" size="2678" crc="a6a37e1b" sha1="47c8188b5d55b22985b5c67dacbe185023046be0" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 wald-level.vgz" />
+ <dataarea name="quik" size="40287">
+ <rom name="06 wald-level.vgz" size="40287" crc="c63773ee" sha1="93499ced71f12b281a0a4f20eeb612780e7bba45" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 endthema.vgz" />
+ <dataarea name="quik" size="10570">
+ <rom name="07 endthema.vgz" size="10570" crc="0b30173f" sha1="cbe218c4b53c2699fe0b5e0eafd5e11498826e5b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 game over.vgz" />
+ <dataarea name="quik" size="2203">
+ <rom name="08 game over.vgz" size="2203" crc="670dce01" sha1="2d7f9c76a27ee1085998933ff7eaa566c1ef4630" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="indycrst_nes">
+ <description>Indiana Jones and the Last Crusade (NES)</description>
+ <year>1991</year>
+ <publisher>Taito</publisher>
+ <info name="cores" value="NES APU (N2A03)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="4830">
+ <rom name="01 title screen.vgz" size="4830" crc="0c66401e" sha1="8bace2e4f5aeec7b8cada43eefc06e6562404e56" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 intro (last crusade theme).vgz" />
+ <dataarea name="quik" size="5573">
+ <rom name="02 intro (last crusade theme).vgz" size="5573" crc="d4f59c6f" sha1="1e5238fa7738d1ceea4afb71b27bb89313e97f02" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 destination selected.vgz" />
+ <dataarea name="quik" size="1569">
+ <rom name="03 destination selected.vgz" size="1569" crc="6b8a766a" sha1="8c3b2e62772c42cb540cdf2a5620614bc18e3449" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 cutscene 1 (coronado).vgz" />
+ <dataarea name="quik" size="7579">
+ <rom name="04 cutscene 1 (coronado).vgz" size="7579" crc="3367fbcb" sha1="11541c1da0468ed8ce2f7f0daf88f14754337cbd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 ship battle (stage 1).vgz" />
+ <dataarea name="quik" size="7441">
+ <rom name="05 ship battle (stage 1).vgz" size="7441" crc="76d9890f" sha1="41b5e6e31648a486e12dbab862d4167572d7264f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 cutscene 2 (venice).vgz" />
+ <dataarea name="quik" size="3333">
+ <rom name="06 cutscene 2 (venice).vgz" size="3333" crc="8973cf54" sha1="ebaaa09b8fc677090993388883db78b1ab67bfc2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 grail puzzle (stage 2).vgz" />
+ <dataarea name="quik" size="5264">
+ <rom name="07 grail puzzle (stage 2).vgz" size="5264" crc="86a8878c" sha1="650d795dbc097ee32b77518865f8c1cdeb59c156" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 cutscene 3 (brunwald castle).vgz" />
+ <dataarea name="quik" size="4803">
+ <rom name="08 cutscene 3 (brunwald castle).vgz" size="4803" crc="63b662fe" sha1="5fb8751782aa54f7c31a587f308b7369dc7c8489" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 rescuing dad (stage 3).vgz" />
+ <dataarea name="quik" size="5982">
+ <rom name="09 rescuing dad (stage 3).vgz" size="5982" crc="02e798be" sha1="73a74df652a2976db72ad7d3864b6e4879b4716c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 cutscene 4 (berlin).vgz" />
+ <dataarea name="quik" size="4796">
+ <rom name="10 cutscene 4 (berlin).vgz" size="4796" crc="451bb6d5" sha1="ddc476ed9e4194d2441ffcea313e062a89ea3067" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 motorcycle escape (stage 4).vgz" />
+ <dataarea name="quik" size="6150">
+ <rom name="11 motorcycle escape (stage 4).vgz" size="6150" crc="e3753ba7" sha1="afab19cc32535936a411d0d307dcc1cbb3a3260d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 cutscene 5 (tank).vgz" />
+ <dataarea name="quik" size="1880">
+ <rom name="12 cutscene 5 (tank).vgz" size="1880" crc="061abc8b" sha1="b6b49308fd9ce832ac78c10165778851f5787e17" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 rescuing marcus (stage 5).vgz" />
+ <dataarea name="quik" size="6548">
+ <rom name="13 rescuing marcus (stage 5).vgz" size="6548" crc="866232da" sha1="e9bf6a8427031fdf4c2d000805fa598112b5ba46" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 mission success.vgz" />
+ <dataarea name="quik" size="3869">
+ <rom name="14 mission success.vgz" size="3869" crc="2dd9e5bc" sha1="bbf26ee641bcc34f18d5fd9cc9f772dd7a8b5dcd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 mission failed.vgz" />
+ <dataarea name="quik" size="3203">
+ <rom name="15 mission failed.vgz" size="3203" crc="43a2d26f" sha1="1b4ad8e429198c915b3c47955e4308ffad607d95" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 cutscene 6 (the lost temple).vgz" />
+ <dataarea name="quik" size="6353">
+ <rom name="16 cutscene 6 (the lost temple).vgz" size="6353" crc="aa27d347" sha1="cb7e570749c55971bfcf63a21b2ff0e399389daa" offset="0" />
+ </dataarea>
+ </part>
+ <part name="017" interface="vgm_quik">
+ <feature name="part_id" value="17 puzzle maze (stage 6).vgz" />
+ <dataarea name="quik" size="5258">
+ <rom name="17 puzzle maze (stage 6).vgz" size="5258" crc="a4114095" sha1="41b5ede523a58e98937e590f216fe5583db893db" offset="0" />
+ </dataarea>
+ </part>
+ <part name="018" interface="vgm_quik">
+ <feature name="part_id" value="18 choose wisely (keeper of the grail).vgz" />
+ <dataarea name="quik" size="3960">
+ <rom name="18 choose wisely (keeper of the grail).vgz" size="3960" crc="7a067e69" sha1="269feee5855bca390ac24d805f07bf4d27df08b6" offset="0" />
+ </dataarea>
+ </part>
+ <part name="019" interface="vgm_quik">
+ <feature name="part_id" value="19 unworthy of the holy grail.vgz" />
+ <dataarea name="quik" size="3584">
+ <rom name="19 unworthy of the holy grail.vgz" size="3584" crc="df16ea4b" sha1="51bdd86ed9f7a0351183e85402d69b155d60f5fd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="020" interface="vgm_quik">
+ <feature name="part_id" value="20 ending (raiders march).vgz" />
+ <dataarea name="quik" size="6518">
+ <rom name="20 ending (raiders march).vgz" size="6518" crc="a9373c5f" sha1="90669030b2da5c7cacfdcaf5ad68c3eaabedb958" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="injuunod_98o">
+ <description>Injuu no Datenshi - Requiem for Fallen Angels (NEC PC-9801, OPN)</description>
+ <year>1996</year>
+ <publisher>Discovery</publisher>
+ <info name="cores" value="YM2203"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 discovery logo.vgz" />
+ <dataarea name="quik" size="2834">
+ <rom name="01 discovery logo.vgz" size="2834" crc="0eb6f915" sha1="8ed0b966357557aa858cbaa55a5bc3babd43dec9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 requiem for fallen angels.vgz" />
+ <dataarea name="quik" size="77659">
+ <rom name="02 requiem for fallen angels.vgz" size="77659" crc="18c2a5d6" sha1="e08cdd03bcd3e6e89f9a4e18a20fcddfb6afb279" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 main street.vgz" />
+ <dataarea name="quik" size="72280">
+ <rom name="03 main street.vgz" size="72280" crc="5b17c677" sha1="e0cfe1a6a29f349c8edcb6b1cdd1f42ddfc86fa7" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 if you are.vgz" />
+ <dataarea name="quik" size="86579">
+ <rom name="04 if you are.vgz" size="86579" crc="cee40312" sha1="b9ecca6129b5f1870aca642a187ebcd9fa933ff1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 missing wing.vgz" />
+ <dataarea name="quik" size="71868">
+ <rom name="05 missing wing.vgz" size="71868" crc="76221a61" sha1="7e771c55043fad9ef633ec741ace21653bc6dec1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 peace of mind.vgz" />
+ <dataarea name="quik" size="21905">
+ <rom name="06 peace of mind.vgz" size="21905" crc="a9144c3f" sha1="4ed6f9cdaef6d9b327096c629c3e8fc8c344f41e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 cat tail-walk.vgz" />
+ <dataarea name="quik" size="114855">
+ <rom name="07 cat tail-walk.vgz" size="114855" crc="30bdcada" sha1="6dcf5acb42ece7d8595500fd8037e28d924a668d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 feeling of darkness.vgz" />
+ <dataarea name="quik" size="76565">
+ <rom name="08 feeling of darkness.vgz" size="76565" crc="e3202ea7" sha1="96939f327048ff1d182ee65d794fede00970d481" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 club eden.vgz" />
+ <dataarea name="quik" size="25830">
+ <rom name="09 club eden.vgz" size="25830" crc="639477f8" sha1="0c2abb1d7a416edb118ed0e69d2009644491e2ab" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 libla.vgz" />
+ <dataarea name="quik" size="35217">
+ <rom name="10 libla.vgz" size="35217" crc="685c6560" sha1="1ed851e65c58300846ea7ec72fd89b4d0763b348" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 dis communication.vgz" />
+ <dataarea name="quik" size="5776">
+ <rom name="11 dis communication.vgz" size="5776" crc="6b12e665" sha1="95e498aca4912f0cfce14304122659991af7a5a1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 only my fallen angel.vgz" />
+ <dataarea name="quik" size="50449">
+ <rom name="12 only my fallen angel.vgz" size="50449" crc="c676d0ba" sha1="b6341d2258ec8122f54f1e183f4a8f14385d5990" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 welcome heaven.vgz" />
+ <dataarea name="quik" size="35834">
+ <rom name="13 welcome heaven.vgz" size="35834" crc="f7e38b94" sha1="13ad8910513ab58969a3b1bf6d778f2328bfd5da" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 seventh kiss.vgz" />
+ <dataarea name="quik" size="31977">
+ <rom name="14 seventh kiss.vgz" size="31977" crc="ab478142" sha1="82d29e7fe5ceaffb4d8a67af825fc3875353b27a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 dark romance.vgz" />
+ <dataarea name="quik" size="73184">
+ <rom name="15 dark romance.vgz" size="73184" crc="5f9ef38f" sha1="446e7c8baf8be9c2c05c8b0b6b032c39782938f1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 broke'n giar.vgz" />
+ <dataarea name="quik" size="142843">
+ <rom name="16 broke'n giar.vgz" size="142843" crc="0de04385" sha1="9620fa1307b335606dbbe9c4a0cdb3998a55e608" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="injuunod_98oa">
+ <description>Injuu no Datenshi - Requiem for Fallen Angels (NEC PC-9801, OPNA)</description>
+ <year>1996</year>
+ <publisher>Discovery</publisher>
+ <info name="cores" value="YM2608"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 discovery logo.vgz" />
+ <dataarea name="quik" size="5192">
+ <rom name="01 discovery logo.vgz" size="5192" crc="ee5e40c8" sha1="2ab7ef8879ca61bc579dcddd43fbcb3d0234522b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 requiem for fallen angels.vgz" />
+ <dataarea name="quik" size="99207">
+ <rom name="02 requiem for fallen angels.vgz" size="99207" crc="9a109576" sha1="6277cf1b24ac0c7ebc4c4c0d363d334ee4fa7391" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 main street.vgz" />
+ <dataarea name="quik" size="90435">
+ <rom name="03 main street.vgz" size="90435" crc="2e3ab489" sha1="7c4894972e3f87eef3674e9b773f260c73755d44" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 if you are.vgz" />
+ <dataarea name="quik" size="123059">
+ <rom name="04 if you are.vgz" size="123059" crc="593aa06d" sha1="02afcf983e59f618fef31a37c0ded8c53d1663ca" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 missing wing.vgz" />
+ <dataarea name="quik" size="92861">
+ <rom name="05 missing wing.vgz" size="92861" crc="ac5d6a42" sha1="9b83f82d7388c0b55c2f9978c9dc8a80f91f066a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 peace of mind.vgz" />
+ <dataarea name="quik" size="40469">
+ <rom name="06 peace of mind.vgz" size="40469" crc="03edf06b" sha1="a3f0e27c3fd100d7831c4bfd5c136378bb238c6f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 cat tail-walk.vgz" />
+ <dataarea name="quik" size="162474">
+ <rom name="07 cat tail-walk.vgz" size="162474" crc="356cd74b" sha1="70aa7ba4728c73a0d99d89125730e89a6c41c40a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 feeling of darkness.vgz" />
+ <dataarea name="quik" size="92053">
+ <rom name="08 feeling of darkness.vgz" size="92053" crc="19c9c5ca" sha1="0fc8c3af23e3f577e86b210db0bda7975c848d13" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 club eden.vgz" />
+ <dataarea name="quik" size="47681">
+ <rom name="09 club eden.vgz" size="47681" crc="c1d8fc57" sha1="f5607a4d258ae627fc0e8d1ca00829c90e996b58" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 libla.vgz" />
+ <dataarea name="quik" size="56421">
+ <rom name="10 libla.vgz" size="56421" crc="61631ddc" sha1="108d4725a70cdeb75e3b0d3c20a23b98c7b16009" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 dis communication.vgz" />
+ <dataarea name="quik" size="6060">
+ <rom name="11 dis communication.vgz" size="6060" crc="4d28038f" sha1="d0b29d345aab42af76a6d3a438529cf7aa4d6215" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 only my fallen angel.vgz" />
+ <dataarea name="quik" size="53302">
+ <rom name="12 only my fallen angel.vgz" size="53302" crc="0f964170" sha1="9bf08365495425443de7d7b45a6431ff0f315df2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 welcome heaven.vgz" />
+ <dataarea name="quik" size="53085">
+ <rom name="13 welcome heaven.vgz" size="53085" crc="1f8d4c52" sha1="1d1bd9b517a74eb2410947a7ab7620e996796f10" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 seventh kiss.vgz" />
+ <dataarea name="quik" size="49519">
+ <rom name="14 seventh kiss.vgz" size="49519" crc="0b9bea15" sha1="c127905db47d33ea6b7fd53278b37a058b0d759b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 dark romance.vgz" />
+ <dataarea name="quik" size="92974">
+ <rom name="15 dark romance.vgz" size="92974" crc="f4668a5e" sha1="0e14e93329618c9ab6f11ebb68d1eaab62bb4b63" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 broke'n giar.vgz" />
+ <dataarea name="quik" size="189670">
+ <rom name="16 broke'n giar.vgz" size="189670" crc="ecda3d14" sha1="16adf5539dc07977e6c5947ff2cbbbd82c072bea" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="kamen555_pico">
+ <description>Kamen Rider 555 (Sega Pico)</description>
+ <year>2003</year>
+ <publisher>Bandai</publisher>
+ <info name="cores" value="SEGA VDP PSG"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="5921">
+ <rom name="01 title screen.vgz" size="5921" crc="5ebe811f" sha1="a334fdddd934b8465309e08d7591906533019d04" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 main menu.vgz" />
+ <dataarea name="quik" size="3814">
+ <rom name="02 main menu.vgz" size="3814" crc="488ebbbf" sha1="61f0cdcfabe5432e73dd63645199725f7721fd4a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 sugoroku bgm.vgz" />
+ <dataarea name="quik" size="3379">
+ <rom name="03 sugoroku bgm.vgz" size="3379" crc="5a979d64" sha1="8a504a18d0538e1feade9aae1707818d27367b76" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 select screen.vgz" />
+ <dataarea name="quik" size="2621">
+ <rom name="04 select screen.vgz" size="2621" crc="a741279f" sha1="1181d11b58c0e935d300270d83edb7ef3e53d2fb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 battle game bgm.vgz" />
+ <dataarea name="quik" size="5683">
+ <rom name="05 battle game bgm.vgz" size="5683" crc="f95ba245" sha1="adca98935880e59da3e012f6d0592681b4eeffc8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 game victory.vgz" />
+ <dataarea name="quik" size="592">
+ <rom name="06 game victory.vgz" size="592" crc="5ccc304f" sha1="c61953f6dd0a18ed30cabfd0ceca7e1f3db7c221" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 win jingle.vgz" />
+ <dataarea name="quik" size="764">
+ <rom name="07 win jingle.vgz" size="764" crc="5b14b75f" sha1="8722a98e4ae9df6c52a191762e1e5209eadffad1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 game bgm 1.vgz" />
+ <dataarea name="quik" size="4779">
+ <rom name="08 game bgm 1.vgz" size="4779" crc="ba62f1fb" sha1="ada260462817e98a5edfd29b120f04ed74c04f30" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 game defeat.vgz" />
+ <dataarea name="quik" size="595">
+ <rom name="09 game defeat.vgz" size="595" crc="45aaa47e" sha1="27f208faf09dc478dd76b90b637d1ed180e8af83" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 lose jingle.vgz" />
+ <dataarea name="quik" size="819">
+ <rom name="10 lose jingle.vgz" size="819" crc="81cb12ed" sha1="4363c067065aa4cb89372e31cbc8cfdbfdb2507a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 game bgm 2.vgz" />
+ <dataarea name="quik" size="2637">
+ <rom name="11 game bgm 2.vgz" size="2637" crc="8d2e3556" sha1="ef03a218d4f3b3041bbb0fd0fb93061bf57c46cd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 let's write!.vgz" />
+ <dataarea name="quik" size="1333">
+ <rom name="12 let's write.vgz" size="1333" crc="deca43c8" sha1="e7e9bd269f95d6926ce29deb0724bd365c66074b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 unused jingle 1.vgz" />
+ <dataarea name="quik" size="888">
+ <rom name="13 unused jingle 1.vgz" size="888" crc="e14befc0" sha1="c257980a66eb907ad3f4ac85c4addce039a8f306" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 unused jingle 2.vgz" />
+ <dataarea name="quik" size="896">
+ <rom name="14 unused jingle 2.vgz" size="896" crc="40f3453b" sha1="6e34585a1848c43684378ae79acdfc142ed030f1" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="kamenrid_pico">
+ <description>Kamen Rider Agito &amp; Kuuga Wild Battle (Sega Pico)</description>
+ <year>2001</year>
+ <publisher>Bandai</publisher>
+ <info name="cores" value="SEGA VDP PSG"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="9371">
+ <rom name="01 title screen.vgz" size="9371" crc="9315ce43" sha1="6ae0ec47e90b8e8ce39cb4afcc864f09cb37a83f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 agito page.vgz" />
+ <dataarea name="quik" size="7429">
+ <rom name="02 agito page.vgz" size="7429" crc="a90f3ebe" sha1="6379da35deedb6d68ff12d3a89d1b72f249e22a9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 character select.vgz" />
+ <dataarea name="quik" size="7238">
+ <rom name="03 character select.vgz" size="7238" crc="bb4cf193" sha1="0fbcf5aeee6e82272aa59911f0d96577953c4fae" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 battle bgm.vgz" />
+ <dataarea name="quik" size="6537">
+ <rom name="04 battle bgm.vgz" size="6537" crc="b9a141d7" sha1="f01ed12e6ff4cb3287aaadb1fad4902b91fbcfd3" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 battle victory.vgz" />
+ <dataarea name="quik" size="794">
+ <rom name="05 battle victory.vgz" size="794" crc="019feb7e" sha1="a9334003482c58c620581058a769d29b21a7de38" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 battle defeat.vgz" />
+ <dataarea name="quik" size="814">
+ <rom name="06 battle defeat.vgz" size="814" crc="7659edf6" sha1="ca24b0c62455af7bc4864cf6fe483738dc778414" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 agito game.vgz" />
+ <dataarea name="quik" size="4192">
+ <rom name="07 agito game.vgz" size="4192" crc="fe837124" sha1="863cdef8cb89a4781cfc3d2d2ed16e6a76856047" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 game victory.vgz" />
+ <dataarea name="quik" size="590">
+ <rom name="08 game victory.vgz" size="590" crc="497b776b" sha1="60f52b222929c643a49c5858312e1a226b2ff21a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 game defeat.vgz" />
+ <dataarea name="quik" size="582">
+ <rom name="09 game defeat.vgz" size="582" crc="e5ea1320" sha1="fc4bd39818d760240f97dde0411b3310d32a42e9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 kuuga page (kamen rider kuuga!).vgz" />
+ <dataarea name="quik" size="7052">
+ <rom name="10 kuuga page (kamen rider kuuga).vgz" size="7052" crc="65f3228f" sha1="eb0556b54170c484a517dc11fed4805ca111120f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 kuuga game.vgz" />
+ <dataarea name="quik" size="4836">
+ <rom name="11 kuuga game.vgz" size="4836" crc="9f5caea7" sha1="9f65a1369139fc887ac994c8c35a09a13813ac95" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="mutantf">
+ <description>Mutant Fighter (Arcade)</description>
+ <year>1991</year>
+ <publisher>Data East</publisher>
+ <info name="cores" value="YM2151, OKIM6295"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 credit.vgz" />
+ <dataarea name="quik" size="3255">
+ <rom name="01 credit.vgz" size="3255" crc="0c599ee9" sha1="95d8ea4d1709a1be7ed8a7e554611bf94898e3e5" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 great selection (select).vgz" />
+ <dataarea name="quik" size="26973">
+ <rom name="02 great selection (select).vgz" size="26973" crc="c71042a4" sha1="897cafe36bf83b5f8d1884c26fed9bec5ab8044e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 start.vgz" />
+ <dataarea name="quik" size="14058">
+ <rom name="03 start.vgz" size="14058" crc="195d4bcc" sha1="8d65f7359087757d20ff8a4f17fe2964efa89a5f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 flash song (stage 1~3).vgz" />
+ <dataarea name="quik" size="92340">
+ <rom name="04 flash song (stage 1~3).vgz" size="92340" crc="d00dff12" sha1="1b2ba752440ed01a39c662e74fac0fd44b5382b8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 dance in the ring (stage 4~6).vgz" />
+ <dataarea name="quik" size="131885">
+ <rom name="05 dance in the ring (stage 4~6).vgz" size="131885" crc="9efcc1d3" sha1="54801154bcd3a3fb35a87f47e1f7619f18525beb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 clear.vgz" />
+ <dataarea name="quik" size="79487">
+ <rom name="06 clear.vgz" size="79487" crc="a34eba58" sha1="17a67f673b1c568f97ba6fd41dad7f305f75fe17" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 fight with self (stage 7).vgz" />
+ <dataarea name="quik" size="98225">
+ <rom name="07 fight with self (stage 7).vgz" size="98225" crc="8667f924" sha1="b51285bcc9d17e3f9af5ed8f5fa8425b0d1fa6ec" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 transcendence desperate struggle (stage 8).vgz" />
+ <dataarea name="quik" size="54217">
+ <rom name="08 transcendence desperate struggle (stage 8).vgz" size="54217" crc="3a368cfa" sha1="549700aeba59abd5dafb92819901f812114e20c3" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 agonizing shout (stage 9).vgz" />
+ <dataarea name="quik" size="129986">
+ <rom name="09 agonizing shout (stage 9).vgz" size="129986" crc="3c9bc716" sha1="e1e61afa5127da67a2829dc1f31eeaab14333d20" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 loser (game over).vgz" />
+ <dataarea name="quik" size="45752">
+ <rom name="10 loser (game over).vgz" size="45752" crc="545f6077" sha1="67bc1442eb545f25c5393063e9e71e4269c6a3ee" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 tearful impression (ending).vgz" />
+ <dataarea name="quik" size="20331">
+ <rom name="11 tearful impression (ending).vgz" size="20331" crc="80f3717c" sha1="ce418f564e41c37898649dc4d797d932203ba8bb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 monumental fight (name entry).vgz" />
+ <dataarea name="quik" size="25194">
+ <rom name="12 monumental fight (name entry).vgz" size="25194" crc="7b7191c5" sha1="0fc9b6981f49bac9093c954e4356e5262d33ff6a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 fight with self (stage 7) [no intro].vgz" />
+ <dataarea name="quik" size="53040">
+ <rom name="13 fight with self (stage 7) [no intro].vgz" size="53040" crc="ecab85e1" sha1="cac9a5aa3a7b4b4fb0c87b7c5ecd9fd52473ee0c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 unused.vgz" />
+ <dataarea name="quik" size="49604">
+ <rom name="14 unused.vgz" size="49604" crc="25c1522c" sha1="0c2e0b1bb8ce271de6c3f994d3be943561956b4f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="navyseal_gb">
+ <description>Navy SEALs (Nintendo Game Boy)</description>
+ <year>1991</year>
+ <publisher>Ocean</publisher>
+ <info name="cores" value="Game Boy DMG (LR35902)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="43307">
+ <rom name="01 title screen.vgz" size="43307" crc="ddacd017" sha1="d0aaf13f7f65edeabb8b38f0ae966bb51f640a18" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 the story so far.vgz" />
+ <dataarea name="quik" size="2155">
+ <rom name="02 the story so far.vgz" size="2155" crc="f5368485" sha1="fee7446700df9e9abd29cc8b4924bab49f6399ac" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 mission bgm.vgz" />
+ <dataarea name="quik" size="28520">
+ <rom name="03 mission bgm.vgz" size="28520" crc="7fb79879" sha1="85b0364137bba7c94864a23d55e131bb182d9fb8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 mission complete.vgz" />
+ <dataarea name="quik" size="2942">
+ <rom name="04 mission complete.vgz" size="2942" crc="86926720" sha1="a8c455c25e770f3b9d2031f5534713d09fd60d13" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 ending &amp; staff roll.vgz" />
+ <dataarea name="quik" size="11836">
+ <rom name="05 ending &amp; staff roll.vgz" size="11836" crc="72174abb" sha1="69f9428ed57553fb7f562174ae0007ec2f6a4e2c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 game over.vgz" />
+ <dataarea name="quik" size="2952">
+ <rom name="06 game over.vgz" size="2952" crc="3b375b43" sha1="de52e46a6b495424e51f6611780496d5e69c0b24" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="pokepinb_gbc">
+ <description>Pokémon Pinball (Nintendo Game Boy Color)</description>
+ <year>1999</year>
+ <publisher>Nintendo</publisher>
+ <info name="cores" value="No_Data"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="4885">
+ <rom name="01 title screen.vgz" size="4885" crc="2d3d0a9b" sha1="4f3a99150080c6c9825ef517e05d3b6bdba65c9b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 pokedex.vgz" />
+ <dataarea name="quik" size="3631">
+ <rom name="02 pokedex.vgz" size="3631" crc="61669a6d" sha1="cdde8b1780dc2f58add327d12a8b3a604b237111" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 options.vgz" />
+ <dataarea name="quik" size="1244">
+ <rom name="03 options.vgz" size="1244" crc="75f228c1" sha1="90c309909f361baf68ca82ba3ba901bc703a52b5" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 field select.vgz" />
+ <dataarea name="quik" size="2380">
+ <rom name="04 field select.vgz" size="2380" crc="d185fcee" sha1="13c016bfdcacd5fa255a74b65586cf4e3e4ffc4f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 red field theme.vgz" />
+ <dataarea name="quik" size="9093">
+ <rom name="05 red field theme.vgz" size="9093" crc="babf2f94" sha1="e70cceae2748554850c62cf13c80a55c20bf4cab" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 catch'em &amp; evolution mode ~ red field.vgz" />
+ <dataarea name="quik" size="8373">
+ <rom name="06 catch'em &amp; evolution mode ~ red field.vgz" size="8373" crc="bdc7134e" sha1="286c4b6e2537a5f230f8599c05f7df1a42838b76" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 map mode.vgz" />
+ <dataarea name="quik" size="4966">
+ <rom name="07 map mode.vgz" size="4966" crc="f04d43d3" sha1="f546c547a5f6f00e89a16521e60ee075f63fea28" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 blue field theme.vgz" />
+ <dataarea name="quik" size="7753">
+ <rom name="08 blue field theme.vgz" size="7753" crc="b532a64e" sha1="c899b14f429070d27cdcb3af653558ace6e20409" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 catch'em &amp; evolution mode ~ blue field (mezase pokemon master).vgz" />
+ <dataarea name="quik" size="11716">
+ <rom name="09 catch'em &amp; evolution mode ~ blue field (mezase pokemon master).vgz" size="11716" crc="87598e1d" sha1="15b76c9c6e4040d77b5b2240001986f61e8ce324" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 gengar stage ~ gengar in the graveyard.vgz" />
+ <dataarea name="quik" size="6894">
+ <rom name="10 gengar stage ~ gengar in the graveyard.vgz" size="6894" crc="eede660e" sha1="a5c0098471ad5a2d8e777d8281059ca7a77796bb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 gengar stage ~ ghastly in the graveyard.vgz" />
+ <dataarea name="quik" size="2907">
+ <rom name="11 gengar stage ~ ghastly in the graveyard.vgz" size="2907" crc="bdccd997" sha1="f7fa55c9c5967c1775b6d9d875556b48f8b7f7a2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 gengar stage ~ haunter in the graveyard.vgz" />
+ <dataarea name="quik" size="2896">
+ <rom name="12 gengar stage ~ haunter in the graveyard.vgz" size="2896" crc="6376343a" sha1="2c84d65a3a34455245d5bb6f5ce49f634ca80e84" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 diglett stage ~ whack the digletts.vgz" />
+ <dataarea name="quik" size="4783">
+ <rom name="13 diglett stage ~ whack the digletts.vgz" size="4783" crc="28ceee9f" sha1="21d2292b0d44e915868890344d360fcad9901cdc" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 diglett stage ~ whack dugtrio.vgz" />
+ <dataarea name="quik" size="7032">
+ <rom name="14 diglett stage ~ whack dugtrio.vgz" size="7032" crc="7cfb08ca" sha1="e473cba4a98503f37d7036fd36bd546f6052f986" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 seel stage.vgz" />
+ <dataarea name="quik" size="8393">
+ <rom name="15 seel stage.vgz" size="8393" crc="6f777c54" sha1="ee601850439a707afeed4f5980f12147f6549e37" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 mewtwo stage.vgz" />
+ <dataarea name="quik" size="7186">
+ <rom name="16 mewtwo stage.vgz" size="7186" crc="a66a6d3a" sha1="5062fe871952851da9776c8df1a61383edc651d6" offset="0" />
+ </dataarea>
+ </part>
+ <part name="017" interface="vgm_quik">
+ <feature name="part_id" value="17 meowth stage.vgz" />
+ <dataarea name="quik" size="5190">
+ <rom name="17 meowth stage.vgz" size="5190" crc="81a6421e" sha1="07361c34628e63f6af4e3a373b90ce42296506e2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="018" interface="vgm_quik">
+ <feature name="part_id" value="18 end credits.vgz" />
+ <dataarea name="quik" size="10057">
+ <rom name="18 end credits.vgz" size="10057" crc="d9f57267" sha1="152410e3857cf0a3ac7ce8eba95f68f4a37bcb34" offset="0" />
+ </dataarea>
+ </part>
+ <part name="019" interface="vgm_quik">
+ <feature name="part_id" value="19 game over.vgz" />
+ <dataarea name="quik" size="1436">
+ <rom name="19 game over.vgz" size="1436" crc="46b39e55" sha1="10b0d45a60f09bc560e34e264e4e0af9afbc86e7" offset="0" />
+ </dataarea>
+ </part>
+ <part name="020" interface="vgm_quik">
+ <feature name="part_id" value="20 name entry.vgz" />
+ <dataarea name="quik" size="9375">
+ <rom name="20 name entry.vgz" size="9375" crc="95567b59" sha1="e2b71b9a25767c60c034a15832d090e12d2832cb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="021" interface="vgm_quik">
+ <feature name="part_id" value="21 hi-score screen.vgz" />
+ <dataarea name="quik" size="5992">
+ <rom name="21 hi-score screen.vgz" size="5992" crc="50ea5b92" sha1="9f6d9872de81a49c0e49a448c7af2cb6688abe5e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="edrandy">
+ <description>The Cliffhanger - Edward Randy (Arcade)</description>
+ <year>1990</year>
+ <publisher>Data East</publisher>
+ <info name="cores" value="YM2151, YM2203, OKIM6295"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 credit.vgz" />
+ <dataarea name="quik" size="576">
+ <rom name="01 credit.vgz" size="576" crc="fbd250fe" sha1="0d0aaeff86cfdb4dc35ec88c0345bfa58f50a271" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 sudden climax! (stage 1).vgz" />
+ <dataarea name="quik" size="83305">
+ <rom name="02 sudden climax (stage 1).vgz" size="83305" crc="5ad4ba4d" sha1="dcad3ef238aaa6439f0251706ce51a2370a8445b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 madness (boss 1).vgz" />
+ <dataarea name="quik" size="91504">
+ <rom name="03 madness (boss 1).vgz" size="91504" crc="2a85506d" sha1="4a5fea7b2185bab50c039ac0a952e846bc07b092" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 escape (clear).vgz" />
+ <dataarea name="quik" size="66015">
+ <rom name="04 escape (clear).vgz" size="66015" crc="e95f5d83" sha1="d7f64ed8f8501dc388938371de347367de1750ca" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 running continuously through 100 adventures! (edward randy's theme, stage 2).vgz" />
+ <dataarea name="quik" size="186076">
+ <rom name="05 running continuously through 100 adventures (edward randy's theme, stage 2).vgz" size="186076" crc="2f548627" sha1="b85422a71ef3a5dc1e28018d24c5445ff6e5358d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 chain of time.vgz" />
+ <dataarea name="quik" size="53184">
+ <rom name="06 chain of time.vgz" size="53184" crc="6dc85d4d" sha1="24dbd7129f0363fa49003944b4eea1f70ec73a23" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 my trump card!! (stage 3, 5).vgz" />
+ <dataarea name="quik" size="107730">
+ <rom name="07 my trump card (stage 3, 5).vgz" size="107730" crc="1b327687" sha1="689e61c3ad421c421372513e8ac2afb140f47043" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 steel (boss 2).vgz" />
+ <dataarea name="quik" size="51378">
+ <rom name="08 steel (boss 2).vgz" size="51378" crc="3c750ab9" sha1="cecc2e41f87773d303e8dc45938bb083ecc660b9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 to part with the sun.vgz" />
+ <dataarea name="quik" size="77195">
+ <rom name="09 to part with the sun.vgz" size="77195" crc="42caabf3" sha1="aa77c397304a376ec58ddb6aa1ed82e3027eb8e1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 exciting 100 mile run (stage 4).vgz" />
+ <dataarea name="quik" size="114995">
+ <rom name="10 exciting 100 mile run (stage 4).vgz" size="114995" crc="9350de0a" sha1="c555be6019cdf8621d0c0bd06e80af069993788f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 it is possible to break it by hitting! (stage 6).vgz" />
+ <dataarea name="quik" size="109986">
+ <rom name="11 it is possible to break it by hitting (stage 6).vgz" size="109986" crc="3de17685" sha1="39c6486bcd65dad71fe75cc1f044760594366c95" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 absolute climax! (stage 7).vgz" />
+ <dataarea name="quik" size="82668">
+ <rom name="12 absolute climax (stage 7).vgz" size="82668" crc="6adfcaad" sha1="15c4781af174ad3cf14cb3513193dbf47959c762" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 great team (ending).vgz" />
+ <dataarea name="quik" size="136564">
+ <rom name="13 great team (ending).vgz" size="136564" crc="606921cb" sha1="b772fdcd2e685d67069522757b720492c4648b83" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 whip of love (game over).vgz" />
+ <dataarea name="quik" size="46550">
+ <rom name="14 whip of love (game over).vgz" size="46550" crc="30cbc2a1" sha1="8d2f5100ad0e6394fde1c9c6a9761885703d5428" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="tomjerma_gbc">
+ <description>Tom and Jerry in Mouse Attacks! (Nintendo Game Boy Color)</description>
+ <year>2000</year>
+ <publisher>NewKidCo (U) / Ubisoft (E)</publisher>
+ <info name="cores" value="Game Boy DMG (LR35902)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 title screen.vgz" />
+ <dataarea name="quik" size="9463">
+ <rom name="01 title screen.vgz" size="9463" crc="18017135" sha1="d3d3b749991b679f36e8419b716910bda070b465" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 stage intro.vgz" />
+ <dataarea name="quik" size="2592">
+ <rom name="02 stage intro.vgz" size="2592" crc="9c23eb0d" sha1="7e2239828ba4eb958ace227022c3692216ebca97" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 stage 1 - the lounge.vgz" />
+ <dataarea name="quik" size="13204">
+ <rom name="03 stage 1 - the lounge.vgz" size="13204" crc="7a7b1530" sha1="6b5d60c27e66910593ab3c9248bac65e6a7fd251" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 stage 2 - the kitchen.vgz" />
+ <dataarea name="quik" size="16784">
+ <rom name="04 stage 2 - the kitchen.vgz" size="16784" crc="ff93bfde" sha1="305d76d0147d240a014b42669ebb03c16b19bbce" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 stage 3 - the garden.vgz" />
+ <dataarea name="quik" size="23509">
+ <rom name="05 stage 3 - the garden.vgz" size="23509" crc="e39a42e6" sha1="36e413ed8fb34e625a855e2df6a499dd63b0a004" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 stage 4 - the toy room.vgz" />
+ <dataarea name="quik" size="40667">
+ <rom name="06 stage 4 - the toy room.vgz" size="40667" crc="f3ed2c3f" sha1="28ebf9a1337ff1893cb593eff8a8f08523aed313" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 final stage - the attic.vgz" />
+ <dataarea name="quik" size="40098">
+ <rom name="07 final stage - the attic.vgz" size="40098" crc="f37cad7a" sha1="365b84ded88b937d7563771ebe234d3912f1cc78" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 prize game intro.vgz" />
+ <dataarea name="quik" size="2219">
+ <rom name="08 prize game intro.vgz" size="2219" crc="f356a779" sha1="8140ed9aba73ea7eb7219a0b079d7ddc664c6116" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 prize game theme.vgz" />
+ <dataarea name="quik" size="7406">
+ <rom name="09 prize game theme.vgz" size="7406" crc="96583359" sha1="1033ac1d37d343d95c33d5c064f64a9090f18955" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 picture puzzle ~ boss theme 2.vgz" />
+ <dataarea name="quik" size="5608">
+ <rom name="10 picture puzzle ~ boss theme 2.vgz" size="5608" crc="2863ce27" sha1="9828e20a024d3d020f9a20efd7b80ca86c247b30" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 pie throwing.vgz" />
+ <dataarea name="quik" size="54274">
+ <rom name="11 pie throwing.vgz" size="54274" crc="1159829b" sha1="9a2b79c5590878751518496115ab06fab69df993" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 tom's cups.vgz" />
+ <dataarea name="quik" size="10516">
+ <rom name="12 tom's cups.vgz" size="10516" crc="79a3fcb7" sha1="0d126d11a5c948a93783c6676dd4d793dba86d69" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 you win!.vgz" />
+ <dataarea name="quik" size="2404">
+ <rom name="13 you win.vgz" size="2404" crc="125fb865" sha1="114d013983b95639acfca08610ea6510c4f66848" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 boss theme.vgz" />
+ <dataarea name="quik" size="4175">
+ <rom name="14 boss theme.vgz" size="4175" crc="ccf3bdda" sha1="02a3c9fa82358e8e968aee1617990cb77d9ba4ff" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 stage clear!.vgz" />
+ <dataarea name="quik" size="3004">
+ <rom name="15 stage clear.vgz" size="3004" crc="478c8388" sha1="bcd92e80261cdf0e422ac915ba1d8dc1859ab887" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 unknown track 1.vgz" />
+ <dataarea name="quik" size="5994">
+ <rom name="16 unknown track 1.vgz" size="5994" crc="f696d1e6" sha1="9954ada761f24f6dab81b881616311b743641e66" offset="0" />
+ </dataarea>
+ </part>
+ <part name="017" interface="vgm_quik">
+ <feature name="part_id" value="17 unknown track 2.vgz" />
+ <dataarea name="quik" size="10507">
+ <rom name="17 unknown track 2.vgz" size="10507" crc="1f497343" sha1="d7450e003a292434fd38a1e756da6269b9cb6654" offset="0" />
+ </dataarea>
+ </part>
+ <part name="018" interface="vgm_quik">
+ <feature name="part_id" value="18 unknown track 3.vgz" />
+ <dataarea name="quik" size="6920">
+ <rom name="18 unknown track 3.vgz" size="6920" crc="66cc8be9" sha1="22197898c423bf66d170cbca626586f79ca573dc" offset="0" />
+ </dataarea>
+ </part>
+ <part name="019" interface="vgm_quik">
+ <feature name="part_id" value="19 unknown track 4.vgz" />
+ <dataarea name="quik" size="6539">
+ <rom name="19 unknown track 4.vgz" size="6539" crc="0b1d1d25" sha1="0f10518308e60f2d9ca6e76d85273be42035b8e3" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="topgun_nes">
+ <description>Top Gun (NES)</description>
+ <year>1987</year>
+ <publisher>Konami</publisher>
+ <info name="cores" value="NES APU (N2A03)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 top gun anthem.vgz" />
+ <dataarea name="quik" size="5820">
+ <rom name="01 top gun anthem.vgz" size="5820" crc="4542077a" sha1="0c3caab0f869cc2e8ecb9eb08d9e784880ea254c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 mission briefing.vgz" />
+ <dataarea name="quik" size="3950">
+ <rom name="02 mission briefing.vgz" size="3950" crc="87463f74" sha1="718aa9a4593f420ca094883f8660cc0d0717aa9c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 mission start.vgz" />
+ <dataarea name="quik" size="962">
+ <rom name="03 mission start.vgz" size="962" crc="f5257cf4" sha1="86927d46270619084c1d77e1c5b2343b72835995" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 refueling.vgz" />
+ <dataarea name="quik" size="5087">
+ <rom name="04 refueling.vgz" size="5087" crc="5815e229" sha1="9da7f488f796447bf48bb30e6ea11edcad9b065c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 mission start (alternate).vgz" />
+ <dataarea name="quik" size="836">
+ <rom name="05 mission start (alternate).vgz" size="836" crc="d2556a9d" sha1="e5688d53af1554626f3e56c24aa021fd80f3ee5e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 refueling (alternate).vgz" />
+ <dataarea name="quik" size="3473">
+ <rom name="06 refueling (alternate).vgz" size="3473" crc="fc03cd6a" sha1="264191db15fa1474b5e33911e55718598dab189c" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 game over.vgz" />
+ <dataarea name="quik" size="3353">
+ <rom name="07 game over.vgz" size="3353" crc="cda983a2" sha1="090f284d78e55b8bb1b7edf94cf25299ae8b24b0" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="topgun2_nes">
+ <description>Top Gun - The Second Mission (NES)</description>
+ <year>1989</year>
+ <publisher>Konami</publisher>
+ <info name="cores" value="NES APU (N2A03)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 introduction.vgz" />
+ <dataarea name="quik" size="7717">
+ <rom name="01 introduction.vgz" size="7717" crc="c68f6152" sha1="d625e1948931e1e8a38c6f29a1e99aad06520ce9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 press start.vgz" />
+ <dataarea name="quik" size="1607">
+ <rom name="02 press start.vgz" size="1607" crc="fe114b4e" sha1="98dadcb6822ac5051f51e2eab42c119488f54aa8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 missile arm (mission briefing).vgz" />
+ <dataarea name="quik" size="5410">
+ <rom name="03 missile arm (mission briefing).vgz" size="5410" crc="b492dc32" sha1="d16d3914160863a0f3dabe8ee45c72605825cffc" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 get ready.vgz" />
+ <dataarea name="quik" size="1331">
+ <rom name="04 get ready.vgz" size="1331" crc="249b6e6f" sha1="62f7a26863a108eae731f90a3f2ee1ae83a3fe0e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 mission 1 - destroy enemy bomber.vgz" />
+ <dataarea name="quik" size="12695">
+ <rom name="05 mission 1 - destroy enemy bomber.vgz" size="12695" crc="63579c72" sha1="8429f9551c732b47e06941f930845948d5300a18" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 mission 2 - top secret helicopter.vgz" />
+ <dataarea name="quik" size="13406">
+ <rom name="06 mission 2 - top secret helicopter.vgz" size="13406" crc="c1d8e84c" sha1="83e12b2d95bde22d5fe81cdc5a9b603811efbf7d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 mission 3 - enemy space shuttle.vgz" />
+ <dataarea name="quik" size="7720">
+ <rom name="07 mission 3 - enemy space shuttle.vgz" size="7720" crc="c7a306fe" sha1="4c0be45ae0d2f96accac93c9f911a799f29bd1b8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 blast it out of the sky.vgz" />
+ <dataarea name="quik" size="3935">
+ <rom name="08 blast it out of the sky.vgz" size="3935" crc="f1a987ce" sha1="2f9b14efa2d79e2f47f828671df4875bb2fcfae8" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 ending ~ staff roll.vgz" />
+ <dataarea name="quik" size="12894">
+ <rom name="09 ending ~ staff roll.vgz" size="12894" crc="0adf322d" sha1="8a10734785e7a8da09c083c3d1da992bcd21d38f" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 game over.vgz" />
+ <dataarea name="quik" size="4111">
+ <rom name="10 game over.vgz" size="4111" crc="5ec261fe" sha1="d6b87601e2d0cc77f62c613cec8465d29a71a489" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 versus mode win.vgz" />
+ <dataarea name="quik" size="3103">
+ <rom name="11 versus mode win.vgz" size="3103" crc="a91ca278" sha1="376f2112d5c89cae48d9264e8434642082c3ab1e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 versus mode win (dpcm).vgz" />
+ <dataarea name="quik" size="2294">
+ <rom name="12 versus mode win (dpcm).vgz" size="2294" crc="b8e446c8" sha1="0a19db5bd9c8b413be52fb5c904e603dae108244" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="witch">
+ <description>Witch (Arcade)</description>
+ <year>1992</year>
+ <publisher>Excellent System Ltd. (W)</publisher>
+ <info name="cores" value="2xYM2203"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 credit.vgz" />
+ <dataarea name="quik" size="517">
+ <rom name="01 credit.vgz" size="517" crc="156a131e" sha1="dc250b71fe009d561e42819002bd6bb163d3567b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 attract.vgz" />
+ <dataarea name="quik" size="3914">
+ <rom name="02 attract.vgz" size="3914" crc="01456fe0" sha1="d5c6417593585e396863ac6ef006e23c6d034c4a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 betting table.vgz" />
+ <dataarea name="quik" size="4268">
+ <rom name="03 betting table.vgz" size="4268" crc="a2f192d7" sha1="d46f29115e254a390d3552c4194d822d0863b8cc" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 table bgm 1.vgz" />
+ <dataarea name="quik" size="6865">
+ <rom name="04 table bgm 1.vgz" size="6865" crc="28d32e47" sha1="b18340a804ac061f86eb155abc26f73afbbddacf" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 table bgm 2.vgz" />
+ <dataarea name="quik" size="5016">
+ <rom name="05 table bgm 2.vgz" size="5016" crc="c61f665a" sha1="4c51065b1ee809939999415b51a0e87b329bcecb" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 10 seconds left.vgz" />
+ <dataarea name="quik" size="3257">
+ <rom name="06 10 seconds left.vgz" size="3257" crc="96939a8f" sha1="50c7eeb1d231fa411b30e034cc3722c15448b265" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 get bingo.vgz" />
+ <dataarea name="quik" size="3064">
+ <rom name="07 get bingo.vgz" size="3064" crc="abb3c983" sha1="f2045687c97eab4d954788ac9c6217f1eb57cb40" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 big or small.vgz" />
+ <dataarea name="quik" size="3206">
+ <rom name="08 big or small.vgz" size="3206" crc="7ebf416f" sha1="11dc5e5a889bfd05aec05a30ca04348742993afd" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 game over.vgz" />
+ <dataarea name="quik" size="3114">
+ <rom name="09 game over.vgz" size="3114" crc="10c68d9b" sha1="274df463b29a8f3d31edfa3a031090269b8b9f27" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="yobro_tg16">
+ <description>Yo, Bro (TG-16)</description>
+ <year>1991</year>
+ <publisher>NEC</publisher>
+ <info name="cores" value="HuC6280"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 i get around.vgz" />
+ <dataarea name="quik" size="26983">
+ <rom name="01 i get around.vgz" size="26983" crc="6f89b340" sha1="ed6893c8c45816ac2e05af289093799fcc3e95c1" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 california girls.vgz" />
+ <dataarea name="quik" size="15912">
+ <rom name="02 california girls.vgz" size="15912" crc="b9e6ef49" sha1="f98cfb14c99fa47729b941bfcd30bd4e7b0dc0e2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 fun fun fun.vgz" />
+ <dataarea name="quik" size="32383">
+ <rom name="03 fun fun fun.vgz" size="32383" crc="40334f09" sha1="e680cd3ca1acc7efe35a1038fee7fd0649df1fb9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 help me rhonda.vgz" />
+ <dataarea name="quik" size="19257">
+ <rom name="04 help me rhonda.vgz" size="19257" crc="5b11d745" sha1="ecf903277c0b4e6b96b19ec92b2df1a13525a8ae" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 little deuce coupe.vgz" />
+ <dataarea name="quik" size="20270">
+ <rom name="05 little deuce coupe.vgz" size="20270" crc="25b5d7a2" sha1="a0d2172d4d0251fa4b97c9a8f4b535be20673495" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 california girls (non-looping).vgz" />
+ <dataarea name="quik" size="15496">
+ <rom name="06 california girls (non-looping).vgz" size="15496" crc="21e1d4bd" sha1="5257eb4dcdf1ba5d04613bd9cc74c6a7ed82b1df" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 help me rhonda (non-looping).vgz" />
+ <dataarea name="quik" size="19296">
+ <rom name="07 help me rhonda (non-looping).vgz" size="19296" crc="a3253cf6" sha1="99545f0e98f32b2a8b522f7c6c39bec5e0f05115" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 little deuce coupe (non-looping).vgz" />
+ <dataarea name="quik" size="27632">
+ <rom name="08 little deuce coupe (non-looping).vgz" size="27632" crc="e3a42e87" sha1="76824f2947a11850a7241d9ff3105c7e9573e764" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 i get around (non-looping).vgz" />
+ <dataarea name="quik" size="15926">
+ <rom name="09 i get around (non-looping).vgz" size="15926" crc="566f68a0" sha1="6fb51530f047ea6793d3329227037732ce58508b" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 fun fun fun (non-looping).vgz" />
+ <dataarea name="quik" size="16426">
+ <rom name="10 fun fun fun (non-looping).vgz" size="16426" crc="abb19c12" sha1="38c0b448a12f4c0f03bdb6a6c58aa20c2c2a305d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 little deuce coupe (reprise).vgz" />
+ <dataarea name="quik" size="12309">
+ <rom name="11 little deuce coupe (reprise).vgz" size="12309" crc="2f5c8e0f" sha1="095c6c6ff6845b960f5b24d836fa38769dd446b5" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 fun fun fun (reprise).vgz" />
+ <dataarea name="quik" size="10256">
+ <rom name="12 fun fun fun (reprise).vgz" size="10256" crc="5d02a1d0" sha1="d71d37b76bff25f81ee28483b2b47425561fafd3" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 boss.vgz" />
+ <dataarea name="quik" size="18125">
+ <rom name="13 boss.vgz" size="18125" crc="7cc7be59" sha1="a13f528ada59905dc9c530cdfa5ac776825e5591" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 boss 2.vgz" />
+ <dataarea name="quik" size="35032">
+ <rom name="14 boss 2.vgz" size="35032" crc="403af1ba" sha1="734d9649a779a91209ac5569352c965d9b2171ba" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 most victorious.vgz" />
+ <dataarea name="quik" size="1491">
+ <rom name="15 most victorious.vgz" size="1491" crc="84fdeda9" sha1="3233ca9ee4c18ff7c2b9d11c498246270093eccc" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 unused.vgz" />
+ <dataarea name="quik" size="10864">
+ <rom name="16 unused.vgz" size="10864" crc="fc487cbc" sha1="64313cd548ab8ce27cc431ac7e1716fed71a4714" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="zen_nes">
+ <description>Zen - Intergalactic Ninja (NES)</description>
+ <year>1993</year>
+ <publisher>Konami</publisher>
+ <info name="cores" value="NES APU (N2A03)"/>
+ <part name="001" interface="vgm_quik">
+ <feature name="part_id" value="01 opening - part 1.vgz" />
+ <dataarea name="quik" size="8092">
+ <rom name="01 opening - part 1.vgz" size="8092" crc="f4b213df" sha1="533f91dc2f5945f3ffc5290ca40f4948a731ba6d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="002" interface="vgm_quik">
+ <feature name="part_id" value="02 opening - part 2.vgz" />
+ <dataarea name="quik" size="3832">
+ <rom name="02 opening - part 2.vgz" size="3832" crc="3fa2b20d" sha1="fbd649d7383d9e80e09eeb68fc921a73c5914623" offset="0" />
+ </dataarea>
+ </part>
+ <part name="003" interface="vgm_quik">
+ <feature name="part_id" value="03 stage select.vgz" />
+ <dataarea name="quik" size="2390">
+ <rom name="03 stage select.vgz" size="2390" crc="d3615c06" sha1="ecae1364fd0c981b4be2f49e52d8c737132e7541" offset="0" />
+ </dataarea>
+ </part>
+ <part name="004" interface="vgm_quik">
+ <feature name="part_id" value="04 biggs toxic factory ~ scrap heap heaven.vgz" />
+ <dataarea name="quik" size="9833">
+ <rom name="04 biggs toxic factory ~ scrap heap heaven.vgz" size="9833" crc="2d43aee8" sha1="84fc6f31b1f4d48b0976931c8d08ee38500f0e52" offset="0" />
+ </dataarea>
+ </part>
+ <part name="005" interface="vgm_quik">
+ <feature name="part_id" value="05 boss battle.vgz" />
+ <dataarea name="quik" size="9084">
+ <rom name="05 boss battle.vgz" size="9084" crc="be939860" sha1="7a69a5037d9aded88971f105ccf40df0d4187900" offset="0" />
+ </dataarea>
+ </part>
+ <part name="006" interface="vgm_quik">
+ <feature name="part_id" value="06 stage clear.vgz" />
+ <dataarea name="quik" size="2363">
+ <rom name="06 stage clear.vgz" size="2363" crc="4ece164e" sha1="cb166b6850224bd5f6a0e91d257c42bc4b5cd395" offset="0" />
+ </dataarea>
+ </part>
+ <part name="007" interface="vgm_quik">
+ <feature name="part_id" value="07 bonus stage.vgz" />
+ <dataarea name="quik" size="3651">
+ <rom name="07 bonus stage.vgz" size="3651" crc="3a2d4d12" sha1="1ac84cc908e5400c09b857cfe96fab362d31987a" offset="0" />
+ </dataarea>
+ </part>
+ <part name="008" interface="vgm_quik">
+ <feature name="part_id" value="08 slixxon oil rig ~ the imposter's hideout.vgz" />
+ <dataarea name="quik" size="8197">
+ <rom name="08 slixxon oil rig ~ the imposter's hideout.vgz" size="8197" crc="2def7a81" sha1="ae8a2dd456a89d262605bbd1d8308f06b7e09b20" offset="0" />
+ </dataarea>
+ </part>
+ <part name="009" interface="vgm_quik">
+ <feature name="part_id" value="09 rescue mission ~ the cesspool.vgz" />
+ <dataarea name="quik" size="7508">
+ <rom name="09 rescue mission ~ the cesspool.vgz" size="7508" crc="add40080" sha1="99b924d915f70000f2dd00b44099bbc55e53a14d" offset="0" />
+ </dataarea>
+ </part>
+ <part name="010" interface="vgm_quik">
+ <feature name="part_id" value="10 runaway rail car.vgz" />
+ <dataarea name="quik" size="9107">
+ <rom name="10 runaway rail car.vgz" size="9107" crc="7b642b4d" sha1="0259ed3545344b582b852b57fa6938208544d618" offset="0" />
+ </dataarea>
+ </part>
+ <part name="011" interface="vgm_quik">
+ <feature name="part_id" value="11 acid rain forest.vgz" />
+ <dataarea name="quik" size="10032">
+ <rom name="11 acid rain forest.vgz" size="10032" crc="ef4c44ff" sha1="86812a1fb9f5153b8e029efa5c4724c119bc3558" offset="0" />
+ </dataarea>
+ </part>
+ <part name="012" interface="vgm_quik">
+ <feature name="part_id" value="12 acid rain forest (hurry up!).vgz" />
+ <dataarea name="quik" size="1797">
+ <rom name="12 acid rain forest (hurry up).vgz" size="1797" crc="f47d06fb" sha1="e8ed374d3471ca15286fc0553f0580754d739d1e" offset="0" />
+ </dataarea>
+ </part>
+ <part name="013" interface="vgm_quik">
+ <feature name="part_id" value="13 the cavern of crud.vgz" />
+ <dataarea name="quik" size="4672">
+ <rom name="13 the cavern of crud.vgz" size="4672" crc="ac0634ea" sha1="bddd61e956019bcd1ed396b5e938bd20bb8e60c2" offset="0" />
+ </dataarea>
+ </part>
+ <part name="014" interface="vgm_quik">
+ <feature name="part_id" value="14 lord contaminous.vgz" />
+ <dataarea name="quik" size="10409">
+ <rom name="14 lord contaminous.vgz" size="10409" crc="21db050d" sha1="249abb29f998c620b56db88cc18ca7bee15bfb11" offset="0" />
+ </dataarea>
+ </part>
+ <part name="015" interface="vgm_quik">
+ <feature name="part_id" value="15 ending.vgz" />
+ <dataarea name="quik" size="2339">
+ <rom name="15 ending.vgz" size="2339" crc="2e8b027f" sha1="4f1655400d629e7f9064d754a184dfce42ee07e9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="016" interface="vgm_quik">
+ <feature name="part_id" value="16 staff roll.vgz" />
+ <dataarea name="quik" size="8343">
+ <rom name="16 staff roll.vgz" size="8343" crc="226ffcec" sha1="2aa72d316d971eac0b49418ab117f998947906b9" offset="0" />
+ </dataarea>
+ </part>
+ <part name="017" interface="vgm_quik">
+ <feature name="part_id" value="17 game over.vgz" />
+ <dataarea name="quik" size="3060">
+ <rom name="17 game over.vgz" size="3060" crc="2577ad6a" sha1="8d3c8bd3c9f5be3e4226c17650af7ad3fd749700" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
<!-- Project 2612 VGM Archives located at http://project2612.org/list.php
Also https://archive.org/details/Project2612CompleteArchive20180623681Sets.7z
diff --git a/hash/x37_flop.xml b/hash/x37_flop.xml
new file mode 100644
index 00000000000..2bc2c592fe8
--- /dev/null
+++ b/hash/x37_flop.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0"?>
+<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+<!--
+license:CC0
+-->
+<softwarelist name="x37_flop" description="Luxor X37 diskettes">
+
+ <software name="abcenix">
+ <description>ABCenix</description>
+ <year>1985</year>
+ <publisher>Luxor</publisher>
+
+ <part name="flop1" interface="floppy_5_25">
+ <feature name="part_id" value="mount1"/>
+ <dataarea name="flop" size="655360">
+ <rom name="mountx37.img" size="655360" crc="351d1a0b" sha1="1ee3f7d4897be1ffe1977bf231e26187ce54a219"/>
+ </dataarea>
+ </part>
+
+ <part name="flop2" interface="floppy_5_25">
+ <feature name="part_id" value="mount2"/>
+ <dataarea name="flop" size="655360">
+ <rom name="mountx37_disc3.img" size="655360" crc="f13d6da9" sha1="b3cb3fba55c96cd4e08c8758884d02ec73a76e15"/>
+ </dataarea>
+ </part>
+
+ <part name="flop3" interface="floppy_5_25">
+ <feature name="part_id" value="grund1"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_1(7).img" size="655360" crc="bc23eba9" sha1="ff79ba411526571c1478fab91cf3e9e8b310d683"/>
+ </dataarea>
+ </part>
+
+ <part name="flop4" interface="floppy_5_25">
+ <feature name="part_id" value="grund2"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_2(7).img" size="655360" crc="d790e468" sha1="afe44322410d413ee7d632a12ec23211ebb84a9e"/>
+ </dataarea>
+ </part>
+
+ <part name="flop5" interface="floppy_5_25">
+ <feature name="part_id" value="grund3"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_3(7).img" size="655360" crc="fc624bec" sha1="7bb81bdd6c95c7037bb4874b73a400efbc27bcf5"/>
+ </dataarea>
+ </part>
+
+ <part name="flop6" interface="floppy_5_25">
+ <feature name="part_id" value="grund4"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_4(7).img" size="655360" crc="acb9307b" sha1="419f0ebcff5707d8ab934be24a711cb2b90d5032"/>
+ </dataarea>
+ </part>
+
+ <part name="flop7" interface="floppy_5_25">
+ <feature name="part_id" value="grund5"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_5(7).img" size="655360" crc="f247ee5c" sha1="6300c0b706a02b75bfdeee61124e3af607c29a54"/>
+ </dataarea>
+ </part>
+
+ <part name="flop8" interface="floppy_5_25">
+ <feature name="part_id" value="grund6"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_6(7).img" size="655360" crc="23dab3a5" sha1="6a371bcf000ade3f92f7b53410bb359fe54043a7"/>
+ </dataarea>
+ </part>
+
+ <part name="flop9" interface="floppy_5_25">
+ <feature name="part_id" value="grund7"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_GRUND_7(7).img" size="655360" crc="29cb7b76" sha1="b9c406a60cb4dbfabc59aa0f3e66885a7461d0ca"/>
+ </dataarea>
+ </part>
+
+ <part name="flop10" interface="floppy_5_25">
+ <feature name="part_id" value="utv1"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_1(9).img" size="655360" crc="8689fbf6" sha1="6478a43a875354fe9e31f715a37bdc6a9b5e37da"/>
+ </dataarea>
+ </part>
+
+ <part name="flop11" interface="floppy_5_25">
+ <feature name="part_id" value="utv2"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_2(9).img" size="655360" crc="8104bafa" sha1="7ffd4d5408fa536bcf9f48264ba4fa564fddbad0"/>
+ </dataarea>
+ </part>
+
+ <part name="flop12" interface="floppy_5_25">
+ <feature name="part_id" value="utv3"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_3(9).img" size="655360" crc="295d3316" sha1="eeee396e943e984947550501fcc19604c830bac3"/>
+ </dataarea>
+ </part>
+
+ <part name="flop13" interface="floppy_5_25">
+ <feature name="part_id" value="utv4"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_4(9).img" size="655360" crc="9a99dd58" sha1="69c52a6a41efc3247b14c7d0fbcd06a6426ed487"/>
+ </dataarea>
+ </part>
+
+ <part name="flop14" interface="floppy_5_25">
+ <feature name="part_id" value="utv5"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_5(9).img" size="655360" crc="323d9905" sha1="2ef2ec61f015552ac8f2dff981dbf54643df5069"/>
+ </dataarea>
+ </part>
+
+ <part name="flop15" interface="floppy_5_25">
+ <feature name="part_id" value="utv6"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_6(9).img" size="655360" crc="719cea12" sha1="1248e099198ca0908c726bd3b7f76003d31f534b"/>
+ </dataarea>
+ </part>
+
+ <part name="flop16" interface="floppy_5_25">
+ <feature name="part_id" value="utv7"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_7(9).img" size="655360" crc="3269f469" sha1="7629b1b302a79a8bd67722e8f186c2150bc4c428"/>
+ </dataarea>
+ </part>
+
+ <part name="flop17" interface="floppy_5_25">
+ <feature name="part_id" value="utv8"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_8(9).img" size="655360" crc="fdf66774" sha1="acc3f9514908ed7f6d937537451e955c1fe7a3bf"/>
+ </dataarea>
+ </part>
+
+ <part name="flop18" interface="floppy_5_25">
+ <feature name="part_id" value="utv9"/>
+ <dataarea name="flop" size="655360">
+ <rom name="ABCenix_UTV_9(9).img" size="655360" crc="9775cff4" sha1="fc152bff42d626b7be0223ec4f8848937f4cd936"/>
+ </dataarea>
+ </part>
+
+ <part name="flop19" interface="floppy_5_25">
+ <feature name="part_id" value="upp1"/>
+ <dataarea name="flop" size="655360">
+ <rom name="x37uppdateringar1.img" size="655360" crc="baca1b2b" sha1="3e275c6d82c3e47545808f15cbcc71379c5e9486"/>
+ </dataarea>
+ </part>
+
+ <part name="flop20" interface="floppy_5_25">
+ <feature name="part_id" value="upp2"/>
+ <dataarea name="flop" size="655360">
+ <rom name="x37uppdateringar2.img" size="655360" crc="8b0afb94" sha1="370c13aabc546f4b71f47da61be7aee2651c0a77"/>
+ </dataarea>
+ </part>
+
+ <part name="flop21" interface="floppy_5_25">
+ <feature name="part_id" value="etc"/>
+ <dataarea name="flop" size="737280">
+ <rom name="etc_bin_x37_OBS_PC_FORMAT.img" size="737280" crc="0336a022" sha1="57776a18bb868961248945036ff1a39cd0e242e3"/>
+ </dataarea>
+ </part>
+
+ </software>
+
+ <software name="cremount">
+ <description>cremount</description>
+ <year>1985</year>
+ <publisher>Luxor</publisher>
+
+ <part name="flop1" interface="floppy_5_25">
+ <feature name="part_id" value="cremount"/>
+ <dataarea name="flop" size="655360">
+ <rom name="cremount.img" size="655360" crc="422dd069" sha1="ffdb0deecc9bf8bca2f233e64b93ef4e88a1e64c"/>
+ </dataarea>
+ </part>
+ </software>
+
+</softwarelist>
diff --git a/scripts/resources/windows/mame/mame.rc b/scripts/resources/windows/mame/mame.rc
index deceb068193..14caef933b9 100644
--- a/scripts/resources/windows/mame/mame.rc
+++ b/scripts/resources/windows/mame/mame.rc
@@ -6,9 +6,6 @@
//
//============================================================
-#include <windows.h>
-//#include "mamevers.rc"
-
1 24 MOVEABLE PURE "mame.man"
2 ICON DISCARDABLE "mame.ico"
diff --git a/scripts/resources/windows/mess/mess.ico b/scripts/resources/windows/mess/mess.ico
deleted file mode 100644
index bab67dd6195..00000000000
--- a/scripts/resources/windows/mess/mess.ico
+++ /dev/null
Binary files differ
diff --git a/scripts/resources/windows/mess/mess.man b/scripts/resources/windows/mess/mess.man
deleted file mode 100644
index 7feef51ce9f..00000000000
--- a/scripts/resources/windows/mess/mess.man
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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="MESS" type="win32" />
- <description>MESS</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>
- <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
- <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
- </asmv3:windowsSettings>
- </asmv3:application>
-</assembly>
diff --git a/scripts/resources/windows/mess/mess.rc b/scripts/resources/windows/mess/mess.rc
deleted file mode 100644
index 1329bcd6fb8..00000000000
--- a/scripts/resources/windows/mess/mess.rc
+++ /dev/null
@@ -1,14 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-//============================================================
-//
-// mess.rc - Minimal resource file for Win32 MAME
-//
-//============================================================
-
-#include <windows.h>
-#include "messvers.rc"
-
-1 24 MOVEABLE PURE "mess.man"
-
-2 ICON DISCARDABLE "mess.ico"
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index 9d5587b1708..d24f1a10ef3 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -4973,3 +4973,25 @@ if (MACHINES["NS32382"]~=null) then
MAME_DIR .. "src/devices/machine/ns32382.h",
}
end
+
+---------------------------------------------------
+--
+--@src/devices/machine/fm_scsi.h,MACHINES["FM_SCSI"] = true
+---------------------------------------------------
+if (MACHINES["FM_SCSI"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/fm_scsi.cpp",
+ MAME_DIR .. "src/devices/machine/fm_scsi.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/archimedes_keyb.h,MACHINES["ARCHIMEDES_KEYB"] = true
+---------------------------------------------------
+if (MACHINES["ARCHIMEDES_KEYB"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/archimedes_keyb.cpp",
+ MAME_DIR .. "src/devices/machine/archimedes_keyb.h",
+ }
+end
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 80768ec93a2..2f6e806c280 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -3349,8 +3349,6 @@ files {
MAME_DIR .. "src/mame/video/playmark.cpp",
MAME_DIR .. "src/mame/drivers/powerbal.cpp",
MAME_DIR .. "src/mame/drivers/sderby.cpp",
- MAME_DIR .. "src/mame/includes/sderby.h",
- MAME_DIR .. "src/mame/video/sderby.cpp",
MAME_DIR .. "src/mame/drivers/sslam.cpp",
MAME_DIR .. "src/mame/includes/sslam.h",
MAME_DIR .. "src/mame/video/sslam.cpp",
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 4fbb5784e3c..b7895f68a9b 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -836,6 +836,8 @@ MACHINES["NS32202"] = true
MACHINES["NS32082"] = true
MACHINES["BITMAP_PRINTER"] = true
MACHINES["NS32382"] = true
+MACHINES["FM_SCSI"] = true
+MACHINES["ARCHIMEDES_KEYB"] = true
--------------------------------------------------
-- specify available bus cores
@@ -1703,8 +1705,6 @@ files {
createMESSProjects(_target, _subtarget, "acorn")
files {
MAME_DIR .. "src/mame/drivers/aa310.cpp",
- MAME_DIR .. "src/mame/machine/archimedes_keyb.cpp",
- MAME_DIR .. "src/mame/machine/archimedes_keyb.h",
MAME_DIR .. "src/mame/drivers/accomm.cpp",
MAME_DIR .. "src/mame/drivers/acrnsys1.cpp",
MAME_DIR .. "src/mame/drivers/acrnsys.cpp",
@@ -2544,8 +2544,6 @@ files {
MAME_DIR .. "src/mame/drivers/fmtowns.cpp",
MAME_DIR .. "src/mame/includes/fmtowns.h",
MAME_DIR .. "src/mame/video/fmtowns.cpp",
- MAME_DIR .. "src/mame/machine/fm_scsi.cpp",
- MAME_DIR .. "src/mame/machine/fm_scsi.h",
MAME_DIR .. "src/mame/machine/fmt_icmem.cpp",
MAME_DIR .. "src/mame/machine/fmt_icmem.h",
MAME_DIR .. "src/mame/drivers/fm7.cpp",
@@ -2974,6 +2972,7 @@ files {
MAME_DIR .. "src/mame/machine/abc1600mac.h",
MAME_DIR .. "src/mame/video/abc1600.cpp",
MAME_DIR .. "src/mame/video/abc1600.h",
+ MAME_DIR .. "src/mame/drivers/ds90.cpp",
}
createMESSProjects(_target, _subtarget, "magnavox")
diff --git a/src/devices/bus/ti99/peb/myarcfdc.cpp b/src/devices/bus/ti99/peb/myarcfdc.cpp
index b4e535038df..7df7cf0d261 100644
--- a/src/devices/bus/ti99/peb/myarcfdc.cpp
+++ b/src/devices/bus/ti99/peb/myarcfdc.cpp
@@ -95,19 +95,23 @@ offs_t myarc_fdc_device::get_address()
void myarc_fdc_device::debug_read(offs_t offset, uint8_t* value)
{
offs_t addrcopy = m_address;
- m_address = offset;
- if (m_pal->ramsel())
- {
- *value = m_buffer_ram->pointer()[m_address & 0x07ff];
- }
- if (m_pal->romen())
+ if (!m_dec_high || amabc_is_set(offset))
{
- // EPROM selected
- offs_t base = m_banksel? 0x1000 : 0;
- *value = m_dsrrom[base | (m_address & 0x0fff)];
+ m_address = offset;
+ if (m_pal->ramsel())
+ {
+ *value = m_buffer_ram->pointer()[m_address & 0x07ff];
+ }
+
+ if (m_pal->romen())
+ {
+ // EPROM selected
+ offs_t base = m_banksel? 0x1000 : 0;
+ *value = m_dsrrom[base | (m_address & 0x0fff)];
+ }
+ m_address = addrcopy;
}
- m_address = addrcopy;
}
/*
@@ -116,12 +120,16 @@ void myarc_fdc_device::debug_read(offs_t offset, uint8_t* value)
void myarc_fdc_device::debug_write(offs_t offset, uint8_t data)
{
offs_t addrcopy = m_address;
- m_address = offset;
- if (m_pal->ramsel())
+
+ if (!m_dec_high || amabc_is_set(offset))
{
- m_buffer_ram->pointer()[m_address & 0x07ff] = data;
+ m_address = offset;
+ if (m_pal->ramsel())
+ {
+ m_buffer_ram->pointer()[m_address & 0x07ff] = data;
+ }
+ m_address = addrcopy;
}
- m_address = addrcopy;
}
/*
@@ -135,6 +143,9 @@ void myarc_fdc_device::readz(offs_t offset, uint8_t *value)
return;
}
+ // If we have an AMA/B/C decoder and it delivers false, exit here
+ if (m_dec_high && !amabc_is_set(offset)) return;
+
if (m_pal->ramsel())
{
// SRAM selected
@@ -175,6 +186,9 @@ void myarc_fdc_device::write(offs_t offset, uint8_t data)
return;
}
+ // If we have an AMA/B/C decoder and it delivers false, exit here
+ if (m_dec_high && !amabc_is_set(offset)) return;
+
if (m_pal->ramsel())
{
// SRAM selected
@@ -346,6 +360,8 @@ void myarc_fdc_device::device_reset()
m_wdc = m_wd1770;
else
m_wdc = m_wd1772;
+
+ m_dec_high = (ioport("AMADECODE")->read()!=0);
}
void myarc_fdc_device::device_config_complete()
@@ -366,7 +382,7 @@ void myarc_fdc_device::floppy_formats(format_registration &fr)
fr.add(FLOPPY_TI99_TDF_FORMAT);
}
-static void ccfdc_floppies(device_slot_interface &device)
+static void myarc_ddcc_floppies(device_slot_interface &device)
{
device.option_add("525dd", FLOPPY_525_DD); // 40 tracks
device.option_add("525qd", FLOPPY_525_QD); // 80 tracks
@@ -397,6 +413,11 @@ INPUT_PORTS_START(myarc_ddcc )
PORT_DIPNAME( 0x08, 0x00, "DSK4 head step time" )
PORT_DIPSETTING( 0x00, "6ms")
PORT_DIPSETTING( 0x08, "20ms/2ms")
+
+ PORT_START( "AMADECODE" )
+ PORT_CONFNAME( 0x01, 0x01, "Decode AMA/AMB/AMC lines" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ))
+ PORT_CONFSETTING( 0x01, DEF_STR( On ))
INPUT_PORTS_END
@@ -438,10 +459,10 @@ void myarc_fdc_device::device_add_mconfig(machine_config& config)
DDCC1_PAL(config, PAL_TAG, 0);
// Floppy drives
- FLOPPY_CONNECTOR(config, "0", ccfdc_floppies, "525dd", myarc_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "1", ccfdc_floppies, "525dd", myarc_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "2", ccfdc_floppies, nullptr, myarc_fdc_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "3", ccfdc_floppies, nullptr, myarc_fdc_device::floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, "0", myarc_ddcc_floppies, "525dd", myarc_fdc_device::floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, "1", myarc_ddcc_floppies, "525dd", myarc_fdc_device::floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, "2", myarc_ddcc_floppies, nullptr, myarc_fdc_device::floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, "3", myarc_ddcc_floppies, nullptr, myarc_fdc_device::floppy_formats).enable_sound(true);
}
ioport_constructor myarc_fdc_device::device_input_ports() const
diff --git a/src/devices/bus/ti99/peb/myarcfdc.h b/src/devices/bus/ti99/peb/myarcfdc.h
index 7eacdd79f26..89106b73e5a 100644
--- a/src/devices/bus/ti99/peb/myarcfdc.h
+++ b/src/devices/bus/ti99/peb/myarcfdc.h
@@ -103,6 +103,9 @@ private:
// Recent address
int m_address;
+
+ // AMA/B/C decoding active
+ bool m_dec_high;
};
// =========== Decoder PAL circuit ================
diff --git a/src/devices/bus/ti99/peb/peribox.cpp b/src/devices/bus/ti99/peb/peribox.cpp
index 152ede1b310..cc8b07500f0 100644
--- a/src/devices/bus/ti99/peb/peribox.cpp
+++ b/src/devices/bus/ti99/peb/peribox.cpp
@@ -796,18 +796,18 @@ void device_ti99_peribox_card_interface::interface_config_complete()
bool device_ti99_peribox_card_interface::in_dsr_space(offs_t offset, bool amadec)
{
- if (amadec)
- return (offset & 0x7e000)==0x74000;
- else
- return (offset & 0x0e000)==0x04000;
+ if (amadec && !amabc_is_set(offset)) return false;
+ return (offset & 0x0e000)==0x04000;
}
-bool device_ti99_peribox_card_interface::in_cart_space(offs_t offset, bool amadec)
+/*
+ Some cards do not decode the additional address lines AMA, AMB, AMC.
+ This leads to errors when using the card with Genmod. The typical procedure
+ to decode the lines is the same for each card.
+*/
+bool device_ti99_peribox_card_interface::amabc_is_set(offs_t offset)
{
- if (amadec)
- return (offset & 0x7e000)==0x76000;
- else
- return (offset & 0x0e000)==0x06000;
+ return (((offset >> 16)&0x07)==0x07);
}
} // end namespace bus::ti99::peb
diff --git a/src/devices/bus/ti99/peb/peribox.h b/src/devices/bus/ti99/peb/peribox.h
index 157c2099106..b54467f1055 100644
--- a/src/devices/bus/ti99/peb/peribox.h
+++ b/src/devices/bus/ti99/peb/peribox.h
@@ -202,9 +202,9 @@ protected:
int m_cru_base;
// Methods to decide whether we are acccessing the 4000-5fff region (DSR)
- // or the cartridge region
- static bool in_dsr_space(offs_t offset, bool amadec);
- static bool in_cart_space(offs_t offset, bool amadec);
+ bool in_dsr_space(offs_t offset, bool amadec);
+
+ bool amabc_is_set(offs_t offset);
};
/*****************************************************************************
diff --git a/src/devices/cpu/mips/r4000.cpp b/src/devices/cpu/mips/r4000.cpp
index 1cf885379cc..15f161b32c3 100644
--- a/src/devices/cpu/mips/r4000.cpp
+++ b/src/devices/cpu/mips/r4000.cpp
@@ -55,6 +55,8 @@
// experimental primary instruction cache
#define ICACHE 0
+#define SCACHE !(m_cp0[CP0_Config] & CONFIG_SC)
+
#include "logmacro.h"
#define USE_ABI_REG_NAMES 1
@@ -197,6 +199,9 @@ void r4000_base_device::device_start()
m_icache_data = std::make_unique<u32 []>((0x1000U << config_ic) >> 2);
R4000_ENDIAN_LE_BE(accessors(m_le), accessors(m_be));
+
+ if (SCACHE)
+ save_pointer(NAME(m_scache_tag), m_scache_tag_size);
}
void r4000_base_device::device_reset()
@@ -945,75 +950,7 @@ void r4000_base_device::cpu_execute(u32 const op)
cpu_swr(op);
break;
case 0x2f: // CACHE
- if ((SR & SR_KSU) && !(SR & SR_CU0) && !(SR & (SR_EXL | SR_ERL)))
- {
- cpu_exception(EXCEPTION_CP0);
- break;
- }
-
- switch ((op >> 16) & 0x1f)
- {
- case 0x00: // index invalidate (I)
- if (ICACHE)
- {
- m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift] &= ~ICACHE_V;
- break;
- }
- [[fallthrough]];
- case 0x04: // index load tag (I)
- if (ICACHE)
- {
- u32 const tag = m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift];
-
- m_cp0[CP0_TagLo] = ((tag & ICACHE_PTAG) << 8) | ((tag & ICACHE_V) >> 18) | ((tag & ICACHE_P) >> 25);
- m_cp0[CP0_ECC] = 0; // data ecc or parity
-
- break;
- }
- [[fallthrough]];
- case 0x08: // index store tag (I)
- if (ICACHE)
- {
- // FIXME: compute parity
- m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift] =
- (m_cp0[CP0_TagLo] & TAGLO_PTAGLO) >> 8 | (m_cp0[CP0_TagLo] & TAGLO_PSTATE) << 18;
-
- break;
- }
- [[fallthrough]];
- case 0x01: // index writeback invalidate (D)
- case 0x02: // index invalidate (SI)
- case 0x03: // index writeback invalidate (SD)
-
- case 0x05: // index load tag (D)
- case 0x06: // index load tag (SI)
- case 0x07: // index load tag (SI)
-
- case 0x09: // index store tag (D)
- case 0x0a: // index store tag (SI)
- case 0x0b: // index store tag (SD)
-
- case 0x0d: // create dirty exclusive (D)
- case 0x0f: // create dirty exclusive (SD)
-
- case 0x10: // hit invalidate (I)
- case 0x11: // hit invalidate (D)
- case 0x12: // hit invalidate (SI)
- case 0x13: // hit invalidate (SD)
-
- case 0x14: // fill (I)
- case 0x15: // hit writeback invalidate (D)
- case 0x17: // hit writeback invalidate (SD)
-
- case 0x18: // hit writeback (I)
- case 0x19: // hit writeback (D)
- case 0x1b: // hit writeback (SD)
-
- case 0x1e: // hit set virtual (SI)
- case 0x1f: // hit set virtual (SD)
- //LOGMASKED(LOG_CACHE, "cache 0x%08x unimplemented (%s)\n", op, machine().describe_context());
- break;
- }
+ cp0_cache(op);
break;
case 0x30: // LL
load_linked<u32>(ADDR(m_r[RSREG], s16(op)),
@@ -1263,6 +1200,128 @@ void r4000_base_device::cpu_sdr(u32 const op)
store<u64, false>(offset, m_r[RTREG] << shift, ~u64(0) << shift);
}
+void r4000_base_device::cp0_cache(u32 const op)
+{
+ if ((SR & SR_KSU) && !(SR & SR_CU0) && !(SR & (SR_EXL | SR_ERL)))
+ {
+ cpu_exception(EXCEPTION_CP0);
+ return;
+ }
+
+ switch ((op >> 16) & 0x1f)
+ {
+ case 0x00: // index invalidate (I)
+ if (ICACHE)
+ {
+ m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift] &= ~ICACHE_V;
+ break;
+ }
+ [[fallthrough]];
+ case 0x04: // index load tag (I)
+ if (ICACHE)
+ {
+ u32 const tag = m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift];
+
+ m_cp0[CP0_TagLo] = ((tag & ICACHE_PTAG) << 8) | ((tag & ICACHE_V) >> 18) | ((tag & ICACHE_P) >> 25);
+ m_cp0[CP0_ECC] = 0; // data ecc or parity
+
+ break;
+ }
+ [[fallthrough]];
+ case 0x08: // index store tag (I)
+ if (ICACHE)
+ {
+ // FIXME: compute parity
+ m_icache_tag[(ADDR(m_r[RSREG], s16(op)) & m_icache_mask_hi) >> m_icache_shift] =
+ (m_cp0[CP0_TagLo] & TAGLO_PTAGLO) >> 8 | (m_cp0[CP0_TagLo] & TAGLO_PSTATE) << 18;
+ break;
+ }
+ [[fallthrough]];
+ case 0x01: // index writeback invalidate (D)
+ case 0x02: // index invalidate (SI)
+ case 0x03: // index writeback invalidate (SD)
+ case 0x05: // index load tag (D)
+ //LOGMASKED(LOG_CACHE, "cache 0x%08x unimplemented (%s)\n", op, machine().describe_context());
+ break;
+ case 0x06: // index load tag (SI)
+ case 0x07: // index load tag (SD)
+ if (SCACHE)
+ {
+ // TODO: translation type for CACHE instruction? Read seems reasonable since only the tag is changing here
+ u64 physical_address = ADDR(m_r[RSREG], s16(op));
+ translate_result const t = translate(TRANSLATE_READ, physical_address);
+ if (t == ERROR || t == MISS)
+ return;
+
+ u32 const index = (physical_address & m_scache_tag_mask) >> m_scache_line_index;
+ if (index < m_scache_tag_size)
+ {
+ // TODO: Load the ECC register here
+ u32 const tag = m_scache_tag[index];
+ u32 const cs = (tag & SCACHE_CS) >> 22;
+ u32 const stag = tag & SCACHE_STAG;
+ u32 const pidx = (tag & SCACHE_PIDX) >> 19;
+ m_cp0[CP0_TagLo] = (stag << 13) | (cs << 10) | (pidx << 7);
+ }
+ else
+ fatalerror("r4000 scache load tag index out of range!");
+ }
+ else
+ LOGMASKED(LOG_CACHE, "cache 0x%08x called without scache enabled (%s)\n", op, machine().describe_context());
+ break;
+ case 0x09: // index store tag (D)
+ //LOGMASKED(LOG_CACHE, "cache 0x%08x unimplemented (%s)\n", op, machine().describe_context());
+ break;
+ case 0x0a: // index store tag (SI)
+ case 0x0b: // index store tag (SD)
+ if (SCACHE)
+ {
+ // TODO: translation type for CACHE instruction? Read seems reasonable since only the tag is changing here
+ u64 const virtual_address = ADDR(m_r[RSREG], s16(op));
+ u64 physical_address = virtual_address;
+ translate_result const t = translate(TRANSLATE_READ, physical_address);
+ if (t == ERROR || t == MISS)
+ return;
+
+ u64 const index = (physical_address & m_scache_tag_mask) >> m_scache_line_index;
+ if (index < m_scache_tag_size)
+ {
+ // TODO: Calculate ECC bits here
+ u64 const tag_lo = m_cp0[CP0_TagLo];
+ u32 const cs = (tag_lo & TAGLO_CS) >> 10;
+ u32 const stag = (tag_lo & TAGLO_STAG) >> 13;
+ u32 const pidx = (virtual_address & 0x7000) >> 12;
+ m_scache_tag[index] = cs << 22 | pidx << 19 | stag;
+ }
+ else
+ fatalerror("r4000 scache store tag index out of range!");
+ }
+ else
+ LOGMASKED(LOG_CACHE, "cache 0x%08x called without scache enabled (%s)\n", op, machine().describe_context());
+ break;
+ case 0x0d: // create dirty exclusive (D)
+ case 0x0f: // create dirty exclusive (SD)
+
+ case 0x10: // hit invalidate (I)
+ case 0x11: // hit invalidate (D)
+ case 0x12: // hit invalidate (SI)
+ case 0x13: // hit invalidate (SD)
+
+ case 0x14: // fill (I)
+ case 0x15: // hit writeback invalidate (D)
+ case 0x17: // hit writeback invalidate (SD)
+
+ case 0x18: // hit writeback (I)
+ case 0x19: // hit writeback (D)
+ case 0x1b: // hit writeback (SD)
+
+ case 0x1e: // hit set virtual (SI)
+ case 0x1f: // hit set virtual (SD)
+ //LOGMASKED(LOG_CACHE, "cache 0x%08x unimplemented (%s)\n", op, machine().describe_context());
+ break;
+ }
+}
+
void r4000_base_device::cp0_execute(u32 const op)
{
if ((SR & SR_KSU) && !(SR & SR_CU0) && !(SR & (SR_EXL | SR_ERL)))
@@ -4021,3 +4080,46 @@ std::string r4000_base_device::debug_unicode_string(u64 unicode_string_pointer)
return utf8_from_wstring(result);
}
+
+void r4000_base_device::configure_scache()
+{
+ if (m_scache_size > 0)
+ {
+ /*
+ * Secondary cache tag size depends on the cache line size
+ * (how many bytes are transferred with one cache operation) and the
+ * size of the cache itself.
+ * For example, the Sony NEWS NWS-5000X has a 1MB secondary cache
+ * and a cache line size of 16 words. So, the slice of the physical
+ * address used to index into the cache is bits 19:6.
+ * See chapter 11 of the R4000 user manual for more details.
+ */
+ if (m_scache_line_size == 0)
+ fatalerror("SCACHE size set but line size was not set!");
+
+ if (m_scache_line_size <= 0x10)
+ m_scache_line_index = 4;
+ else if (m_scache_line_size <= 0x20)
+ {
+ m_scache_line_index = 5;
+ m_cp0[CP0_Config] |= 1 << 22;
+ }
+ else if (m_scache_line_size <= 0x40)
+ {
+ m_scache_line_index = 6;
+ m_cp0[CP0_Config] |= 2 << 22;
+ }
+ else
+ {
+ m_scache_line_index = 7;
+ m_cp0[CP0_Config] |= 3 << 22;
+ }
+
+ m_scache_tag_size = m_scache_size >> m_scache_line_index;
+ m_scache_tag_mask = m_scache_size - 1;
+
+ m_scache_tag = std::make_unique<u32[]>(m_scache_tag_size);
+ }
+ else
+ m_cp0[CP0_Config] |= CONFIG_SC;
+}
diff --git a/src/devices/cpu/mips/r4000.h b/src/devices/cpu/mips/r4000.h
index f4a015e9c77..adc9ccd1f3d 100644
--- a/src/devices/cpu/mips/r4000.h
+++ b/src/devices/cpu/mips/r4000.h
@@ -291,6 +291,8 @@ protected:
TAGLO_PTAGLO = 0xffffff00, // physical adddress bits 35:12
TAGLO_PSTATE = 0x000000c0, // primary cache state
TAGLO_P = 0x00000001, // primary tag even parity
+ TAGLO_CS = 0x00001c00, // scache status
+ TAGLO_STAG = 0xffffe000, // scache tag
};
enum icache_mask : u32
{
@@ -306,6 +308,12 @@ protected:
DCACHE_W = 0x02000000, // write-back
DCACHE_WP = 0x02000000, // even parity for write-back
};
+ enum scache_mask : u32
+ {
+ SCACHE_CS = 0x01c00000, // cache state
+ SCACHE_STAG = 0x0007ffff, // physical tag
+ SCACHE_PIDX = 0x00380000, // primary cache index
+ };
// device_t overrides
virtual void device_start() override;
@@ -342,6 +350,7 @@ protected:
void cpu_sdr(u32 const op);
// cp0 implementation
+ void cp0_cache(u32 const op);
void cp0_execute(u32 const op);
u64 cp0_get(unsigned const reg);
void cp0_set(unsigned const reg, u64 const data);
@@ -383,6 +392,9 @@ protected:
std::string debug_string_array(u64 array_pointer);
std::string debug_unicode_string(u64 unicode_string_pointer);
+ // configuration helpers
+ void configure_scache();
+
// device configuration state
address_space_config m_program_config_le;
address_space_config m_program_config_be;
@@ -458,6 +470,14 @@ protected:
std::unique_ptr<u32[]> m_icache_tag;
std::unique_ptr<u32[]> m_icache_data;
+ // experimental scache state
+ u32 m_scache_size; // Size in bytes
+ u8 m_scache_line_size;
+ u32 m_scache_line_index; // Secondary cache line shift
+ u32 m_scache_tag_mask; // Mask for extracting the tag from a physical address
+ u32 m_scache_tag_size;
+ std::unique_ptr<u32[]> m_scache_tag;
+
// statistics
u64 m_tlb_scans;
u64 m_tlb_loops;
@@ -485,15 +505,16 @@ public:
class r4400_device : public r4000_base_device
{
public:
- r4400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock, bool timer_interrupt_disabled)
+ r4400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock, bool timer_interrupt_disabled, u32 scache_size, u8 scache_line_size)
: r4000_base_device(mconfig, R4400, tag, owner, clock, 0x0440, 0x0500, CACHE_16K, CACHE_16K, 10, 20, 69, 133, timer_interrupt_disabled)
{
- // no secondary cache
- m_cp0[CP0_Config] |= CONFIG_SC;
+ m_scache_size = scache_size;
+ m_scache_line_size = scache_line_size;
+ configure_scache();
}
r4400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : r4400_device(mconfig, tag, owner, clock, false)
+ : r4400_device(mconfig, tag, owner, clock, false, 0, 0)
{
}
};
diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp
index 1e2b9f966fd..d017ff8a318 100644
--- a/src/devices/cpu/patinhofeio/patinho_feio.cpp
+++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp
@@ -7,7 +7,6 @@
#include "emu.h"
#include "patinhofeio_cpu.h"
#include "patinho_feio_dasm.h"
-#include "includes/patinhofeio.h" // FIXME: this is a dependency from devices on MAME
#define PC m_pc //The program counter is called "contador de instrucoes" (IC) in portuguese
#define ACC m_acc
@@ -60,6 +59,7 @@ void patinho_feio_cpu_device::prog_8bit(address_map &map)
patinho_feio_cpu_device::patinho_feio_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: cpu_device(mconfig, PATO_FEIO_CPU, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0, address_map_constructor(FUNC(patinho_feio_cpu_device::prog_8bit), this))
+ , m_update_panel_cb(*this)
, m_icount(0)
, m_rc_read_cb(*this)
, m_buttons_read_cb(*this)
@@ -94,6 +94,7 @@ void patinho_feio_cpu_device::transfer_byte_from_external_device(uint8_t channel
void patinho_feio_cpu_device::device_start()
{
m_program = &space(AS_PROGRAM);
+ m_update_panel_cb.resolve();
//TODO: implement handling of these special purpose registers
// which are also mapped to the first few main memory positions:
@@ -158,7 +159,8 @@ void patinho_feio_cpu_device::device_reset()
m_addr = 0;
m_opcode = 0;
m_mode = ADDRESSING_MODE;
- ((patinho_feio_state*) owner())->update_panel(ACC, m_opcode, READ_BYTE_PATINHO(m_addr), m_addr, PC, FLAGS, RC, m_mode);
+ if (!m_update_panel_cb.isnull())
+ m_update_panel_cb(ACC, m_opcode, READ_BYTE_PATINHO(m_addr), m_addr, PC, FLAGS, RC, m_mode);
}
/* execute instructions on this CPU until icount expires */
@@ -167,7 +169,8 @@ void patinho_feio_cpu_device::execute_run() {
read_panel_keys_register();
m_ext = READ_ACC_EXTENSION_REG();
m_idx = READ_INDEX_REG();
- ((patinho_feio_state*) owner())->update_panel(ACC, READ_BYTE_PATINHO(PC), READ_BYTE_PATINHO(m_addr), m_addr, PC, FLAGS, RC, m_mode);
+ if (!m_update_panel_cb.isnull())
+ m_update_panel_cb(ACC, READ_BYTE_PATINHO(PC), READ_BYTE_PATINHO(m_addr), m_addr, PC, FLAGS, RC, m_mode);
debugger_instruction_hook(PC);
if (!m_run){
diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
index 3799465af92..1ba4a39fdb6 100644
--- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
+++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h
@@ -41,6 +41,8 @@ enum
class patinho_feio_cpu_device : public cpu_device {
public:
+ using update_panel_cb = device_delegate<void (uint8_t ACC, uint8_t opcode, uint8_t mem_data, uint16_t mem_addr, uint16_t PC, uint8_t FLAGS, uint16_t RC, uint8_t mode)>;
+
// construction/destruction
patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
@@ -49,6 +51,7 @@ public:
template <std::size_t DevNumber> auto iodev_read() { return m_iodev_read_cb[DevNumber].bind(); }
template <std::size_t DevNumber> auto iodev_write() { return m_iodev_write_cb[DevNumber].bind(); }
template <std::size_t DevNumber> auto iodev_status() { return m_iodev_status_cb[DevNumber].bind(); }
+ template <typename... T> void set_update_panel_cb(T &&... args) { m_update_panel_cb.set(std::forward<T>(args)...); }
void transfer_byte_from_external_device(uint8_t channel, uint8_t data);
void set_iodev_status(uint8_t channel, bool status) { m_iodev_status[channel] = status; }
@@ -60,6 +63,7 @@ protected:
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
address_space_config m_program_config;
+ update_panel_cb m_update_panel_cb;
offs_t m_addr;
unsigned char m_opcode;
diff --git a/src/devices/cpu/rw5000/b5000.cpp b/src/devices/cpu/rw5000/b5000.cpp
index 41e636780a3..685fb1b5190 100644
--- a/src/devices/cpu/rw5000/b5000.cpp
+++ b/src/devices/cpu/rw5000/b5000.cpp
@@ -58,7 +58,7 @@ std::unique_ptr<util::disasm_interface> b5000_cpu_device::create_disassembler()
// digit segment decoder
u16 b5000_cpu_device::decode_digit(u8 data)
{
- static u8 lut_segs[0x10] =
+ static const u8 lut_segs[0x10] =
{
// 0-9 ok (6 and 9 have tails)
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
diff --git a/src/devices/cpu/rw5000/b6000.cpp b/src/devices/cpu/rw5000/b6000.cpp
index f41ebfbbf48..3b18d4793b0 100644
--- a/src/devices/cpu/rw5000/b6000.cpp
+++ b/src/devices/cpu/rw5000/b6000.cpp
@@ -68,7 +68,7 @@ void b6000_cpu_device::device_reset()
// digit segment decoder
u16 b6000_cpu_device::decode_digit(u8 data)
{
- static u8 lut_segs[0x10] =
+ static const u8 lut_segs[0x10] =
{
// 0-9 same as B5000
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
diff --git a/src/devices/cpu/rw5000/b6100.cpp b/src/devices/cpu/rw5000/b6100.cpp
index 17bc17b9f25..67723657ab1 100644
--- a/src/devices/cpu/rw5000/b6100.cpp
+++ b/src/devices/cpu/rw5000/b6100.cpp
@@ -47,7 +47,7 @@ std::unique_ptr<util::disasm_interface> b6100_cpu_device::create_disassembler()
// digit segment decoder
u16 b6100_cpu_device::decode_digit(u8 data)
{
- static u16 lut_segs[0x10] =
+ static const u16 lut_segs[0x10] =
{
// 0-9 same as B6000
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
diff --git a/src/mame/machine/archimedes_keyb.cpp b/src/devices/machine/archimedes_keyb.cpp
index a6aa8278969..a6aa8278969 100644
--- a/src/mame/machine/archimedes_keyb.cpp
+++ b/src/devices/machine/archimedes_keyb.cpp
diff --git a/src/mame/machine/archimedes_keyb.h b/src/devices/machine/archimedes_keyb.h
index 7acf6ae8d59..7acf6ae8d59 100644
--- a/src/mame/machine/archimedes_keyb.h
+++ b/src/devices/machine/archimedes_keyb.h
diff --git a/src/devices/machine/dp83932c.cpp b/src/devices/machine/dp83932c.cpp
index efe877ca4d2..e6ddf1c11c3 100644
--- a/src/devices/machine/dp83932c.cpp
+++ b/src/devices/machine/dp83932c.cpp
@@ -149,7 +149,7 @@ int dp83932c_device::recv_start_cb(u8 *buf, int length)
if (m_reg[CRDA] & 1)
{
// re-read the previous descriptor link field
- m_reg[CRDA] = m_bus->read_word(EA(m_reg[URDA], m_reg[LLFA]));
+ m_reg[CRDA] = read_bus_word(EA(m_reg[URDA], m_reg[LLFA]));
if (m_reg[CRDA] & 1)
{
logerror("no receive descriptor available\n");
@@ -182,19 +182,19 @@ int dp83932c_device::recv_start_cb(u8 *buf, int length)
// write status to rda
// TODO: don't write the rda if rba limit exceeded (buffer overflow)
offs_t const rda = EA(m_reg[URDA], m_reg[CRDA]);
- m_bus->write_word(rda + 0 * width, m_reg[RCR]);
- m_bus->write_word(rda + 1 * width, length);
- m_bus->write_word(rda + 2 * width, m_reg[CRBA0]);
- m_bus->write_word(rda + 3 * width, m_reg[CRBA1]);
- m_bus->write_word(rda + 4 * width, m_reg[RSC]);
+ write_bus_word(rda + 0 * width, m_reg[RCR]);
+ write_bus_word(rda + 1 * width, length);
+ write_bus_word(rda + 2 * width, m_reg[CRBA0]);
+ write_bus_word(rda + 3 * width, m_reg[CRBA1]);
+ write_bus_word(rda + 4 * width, m_reg[RSC]);
m_reg[LLFA] = m_reg[CRDA] + 5 * width;
- m_reg[CRDA] = m_bus->read_word(rda + 5 * width);
+ m_reg[CRDA] = read_bus_word(rda + 5 * width);
// check for end of list
if (m_reg[CRDA] & 1)
m_reg[ISR] |= ISR_RDE;
else
- m_bus->write_word(rda + 6 * width, 0);
+ write_bus_word(rda + 6 * width, 0);
// handle buffer exhaustion
if (rbwc < m_reg[EOBC])
@@ -231,11 +231,8 @@ void dp83932c_device::reg_w(offs_t offset, u16 data)
m_reg[CR] &= ~CR_RST;
}
-
- return;
}
-
- if (data & CR_RST)
+ else if (data & CR_RST)
{
LOGMASKED(LOG_COMMAND, "enter software reset\n");
@@ -243,12 +240,22 @@ void dp83932c_device::reg_w(offs_t offset, u16 data)
m_reg[CR] &= ~(CR_LCAM | CR_RRRA | CR_TXP | CR_HTX);
m_reg[CR] |= (CR_RST | CR_RXDIS);
-
- return;
}
-
- m_reg[offset] |= data & regmask[offset];
- m_command->adjust(attotime::zero, data & regmask[offset]);
+ else
+ {
+ u16 cmd_to_run = data & regmask[offset];
+ if (m_reg[CR] & CR_TXP)
+ {
+ // Per section 3.5.4 in the datasheet, TDAs can be dynamically added.
+ // The TXP command will be re-sent by the host, but doesn't do anything
+ // unless the SONIC finished the last commmand right before the TDA was
+ // appended to the list. So, null the CR_TXP bit if it was already set
+ // so we don't smash the currently running transmission.
+ cmd_to_run &= ~CR_TXP;
+ }
+ m_reg[offset] |= data & regmask[offset];
+ m_command->adjust(attotime::zero, cmd_to_run);
+ }
break;
case RCR:
@@ -349,9 +356,9 @@ void dp83932c_device::transmit()
// read control information from tda and load registers
u16 const tcr = m_reg[TCR];
- m_reg[TCR] = m_bus->read_word(tda + word++ * width) & TCR_TPC;
- m_reg[TPS] = m_bus->read_word(tda + word++ * width);
- m_reg[TFC] = m_bus->read_word(tda + word++ * width);
+ m_reg[TCR] = read_bus_word(tda + word++ * width) & TCR_TPC;
+ m_reg[TPS] = read_bus_word(tda + word++ * width);
+ m_reg[TFC] = read_bus_word(tda + word++ * width);
// check for programmable interrupt
if ((m_reg[TCR] & TCR_PINT) && !(tcr & TCR_PINT))
@@ -365,9 +372,9 @@ void dp83932c_device::transmit()
for (unsigned fragment = 0; fragment < m_reg[TFC]; fragment++)
{
// read fragment address and size
- m_reg[TSA0] = m_bus->read_word(tda + word++ * width);
- m_reg[TSA1] = m_bus->read_word(tda + word++ * width);
- m_reg[TFS] = m_bus->read_word(tda + word++ * width);
+ m_reg[TSA0] = read_bus_word(tda + word++ * width);
+ m_reg[TSA1] = read_bus_word(tda + word++ * width);
+ m_reg[TFS] = read_bus_word(tda + word++ * width);
offs_t const tsa = EA(m_reg[TSA1], m_reg[TSA0]);
@@ -407,13 +414,13 @@ void dp83932c_device::send_complete_cb(int result)
}
// write descriptor status
- m_bus->write_word(EA(m_reg[UTDA], m_reg[TTDA]), m_reg[TCR] & TCR_TPS);
+ write_bus_word(EA(m_reg[UTDA], m_reg[TTDA]), m_reg[TCR] & TCR_TPS);
// check for halt
if (!(m_reg[CR] & CR_HTX))
{
// load next descriptor address
- m_reg[CTDA] = m_bus->read_word(EA(m_reg[UTDA], m_reg[CTDA]));
+ m_reg[CTDA] = read_bus_word(EA(m_reg[UTDA], m_reg[CTDA]));
// check for end of list
if (m_reg[CTDA] & 1)
@@ -440,10 +447,10 @@ void dp83932c_device::read_rra(bool command)
offs_t const rrp = EA(m_reg[URRA], m_reg[RRP]);
- m_reg[CRBA0] = m_bus->read_word(rrp + 0 * width);
- m_reg[CRBA1] = m_bus->read_word(rrp + 1 * width);
- m_reg[RBWC0] = m_bus->read_word(rrp + 2 * width);
- m_reg[RBWC1] = m_bus->read_word(rrp + 3 * width);
+ m_reg[CRBA0] = read_bus_word(rrp + 0 * width);
+ m_reg[CRBA1] = read_bus_word(rrp + 1 * width);
+ m_reg[RBWC0] = read_bus_word(rrp + 2 * width);
+ m_reg[RBWC1] = read_bus_word(rrp + 3 * width);
LOG("read_rra crba 0x%08x rbwc 0x%08x\n",
EA(m_reg[CRBA1], m_reg[CRBA0]), EA(m_reg[RBWC1], m_reg[RBWC0]));
@@ -472,10 +479,10 @@ void dp83932c_device::load_cam()
{
offs_t const cdp = EA(m_reg[URRA], m_reg[CDP]);
- u16 const cep = m_bus->read_word(cdp + 0 * width) & 0xf;
- u16 const cap0 = m_bus->read_word(cdp + 1 * width);
- u16 const cap1 = m_bus->read_word(cdp + 2 * width);
- u16 const cap2 = m_bus->read_word(cdp + 3 * width);
+ u16 const cep = read_bus_word(cdp + 0 * width) & 0xf;
+ u16 const cap0 = read_bus_word(cdp + 1 * width);
+ u16 const cap1 = read_bus_word(cdp + 2 * width);
+ u16 const cap2 = read_bus_word(cdp + 3 * width);
// FIXME: documented byte/word order doesn't match emulation
@@ -491,7 +498,7 @@ void dp83932c_device::load_cam()
}
// read cam enable
- m_reg[CE] = m_bus->read_word(EA(m_reg[URRA], m_reg[CDP]));
+ m_reg[CE] = read_bus_word(EA(m_reg[URRA], m_reg[CDP]));
LOG("load_cam enable 0x%04x\n", m_reg[CE]);
m_reg[CR] &= ~CR_LCAM;
@@ -572,3 +579,16 @@ void dp83932c_device::dump_bytes(u8 *buf, int length)
buf[i * 8 + 4], buf[i * 8 + 5], buf[i * 8 + 6], buf[i * 8 + 7]);
}
}
+
+u16 dp83932c_device::read_bus_word(offs_t address)
+{
+ return (m_reg[DCR] & DCR_DW) ? m_bus->read_dword(address) : m_bus->read_word(address);
+}
+
+void dp83932c_device::write_bus_word(offs_t address, u16 data)
+{
+ if (m_reg[DCR] & DCR_DW)
+ m_bus->write_dword(address, data);
+ else
+ m_bus->write_word(address, data);
+}
diff --git a/src/devices/machine/dp83932c.h b/src/devices/machine/dp83932c.h
index 1b379bcceeb..ef91d08313d 100644
--- a/src/devices/machine/dp83932c.h
+++ b/src/devices/machine/dp83932c.h
@@ -207,6 +207,10 @@ private:
bool m_int_state;
u16 m_reg[64];
u64 m_cam[16];
+
+ // These wrappers handle 16-bit data stored on 32-bit word boundaries when in 32-bit mode
+ u16 read_bus_word(offs_t address);
+ void write_bus_word(offs_t address, u16 data);
};
DECLARE_DEVICE_TYPE(DP83932C, dp83932c_device)
diff --git a/src/mame/machine/fm_scsi.cpp b/src/devices/machine/fm_scsi.cpp
index d2b8fcd266f..d2b8fcd266f 100644
--- a/src/mame/machine/fm_scsi.cpp
+++ b/src/devices/machine/fm_scsi.cpp
diff --git a/src/mame/machine/fm_scsi.h b/src/devices/machine/fm_scsi.h
index 9a3df8c0ba6..9a3df8c0ba6 100644
--- a/src/mame/machine/fm_scsi.h
+++ b/src/devices/machine/fm_scsi.h
diff --git a/src/devices/machine/genpc.h b/src/devices/machine/genpc.h
index 8462f1fde88..8e836aae807 100644
--- a/src/devices/machine/genpc.h
+++ b/src/devices/machine/genpc.h
@@ -223,6 +223,8 @@ public:
void map(address_map &map);
+ uint8_t pc_ppi_portb_r();
+
protected:
pc_noppi_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -231,7 +233,6 @@ protected:
private:
uint8_t pc_ppi_porta_r();
- uint8_t pc_ppi_portb_r();
};
DECLARE_DEVICE_TYPE(PCNOPPI_MOTHERBOARD, pc_noppi_mb_device)
diff --git a/src/emu/debug/debugcon.cpp b/src/emu/debug/debugcon.cpp
index 508c2377f54..92f62c9909b 100644
--- a/src/emu/debug/debugcon.cpp
+++ b/src/emu/debug/debugcon.cpp
@@ -388,7 +388,9 @@ CMDERR debugger_console::internal_parse_command(std::string_view command, bool e
{
try
{
- parsed_expression(visible_symtable(), command_or_expr).execute();
+ parsed_expression expr(visible_symtable(), command_or_expr);
+ if (execute)
+ expr.execute();
}
catch (expression_error &err)
{
diff --git a/src/frontend/mame/ui/inputopts.cpp b/src/frontend/mame/ui/inputopts.cpp
index 6884574c6a5..ff433e72e7e 100644
--- a/src/frontend/mame/ui/inputopts.cpp
+++ b/src/frontend/mame/ui/inputopts.cpp
@@ -92,7 +92,7 @@ void menu_input_options::populate(float &customtop, float &custombottom)
bool inputmap, analog, toggle;
scan_inputs(machine(), inputmap, analog, toggle);
- item_append(_("menu-inputopts", "Input Assignments (general)"), 0, (void *)INPUTMAP_GENERAL);
+ // system-specific stuff
if (inputmap)
item_append(_("menu-inputopts", "Input Assignments (this system)"), 0, (void *)INPUTMAP_MACHINE);
if (analog)
@@ -101,11 +101,12 @@ void menu_input_options::populate(float &customtop, float &custombottom)
item_append(_("menu-inputopts", "Keyboard Selection"), 0, (void *)KEYBOARD);
if (toggle)
item_append(_("menu-inputopts", "Toggle Inputs"), 0, (void *)TOGGLES);
+ if (inputmap || analog || machine().natkeyboard().keyboard_count() || toggle)
+ item_append(menu_item_type::SEPARATOR);
- item_append(menu_item_type::SEPARATOR);
-
+ // general stuff
+ item_append(_("menu-inputopts", "Input Assignments (general)"), 0, (void *)INPUTMAP_GENERAL);
item_append(_("menu-inputopts", "Input Devices"), 0, (void *)INPUTDEV);
-
item_append(menu_item_type::SEPARATOR);
}
diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp
index 58792ef56c8..55a2aab986f 100644
--- a/src/frontend/mame/ui/miscmenu.cpp
+++ b/src/frontend/mame/ui/miscmenu.cpp
@@ -453,8 +453,8 @@ void menu_crosshair::populate(float &customtop, float &custombottom)
// Make sure to keep these matched to the CROSSHAIR_VISIBILITY_xxx types
static char const *const vis_text[] = {
- N_p("menu-crosshair", "Always"),
N_p("menu-crosshair", "Never"),
+ N_p("menu-crosshair", "Always"),
N_p("menu-crosshair", "When moved") };
bool use_auto = false;
diff --git a/src/lib/formats/fs_oric_jasmin.cpp b/src/lib/formats/fs_oric_jasmin.cpp
index 28c13ab634f..361f40332ea 100644
--- a/src/lib/formats/fs_oric_jasmin.cpp
+++ b/src/lib/formats/fs_oric_jasmin.cpp
@@ -286,10 +286,10 @@ std::vector<dir_entry> impl::root_dir::contents()
std::string fname = read_file_name(bdir.rodata()+off+3);
bool system = ref == 0 && id == 0 && bdir.r32b(off+0xb) == 0x2e535953;
if(system)
- res.emplace_back(dir_entry(fname, dir_entry_type::system_file, 0));
+ res.emplace_back(dir_entry(std::move(fname), dir_entry_type::system_file, 0));
else if(m_fs.ref_valid(ref))
- res.emplace_back(dir_entry(fname, dir_entry_type::file, id));
+ res.emplace_back(dir_entry(std::move(fname), dir_entry_type::file, id));
id++;
}
diff --git a/src/lib/formats/fs_prodos.cpp b/src/lib/formats/fs_prodos.cpp
index df13d0a4caa..2ce67301999 100644
--- a/src/lib/formats/fs_prodos.cpp
+++ b/src/lib/formats/fs_prodos.cpp
@@ -351,9 +351,9 @@ std::vector<dir_entry> impl::root_dir::contents()
auto name = blk.rstr(off+1, type & 0xf);
type >>= 4;
if(type == 0xd)
- res.emplace_back(dir_entry(name, dir_entry_type::dir, id));
+ res.emplace_back(dir_entry(std::move(name), dir_entry_type::dir, id));
else if(type != 0)
- res.emplace_back(dir_entry(name, dir_entry_type::file, id));
+ res.emplace_back(dir_entry(std::move(name), dir_entry_type::file, id));
off += 39;
id ++;
}
diff --git a/src/lib/formats/fs_vtech.cpp b/src/lib/formats/fs_vtech.cpp
index e294e657801..7b8edf53f63 100644
--- a/src/lib/formats/fs_vtech.cpp
+++ b/src/lib/formats/fs_vtech.cpp
@@ -137,7 +137,7 @@ std::vector<dir_entry> vtech_image::impl::root_dir::contents()
if(bdir.r8(off+1) != ':')
continue;
std::string fname = trim_end_spaces(bdir.rstr(off+2, 8));
- res.emplace_back(dir_entry(fname, dir_entry_type::file, id));
+ res.emplace_back(dir_entry(std::move(fname), dir_entry_type::file, id));
id++;
}
}
diff --git a/src/lib/formats/fsmgr.h b/src/lib/formats/fsmgr.h
index 9859f929e9d..201dfe389bb 100644
--- a/src/lib/formats/fsmgr.h
+++ b/src/lib/formats/fsmgr.h
@@ -126,7 +126,7 @@ struct dir_entry {
dir_entry_type m_type;
u64 m_key;
- dir_entry(const std::string &name, dir_entry_type type, u64 key) : m_name(name), m_type(type), m_key(key) {}
+ dir_entry(std::string &&name, dir_entry_type type, u64 key) : m_name(std::move(name)), m_type(type), m_key(key) {}
};
class fsblk_t {
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 48bf062c00b..1afa1d26777 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -313,7 +313,6 @@ static INPUT_PORTS_START( sicv )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
->>>>>>> upstream/master
/*******************************************************/
@@ -1379,32 +1378,104 @@ void _8080bw_state::cosmicmo(machine_config &config)
/* */
/*******************************************************/
+void invasion_state::io_map(address_map &map)
+{
+ map.global_mask(0x7);
+
+ map(0x00, 0x00).mirror(0x04).portr("IN0");
+ map(0x01, 0x01).mirror(0x04).portr("IN1");
+ map(0x02, 0x02).mirror(0x04).portr("IN2");
+ map(0x03, 0x03).mirror(0x04).portr("IN3");
+
+ map(0x03, 0x03).w("soundboard", FUNC(invaders_audio_device::p1_w));
+ map(0x05, 0x05).w("soundboard", FUNC(invaders_audio_device::p2_w));
+ map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
+}
+
+
static INPUT_PORTS_START( invasion )
- PORT_INCLUDE( sicv_base )
+ // * DIP switch defaults confirmed from manual.
+ // * Tilt/slam switch causes a watchdog reset - it isn't handled in software.
+ // * Coin counter is driven by logic connected to the coin inputs, not software.
+ // * The code supports cocktail cabinets, but Sidam apparently made no boards with the necessary inputs/outputs.
- PORT_MODIFY("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_START("IN0")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW1:8" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW1:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x00, "SW1:6" )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // floating
+ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(invaders_state, invaders_in1_control_r)
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW1:5" )
- PORT_MODIFY("IN2")
- /* SW1:5-8 Unused according to manual. */
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,3") /* Default is OFF, OFF (6) */
+ 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_LOW, IPT_UNKNOWN ) // pulled high via a 1k resistor
+ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(invaders_state, invaders_in1_control_r)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,3")
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x03, "6" )
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW1:8" ) /* Default OFF */
- PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2") /* Default is ON (2500) */
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // tied to ground
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x08, "1500" )
PORT_DIPSETTING( 0x00, "2500" )
- /* SW1:5,6,7 Default ON */
- PORT_DIPNAME( 0x80, 0x80, "Laser Bonus Info" ) PORT_DIPLOCATION("SW1:1") /* Default is OFF (Info on) */
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(invaders_state, invaders_in1_control_r)
+ PORT_DIPNAME( 0x80, 0x80, "Laser Bonus Info" ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ /*
+ Bit 1 connected to pin 12B on edge connector, called "SPARE" in SIDAM user
+ manual. CPU halted on boot if high.
+
+ Bit 2 Coin counter protection: If coin counter is disconnected, the game
+ stops. Described in the SIDAM user manual:
+
+ 4. Protezione contatore: il microprocessore controlla che il contatore
+ sia inserito e funzioni regolarmente. Nel caso il contatore venga
+ staccato il programma si arresta e non riprende finchè il contatore non
+ viene regolar-mente ricollegato.
+
+ Driven by a transistor connected between pins 16A and 22A on the edge
+ connector. Handled by the code at address $0079.
+ */
+ PORT_START("IN3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_TOGGLE PORT_NAME("Spare")
+ PORT_CONFNAME( 0x04, 0x04, "Coin counter" )
+ PORT_CONFSETTING( 0x00, "Disconnected" )
+ PORT_CONFSETTING( 0x04, "Connected" )
+ PORT_BIT( 0xf9, IP_ACTIVE_LOW, IPT_UNUSED ) // these bits all go to unpopulated RRC networks
+
+ // P1 controls (connected to IN0, IN1 and IN2)
+ INVADERS_CONTROL_PORT_P1
INPUT_PORTS_END
+void invasion_state::invasion(machine_config &config)
+{
+ mw8080bw_root(config);
+
+ // basic machine hardware
+ m_maincpu->set_addrmap(AS_IO, &invasion_state::io_map);
+
+ // 60 Hz signal clocks two cascaded 'LS161s, terminal count output resets the CPU
+ WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 255);
+
+ // video hardware
+ m_screen->set_screen_update(FUNC(invasion_state::screen_update_invaders));
+
+ // wrong - Sidam Invasion uses totally redesigned sound hardware
+ INVADERS_AUDIO(config, "soundboard");
+}
+
#endif
+
/*******************************************************/
/* */
/* bootleg "Super Invaders" */
@@ -5844,12 +5915,12 @@ GAMEL(1978, cosmicin, invaders, invaders, sicv, sisv_state, empty_i
GAMEL(1978, galmonst, invaders, invaders, sicv, sisv_state, empty_init, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
GAMEL(1979, spacecom, invaders, spacecom, spacecom, spacecom_state, init_spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom )
GAME( 1978, spacerng, invaders, spacerng, sitv, _8080bw_state, empty_init, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // Many modifications
-GAMEL(19??, invasion, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, invasiona, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, newer set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // Has Sidam replaced with 'UFO Monster Attack' and standard GFX
-GAMEL(1979, invasiona2, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, older set)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // Has Sidam replaced with 'UFO Monster Attack' and standard GFX
-GAMEL(1979, invasionb, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg", "Invasion (Italian bootleg)", MACHINE_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, invasionrz, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 1, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
-GAMEL(1979, invasionrza, invaders, invaders, invasion, invaders_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 2, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
+GAMEL(19??, invasion, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1979, invasiona, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, newer set)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // Has Sidam replaced with 'UFO Monster Attack' and standard GFX
+GAMEL(1979, invasiona2, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg", "UFO Robot Attack (bootleg of Invasion, older set)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // Has Sidam replaced with 'UFO Monster Attack' and standard GFX
+GAMEL(1979, invasionb, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg", "Invasion (Italian bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1979, invasionrz, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 1, R Z SRL Bologna)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1979, invasionrza, invaders, invasion, invasion, invasion_state, empty_init, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 2, R Z SRL Bologna)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders )
GAMEL(19??, invadersem, invaders, invaders, sitv, sisv_state, empty_init, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // Possibly licensed
GAMEL(1978, superinv, invaders, invaders, superinv, invaders_state, empty_init, ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // Not related to Zenitone-Microsec version
GAMEL(1978, sinvemag, invaders, invaders, sinvemag, invaders_state, empty_init, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // Not related to Zenitone-Microsec version
diff --git a/src/mame/drivers/compc.cpp b/src/mame/drivers/compc.cpp
index 380753479e8..8f0f43ae3af 100644
--- a/src/mame/drivers/compc.cpp
+++ b/src/mame/drivers/compc.cpp
@@ -32,9 +32,10 @@ Options: 8087 FPU
#include "emu.h"
#include "cpu/i86/i86.h"
+#include "bus/pc_kbd/keyboards.h"
+#include "bus/pc_kbd/pc_kbdc.h"
#include "machine/genpc.h"
#include "machine/nvram.h"
-#include "machine/pckeybrd.h"
#include "softlist_dev.h"
@@ -45,19 +46,18 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_mb(*this, "mb"),
- m_keyboard(*this, "pc_keyboard")
+ m_dsw0(*this, "DSW0")
{ }
required_device<cpu_device> m_maincpu;
required_device<pc_noppi_mb_device> m_mb;
- required_device<pc_keyboard_device> m_keyboard;
+ required_ioport m_dsw0;
void machine_reset() override;
- void pioiii_w(offs_t offset, u8 data);
- u8 pioiii_r(offs_t offset);
- void pio_w(offs_t offset, u8 data);
- u8 pio_r(offs_t offset);
+ u8 pioiii_portc_r();
+ void pioiii_portc_w(u8 data);
+ u8 pio_portc_r();
void compc(machine_config &config);
void pc10iii(machine_config &config);
@@ -66,99 +66,48 @@ public:
void compc_map(address_map &map);
void compciii_io(address_map &map);
private:
- u8 m_portb = 0, m_dips = 0;
+ u8 m_dips = 0;
};
void compc_state::machine_reset()
{
- m_portb = 0;
m_dips = 0;
}
-void compc_state::pio_w(offs_t offset, u8 data)
+
+u8 compc_state::pio_portc_r()
{
- switch (offset)
+ u8 data;
+ if(BIT(m_mb->pc_ppi_portb_r(), 3))
{
- case 1:
- m_portb = data;
- m_mb->m_pit8253->write_gate2(BIT(data, 0));
- m_mb->pc_speaker_set_spkrdata(BIT(data, 1));
- m_keyboard->enable(BIT(data, 6));
- if(data & 0x80)
- m_mb->m_pic8259->ir1_w(0);
- break;
+ /* read hi nibble of S2 */
+ data = (m_dsw0->read() >> 4) & 0x0f;
}
-}
-
-
-u8 compc_state::pio_r(offs_t offset)
-{
- int data = 0;
- switch (offset)
+ else
{
- case 0:
- data = m_keyboard->read();
- break;
- case 1:
- data = m_portb;
- break;
- case 2:
- if(BIT(m_portb, 3))
- {
- /* read hi nibble of S2 */
- data = (ioport("DSW0")->read() >> 4) & 0x0f;
- }
- else
- {
- /* read lo nibble of S2 */
- data = ioport("DSW0")->read() & 0x0f;
- }
- if(m_mb->pit_out2())
- data |= 0x20;
- break;
+ /* read lo nibble of S2 */
+ data = m_dsw0->read() & 0x0f;
}
+ if(m_mb->pit_out2())
+ data |= 0x20;
return data;
}
-void compc_state::pioiii_w(offs_t offset, u8 data)
+void compc_state::pioiii_portc_w(u8 data)
{
- switch (offset)
- {
- case 1:
- m_portb = data;
- m_mb->m_pit8253->write_gate2(BIT(data, 0));
- m_mb->pc_speaker_set_spkrdata(BIT(data, 1));
- m_keyboard->enable(BIT(data, 6));
- if(data & 0x80)
- m_mb->m_pic8259->ir1_w(0);
- break;
- case 2:
- m_dips = (data & ~0x30) | ioport("DSW0")->read();
- break;
- }
+ m_dips = (data & ~0x30) | m_dsw0->read();
}
-u8 compc_state::pioiii_r(offs_t offset)
+u8 compc_state::pioiii_portc_r()
{
- int data = 0;
- switch (offset)
- {
- case 0:
- data = m_keyboard->read();
- break;
- case 1:
- data = m_portb;
- break;
- case 2:
- if(!BIT(m_portb, 2))
- data = (m_dips >> 4) & 0x0f;
- else
- data = m_dips & 0x0f;
- if(m_mb->pit_out2())
- data |= 0x30;
- break;
- }
+ u8 data;
+ if(!BIT(m_mb->pc_ppi_portb_r(), 2))
+ data = (m_dips >> 4) & 0x0f;
+ else
+ data = m_dips & 0x0f;
+ if(m_mb->pit_out2())
+ data |= 0x30;
return data;
}
@@ -206,14 +155,14 @@ void compc_state::compc_io(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
- map(0x0060, 0x0063).rw(FUNC(compc_state::pio_r), FUNC(compc_state::pio_w));
+ map(0x0062, 0x0062).r(FUNC(compc_state::pio_portc_r));
}
void compc_state::compciii_io(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map));
- map(0x0060, 0x0063).rw(FUNC(compc_state::pioiii_r), FUNC(compc_state::pioiii_w));
+ map(0x0062, 0x0062).rw(FUNC(compc_state::pioiii_portc_r), FUNC(compc_state::pioiii_portc_w));
}
void compc_state::compc(machine_config &config)
@@ -226,6 +175,8 @@ void compc_state::compc(machine_config &config)
PCNOPPI_MOTHERBOARD(config, m_mb, 0).set_cputag(m_maincpu);
m_mb->int_callback().set_inputline(m_maincpu, 0);
m_mb->nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ m_mb->kbdclk_callback().set("keyboard", FUNC(pc_kbdc_device::clock_write_from_mb));
+ m_mb->kbddata_callback().set("keyboard", FUNC(pc_kbdc_device::data_write_from_mb));
config.device_remove("mb:pit8253");
fe2010_pit_device &pit(FE2010_PIT(config, "mb:pit8253", 0));
pit.set_clk<0>(XTAL(14'318'181)/12.0); /* heartbeat IRQ */
@@ -241,8 +192,9 @@ void compc_state::compc(machine_config &config)
ISA8_SLOT(config, "isa3", 0, "mb:isa", pc_isa8_cards, "com", false);
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "fdc_xt", false);
- PC_KEYB(config, m_keyboard);
- m_keyboard->keypress().set("mb:pic8259", FUNC(pic8259_device::ir1_w));
+ pc_kbdc_device &pc_kbdc(PC_KBDC(config, "keyboard", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
+ pc_kbdc.out_clock_cb().set(m_mb, FUNC(pc_noppi_mb_device::keyboard_clock_w));
+ pc_kbdc.out_data_cb().set(m_mb, FUNC(pc_noppi_mb_device::keyboard_data_w));
/* internal ram */
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("512K, 640K");
diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp
index a7e715bf37f..b888d770dd3 100644
--- a/src/mame/drivers/d9final.cpp
+++ b/src/mame/drivers/d9final.cpp
@@ -353,7 +353,20 @@ ROM_START( d9final )
ROM_LOAD16_BYTE( "4.15h", 0x00000, 0x40000, CRC(859b7105) SHA1(1b36f84706473afaa50b6546d7373a2ee6602b9a) )
ROM_END
+ROM_START( rpanic )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "2.4h", 0x00000, 0x8000, CRC(f3496b10) SHA1(84f33ab519a1f55213d0069d161c07bc99844035) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+ ROM_COPY( "maincpu", 0x10000, 0x18000, 0x08000 ) //or just 0xff
+ ROM_LOAD( "1.2h", 0x20000, 0x10000, CRC(901281ec) SHA1(7b4cae343f1b025d988a507141c0fa8229a0fea1) )
+
+ ROM_REGION( 0x80000, "tiles", 0 )
+ ROM_LOAD16_BYTE( "3.13h", 0x00001, 0x40000, CRC(a907fd4a) SHA1(15590b8c9c1a791f5f995b909df9035ba3721446) )
+ ROM_LOAD16_BYTE( "4.15h", 0x00000, 0x40000, CRC(c5b4d37f) SHA1(e5dbc0251ff288d52637bef93561705403fbe2e2) )
+ROM_END
+
} // Anonymous namespace
-GAME( 1992, d9final, 0, d9final, d9final, d9final_state, empty_init, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, rpanic, 0, d9final, d9final, d9final_state, empty_init, ROT0, "Excellent System / Jaleco", "Rolling Panic (v2.33)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, d9final, rpanic, d9final, d9final, d9final_state, empty_init, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp
index ced36b69baa..e24a2dbe88e 100644
--- a/src/mame/drivers/dotrikun.cpp
+++ b/src/mame/drivers/dotrikun.cpp
@@ -50,7 +50,6 @@ public:
void dotrikun(machine_config &config);
protected:
-
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_shared_ptr<uint8_t> m_vram;
@@ -227,20 +226,21 @@ void dotrikun_state::dotrikun(machine_config &config)
ROM_START( dotrikun )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "14479a.mpr", 0x0000, 0x4000, CRC(b77a50db) SHA1(2a5d812d39f0f58f5c3e1b46f80aca75aa225115) )
+ ROM_LOAD( "mpr-14479a.ic2", 0x0000, 0x4000, CRC(b77a50db) SHA1(2a5d812d39f0f58f5c3e1b46f80aca75aa225115) )
ROM_END
ROM_START( dotrikun2 )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "epr-13141.ic2", 0x0000, 0x4000, CRC(a6aa7fa5) SHA1(4dbea33fb3541fdacf2195355751078a33bb30d5) )
+ ROM_LOAD( "mpr-14479.ic2", 0x0000, 0x4000, CRC(a6aa7fa5) SHA1(4dbea33fb3541fdacf2195355751078a33bb30d5) ) // also seen with EPR-13141 (same ROM contents)
ROM_END
ROM_START( dotriman )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "14479a.mpr", 0x0000, 0x4000, CRC(4ba6d2f5) SHA1(db805e9121ecbd41fac4593b58d7f071e7dbc720) )
+ ROM_LOAD( "dotriman.bin", 0x0000, 0x4000, CRC(4ba6d2f5) SHA1(db805e9121ecbd41fac4593b58d7f071e7dbc720) )
ROM_END
GAME( 1990, dotrikun, 0, dotrikun, dotrikun, dotrikun_state, empty_init, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
GAME( 1990, dotrikun2, dotrikun, dotrikun, dotrikun, dotrikun_state, empty_init, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+
GAME( 2016, dotriman, dotrikun, dotrikun, dotrikun, dotrikun_state, empty_init, ROT0, "hack (Chris Covell)", "Dottori-Man Jr.", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/ds90.cpp b/src/mame/drivers/ds90.cpp
new file mode 100644
index 00000000000..df22f89892f
--- /dev/null
+++ b/src/mame/drivers/ds90.cpp
@@ -0,0 +1,66 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+
+/*
+
+ Luxor X37 prototype
+
+ (Luxor DS90-10 + ABC 1600 video)
+
+*/
+
+#include "emu.h"
+#include "softlist_dev.h"
+#include "cpu/m68000/m68000.h"
+#include "video/abc1600.h"
+
+class x37_state : public driver_device
+{
+public:
+ x37_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ void x37(machine_config &config);
+
+private:
+ required_device<m68000_base_device> m_maincpu;
+
+ void program_map(address_map &map);
+ void cpu_space_map(address_map &map);
+};
+
+void x37_state::program_map(address_map &map)
+{
+ map(0x000000, 0x007fff).rom().region("maincpu", 0);
+}
+
+void x37_state::cpu_space_map(address_map &map)
+{
+ map(0xffff0, 0xfffff).m(m_maincpu, FUNC(m68010_device::autovectors_map));
+}
+
+static INPUT_PORTS_START( x37 )
+INPUT_PORTS_END
+
+void x37_state::x37(machine_config &config)
+{
+ // basic machine hardware
+ M68010(config, m_maincpu, 10000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &x37_state::program_map);
+ m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &x37_state::cpu_space_map);
+
+ // video hardware
+ ABC1600_MOVER(config, ABC1600_MOVER_TAG, 0);
+
+ // software list
+ SOFTWARE_LIST(config, "flop_list").set_original("x37_flop");
+}
+
+ROM_START( x37 )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "x37.rom", 0x0000, 0x8000, CRC(d505e7e7) SHA1(a3ad839e47b1f71c394e5ce28bce199e5e4810d2) )
+ROM_END
+
+COMP( 1985, x37, 0, 0, x37, x37, x37_state, empty_init, "Luxor", "X37 (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp
index cd723f659e6..08435cc607c 100644
--- a/src/mame/drivers/exidy.cpp
+++ b/src/mame/drivers/exidy.cpp
@@ -15,6 +15,9 @@
* Hard Hat
* Fax and Fax 2
+ TODO:
+ * check whether games besides Venture have coin counter outputs
+
Known bugs:
* none at this time
@@ -206,6 +209,7 @@ public:
void pepper2(machine_config &config);
DECLARE_CUSTOM_INPUT_MEMBER(intsource_coins_r);
+ DECLARE_INPUT_CHANGED_MEMBER(coin_count_w);
protected:
virtual void machine_start() override;
@@ -438,10 +442,21 @@ CUSTOM_INPUT_MEMBER(teetert_state::teetert_input_r)
}
+/*************************************
+ *
+ * Special inputs
+ *
+ *************************************/
+
+INPUT_CHANGED_MEMBER(exidy_state::coin_count_w)
+{
+ machine().bookkeeping().coin_counter_w(param, newval);
+}
+
/*************************************
*
- * Bankswitcher
+ * Bank switching
*
*************************************/
@@ -462,6 +477,7 @@ void exidy_state::mtrap_ocl_w(uint8_t data) // Mouse Trap (possibly others) set
output().set_value("led1", !BIT(data, 4));
}
+
/*************************************
*
* Main CPU memory handlers
@@ -819,7 +835,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( venture )
PORT_START("DSW")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exidy_state, coin_count_w, 1)
PORT_DIPNAME( 0x06, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2,3")
PORT_DIPSETTING( 0x00, "20000" )
PORT_DIPSETTING( 0x02, "30000" )
@@ -847,7 +863,7 @@ static INPUT_PORTS_START( venture )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, exidy_state, coin_count_w, 0)
PORT_START("INTSOURCE")
/*
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index bc5cedc85a9..174e072896f 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -9,41 +9,42 @@
CPU: Z180 or 68000
Video: IGS017 or IGS031 (2 tilemaps, variable size sprites, protection)
Other: IGS025 (8255), IGS022 (protection, MCU), IGS029 (protection)
-Sound: M6295 + [YM2413]
-
--------------------------------------------------------------------------------------------------------------
-Year + Game PCB CPU Sound Custom Other
--------------------------------------------------------------------------------------------------------------
-96 Shuzi Leyuan NO-0131-4 Z180 M6295 YM2413 IGS017 8255 Battery
-97 Mj Super Da Man Guan II NO-0147-6 68000 M6295 IGS031 8255 Battery
-97 Mj Tian Jiang Shen Bing NO-0157-2 Z180 M6295 YM2413 IGS017 IGS025 Battery
-97 Mj Man Guan Daheng NO-0252 68000 M6295 IGS031 IGS025 IGS???* Battery
-98 Genius 6 NO-0131-4 Z180 M6295 YM2413 IGS017 IGS003c Battery
-98 Mj Long Hu Zhengba 2 NO-0206 68000 M6295 IGS031 IGS025 IGS022* Battery
-98 Mj Shuang Long Qiang Zhu 2 NO-0207 68000 M6295 IGS031 IGS025 IGS022 Battery
-98 Mj Man Guan Caishen NO-0192-1 68000 M6295 IGS017 IGS025 IGS029 Battery
-99 Tarzan (V107) NO-0228? Z180 M6295 IGS031 IGS025 IGS029 Battery
-99 Tarzan (V109C) NO-0248-1 Z180 M6295 IGS031 IGS025 Battery
-00? Super Tarzan (V100I) NO-0230-1 Z180 M6295 IGS031 IGS025 Battery
-01? Happy Skill (V611) NO-0281 Z180 M6295 (K668) IGS031 IGS025 Battery
-01? unknown (V100A) unreadable Z180 M6295 IGS031 IGS025 Battery
-?? Super Poker / Formosa NO-0187 Z180 M6295 YM2413 IGS017 IGS025 Battery
--------------------------------------------------------------------------------------------------------------
- * not present in one set
+Sound: M6295(K668/AR17961) + [YM2413(U3567)]
+
+--------------------------------------------------------------------------------------------------------
+Year + Game PCB CPU Sound Custom Other
+--------------------------------------------------------------------------------------------------------
+96 Shuzi Leyuan (V127M) NO-0131-4 Z180 AR17961 U3567 IGS017 8255 Battery
+97 Super Da Man Guan II (V754C) NO-0147-6 68000 K668 IGS031 8255 Battery
+97 Tian Jiang Shen Bing (V137C) NO-0157-2 Z180 AR17961 U3567 IGS017 IGS025 Battery
+97 Man Guan Daheng (V123T1) NO-0252 68000 M6295 IGS031 IGS025 IGS???* Battery
+98 Genius 6 (V110F) NO-0131-4 Z180 K668 U3567 IGS017 IGS003c Battery
+98 Long Hu Zhengba 2 (set 1) NO-0206 68000 K668 IGS031 IGS025 IGS022* Battery
+98 Shuang Long Qiang Zhu 2 VS (VS203J) NO-0207 68000 K668 IGS031 IGS025 IGS022 Battery
+98 Man Guan Caishen (V103CS) NO-0192-1 68000 K668 IGS017 IGS025 IGS029 Battery
+99 Tarzan (V107) NO-0228? Z180 U6295 IGS031 IGS025 IGS029 Battery
+99 Tarzan (V109C) NO-0248-1 Z180 U6295 IGS031 IGS025 Battery
+00? Super Tarzan (V100I) NO-0230-1 Z180 K668 IGS031 IGS025 Battery
+00? Happy Skill (V611IT) NO-0281 Z180 K668 IGS031 IGS025 Battery
+00? Champion Poker 2 (V100A) unreadable Z180 M6295 IGS031 IGS025 Battery
+00? Super Poker (V100xD03) / Formosa NO-0187 Z180 K668 U3567 IGS017 IGS025 Battery
+--------------------------------------------------------------------------------------------------------
+ not present in another set *
To Do:
- Protection emulation in some games, instead of patching the roms.
- NVRAM.
-- mgcs: implement joystick inputs. Finish IGS029 protection simulation.
+- mgcs: Finish IGS029 protection simulation.
Notes:
-- iqblocka: keep start pressed during boot for DSWs & input test. Keep test (F2) pressed for book-keeping / setup [pass: press Play (2)]
-- iqblockf/genius6: for gambling, press service1 (9) then press Play (2) eight times. Then test (F2) enters book-keeping / setup
-- lhzb2, mgcs, tjsb: press service + stats during test mode for sound test.
-- mgdh: press A + B during test mode for sound test (B1+B2+B3 when using a joystick).
-- mgdh: test mode is accessed by keeping test pressed during boot (as usual), but pressing F2+F3 in MAME
- does not actually work. It does work if F2 is pressed in the debug window at boot, and held while closing it.
+- Test mode is usually accessed by keeping test (F2) pressed during boot.
+- iqblocka: keep start (1) pressed during boot for DSWs & input test. Keep test (F2) pressed for book-keeping / setup [pass: press deal (2)].
+- iqblockf/genius6: press service1 (9) then press deal (2) eight times to switch to gambling. Then test (F2) enters book-keeping / setup.
+- lhzb2, mgcs, slqz2, tjsb: press test (F2) + book (0) during inputs test for sound test.
+- mgdh, sdmg2: press keys A + B during test mode for sound test (B1 + B2 + B3 when using a joystick in mgdh).
+- spkrform: to switch from poker to Formosa press service1 (9). To switch back, press in sequence:
+ service3 (right of 0) then Bet (M) then press "Hold 1".."Hold 5" (Z, X, C, V, B)
************************************************************************************************************/
@@ -52,18 +53,232 @@ Notes:
#include "cpu/m68000/m68000.h"
#include "cpu/z180/z180.h"
#include "machine/i8255.h"
-#include "sound/okim6295.h"
-#include "sound/ymopl.h"
-#include "machine/igs025.h"
#include "machine/igs022.h"
#include "machine/ticket.h"
#include "machine/timer.h"
+#include "sound/okim6295.h"
+#include "sound/ymopl.h"
#include "video/igs017_igs031.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "igspoker.lh"
+#include "igsslot.lh"
+
+#define LOG_PROT_STRING (1U << 1)
+#define LOG_PROT_BITSWAP (1U << 2)
+#define LOG_PROT_INCDEC (1U << 3)
+#define LOG_PROT_INC (1U << 4)
+#define LOG_PROT_SCRAMBLE (1U << 5)
+#define LOG_PROT_REMAP (1U << 6)
+#define LOG_PROT_IGS022 (1U << 7)
+#define LOG_PROT_IGS029 (1U << 8)
+
+//#define VERBOSE (LOG_GENERAL | LOG_PROT_STRING | LOG_PROT_BITSWAP | LOG_PROT_INCDEC | LOG_PROT_INC | LOG_PROT_SCRAMBLE | LOG_PROT_REMAP | LOG_PROT_IGS022 | LOG_PROT_IGS029)
+#define VERBOSE (0)
+#include "logmacro.h"
+
+/***************************************************************************
+
+ ---- IGS Multiplexer ----
+
+***************************************************************************/
+
+class igs_mux_device :
+ public device_t,
+ public device_memory_interface
+{
+public:
+ igs_mux_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ void address_w(u8 data);
+ void data_w(u8 data);
+ u8 data_r();
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual space_config_vector memory_space_config() const override;
+
+private:
+ address_space_config m_space_config;
+ u8 m_address = 0;
+};
+
+device_memory_interface::space_config_vector igs_mux_device::memory_space_config() const
+{
+ return space_config_vector {
+ std::make_pair(0, &m_space_config)
+ };
+}
+
+DEFINE_DEVICE_TYPE(IGS_MUX, igs_mux_device, "igs_mux", "IGS I/O Multiplexer")
+
+igs_mux_device::igs_mux_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, IGS_MUX, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , m_space_config("igs_mux", ENDIANNESS_LITTLE, 8, 8, 0)
+{ }
+
+void igs_mux_device::device_start()
+{
+ save_item(NAME(m_address));
+}
+
+void igs_mux_device::device_reset()
+{
+}
+
+void igs_mux_device::address_w(u8 data)
+{
+ m_address = data;
+}
+
+void igs_mux_device::data_w(u8 data)
+{
+ space().write_byte(m_address, data);
+}
+
+u8 igs_mux_device::data_r()
+{
+ return space().read_byte(m_address);
+}
+
+/***************************************************************************
+
+ ---- IGS String Protection ----
+
+***************************************************************************/
+
+class igs_string_device : public device_t
+{
+public:
+ igs_string_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ u8 result_r(); // 0x05: result_r
+ void do_bitswap_w(offs_t offset, u8 data); // 0x20-0x27: do_bitswap_w
+ u8 advance_string_offs_r(address_space &space); // 0x40: advance_string_offs_r
+
+ // Call after decryption, e.g. at the end of init_<gamename>
+ void dump(const char *filename, u32 string_addr, u32 xor_addr, bool is_16bits) const;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ required_memory_region m_region_key;
+
+ u16 m_string_word = 0, m_word = 0;
+ u8 m_string_offs = 0;
+};
+
+DEFINE_DEVICE_TYPE(IGS_STRING, igs_string_device, "igs_string", "IGS String Protection")
+
+igs_string_device::igs_string_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, IGS_STRING, tag, owner, clock)
+ , m_region_key(*this, DEVICE_SELF)
+{ }
+
+void igs_string_device::dump(const char *filename, u32 string_addr, u32 xor_addr, bool is_16bits) const
+{
+ FILE *f = fopen(filename, "wb");
+ if (!f)
+ {
+ printf("Error opening igs_string dump file %s\n", filename);
+ fclose(f);
+ return;
+ }
+
+ printf("igs_string addr = %x, %x (%d bits)\n", string_addr, xor_addr, is_16bits ? 16 : 8);
+
+ const u8 * const string_base = (const u8 *)memregion(":maincpu")->base() + string_addr;
+ const u8 * const xor_base = (const u8 *)memregion(":maincpu")->base() + xor_addr;
+ for (u32 i = 0; i < 0xec; ++i)
+ {
+ const u32 addr = is_16bits ? BYTE_XOR_BE(i) : i;
+ const u8 data = string_base[addr] ^ xor_base[addr];
+ fwrite(&data, 1, 1, f);
+ }
+
+ fclose(f);
+}
+
+void igs_string_device::device_start()
+{
+ save_item(NAME(m_string_offs));
+ save_item(NAME(m_string_word));
+ save_item(NAME(m_word));
+}
+
+void igs_string_device::device_reset()
+{
+ m_string_word = m_word = 0;
+ m_string_offs = 0;
+}
+
+u8 igs_string_device::result_r()
+{
+ const u8 res = bitswap<8>(m_word, 5, 2, 9, 7, 10, 13, 12, 15);
+ LOGMASKED(LOG_PROT_STRING, "%s: read bitswap - word %04x -> %02x\n", machine().describe_context(), m_word, res);
+ return res;
+}
+
+void igs_string_device::do_bitswap_w(offs_t offset, u8 data)
+{
+ const u16 x = m_word;
+
+ m_word = 0;
+
+ m_word |= (BIT( x, 0) ^ BIT(m_string_word, 0)) << 1; // bit 1
+ m_word |= (BIT(~x, 1) ^ BIT(m_string_word, 1)) << 2; // bit 2
+ m_word |= (BIT(~x, 2) ^ BIT(m_string_word, 2)) << 3; // bit 3
+ m_word |= (BIT(~x, 13) ^ BIT( x, 3)) << 4; // bit 4
+ m_word |= (BIT(~x, 4) ^ BIT(m_string_word, 4)) << 5; // bit 5
+ m_word |= (BIT( x, 5) ^ BIT(m_string_word, 5)) << 6; // bit 6
+ m_word |= (BIT(~x, 6) ^ BIT(m_string_word, 6)) << 7; // bit 7
+ m_word |= (BIT(~x, 7) ^ BIT(m_string_word, 7)) << 8; // bit 8
+ m_word |= (BIT(~x, 8) ^ BIT(m_string_word, 8)) << 9; // bit 9
+ m_word |= (BIT( x, 9) ^ BIT(m_string_word, 9)) << 10; // bit 10
+ m_word |= (BIT(~x, 10) ^ BIT( x, 3)) << 11; // bit 11
+ m_word |= (BIT( x, 11) ^ BIT(m_string_word, 11)) << 12; // bit 12
+ m_word |= (BIT(~x, 12) ^ BIT(m_string_word, 12)) << 13; // bit 13
+ m_word |= (BIT( x, 13) ^ BIT(m_string_word, 13)) << 14; // bit 14
+ m_word |= (BIT( x, 14) ^ BIT(m_string_word, 14)) << 15; // bit 15
+
+ // bit 0
+ const u16 bit0 = BIT(~x, 15) ^ BIT(x, 7);
+
+ // bit 0 is further xor'd with bit x of the data written to this address
+ const u16 xor0 = BIT(data, offset & 7);
+ m_word |= bit0 ^ xor0;
+
+ LOGMASKED(LOG_PROT_STRING, "%s: exec bitswap on port %02x = %02x - bit0 %x, xor0 %x, word %04x -> %04x\n", machine().describe_context(),
+ offset, data, bit0, xor0, x, m_word);
+}
+
+u8 igs_string_device::advance_string_offs_r(address_space &space)
+{
+ const u8 next_string_offs = ((m_string_offs + 1) < 0xec ? (m_string_offs + 1) : 0);
+
+ const u8 shift = (next_string_offs & 1) ? 8 : 0;
+
+ const u8 next_string_byte = m_region_key ? m_region_key->base()[next_string_offs] : 0;
+
+ const u16 next_string_word = (m_string_word & (0xff << (8 - shift))) | (next_string_byte << shift);
+
+ LOGMASKED(LOG_PROT_STRING, "%s: advance string offs %02x -> %02x, string data = %02x, string word %04x -> %04x\n", machine().describe_context(),
+ m_string_offs, next_string_offs, next_string_byte, m_string_word, next_string_word);
+
+ m_string_offs = next_string_offs;
+ m_string_word = next_string_word;
+
+ return space.unmap();
+}
+
// Similar protection to that found in igs011.cpp:
/***************************************************************************
@@ -88,18 +303,12 @@ class igs_bitswap_device : public device_t
public:
igs_bitswap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- auto in_pa_callback() { return m_in_pa_cb.bind(); }
- auto in_pb_callback() { return m_in_pb_cb.bind(); }
- auto in_pc_callback() { return m_in_pc_cb.bind(); }
-
- auto out_pa_callback() { return m_out_pa_cb.bind(); }
- auto out_pb_callback() { return m_out_pb_cb.bind(); }
- auto out_pc_callback() { return m_out_pc_cb.bind(); }
- auto out_pd_callback() { return m_out_pd_cb.bind(); }
-
- void address_w(u8 data);
- void data_w(u8 data);
- u8 data_r();
+ u8 result_r(); // 0x03: result_r
+ void word_w(u8 data); // 0x40-0x47: word_w
+ void mode_f_w(u8 data); // 0x48: mode_f_w
+ void mode_3_w(u8 data); // 0x50: mode_3_w
+ void do_bitswap_w(offs_t offset, u8 data); // 0x80-0x87: do_bitswap_w
+ void reset_w(u8 data); // 0xa0: reset_w
template <unsigned N> void set_m3_bits(u8 b0, u8 b1, u8 b2, u8 b3);
void set_mf_bits(u8 b0, u8 b1, u8 b2, u8 b3);
@@ -110,21 +319,12 @@ protected:
virtual void device_reset() override;
private:
- devcb_read8 m_in_pa_cb;
- devcb_read8 m_in_pb_cb;
- devcb_read8 m_in_pc_cb;
+ u8 m_m3 = 0, m_mf = 0;
+ u16 m_val = 0, m_word = 0;
- devcb_write8 m_out_pa_cb;
- devcb_write8 m_out_pb_cb;
- devcb_write8 m_out_pc_cb;
- devcb_write8 m_out_pd_cb;
-
- u8 m_address, m_m3, m_mf;
- u16 m_val, m_word;
-
- u8 m_m3_bits[4][4];
- u8 m_mf_bits[4];
- u16 m_val_xor;
+ u8 m_m3_bits[4][4] = { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} };
+ u8 m_mf_bits[4] = {0,0,0,0};
+ u16 m_val_xor = 0;
};
template <unsigned N> void igs_bitswap_device::set_m3_bits(u8 b0, u8 b1, u8 b2, u8 b3)
@@ -135,11 +335,11 @@ template <unsigned N> void igs_bitswap_device::set_m3_bits(u8 b0, u8 b1, u8 b2,
m_m3_bits[N][3] = b3;
#if 0
- printf("igs_bitswap: INIT m3_bits[%x] =", m3);
+ printf("igs_bitswap: INIT m3_bits[%x] =", N);
for (int i = 0; i < 4; ++i)
{
- u8 bit = m_m3_bits[m3][i];
- printf(" %c%d", (bit & 0x80) ? '~' : ' ', (bit & 0x80) ? (bit ^ 0xff) : bit);
+ u8 bit = m_m3_bits[N][i];
+ printf(" %c%d", BIT(bit, 7) ? '~' : ' ', BIT(bit, 7) ? (bit ^ 0xff) : bit);
}
printf("\n");
#endif
@@ -168,31 +368,12 @@ void igs_bitswap_device::set_val_xor(u16 val_xor)
DEFINE_DEVICE_TYPE(IGS_BITSWAP, igs_bitswap_device, "igs_bitswap", "IGS Bitswap Protection")
-igs_bitswap_device::igs_bitswap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- device_t(mconfig, IGS_BITSWAP, tag, owner, clock),
- m_in_pa_cb(*this),
- m_in_pb_cb(*this),
- m_in_pc_cb(*this),
- m_out_pa_cb(*this),
- m_out_pb_cb(*this),
- m_out_pc_cb(*this),
- m_out_pd_cb(*this)
-{
-}
+igs_bitswap_device::igs_bitswap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, IGS_BITSWAP, tag, owner, clock)
+{ }
void igs_bitswap_device::device_start()
{
- // resolve callbacks
- m_in_pa_cb.resolve();
- m_in_pb_cb.resolve();
- m_in_pc_cb.resolve();
- m_out_pa_cb.resolve();
- m_out_pb_cb.resolve();
- m_out_pc_cb.resolve();
- m_out_pd_cb.resolve();
-
- // register for save states
- save_item(NAME(m_address));
save_item(NAME(m_m3));
save_item(NAME(m_mf));
save_item(NAME(m_val));
@@ -201,197 +382,90 @@ void igs_bitswap_device::device_start()
void igs_bitswap_device::device_reset()
{
- m_address = m_m3 = m_mf = 0;
+ m_m3 = m_mf = 0;
m_val = m_word = 0;
}
-void igs_bitswap_device::address_w(u8 data)
+u8 igs_bitswap_device::result_r()
{
- m_address = data;
+ u8 res = bitswap<8>(m_val, 5, 2, 9, 7, 10, 13, 12, 15);
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: read bitswap - val %04x -> %02x\n", machine().describe_context(), m_val, res);
+ return res;
}
-void igs_bitswap_device::data_w(u8 data)
+void igs_bitswap_device::word_w(u8 data)
{
- switch (m_address)
- {
- case 0x00:
- if (!m_out_pa_cb.isnull())
- {
- m_out_pa_cb(data);
- return;
- }
- break;
- case 0x01:
- if (!m_out_pb_cb.isnull())
- {
- m_out_pb_cb(data);
- return;
- }
- break;
- case 0x02:
- if (!m_out_pc_cb.isnull())
- {
- m_out_pc_cb(data);
- return;
- }
- break;
- case 0x03:
- if (!m_out_pd_cb.isnull())
- {
- m_out_pd_cb(data);
- return;
- }
- break;
-
- case 0x40: // word
- {
- m_word = (m_word << 8) | data;
- logerror("%s: word = %02x\n", machine().describe_context(), m_word);
- return;
- }
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- // same value as address 0x40
- return;
-
- case 0x48: // mode_f
- {
- m_mf = 0;
- if ((m_word & 0x0f00) != 0x0a00) m_mf |= 0x08;
- if ((m_word & 0xf000) != 0x9000) m_mf |= 0x04;
- if ((m_word & 0x000f) != 0x0006) m_mf |= 0x02;
- if ((m_word & 0x00f0) != 0x0090) m_mf |= 0x01;
-
- logerror("%s: mode_f = %x (word = %04x)\n", machine().describe_context(), m_mf, m_word);
- return;
- }
-
- case 0x50: // mode_3
- {
- m_m3 = 0;
- if ((m_word & 0x000f) != 0x0003) m_m3 |= 0x02;
- if ((m_word & 0x00f0) != 0x0050) m_m3 |= 0x01;
-
- logerror("%s: mode_3 = %x (word = %04x)\n", machine().describe_context(), m_m3, m_word);
- return;
- }
-
- case 0x80: // do bitswap
- case 0x81:
- case 0x82:
- case 0x83:
- case 0x84:
- case 0x85:
- case 0x86:
- case 0x87:
- {
- u16 x = m_val;
-
- // bits 1-15 come from inverting some bits, xor-ing 4 bits (they change per game) with the mf bits, then shifting to the left
- m_val ^= m_val_xor;
- for (int i = 0; i < 4; ++i)
- m_val ^= BIT(m_mf, i) << m_mf_bits[i];
- m_val <<= 1;
-
- // bit 0 is the xor of 4 bits from val (some inverted). The 4 bits are picked based on m3 (and they change per game)
- u16 bit0 = 0;
- for (int i = 0; i < 4; ++i)
- {
- u8 bit = m_m3_bits[m_m3][i];
- bit0 ^= (bit & 0x80) ? (BIT(x, bit ^ 0xff) ^ 1) : BIT(x, bit);
- }
+ m_word = (m_word << 8) | data;
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: word = %02x\n", machine().describe_context(), m_word);
+}
- // bit 0 is further xor'd with bit x of the data written to this address (8x)
- u16 xor0 = BIT(data, m_address & 7);
- m_val |= bit0 ^ xor0;
+void igs_bitswap_device::mode_f_w(u8 data)
+{
+ m_mf = 0;
+ if ((m_word & 0x0f00) != 0x0a00) m_mf |= 0x08;
+ if ((m_word & 0xf000) != 0x9000) m_mf |= 0x04;
+ if ((m_word & 0x000f) != 0x0006) m_mf |= 0x02;
+ if ((m_word & 0x00f0) != 0x0090) m_mf |= 0x01;
- logerror("%s: exec bitswap on port %02x = %02x - mode_3 %02x, mode_f %02x, bit0 %x, xor0 %x, val %04x -> %04x\n", machine().describe_context(), m_address, data, m_m3, m_mf, bit0, xor0, x, m_val);
- return;
- }
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: mode_f = %x (word = %04x)\n", machine().describe_context(), m_mf, m_word);
+}
- case 0xa0: // reset
- {
- logerror("%s: reset bitswap - val %04x -> 0\n", machine().describe_context(), m_val);
- m_val = 0;
- return;
- }
- }
+void igs_bitswap_device::mode_3_w(u8 data)
+{
+ m_m3 = 0;
+ if ((m_word & 0x000f) != 0x0003) m_m3 |= 0x02;
+ if ((m_word & 0x00f0) != 0x0050) m_m3 |= 0x01;
- logerror("%s: warning, writing to address %02x = %02x\n", machine().describe_context(), m_address, data);
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: mode_3 = %x (word = %04x)\n", machine().describe_context(), m_m3, m_word);
}
-u8 igs_bitswap_device::data_r()
+void igs_bitswap_device::do_bitswap_w(offs_t offset, u8 data)
{
- switch (m_address)
- {
- case 0x00:
- if (!m_in_pa_cb.isnull())
- return m_in_pa_cb();
- break;
- case 0x01:
- if (!m_in_pb_cb.isnull())
- return m_in_pb_cb();
- break;
- case 0x02:
- if (!m_in_pc_cb.isnull())
- return m_in_pc_cb();
- break;
+ u16 x = m_val;
- case 0x03: // result
- {
- u8 res = bitswap<16>(m_val, 0,0,0,0,0,0,0,0, 5,2,9,7,10,13,12,15) & 0xff;
- logerror("%s: read bitswap - val %04x -> %02x\n", machine().describe_context(), m_val, res);
- return res;
- }
+ // bits 1-15 come from inverting some bits, xor-ing 4 bits (they change per game) with the mf bits, then shifting to the left
+ m_val ^= m_val_xor;
+ for (int i = 0; i < 4; ++i)
+ m_val ^= BIT(m_mf, i) << m_mf_bits[i];
+ m_val <<= 1;
- case 0x20: return 0x49; // 'I'
- case 0x21: return 0x47; // 'G'
- case 0x22: return 0x53; // 'S'
-
- case 0x24: return 0x41;
- case 0x25: return 0x41;
- case 0x26: return 0x7f;
- case 0x27: return 0x41;
- case 0x28: return 0x41;
-
- case 0x2a: return 0x3e;
- case 0x2b: return 0x41;
- case 0x2c: return 0x49;
- case 0x2d: return 0xf9;
- case 0x2e: return 0x0a;
-
- case 0x30: return 0x26;
- case 0x31: return 0x49;
- case 0x32: return 0x49;
- case 0x33: return 0x49;
- case 0x34: return 0x32;
+ // bit 0 is the xor of 4 bits from val (some inverted). The 4 bits are picked based on m3 (and they change per game)
+ u16 bit0 = 0;
+ for (int i = 0; i < 4; ++i)
+ {
+ u8 bit = m_m3_bits[m_m3][i];
+ bit0 ^= BIT(bit, 7) ? (BIT(x, bit ^ 0xff) ^ 1) : BIT(x, bit);
}
- logerror("%s: warning, reading with address = %02x\n", machine().describe_context(), m_address);
- return 0xff;
+ // bit 0 is further xor'd with bit x of the data written to this address (8x)
+ u16 xor0 = BIT(data, offset & 7);
+ m_val |= bit0 ^ xor0;
+
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: exec bitswap on port %02x = %02x - mode_3 %02x, mode_f %02x, bit0 %x, xor0 %x, val %04x -> %04x\n", machine().describe_context(), offset, data, m_m3, m_mf, bit0, xor0, x, m_val);
+ return;
}
+void igs_bitswap_device::reset_w(u8 data)
+{
+ LOGMASKED(LOG_PROT_BITSWAP, "%s: reset bitswap - val %04x -> 0\n", machine().describe_context(), m_val);
+ m_val = 0;
+}
/***************************************************************************
---- IGS Inc/Dec Protection ----
- The chip holds an internal 8-bit (or less) value. It is manipulated by issuing commands,
+ The chip holds an internal 4-bit value. It is manipulated by issuing commands,
where each command is assigned a specific address range, and is triggered
by writing to that range. Possible commands:
- - INC: increment value
- - DEC: decrement value
- - RESET: value = 0
+ - [offset 0] RESET: value = 0
+ - [offset 1] DEC: decrement value
+ - [offset 3] INC: increment value
The protection value is read from an additional address range:
- - READ: read bitswap(value). Only 4 bits are checked.
+ - [offset 5] READ: read bitswap(value). Only 4 bits are checked (0-32-1--, i.e. mask $B4)
***************************************************************************/
@@ -400,10 +474,10 @@ class igs_incdec_device : public device_t
public:
igs_incdec_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- void reset_w(u8 data = 0);
- void inc_w(u8 data = 0);
- void dec_w(u8 data = 0);
- u8 val_r();
+ u8 result_r();
+ void reset_w(u8 data);
+ void inc_w(u8 data);
+ void dec_w(u8 data);
protected:
virtual void device_start() override;
@@ -413,110 +487,182 @@ private:
u8 m_val = 0;
};
+u8 igs_incdec_device::result_r()
+{
+ u8 res = (BIT(m_val, 0) << 7) |
+ (BIT(m_val, 3) << 5) |
+ (BIT(m_val, 2) << 4) |
+ (BIT(m_val, 1) << 2) ;
+
+ LOGMASKED(LOG_PROT_INCDEC, "%s: value read, %02x -> %02x\n", machine().describe_context(), m_val, res);
+ return res;
+}
+
void igs_incdec_device::reset_w(u8 data)
{
m_val = 0x00;
- logerror("%s: reset -> %02x\n", machine().describe_context(), m_val);
+ LOGMASKED(LOG_PROT_INCDEC, "%s: reset -> %02x\n", machine().describe_context(), m_val);
}
void igs_incdec_device::inc_w(u8 data)
{
m_val++;
- logerror("%s: inc -> %02x\n", machine().describe_context(), m_val);
+ LOGMASKED(LOG_PROT_INCDEC, "%s: inc -> %02x\n", machine().describe_context(), m_val);
}
void igs_incdec_device::dec_w(u8 data)
{
m_val--;
- logerror("%s: dec -> %02x\n", machine().describe_context(), m_val);
+ LOGMASKED(LOG_PROT_INCDEC, "%s: dec -> %02x\n", machine().describe_context(), m_val);
+}
+
+DEFINE_DEVICE_TYPE(IGS_INCDEC, igs_incdec_device, "igs_incdec", "IGS Inc/Dec Protection")
+
+igs_incdec_device::igs_incdec_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, IGS_INCDEC, tag, owner, clock)
+{ }
+
+void igs_incdec_device::device_start()
+{
+ save_item(NAME(m_val));
+}
+
+void igs_incdec_device::device_reset()
+{
+ m_val = 0;
}
-u8 igs_incdec_device::val_r()
+/***************************************************************************
+
+ ---- IGS Inc Protection ----
+
+***************************************************************************/
+
+class igs_inc_device : public device_t
+{
+public:
+ igs_inc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ u8 result_r();
+ void reset_w(u8 data);
+ void inc_w(u8 data);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ u8 m_val = 0;
+};
+
+u8 igs_inc_device::result_r()
{
- u8 res = (BIT(m_val, 0) << 7) |
- (BIT(m_val, 3) << 5) |
- (BIT(m_val, 2) << 4) |
- (BIT(m_val, 1) << 2) ;
+ const u8 res = (BIT(~m_val, 0) | (BIT(m_val, 1) & BIT(m_val, 2))) << 5;
- logerror("%s: value read, %02x -> %02x\n", machine().describe_context(), m_val, res);
+ LOGMASKED(LOG_PROT_INC, "%s: value read, %02x -> %02x\n", machine().describe_context(), m_val, res);
return res;
}
-DEFINE_DEVICE_TYPE(IGS_INCDEC, igs_incdec_device, "igs_incdec", "IGS Inc/Dec Protection")
+void igs_inc_device::reset_w(u8 data)
+{
+ m_val = 0x00;
+ LOGMASKED(LOG_PROT_INC, "%s: reset -> %02x\n", machine().describe_context(), m_val);
+}
-igs_incdec_device::igs_incdec_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- device_t(mconfig, IGS_INCDEC, tag, owner, clock)
+void igs_inc_device::inc_w(u8 data)
{
+ m_val++;
+ LOGMASKED(LOG_PROT_INC, "%s: inc -> %02x\n", machine().describe_context(), m_val);
}
-void igs_incdec_device::device_start()
+DEFINE_DEVICE_TYPE(IGS_INC, igs_inc_device, "igs_inc", "IGS Inc Protection")
+
+igs_inc_device::igs_inc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, IGS_INC, tag, owner, clock)
+{ }
+
+void igs_inc_device::device_start()
{
- // register for save states
save_item(NAME(m_val));
}
-void igs_incdec_device::device_reset()
+void igs_inc_device::device_reset()
{
m_val = 0;
}
+namespace {
+
// igs017_state
class igs017_state : public driver_device
{
public:
- igs017_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_remap_addr(-1),
- m_maincpu(*this, "maincpu"),
- m_oki(*this, "oki"),
- m_hopperdev(*this, "hopper"),
- m_igs025(*this,"igs025"),
- m_igs022(*this,"igs022"),
- m_screen(*this, "screen"),
- m_decrypted_opcodes(*this, "decrypted_opcodes"),
- m_igs017_igs031(*this, "igs017_igs031"),
- m_igs_bitswap(*this, "igs_bitswap"),
- m_igs_incdec(*this, "igs_incdec"),
- m_io_coins(*this, "COINS"),
- m_io_buttons(*this, "BUTTONS"),
- m_io_player1(*this, "PLAYER1"),
- m_io_player2(*this, "PLAYER2"),
- m_io_hopper(*this, "HOPPER"),
- m_io_key(*this, "KEY%u", 0U),
- m_io_dsw(*this, "DSW%u", 1U)
+ igs017_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_remap_addr(-1)
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_igs017_igs031(*this, "igs017_igs031")
+ , m_oki(*this, "oki")
+ , m_igs_mux(*this, "igs_mux")
+ , m_ppi(*this, "ppi8255")
+ // Optional shared pointers
+ , m_decrypted_opcodes(*this, "decrypted_opcodes")
+ // Optional devices
+ , m_hopper(*this, "hopper")
+ , m_igs_bitswap(*this, "igs_bitswap")
+ , m_igs_string(*this, "igs_string")
+ , m_igs_incdec(*this, "igs_incdec")
+ , m_igs_inc(*this, "igs_inc")
+ , m_igs022(*this,"igs022")
+ // Optional I/O
+ , m_io_coins(*this, "COINS")
+ , m_io_joy(*this, "JOY")
+ , m_io_key(*this, "KEY%u", 0U)
+ , m_io_dsw(*this, "DSW%u", 1U)
+ , m_lamps(*this, "lamp%u", 1U)
{ }
- void mgcs(machine_config &config);
- void mgdha(machine_config &config);
- void tjsb(machine_config &config);
- void lhzb2a(machine_config &config);
- void slqz2(machine_config &config);
+ // Construct
+ void base_machine_oki(machine_config &config, const XTAL &xtal_oki);
+ // Z180
+ void cpoker2(machine_config &config);
+ void genius6(machine_config &config);
+ void happyskl(machine_config &config);
void iqblocka(machine_config &config);
void iqblockf(machine_config &config);
- void genius6(machine_config &config);
- void lhzb2(machine_config &config);
- void starzan(machine_config &config);
void spkrform(machine_config &config);
- void sdmg2(machine_config &config);
+ void starzan(machine_config &config);
void tarzan(machine_config &config);
+ void tjsb(machine_config &config);
+ // 68000
+ void lhzb2(machine_config &config);
+ void lhzb2a(machine_config &config);
+ void mgcs(machine_config &config);
+ void mgdh(machine_config &config);
+ void mgdha(machine_config &config);
+ void sdmg2(machine_config &config);
+ void slqz2(machine_config &config);
+ // Init
+ void init_cpoker2();
+ void init_happyskl();
void init_iqblocka();
- void init_mgdh();
- void init_slqz2();
void init_lhzb2();
- void init_starzan();
+ void init_lhzb2a();
void init_mgcs();
- void init_tjsb();
- void init_spkrform();
+ void init_mgdh();
+ void init_mgdha();
void init_sdmg2();
+ void init_slqz2();
+ void init_spkrform();
+ void init_starzan();
void init_tarzan();
void init_tarzana();
- void init_lhzb2a();
- void init_mgdha();
- void init_happyskl();
- void init_unkigs();
+ void init_tarzanc();
+ void init_tjsb();
protected:
virtual void machine_start() override;
@@ -526,34 +672,35 @@ protected:
private:
int m_remap_addr;
required_device<cpu_device> m_maincpu;
-
- required_device<okim6295_device> m_oki;
- optional_device<ticket_dispenser_device> m_hopperdev;
- optional_device<igs025_device> m_igs025; // Mj Shuang Long Qiang Zhu 2
- optional_device<igs022_device> m_igs022; // Mj Shuang Long Qiang Zhu 2
required_device<screen_device> m_screen;
- optional_shared_ptr<u8> m_decrypted_opcodes;
required_device<igs017_igs031_device> m_igs017_igs031;
+ required_device<okim6295_device> m_oki;
+ required_device<igs_mux_device> m_igs_mux;
+ required_device<i8255_device> m_ppi;
+
+ // Optional shared pointers
+ optional_shared_ptr<u8> m_decrypted_opcodes;
+
+ // Optional devices
+ optional_device<hopper_device> m_hopper;
optional_device<igs_bitswap_device> m_igs_bitswap;
+ optional_device<igs_string_device> m_igs_string;
optional_device<igs_incdec_device> m_igs_incdec;
+ optional_device<igs_inc_device> m_igs_inc;
+ optional_device<igs022_device> m_igs022;
+ // Optional I/O
optional_ioport m_io_coins;
- optional_ioport m_io_buttons;
- optional_ioport m_io_player1;
- optional_ioport m_io_player2;
- optional_ioport m_io_hopper;
+ optional_ioport m_io_joy;
optional_ioport_array<5> m_io_key;
optional_ioport_array<3> m_io_dsw;
- void igs025_to_igs022_callback(void);
+ output_finder<6> m_lamps;
u8 m_input_select;
- u8 m_hopper;
- u16 m_igs_magic;
- u8 m_scramble_data;
-
u8 m_dsw_select;
- u8 m_i8255_portc_mux;
+ u8 m_scramble_data;
+ u8 m_igs022_latch;
// IGS029 protection (communication)
u8 m_igs029_send_data, m_igs029_recv_data;
@@ -562,97 +709,194 @@ private:
// IGS029 protection (mgcs)
u32 m_igs029_mgcs_long;
- void input_select_w(u8 data);
+ void dsw_select_w(u8 data);
+ u8 dsw_r();
+
+ template<u8 WarnMask>
+ void input_select_w(u8 data)
+ {
+ m_input_select = data;
- void iqblocka_keyin_w(u8 data);
- void iqblockf_keyout_w(u8 data);
- void iqblocka_remap_addr_w(offs_t offset, u8 data);
+ if (data & WarnMask)
+ logerror("%s: warning, unknown bits written in input_select_w = %02x\n", machine().describe_context(), data);
+ }
- u16 mgcs_palette_bitswap(u16 bgr) const;
+ template<u8 Bit, u8 WarnMask>
+ void oki_sound_bank_w(u8 data)
+ {
+ m_oki->set_rom_bank(BIT(data, Bit));
+
+ if (data & WarnMask)
+ logerror("%s: warning, unknown bits written in oki_sound_bank_w = %02x\n", machine().describe_context(), data);
+ }
+
+ template<u8 Bit, u8 WarnMask>
+ void hopper_motor_w(u8 data)
+ {
+ m_hopper->motor_w(BIT(data, Bit));
+
+ if (data & WarnMask)
+ logerror("%s: warning, unknown bits written in hopper_motor_w = %02x\n", machine().describe_context(), data);
+ }
+
+ template<u8 Bit, u8 WarnMask, int Counter>
+ void counter_w(u8 data)
+ {
+ machine().bookkeeping().coin_counter_w(Counter, BIT(data, Bit));
+// popmessage("COUNTER %d: %02X", Counter, data);
+ if (data & WarnMask)
+ logerror("%s: warning, unknown bits written in counter_w = %02x\n", machine().describe_context(), data);
+ }
+
+ template<u8 Bit, u8 WarnMask>
+ void igs022_execute_w(u8 data)
+ {
+ if (!BIT(m_igs022_latch, Bit) && BIT(data, Bit)) // 0 -> 1 executes
+ {
+ m_igs022->handle_command();
+
+ const u8 new_scramble_data = (m_scramble_data + 1) & 0x7f;
+ LOGMASKED(LOG_PROT_IGS022, "%s: IGS022 scrambled data %02x -> %02x\n", machine().describe_context(), m_scramble_data, new_scramble_data);
+ m_scramble_data = new_scramble_data;
+ }
+
+ if (data & WarnMask)
+ logerror("%s: warning, unknown bits written in igs022_execute_w = %02x\n", machine().describe_context(), data);
+
+ m_igs022_latch = data;
+ }
+
+ // Palette
u16 lhzb2a_palette_bitswap(u16 bgr) const;
- u16 tjsb_palette_bitswap(u16 bgr) const;
+ u16 mgcs_palette_bitswap(u16 bgr) const;
u16 slqz2_palette_bitswap(u16 bgr) const;
+ u16 tarzan_palette_bitswap(u16 bgr) const;
+ u16 tjsb_palette_bitswap(u16 bgr) const;
- void magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 magic_r();
-
- void mgcs_magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 mgcs_magic_r();
+ // Game Specific I/O
+ void incdec_remap_addr_w(offs_t offset, u8 data);
- u8 sdmg2_keys_r();
- void sdmg2_magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 sdmg2_magic_r();
+ void cpoker2_lamps_sound_w(u8 data);
- u8 mgdh_keys_r();
- void mgdha_magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 mgdha_magic_r();
+ void happyskl_lamps_sound_w(u8 data);
- void tjsb_output_w(u8 data);
- u8 tjsb_input_r();
- u8 spkrform_input_r();
+ u8 lhzb2_keys_r();
+ void lhzb2_keys_hopper_w(u8 data);
+ u8 lhzb2_scramble_data_r();
+ void lhzb2_igs022_execute_w(u8 data);
- void lhzb2a_input_select_w(offs_t offset, u16 data, u16 mem_mask = ~0);
+ void lhzb2a_keys_hopper_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u16 lhzb2a_input_r(offs_t offset);
void lhzb2a_remap_addr_w(address_space &space, u16 data);
- void lhzb2_magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 lhzb2_magic_r();
+ u8 mgcs_keys_joy_r();
+ void mgcs_keys_hopper_igs029_w(u8 data);
+ u8 mgcs_scramble_data_r();
+ void mgcs_scramble_data_w(u8 data);
+ u8 mgcs_igs029_data_r();
+ void mgcs_igs029_data_w(u8 data);
- void slqz2_magic_w(offs_t offset, u16 data, u16 mem_mask = ~0);
- u16 slqz2_magic_r();
- u8 mgcs_keys_r();
+ u8 mgdh_keys_r();
+ void mgdh_keys_hopper_w(u8 data);
+ void mgdh_counter_w(u8 data);
+
+ u8 sdmg2_keys_joy_r();
+ void sdmg2_keys_hopper_w(u8 data);
+
+ void slqz2_sound_hopper_w(u8 data);
+ u8 slqz2_scramble_data_r();
- u8 i8255_port_c_mux_r(); // starzan, happyskl, unkigs (maybe tarzanc and clones, too)
+ void starzan_counter_w(u8 data);
+ void starzan_lamps_sound_w(u8 data);
- DECLARE_MACHINE_RESET(iqblocka);
- DECLARE_MACHINE_RESET(mgcs);
+ u8 tarzan_keys_joy_r();
+ void tarzan_counter_w(u8 data);
+ void tarzan_dsw_sound_w(u8 data);
+ void tarzan_incdec_remap_addr_w(offs_t offset, u8 data);
+
+ // Machine
DECLARE_MACHINE_RESET(lhzb2a);
+
TIMER_DEVICE_CALLBACK_MEMBER(iqblocka_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(mgcs_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(mgdh_interrupt);
+ // Decrypt
void decrypt_program_rom(int mask, int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0);
- void tjsb_decrypt_sprites();
+
+ void lhzb2_decrypt_sprites();
+ void lhzb2_decrypt_tiles();
void mgcs_decrypt_program_rom();
void mgcs_decrypt_tiles();
void mgcs_flip_sprites();
- void mgcs_patch_rom();
void mgcs_igs029_run();
- void tarzan_decrypt_tiles();
- void tarzan_decrypt_program_rom();
- void tarzana_decrypt_program_rom();
- void starzan_decrypt_program_rom();
- void lhzb2_patch_rom();
- void lhzb2_decrypt_tiles();
- void lhzb2_decrypt_sprites();
- void slqz2_patch_rom();
void slqz2_decrypt_tiles();
void spkrform_decrypt_sprites();
+ void starzan_decrypt_program_rom();
+ void starzan_decrypt_sprites();
+ void tarzan_decrypt_program_rom();
+ void tarzan_decrypt_sprites(size_t max_size);
+ void tarzan_decrypt_tiles(int address_xor);
+ void tarzana_decrypt_program_rom();
+ void tjsb_decrypt_sprites();
+ // ROM Patches
+// void lhzb2_patch_rom();
+// void mgcs_patch_rom();
+// void slqz2_patch_rom();
+ void mgdh_patch_rom();
+ void spkrform_patch_rom();
+
+ // Memory maps
void decrypted_opcodes_map(address_map &map);
+
+ void igs_bitswap_mux_map(address_map &map);
+ void igs_fixed_data_mux_map(address_map &map);
+ void igs_string_mux_map(address_map &map);
+
+ void cpoker2_io(address_map &map);
+ void cpoker2_map(address_map &map);
+ void cpoker2_mux_map(address_map &map);
+ void happyskl_io(address_map &map);
+ void happyskl_mux_map(address_map &map);
void iqblocka_io(address_map &map);
void iqblocka_map(address_map &map);
+ void iqblocka_mux_map(address_map &map);
+ void iqblockf_mux_map(address_map &map);
void lhzb2_map(address_map &map);
+ void lhzb2_mux_map(address_map &map);
void lhzb2a_map(address_map &map);
+ void lhzb2a_mux_map(address_map &map);
void mgcs_map(address_map &map);
- void mgdha_map(address_map &map);
+ void mgcs_mux_map(address_map &map);
+ void mgdh_mux_map(address_map &map);
+ void mgdh_map(address_map &map);
+ void mgdha_mux_map(address_map &map);
void sdmg2_map(address_map &map);
+ void sdmg2_mux_map(address_map &map);
void slqz2_map(address_map &map);
+ void slqz2_mux_map(address_map &map);
void spkrform_io(address_map &map);
- void spkrform_map(address_map &map);
+ void spkrform_mux_map(address_map &map);
+ void starzan_io(address_map &map);
+ void starzan_mux_map(address_map &map);
+ void tarzan_io(address_map &map);
+ void tarzan_mux_map(address_map &map);
void tjsb_io(address_map &map);
void tjsb_map(address_map &map);
+ void tjsb_mux_map(address_map &map);
};
void igs017_state::machine_start()
{
+ m_lamps.resolve();
+
save_item(NAME(m_remap_addr));
save_item(NAME(m_input_select));
- save_item(NAME(m_hopper));
- save_item(NAME(m_igs_magic));
- save_item(NAME(m_scramble_data));
save_item(NAME(m_dsw_select));
- save_item(NAME(m_i8255_portc_mux));
+ save_item(NAME(m_scramble_data));
+ save_item(NAME(m_igs022_latch));
+
save_item(NAME(m_igs029_send_data));
save_item(NAME(m_igs029_recv_data));
save_item(NAME(m_igs029_send_buf));
@@ -664,7 +908,25 @@ void igs017_state::machine_start()
void igs017_state::machine_reset()
{
+ m_input_select = m_dsw_select = 0xff;
+ m_scramble_data = 0;
+
m_igs029_send_len = m_igs029_recv_len = 0;
+ m_igs029_mgcs_long = 0;
+}
+
+void igs017_state::dsw_select_w(u8 data)
+{
+ m_dsw_select = data;
+}
+
+u8 igs017_state::dsw_r()
+{
+ u8 ret = 0xff;
+ if (!BIT(m_dsw_select, 0)) ret &= m_io_dsw[0]->read();
+ if (!BIT(m_dsw_select, 1)) ret &= m_io_dsw[1]->read();
+ if (!BIT(m_dsw_select, 2)) ret &= m_io_dsw[2]->read();
+ return ret;
}
/***************************************************************************
@@ -686,13 +948,11 @@ u16 igs017_state::mgcs_palette_bitswap(u16 bgr) const
u16 igs017_state::lhzb2a_palette_bitswap(u16 bgr) const
{
-// bgr = ((bgr & 0xff00) >> 8) | ((bgr & 0x00ff) << 8);
return bitswap<16>(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
}
u16 igs017_state::tjsb_palette_bitswap(u16 bgr) const
{
- // bitswap
return bitswap<16>(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
}
@@ -701,22 +961,32 @@ u16 igs017_state::slqz2_palette_bitswap(u16 bgr) const
return bitswap<16>(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
}
-
+u16 igs017_state::tarzan_palette_bitswap(u16 bgr) const
+{
+ return bitswap<16>(bgr, 15, 0,1,2,3,4, 10,11,12,13,14, 5,6,7,8,9);
+}
/***************************************************************************
Decryption
***************************************************************************/
+[[maybe_unused]] void save_decrypted_rom(const u8 * const rom, int rom_size)
+{
+ FILE *f = fopen("igs017_decrypted.bin", "wb");
+ fwrite(rom, 1, rom_size, f);
+ fclose(f);
+}
+
void igs017_state::decrypt_program_rom(int mask, int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0)
{
- int length = memregion("maincpu")->bytes();
- u8 *rom = memregion("maincpu")->base();
- std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(length);
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
// decrypt the program ROM
// XOR layer
- for (int i = 0; i < length; i++)
+ for (int i = 0; i < rom_size; i++)
{
if (i & 0x2000)
{
@@ -746,23 +1016,18 @@ void igs017_state::decrypt_program_rom(int mask, int a7, int a6, int a5, int a4,
}
}
- memcpy(tmp.get(),rom,length);
+ memcpy(tmp.get(),rom,rom_size);
// address lines swap
- for (int i = 0; i < length; i++)
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xff) | bitswap<8>(i,a7,a6,a5,a4,a3,a2,a1,a0);
rom[i] = tmp[addr];
}
-#if 0
- FILE *f = fopen("igs017_decrypted.bin", "wb");
- fwrite(rom, 1, length, f);
- fclose(f);
-#endif
+// save_decrypted_rom(rom, rom_size);
}
-
// iqblocka, iqblockf, genius6
void igs017_state::init_iqblocka()
@@ -774,22 +1039,22 @@ void igs017_state::init_iqblocka()
void igs017_state::tjsb_decrypt_sprites()
{
- int length = memregion("igs017_igs031:sprites")->bytes();
- u8 *rom = memregion("igs017_igs031:sprites")->base();
- std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(length);
+ const int rom_size = memregion("igs017_igs031:sprites")->bytes();
+ u8 * const rom = memregion("igs017_igs031:sprites")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
// address lines swap
- memcpy(tmp.get(), rom, length);
- for (int i = 0; i < length; i++)
+ memcpy(tmp.get(), rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xff) | bitswap<8>(i,7,6,5,2,1,4,3,0);
rom[i] = tmp[addr];
}
// data lines swap
- for (int i = 0; i < length; i += 2)
+ for (int i = 0; i < rom_size; i += 2)
{
- u16 data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
+ u16 data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
data = bitswap<16>(data, 15, 14,13,12,11,10, 9,1,7,6,5, 4,3,2,8,0);
rom[i+0] = data;
rom[i+1] = data >> 8;
@@ -801,6 +1066,8 @@ void igs017_state::init_tjsb()
decrypt_program_rom(0x05, 7, 6, 3, 2, 5, 4, 1, 0);
tjsb_decrypt_sprites();
+
+// m_igs_string->dump("tjsb_string.key", 0x1d24a, 0x1db4, false);
}
@@ -808,15 +1075,14 @@ void igs017_state::init_tjsb()
void igs017_state::mgcs_decrypt_program_rom()
{
- u16 *src = (u16 *)memregion("maincpu")->base();
-
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
- for (int i=0; i<rom_size/2; i++)
+ for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
- /* bit 0 xor layer */
+ // bit 0 xor layer
if (i & 0x20/2)
{
@@ -834,7 +1100,7 @@ void igs017_state::mgcs_decrypt_program_rom()
}
}
- /* bit 8 xor layer */
+ // bit 8 xor layer
if ((i & 0x2000/2) || !(i & 0x80/2))
{
@@ -851,18 +1117,18 @@ void igs017_state::mgcs_decrypt_program_rom()
x ^= 0x0100;
}
- src[i] = x;
+ rom[i] = x;
}
}
void igs017_state::mgcs_decrypt_tiles()
{
- int length = memregion("igs017_igs031:tilemaps")->bytes();
- u8 *rom = memregion("igs017_igs031:tilemaps")->base();
- std::vector<u8> tmp(length);
+ const int rom_size = memregion("igs017_igs031:tilemaps")->bytes();
+ u8 * const rom = memregion("igs017_igs031:tilemaps")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
- memcpy(&tmp[0],rom,length);
- for (int i = 0; i < length; i++)
+ memcpy(&tmp[0], rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,10,6,7,8,9,5,4,3,2,1,0);
rom[i^1] = bitswap<8>(tmp[addr],0,1,2,3,4,5,6,7);
@@ -871,10 +1137,10 @@ void igs017_state::mgcs_decrypt_tiles()
void igs017_state::mgcs_flip_sprites()
{
- int length = memregion("igs017_igs031:sprites")->bytes();
- u8 *rom = memregion("igs017_igs031:sprites")->base();
+ const int rom_size = memregion("igs017_igs031:sprites")->bytes();
+ u8 * const rom = memregion("igs017_igs031:sprites")->base();
- for (int i = 0; i < length; i+=2)
+ for (int i = 0; i < rom_size; i+=2)
{
u16 pixels = (rom[i+1] << 8) | rom[i+0];
@@ -889,50 +1155,54 @@ void igs017_state::mgcs_flip_sprites()
}
}
+#if 0
void igs017_state::mgcs_patch_rom()
{
-// u16 *rom = (u16 *)memregion("maincpu")->base();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
-// rom[0x20666/2] = 0x601e; // 020666: 671E beq $20686 (rom check)
+ rom[0x20666/2] = 0x601e; // 020666: 671E beq $20686 (rom check)
// IGS029 send command
-// rom[0x4dfce/2] = 0x6010; // 04DFCE: 6610 bne $4dfe0
-// rom[0x4e00e/2] = 0x4e75;
-// rom[0x4e036/2] = 0x6006; // 04E036: 6306 bls $4e03e
+ rom[0x4dfce/2] = 0x6010; // 04DFCE: 6610 bne $4dfe0
+ rom[0x4e00e/2] = 0x4e75;
+ rom[0x4e036/2] = 0x6006; // 04E036: 6306 bls $4e03e
}
+#endif
void igs017_state::init_mgcs()
{
mgcs_decrypt_program_rom();
- mgcs_patch_rom();
+// mgcs_patch_rom();
mgcs_decrypt_tiles();
mgcs_flip_sprites();
+
+// m_igs_string->dump("mgcs_string.key", 0x1424, 0x1338, true);
}
// tarzan, tarzana
-void igs017_state::tarzan_decrypt_tiles()
+void igs017_state::tarzan_decrypt_tiles(int address_xor)
{
- int length = memregion("igs017_igs031:tilemaps")->bytes();
- u8 *rom = memregion("igs017_igs031:tilemaps")->base();
- std::vector<u8> tmp(length);
+ const int rom_size = memregion("igs017_igs031:tilemaps")->bytes();
+ u8 * const rom = memregion("igs017_igs031:tilemaps")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
- memcpy(&tmp[0],rom,length);
- for (int i = 0; i < length; i++)
+ memcpy(&tmp[0], rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
- int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,7,8,6,10,9,5,4,3,2,1,0);
+ int addr = (i & ~0xffff) | (bitswap<16>(i,15,14,13,12,11, 7,8,6,10,9, 5,4,3,2,1,0) ^ address_xor);
rom[i] = bitswap<8>(tmp[addr],0,1,2,3,4,5,6,7);
}
}
-// decryption should be good
void igs017_state::tarzan_decrypt_program_rom()
{
- u8 *rom = memregion("maincpu")->base();
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -945,7 +1215,7 @@ void igs017_state::tarzan_decrypt_program_rom()
m_decrypted_opcodes[i] = x;
}
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -958,17 +1228,21 @@ void igs017_state::tarzan_decrypt_program_rom()
}
}
-void igs017_state::init_tarzan()
+void igs017_state::init_tarzanc()
{
tarzan_decrypt_program_rom();
- tarzan_decrypt_tiles();
+ tarzan_decrypt_tiles(1);
+ tarzan_decrypt_sprites(0);
+
+// m_igs_string->dump("tarzan_string.key", 0xa98a, 0xab01, false); // tarzan / tarzanc (same program rom)
}
void igs017_state::tarzana_decrypt_program_rom()
{
- u8 *rom = memregion("maincpu")->base();
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -982,7 +1256,7 @@ void igs017_state::tarzana_decrypt_program_rom()
m_decrypted_opcodes[i] = x;
}
- for (int i = 0; i < 0x40000; i++) // by iq_132
+ for (int i = 0; i < rom_size; i++) // by iq_132
{
u8 x = rom[i];
@@ -990,16 +1264,29 @@ void igs017_state::tarzana_decrypt_program_rom()
if ((i & 0x02180) == 0x00000) x ^= 0x01;
if ((i & 0x001a0) != 0x00020) x ^= 0x20;
if ((i & 0x00260) != 0x00200) x ^= 0x40;
- if ((i & 0x00060) != 0x00000 && (i & 0x00260) != 0x00240) x ^= 0x80;
+ if ((i & 0x00060) != 0x00000 && (i & 0x00260) != 0x00240) x ^= 0x80;
rom[i] = x;
}
+
+// save_decrypted_rom(rom, rom_size);
+// save_decrypted_rom(m_decrypted_opcodes, rom_size);
+}
+
+void igs017_state::init_tarzan()
+{
+ tarzan_decrypt_program_rom();
+ tarzan_decrypt_tiles(0);
+
+// m_igs_string->dump("tarzan_string.key", 0xa98a, 0xab01, false); // tarzan / tarzanc (same program rom)
}
void igs017_state::init_tarzana()
{
tarzana_decrypt_program_rom();
-// tarzana_decrypt_tiles(); // to do when dumped
+ tarzan_decrypt_tiles(0);
+
+// m_igs_string->dump("tarzana_string.key", 0xaa64, 0xabdb, false); // same data as tarzan / tarzanc
}
@@ -1007,9 +1294,10 @@ void igs017_state::init_tarzana()
void igs017_state::starzan_decrypt_program_rom()
{
- u8 *rom = memregion("maincpu")->base();
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -1023,7 +1311,7 @@ void igs017_state::starzan_decrypt_program_rom()
m_decrypted_opcodes[i] = x;
}
- for (int i = 0; i < 0x40000; i++) // by iq_132
+ for (int i = 0; i < rom_size; i++) // by iq_132
{
u8 x = rom[i];
@@ -1043,16 +1331,55 @@ void igs017_state::starzan_decrypt_program_rom()
void igs017_state::init_starzan()
{
starzan_decrypt_program_rom();
- tarzan_decrypt_tiles();
- mgcs_flip_sprites(); // ?
+ tarzan_decrypt_tiles(1);
+ starzan_decrypt_sprites();
+
+// m_igs_string->dump("starzan_string.key", 0xa86f, 0xa966, false);
+}
+
+
+void igs017_state::tarzan_decrypt_sprites(size_t max_size)
+{
+ mgcs_flip_sprites();
+
+ const int rom_size = max_size ? max_size : memregion("igs017_igs031:sprites")->bytes();
+ u8 *rom = memregion("igs017_igs031:sprites")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
+
+ // address lines swap
+ memcpy(tmp.get(), rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
+ {
+ int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13, 9,10,11,12, 5,6,7,8, 4,3,2,1,0);
+ rom[i] = tmp[addr];
+ }
}
+void igs017_state::starzan_decrypt_sprites()
+{
+ tarzan_decrypt_sprites(0x200000);
+
+ // Overlay rom:
+
+ const int rom_size = 0x80000;
+ u8 *rom = memregion("igs017_igs031:sprites")->base() + 0x200000;
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
+
+ // address lines swap
+ memcpy(tmp.get(), rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
+ {
+ int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,10,9, 6,5, 8,7, 1,2,3,4, 0);
+ rom[i] = tmp[addr];
+ }
+}
void igs017_state::init_happyskl()
{
- u8 *rom = memregion("maincpu")->base();
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -1066,7 +1393,7 @@ void igs017_state::init_happyskl()
m_decrypted_opcodes[i] = x;
}
- for (int i = 0; i < 0x40000; i++) // adapted from starzan, seems ok
+ for (int i = 0; i < rom_size; i++) // adapted from starzan
{
u8 x = rom[i];
@@ -1082,15 +1409,17 @@ void igs017_state::init_happyskl()
rom[i] = x;
}
- tarzan_decrypt_tiles(); // enough for chars
+ tarzan_decrypt_tiles(1);
+ starzan_decrypt_sprites();
}
-void igs017_state::init_unkigs()
+void igs017_state::init_cpoker2()
{
- u8 *rom = memregion("maincpu")->base();
+ const int rom_size = memregion("maincpu")->bytes();
+ u8 * const rom = memregion("maincpu")->base();
- for (int i = 0; i < 0x40000; i++)
+ for (int i = 0; i < rom_size; i++)
{
u8 x = rom[i];
@@ -1101,12 +1430,12 @@ void igs017_state::init_unkigs()
if ((i & 0x00020) == 0x00020) x ^= 0x80;
if ((i & 0x00260) == 0x00240) x ^= 0x80;
- // this hasn't got split data / opcodes encryption like happyskl, but let's keep the same machine_config for easier testing
- m_decrypted_opcodes[i] = x;
+ // this hasn't got split data / opcodes encryption
rom[i] = x;
}
- tarzan_decrypt_tiles(); // enough for chars
+ tarzan_decrypt_tiles(1);
+ tarzan_decrypt_sprites(0);
}
@@ -1114,13 +1443,14 @@ void igs017_state::init_unkigs()
void igs017_state::init_sdmg2()
{
- u16 *src = (u16 *)memregion("maincpu")->base();
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
- /* bit 0 xor layer */
+ // bit 0 xor layer
if (i & 0x20/2)
{
@@ -1138,7 +1468,7 @@ void igs017_state::init_sdmg2()
}
}
- /* bit 9 xor layer */
+ // bit 9 xor layer
if (i & 0x20000/2)
{
x ^= 0x0200;
@@ -1151,13 +1481,13 @@ void igs017_state::init_sdmg2()
}
}
- /* bit 12 xor layer */
+ // bit 12 xor layer
if (i & 0x20000/2)
{
x ^= 0x1000;
}
- src[i] = x;
+ rom[i] = x;
}
}
@@ -1166,11 +1496,12 @@ void igs017_state::init_sdmg2()
void igs017_state::init_mgdha()
{
- u16 *src = (u16 *)memregion("maincpu")->base();
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
if ((i & 0x20/2) && (i & 0x02/2))
{
@@ -1189,44 +1520,53 @@ void igs017_state::init_mgdha()
if ((i & 0x1000/2) || ((i & 0x4000/2) && (i & 0x40/2) && (i & 0x80/2)) || ((i & 0x2000/2) && (i & 0x400/2)))
x ^= 0x0800;
- src[i] = x;
+ rom[i] = x;
}
mgcs_flip_sprites();
+
+// m_igs_string->dump("mgdh_string.key", 0x7b214, 0x7b128, true); // mgdh, mgdha (0x7c5ba, ???)
+}
+
+void igs017_state::mgdh_patch_rom()
+{
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
+ // game id check
+ rom[0x4ad50/2] = 0x4e71;
}
void igs017_state::init_mgdh()
{
init_mgdha();
- u16 *rom = (u16 *)memregion("maincpu")->base();
-
- // additional protection
- rom[0x4ad50/2] = 0x4e71;
+ mgdh_patch_rom();
}
// lhzb2
+#if 0
void igs017_state::lhzb2_patch_rom()
{
- u16 *rom = (u16 *)memregion("maincpu")->base();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
// Prot. checks:
- rom[0x14786/2] = 0x6044; // 014786: 6744 beq $147cc
+ rom[0x14786/2] = 0x6044; // 014786: 6744 beq $147cc
// ROM check:
- rom[0x0b48a/2] = 0x604e; // 00B48A: 674E beq $b4da
+ rom[0x0b48a/2] = 0x604e; // 00B48A: 674E beq $b4da
}
+#endif
void igs017_state::lhzb2_decrypt_tiles()
{
- int length = memregion("igs017_igs031:tilemaps")->bytes();
- u8 *rom = memregion("igs017_igs031:tilemaps")->base();
- std::vector<u8> tmp(length);
+ const int rom_size = memregion("igs017_igs031:tilemaps")->bytes();
+ u8 * const rom = memregion("igs017_igs031:tilemaps")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
- memcpy(&tmp[0], rom, length);
- for (int i = 0; i < length; i++)
+ memcpy(&tmp[0], rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xffffff) | bitswap<24>(i,23,22,21,20,19,18,17,1,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
rom[i] = tmp[addr];
@@ -1235,42 +1575,38 @@ void igs017_state::lhzb2_decrypt_tiles()
void igs017_state::lhzb2_decrypt_sprites()
{
- int length = memregion("igs017_igs031:sprites")->bytes();
- u8 *rom = memregion("igs017_igs031:sprites")->base();
- std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(length);
+ const int rom_size = memregion("igs017_igs031:sprites")->bytes();
+ u8 * const rom = memregion("igs017_igs031:sprites")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
// address lines swap
- memcpy(tmp.get(), rom, length);
- for (int i = 0; i < length; i++)
+ memcpy(tmp.get(), rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,6,7,10,9,8,11,12,5,4,3,2,1,0);
rom[i] = tmp[addr];
}
// data lines swap
- for (int i = 0; i < length; i+=2)
+ for (int i = 0; i < rom_size; i+=2)
{
- u16 data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
+ u16 data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
data = bitswap<16>(data, 15, 7,6,5,4,3, 2,1,0,14,13, 12,11,10,9,8);
rom[i+0] = data;
rom[i+1] = data >> 8;
}
}
-void igs017_state::igs025_to_igs022_callback(void)
-{
- m_igs022->IGS022_handle_command();
-}
-
void igs017_state::init_lhzb2()
{
- u16 *src = (u16 *) (memregion("maincpu")->base());
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
- /* bit 0 xor layer */
+ // bit 0 xor layer
if (i & 0x20/2)
{
if (i & 0x02/2)
@@ -1287,7 +1623,7 @@ void igs017_state::init_lhzb2()
}
}
- /* bit 13 xor layer */
+ // bit 13 xor layer
if (!(i & 0x1000/2))
{
@@ -1341,18 +1677,15 @@ void igs017_state::init_lhzb2()
}
}
- src[i] = x;
+ rom[i] = x;
}
lhzb2_decrypt_tiles();
lhzb2_decrypt_sprites();
- lhzb2_patch_rom();
- // install and configure protection device(s)
-// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w)));
-// m_igs025->m_kb_source_data = dw3_source_data;
-// m_igs025->m_kb_source_data_offset = 0;
-// m_igs025->m_kb_game_id = 0x00060000;
+// lhzb2_patch_rom();
+
+// m_igs_string->dump("lhzb2_string.key", 0x7b214, 0x7b128, true);
}
@@ -1360,13 +1693,14 @@ void igs017_state::init_lhzb2()
void igs017_state::init_lhzb2a()
{
- u16 *src = (u16 *) (memregion("maincpu")->base());
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
- /* bit 0 xor layer */
+ // bit 0 xor layer
if (i & 0x20/2)
{
if (i & 0x02/2)
@@ -1383,7 +1717,7 @@ void igs017_state::init_lhzb2a()
}
}
- /* bit 5 xor layer */
+ // bit 5 xor layer
if (i & 0x4000/2)
{
@@ -1409,35 +1743,39 @@ void igs017_state::init_lhzb2a()
}
}
- src[i] = x;
+ rom[i] = x;
}
lhzb2_decrypt_tiles();
lhzb2_decrypt_sprites();
+
+// m_igs_string->dump("lhzb2a_string.key", 0x6e11c, 0x6e030, true); // same data as lhzb2
}
// slqz2
+#if 0
void igs017_state::slqz2_patch_rom()
{
- u16 *rom = (u16 *)memregion("maincpu")->base();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
// Prot. checks:
- rom[0x1489c/2] = 0x6044; // 01489C: 6744 beq $148e2
+ rom[0x1489c/2] = 0x6044; // 01489C: 6744 beq $148e2
// ROM check:
- rom[0x0b77a/2] = 0x604e; // 00B77A: 674E beq $b7ca
+ rom[0x0b77a/2] = 0x604e; // 00B77A: 674E beq $b7ca
}
+#endif
void igs017_state::slqz2_decrypt_tiles()
{
- int length = memregion("igs017_igs031:tilemaps")->bytes();
- u8 *rom = memregion("igs017_igs031:tilemaps")->base();
- std::vector<u8> tmp(length);
+ const int rom_size = memregion("igs017_igs031:tilemaps")->bytes();
+ u8 * const rom = memregion("igs017_igs031:tilemaps")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
- memcpy(&tmp[0],rom,length);
- for (int i = 0; i < length; i++)
+ memcpy(&tmp[0], rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr = (i & ~0xff) | bitswap<8>(i,7,4,5,6,3,2,1,0);
rom[i] = tmp[addr];
@@ -1446,13 +1784,14 @@ void igs017_state::slqz2_decrypt_tiles()
void igs017_state::init_slqz2()
{
- u16 *src = (u16 *) (memregion("maincpu")->base());
- int rom_size = 0x80000;
+ const int rom_size = memregion("maincpu")->bytes();
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+
for (int i = 0; i < rom_size / 2; i++)
{
- u16 x = src[i];
+ u16 x = rom[i];
- /* bit 0 xor layer */
+ // bit 0 xor layer
if (i & 0x20/2)
{
@@ -1470,7 +1809,7 @@ void igs017_state::init_slqz2()
}
}
- /* bit 14 xor layer */
+ // bit 14 xor layer
if (i & 0x1000/2)
{
@@ -1514,18 +1853,15 @@ void igs017_state::init_slqz2()
}
}
- src[i] = x;
+ rom[i] = x;
}
slqz2_decrypt_tiles();
lhzb2_decrypt_sprites();
- slqz2_patch_rom();
- // install and configure protection device(s)
-// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w)));
-// m_igs025->m_kb_source_data = dw3_source_data;
-// m_igs025->m_kb_source_data_offset = 0;
-// m_igs025->m_kb_game_id = 0x00060000;
+// slqz2_patch_rom();
+
+// m_igs_string->dump("slqz2_string.key", 0x7b214, 0x7b128, true);
}
@@ -1533,13 +1869,13 @@ void igs017_state::init_slqz2()
void igs017_state::spkrform_decrypt_sprites()
{
- int length = memregion("igs017_igs031:sprites")->bytes();
- u8 *rom = memregion("igs017_igs031:sprites")->base();
- std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(length);
+ const int rom_size = memregion("igs017_igs031:sprites")->bytes();
+ u8 * const rom = memregion("igs017_igs031:sprites")->base();
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(rom_size);
// address lines swap
- memcpy(tmp.get(), rom, length);
- for (int i = 0; i < length; i++)
+ memcpy(tmp.get(), rom, rom_size);
+ for (int i = 0; i < rom_size; i++)
{
int addr;
if (i & 0x80000)
@@ -1551,55 +1887,77 @@ void igs017_state::spkrform_decrypt_sprites()
}
}
+void igs017_state::spkrform_patch_rom()
+{
+ u8 * const rom = memregion("maincpu")->base();
+
+ rom[0x32ea9] = 0; // enable poker ($e9be = 0)
+ rom[0x32ef9] = 0; // start with poker ($e9bf = 0)
+}
+
void igs017_state::init_spkrform()
{
decrypt_program_rom(0x14, 7, 6, 5, 4, 3, 0, 1, 2);
spkrform_decrypt_sprites();
-}
+ spkrform_patch_rom();
+
+// m_igs_string->dump("spkrform_string.key", 0x9dec, 0x9d00, false);
+}
/***************************************************************************
Memory Maps
***************************************************************************/
-// iqblocka, iqblockf, genius6
+// Common MUX maps
-void igs017_state::iqblocka_map(address_map &map)
+// 0x03 r, 0x40 - 0x47 w, 0x48 w, 0x50 w, 0x80 - 0x87 w, 0xa0 w
+void igs017_state::igs_bitswap_mux_map(address_map &map)
{
- map(0x00000, 0x0dfff).rom();
- map(0x0e000, 0x0efff).ram();
- map(0x0f000, 0x0ffff).ram();
- map(0x10000, 0x3ffff).rom();
+ map(0x03, 0x03).r(m_igs_bitswap, FUNC(igs_bitswap_device::result_r));
+ map(0x40, 0x40).w(m_igs_bitswap, FUNC(igs_bitswap_device::word_w));
+ map(0x41, 0x47).nopw();
+ map(0x48, 0x48).w(m_igs_bitswap, FUNC(igs_bitswap_device::mode_f_w));
+ map(0x50, 0x50).w(m_igs_bitswap, FUNC(igs_bitswap_device::mode_3_w));
+ map(0x80, 0x87).w(m_igs_bitswap, FUNC(igs_bitswap_device::do_bitswap_w));
+ map(0xa0, 0xa0).w(m_igs_bitswap, FUNC(igs_bitswap_device::reset_w));
}
-void igs017_state::decrypted_opcodes_map(address_map &map)
+// 0x05 r, 0x20 - 0x27 w, 0x40 r
+void igs017_state::igs_string_mux_map(address_map &map)
{
- map(0x00000, 0x3ffff).rom().share("decrypted_opcodes");
+ map(0x05, 0x05).r(m_igs_string, FUNC(igs_string_device::result_r));
+ map(0x20, 0x27).w(m_igs_string, FUNC(igs_string_device::do_bitswap_w));
+ map(0x40, 0x40).r(m_igs_string, FUNC(igs_string_device::advance_string_offs_r));
}
-void igs017_state::input_select_w(u8 data)
+// 0x20 - 0x34: read fixed data
+void igs017_state::igs_fixed_data_mux_map(address_map &map)
{
- m_input_select = data;
+ map(0x20, 0x34).rom().region("igs_fixed_data", 0);
+ map(0x23, 0x23).unmapr();
+ map(0x29, 0x29).unmapr();
+ map(0x2f, 0x2f).unmapr();
}
-void igs017_state::iqblocka_keyin_w(u8 data)
+
+// iqblocka, iqblockf, genius6
+
+void igs017_state::iqblocka_map(address_map &map)
{
- machine().bookkeeping().coin_counter_w(0, data & 0x80); // key in (in gambling mode)
-// popmessage("PORT0 %02X", data);
- if (data & ~0x80)
- logerror("%s: warning, unknown bits written in keyin_w = %02x\n", machine().describe_context(), data);
+ map(0x00000, 0x0dfff).rom();
+ map(0x0e000, 0x0efff).ram();
+ map(0x0f000, 0x0ffff).ram();
+ map(0x10000, 0x3ffff).rom();
}
-void igs017_state::iqblockf_keyout_w(u8 data)
+void igs017_state::decrypted_opcodes_map(address_map &map)
{
- machine().bookkeeping().coin_counter_w(1, data & 0x80); // key out (in gambling mode, only iqblockf/genius6)
-// popmessage("PORT1 %02X", data);
- if (data & ~0x80)
- logerror("%s: warning, unknown bits written in keyout_w = %02x\n", machine().describe_context(), data);
+ map(0x00000, 0x3ffff).readonly().share(m_decrypted_opcodes);
}
-void igs017_state::iqblocka_remap_addr_w(offs_t offset, u8 data)
+void igs017_state::incdec_remap_addr_w(offs_t offset, u8 data)
{
if (offset == 0)
{
@@ -1612,7 +1970,7 @@ void igs017_state::iqblocka_remap_addr_w(offs_t offset, u8 data)
prg_space.unmap_write(m_remap_addr + 0x3, m_remap_addr + 0x3);
prg_space.unmap_read (m_remap_addr + 0x5, m_remap_addr + 0x5);
- logerror("%s: incdec protection unmapped from %04x\n", machine().describe_context(), m_remap_addr);
+ LOGMASKED(LOG_PROT_REMAP, "%s: incdec protection unmapped from %04x\n", machine().describe_context(), m_remap_addr);
}
m_remap_addr = (m_remap_addr & 0xff00) | data;
@@ -1626,22 +1984,21 @@ void igs017_state::iqblocka_remap_addr_w(offs_t offset, u8 data)
prg_space.install_write_handler(m_remap_addr + 0x0, m_remap_addr + 0x0, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::reset_w)));
prg_space.install_write_handler(m_remap_addr + 0x1, m_remap_addr + 0x1, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::dec_w)));
prg_space.install_write_handler(m_remap_addr + 0x3, m_remap_addr + 0x3, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::inc_w)));
- prg_space.install_read_handler (m_remap_addr + 0x5, m_remap_addr + 0x5, read8smo_delegate (*m_igs_incdec, FUNC(igs_incdec_device::val_r)));
+ prg_space.install_read_handler (m_remap_addr + 0x5, m_remap_addr + 0x5, read8smo_delegate (*m_igs_incdec, FUNC(igs_incdec_device::result_r)));
- logerror("%s: incdec protection remapped at %04x\n", machine().describe_context(), m_remap_addr);
+ LOGMASKED(LOG_PROT_REMAP, "%s: incdec protection remapped at %04x\n", machine().describe_context(), m_remap_addr);
}
}
void igs017_state::iqblocka_io(address_map &map)
{
map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
-
map(0x0000, 0x003f).ram(); // internal regs
- map(0x2010, 0x2011).w(FUNC(igs017_state::iqblocka_remap_addr_w));
+ map(0x2010, 0x2011).w(FUNC(igs017_state::incdec_remap_addr_w));
- map(0x8000, 0x8000).w ("igs_bitswap", FUNC(igs_bitswap_device::address_w));
- map(0x8001, 0x8001).rw("igs_bitswap", FUNC(igs_bitswap_device::data_r), FUNC(igs_bitswap_device::data_w));
+ map(0x8000, 0x8000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0x8001, 0x8001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
@@ -1650,6 +2007,230 @@ void igs017_state::iqblocka_io(address_map &map)
map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write));
}
+void igs017_state::iqblocka_mux_map(address_map &map)
+{
+ map(0x00, 0x00).portr("PLAYER1").w(NAME((&igs017_state::counter_w<7, 0x7f, 0>))); // coin in
+ map(0x01, 0x01).portr("PLAYER2");
+ map(0x02, 0x02).portr("COINS");
+
+ igs_bitswap_mux_map(map); // 0x03 r, 0x40 - 0x47 w, 0x48 w, 0x50 w, 0x80 - 0x87 w, 0xa0 w
+
+ igs_fixed_data_mux_map(map); // 0x20 - 0x34: read fixed data
+}
+
+void igs017_state::iqblockf_mux_map(address_map &map)
+{
+ iqblocka_mux_map(map);
+
+ map(0x01, 0x01).w(NAME((&igs017_state::counter_w<7, 0x7f, 1>))); // coin out (in gambling mode, only iqblockf/genius6)
+}
+
+// starzan
+
+void igs017_state::starzan_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
+ map(0x0000, 0x003f).ram(); // internal regs
+
+ map(0x2010, 0x2011).w(FUNC(igs017_state::incdec_remap_addr_w));
+
+ map(0x8000, 0x8000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0x8001, 0x8001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
+
+ map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+// cpoker2, happyksl, starzan
+void igs017_state::starzan_counter_w(u8 data)
+{
+ // BIT(data, 0) // always on in cpoker2/happyskl?
+ m_hopper->motor_w( BIT(data, 1)); // hopper
+ // BIT(data, 2) // unused?
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 3)); // key out
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 4)); // payout
+ machine().bookkeeping().coin_counter_w(2, BIT(data, 5)); // coin C
+ machine().bookkeeping().coin_counter_w(3, BIT(data, 6)); // key in
+ machine().bookkeeping().coin_counter_w(4, BIT(data, 7)); // coin A
+// popmessage("COUNTER %02X", data);
+ if (BIT(data, 2))
+ logerror("%s: warning, unknown bits written in counter_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::starzan_lamps_sound_w(u8 data)
+{
+ m_lamps[0] = BIT(data, 2); // stop 1
+ m_lamps[1] = BIT(data, 0); // stop 2
+ m_lamps[2] = BIT(data, 4); // stop 3
+ m_lamps[3] = BIT(data, 1); // stop 4
+ m_lamps[4] = BIT(data, 3); // bet/stop
+ m_lamps[5] = BIT(data, 5); // start
+// BIT(data, 6); // unused?
+ m_oki->set_rom_bank(BIT(data, 7));
+
+// popmessage("LAMPS/SOUND %02X", data);
+
+ if (BIT(data, 6))
+ logerror("%s: warning, unknown bits written in lamps_sound_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::starzan_mux_map(address_map &map)
+{
+ map(0x00, 0x00).w(FUNC(igs017_state::starzan_counter_w));
+ map(0x01, 0x01).portr("PLAYER2");
+ map(0x02, 0x02).w(FUNC(igs017_state::starzan_lamps_sound_w));
+ map(0x03, 0x03).w(FUNC(igs017_state::dsw_select_w));
+
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
+}
+
+
+// happyksl
+
+void igs017_state::happyskl_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
+ map(0x0000, 0x003f).ram(); // internal regs
+
+ map(0x8000, 0x8000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0x8001, 0x8001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
+
+ map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void igs017_state::happyskl_lamps_sound_w(u8 data)
+{
+ m_lamps[0] = BIT(data, 4); // hold 1
+ m_lamps[1] = BIT(data, 0); // hold 2
+ m_lamps[2] = BIT(data, 1); // hold 3
+ m_lamps[3] = BIT(data, 2); // hold 4
+ m_lamps[4] = BIT(data, 3); // hold 5
+ m_lamps[5] = BIT(data, 5); // start
+// BIT(data, 6); // unused?
+ m_oki->set_rom_bank(BIT(data, 7));
+
+// popmessage("LAMPS/SOUND %02X", data);
+
+ if (BIT(data, 6))
+ logerror("%s: warning, unknown bits written in lamps_sound_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::happyskl_mux_map(address_map &map)
+{
+ map(0x00, 0x00).w(FUNC(igs017_state::starzan_counter_w));
+ map(0x01, 0x01).portr("PLAYER2");
+ map(0x02, 0x02).w(FUNC(igs017_state::happyskl_lamps_sound_w));
+ map(0x03, 0x03).w(FUNC(igs017_state::dsw_select_w));
+}
+
+
+// cpoker2
+
+void igs017_state::cpoker2_map(address_map &map)
+{
+ iqblocka_map(map);
+
+ map(0x0a400, 0x0a400).w(m_igs_inc, FUNC(igs_inc_device::inc_w));
+ map(0x0a420, 0x0a420).w(m_igs_inc, FUNC(igs_inc_device::reset_w));
+ map(0x0a460, 0x0a460).r(m_igs_inc, FUNC(igs_inc_device::result_r));
+}
+
+void igs017_state::cpoker2_io(address_map &map)
+{
+ map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
+ map(0x0000, 0x003f).ram(); // internal regs
+
+ map(0x2010, 0x2011).w(FUNC(igs017_state::incdec_remap_addr_w));
+
+ map(0x8000, 0x8000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0x8001, 0x8001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
+
+ map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
+void igs017_state::cpoker2_lamps_sound_w(u8 data)
+{
+ m_lamps[0] = BIT(data, 0); // hold 1
+ m_lamps[1] = BIT(data, 1); // hold 2
+ m_lamps[2] = BIT(data, 4); // hold 3
+ m_lamps[3] = BIT(data, 2); // hold 4
+ m_lamps[4] = BIT(data, 3); // hold 5
+ m_lamps[5] = BIT(data, 5); // start
+// BIT(data, 6); // unused?
+ m_oki->set_rom_bank(BIT(data, 7));
+
+// popmessage("LAMPS/SOUND %02X", data);
+
+ if (BIT(data, 6))
+ logerror("%s: warning, unknown bits written in lamps_sound_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::cpoker2_mux_map(address_map &map)
+{
+ map(0x00, 0x00).w(FUNC(igs017_state::starzan_counter_w));
+ map(0x01, 0x01).portr("PLAYER2");
+ map(0x02, 0x02).w(FUNC(igs017_state::cpoker2_lamps_sound_w));
+ map(0x03, 0x03).w(FUNC(igs017_state::dsw_select_w));
+}
+
+
+// tarzan
+
+void igs017_state::tarzan_incdec_remap_addr_w(offs_t offset, u8 data)
+{
+ incdec_remap_addr_w(offset, data ^ ((offset == 1) ? 0x40 : 0));
+}
+
+void igs017_state::tarzan_io(address_map &map)
+{
+ starzan_io(map);
+
+ map(0x2010, 0x2011).w(FUNC(igs017_state::tarzan_incdec_remap_addr_w));
+}
+
+u8 igs017_state::tarzan_keys_joy_r()
+{
+ if (BIT(m_input_select, 3, 5) == 0x1f) return m_io_joy->read(); // f8 (joystick mode)
+
+ u8 ret = 0xff;
+ if (!BIT(m_input_select, 3)) ret &= m_io_key[0]->read(); // f0 (keyboard mode)
+ if (!BIT(m_input_select, 4)) ret &= m_io_key[1]->read(); // e8 ""
+ if (!BIT(m_input_select, 5)) ret &= m_io_key[2]->read(); // d8 ""
+ if (!BIT(m_input_select, 6)) ret &= m_io_key[3]->read(); // b8 ""
+ if (!BIT(m_input_select, 7)) ret &= m_io_key[4]->read(); // 78 "" (unused)
+ return ret;
+}
+
+void igs017_state::tarzan_counter_w(u8 data)
+{
+ m_hopper->motor_w( BIT(data, 1)); // hopper
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 2)); // key out
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 3)); // key in
+// popmessage("COUNTER %02X", data);
+ if (data & ~0x0c)
+ logerror("%s: warning, unknown bits written in counter_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::tarzan_dsw_sound_w(u8 data)
+{
+ // bits 0,1,2: DSW select
+ // bit 7: Sound bank
+ m_dsw_select = data;
+ m_oki->set_rom_bank(BIT(data, 7));
+// popmessage("DSW %02X", data);
+ if (data & ~0x87)
+ logerror("%s: warning, unknown bits written in dsw_sound_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::tarzan_mux_map(address_map &map)
+{
+ map(0x00, 0x00).w(FUNC(igs017_state::input_select_w<0x07>));
+ map(0x01, 0x01).w(FUNC(igs017_state::tarzan_counter_w));
+ map(0x02, 0x02).r(FUNC(igs017_state::dsw_r));
+ map(0x03, 0x03).w(FUNC(igs017_state::tarzan_dsw_sound_w));
+
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
+}
+
// mgcs
@@ -1657,23 +2238,23 @@ void igs017_state::iqblocka_io(address_map &map)
// Sound banking and DSW are accessed through it. It also performs some game specific calculations.
void igs017_state::mgcs_igs029_run()
{
- logerror("%s: running igs029 command ", machine().describe_context());
+ LOGMASKED(LOG_PROT_IGS029, "%s: running igs029 command ", machine().describe_context());
for (int i = 0; i < m_igs029_send_len; i++)
- logerror("%02x ", m_igs029_send_buf[i]);
+ LOGMASKED(LOG_PROT_IGS029, "%02x ", m_igs029_send_buf[i]);
- if (m_igs029_send_buf[0] == 0x05 && m_igs029_send_buf[1] == 0x5a)
+ if (m_igs029_send_buf[0] == 0x05 && m_igs029_send_buf[1] == 0x5a) // 'Z'
{
u8 data = m_igs029_send_buf[2];
u8 port = m_igs029_send_buf[3];
- logerror("PORT %02x = %02x\n", port, data);
+ LOGMASKED(LOG_PROT_IGS029, "PORT %02x = %02x\n", port, data);
switch (port)
{
case 0x01:
- m_oki->set_rom_bank((data >> 4) & 1);
- machine().bookkeeping().coin_counter_w(0, (~data) & 0x20); // coin in
- machine().bookkeeping().coin_counter_w(1, (~data) & 0x40); // coin out
+ m_oki->set_rom_bank( BIT(data, 4)); // oki
+ machine().bookkeeping().coin_counter_w(0, !BIT(data, 5)); // coin in
+ machine().bookkeeping().coin_counter_w(1, !BIT(data, 6)); // coin out
// popmessage("PORT1 %02X", data);
@@ -1699,9 +2280,9 @@ void igs017_state::mgcs_igs029_run()
m_igs029_recv_len = 0;
m_igs029_recv_buf[m_igs029_recv_len++] = 0x01;
}
- else if (m_igs029_send_buf[0] == 0x03 && m_igs029_send_buf[1] == 0x55)
+ else if (m_igs029_send_buf[0] == 0x03 && m_igs029_send_buf[1] == 0x55) // 'U'
{
- logerror("MIN BET?\n");
+ LOGMASKED(LOG_PROT_IGS029, "MIN BET?\n");
// No inputs. Returns 1 long
@@ -1714,26 +2295,22 @@ void igs017_state::mgcs_igs029_run()
m_igs029_recv_buf[m_igs029_recv_len++] = min_bets[ (~m_io_dsw[1]->read()) & 3 ];
m_igs029_recv_buf[m_igs029_recv_len++] = 0x05;
}
- else if (m_igs029_send_buf[0] == 0x03 && m_igs029_send_buf[1] == 0x39)
+ else if (m_igs029_send_buf[0] == 0x03 && m_igs029_send_buf[1] == 0x39) // '9'
{
- logerror("READ DSW\n");
+ LOGMASKED(LOG_PROT_IGS029, "READ DSW\n");
- u8 ret;
- if (~m_dsw_select & 0x01) ret = m_io_dsw[0]->read();
- else if (~m_dsw_select & 0x02) ret = m_io_dsw[1]->read();
- else
- {
- logerror("%s: warning, reading dsw with dsw_select = %02x\n", machine().describe_context(), m_dsw_select);
- ret = 0xff;
- }
+ u8 ret = 0xff;
+ if (!BIT(m_dsw_select, 0)) ret &= m_io_dsw[0]->read();
+ else if (!BIT(m_dsw_select, 1)) ret &= m_io_dsw[1]->read();
+ else logerror("%s: warning, reading dsw with dsw_select = %02x\n", machine().describe_context(), m_dsw_select);
m_igs029_recv_len = 0;
m_igs029_recv_buf[m_igs029_recv_len++] = ret;
m_igs029_recv_buf[m_igs029_recv_len++] = 0x02;
}
- else if (m_igs029_send_buf[0] == 0x07 && m_igs029_send_buf[1] == 0x2c)
+ else if (m_igs029_send_buf[0] == 0x07 && m_igs029_send_buf[1] == 0x2c) // ','
{
- logerror("?? (2C)\n"); // ??
+ LOGMASKED(LOG_PROT_IGS029, "?? (2C)\n"); // ??
// 4 inputs. Returns 1 long
@@ -1743,12 +2320,12 @@ void igs017_state::mgcs_igs029_run()
m_igs029_recv_buf[m_igs029_recv_len++] = 0x00;
m_igs029_recv_buf[m_igs029_recv_len++] = 0x00;
m_igs029_recv_buf[m_igs029_recv_len++] = 0x00;
- m_igs029_recv_buf[m_igs029_recv_len++] = 0x01; // ??
+ m_igs029_recv_buf[m_igs029_recv_len++] = 0x01; // ??
m_igs029_recv_buf[m_igs029_recv_len++] = 0x05;
}
else if (m_igs029_send_buf[0] == 0x07 && m_igs029_send_buf[1] == 0x15)
{
- logerror("SET LONG\n");
+ LOGMASKED(LOG_PROT_IGS029, "SET LONG\n");
m_igs029_mgcs_long = (m_igs029_send_buf[2] << 24) | (m_igs029_send_buf[3] << 16) | (m_igs029_send_buf[4] << 8) | m_igs029_send_buf[5];
@@ -1757,7 +2334,7 @@ void igs017_state::mgcs_igs029_run()
}
else if (m_igs029_send_buf[0] == 0x03 && m_igs029_send_buf[1] == 0x04)
{
- logerror("GET LONG\n");
+ LOGMASKED(LOG_PROT_IGS029, "GET LONG\n");
m_igs029_recv_len = 0;
m_igs029_recv_buf[m_igs029_recv_len++] = (m_igs029_mgcs_long >> 0) & 0xff;
@@ -1768,7 +2345,7 @@ void igs017_state::mgcs_igs029_run()
}
else
{
- logerror("UNKNOWN\n");
+ LOGMASKED(LOG_PROT_IGS029, "UNKNOWN\n");
m_igs029_recv_len = 0;
m_igs029_recv_buf[m_igs029_recv_len++] = 0x01;
@@ -1777,394 +2354,234 @@ void igs017_state::mgcs_igs029_run()
m_igs029_send_len = 0;
}
-void igs017_state::magic_w(offs_t offset, u16 data, u16 mem_mask)
-{
- COMBINE_DATA(&m_igs_magic);
-}
-
-u16 igs017_state::magic_r()
+void igs017_state::mgcs_keys_hopper_igs029_w(u8 data)
{
- return m_igs_magic;
-}
+ // 7654 3--- Keys
+ // ---- -2-- IRQ on IGS029
+ // ---- --1-
+ // ---- ---0 Hopper Motor
+ const bool igs029_irq = !BIT(m_input_select, 2) && BIT(data, 2); // 0 -> 1
+ m_input_select = data;
+ m_hopper->motor_w(BIT(data, 0));
-void igs017_state::mgcs_magic_w(offs_t offset, u16 data, u16 mem_mask)
-{
- switch (m_igs_magic)
+ if (igs029_irq)
{
- case 0x00:
- if (ACCESSING_BITS_0_7)
- {
- bool igs029_irq = !(m_input_select & 0x04) && (data & 0x04); // 0->1
-
- // 7654 3--- Keys
- // ---- -2-- IRQ on IGS029
- // ---- --1-
- // ---- ---0 Hopper Motor
- m_input_select = data & 0xff;
-
- m_hopperdev->motor_w(BIT(data, 0));
-
- if (igs029_irq)
- {
- if (!m_igs029_recv_len)
- {
- // SEND
- if (m_igs029_send_len < sizeof(m_igs029_send_buf))
- m_igs029_send_buf[m_igs029_send_len++] = m_igs029_send_data;
-
- logerror("%s: igs029 send ", machine().describe_context());
- for (int i = 0; i < m_igs029_send_len; i++)
- logerror("%02x ", m_igs029_send_buf[i]);
- logerror("\n");
-
- if (m_igs029_send_buf[0] == m_igs029_send_len)
- mgcs_igs029_run();
- }
-
- if (m_igs029_recv_len)
- {
- // RECV
- logerror("%s: igs029 recv ", machine().describe_context());
- for (int i = 0; i < m_igs029_recv_len; i++)
- logerror("%02x ", m_igs029_recv_buf[i]);
- logerror("\n");
-
- if (m_igs029_recv_len)
- --m_igs029_recv_len;
-
- m_igs029_recv_data = m_igs029_recv_buf[m_igs029_recv_len];
- }
- }
- }
-
- if (m_input_select & ~0xfd)
- logerror("%s: warning, unknown bits written in input_select = %02x\n", machine().describe_context(), m_input_select);
-
- break;
-
- case 0x01:
- if (ACCESSING_BITS_0_7)
- {
- m_scramble_data = data & 0xff;
-// logerror("%s: writing %02x to igs_magic = %02x\n", machine().describe_context(), data & 0xff, m_igs_magic);
- }
- break;
-
- // case 0x02: ?
-
- case 0x03:
- if (ACCESSING_BITS_0_7)
- {
- m_igs029_send_data = data & 0xff;
-// logerror("%s: writing %02x to igs_magic = %02x\n", machine().describe_context(), data & 0xff, m_igs_magic);
- }
- break;
+ if (!m_igs029_recv_len)
+ {
+ // SEND
+ if (m_igs029_send_len < sizeof(m_igs029_send_buf))
+ m_igs029_send_buf[m_igs029_send_len++] = m_igs029_send_data;
- default:
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_igs_magic, data);
- }
-}
+ LOGMASKED(LOG_PROT_IGS029, "%s: igs029 send", machine().describe_context());
+ for (int i = 0; i < m_igs029_send_len; i++)
+ LOGMASKED(LOG_PROT_IGS029, " %02x", m_igs029_send_buf[i]);
+ LOGMASKED(LOG_PROT_IGS029, "\n");
-u16 igs017_state::mgcs_magic_r()
-{
- switch (m_igs_magic)
- {
- case 0x00:
- return m_input_select | 0x02;
-
- case 0x01:
- {
- u16 ret = bitswap<8>( (bitswap<8>(m_scramble_data, 0,1,2,3,4,5,6,7) + 1) & 3, 4,5,6,7, 0,1,2,3);
- logerror("%s: reading %02x from igs_magic = %02x\n", machine().describe_context(), ret, m_igs_magic);
- return ret;
+ if (m_igs029_send_buf[0] == m_igs029_send_len)
+ mgcs_igs029_run();
}
- case 0x02:
+ if (m_igs029_recv_len)
{
- u8 ret = m_igs029_recv_data;
- logerror("%s: reading %02x from igs_magic = %02x\n", machine().describe_context(), ret, m_igs_magic);
- return ret;
- }
+ // RECV
+ LOGMASKED(LOG_PROT_IGS029, "%s: igs029 recv", machine().describe_context());
+ for (int i = 0; i < m_igs029_recv_len; i++)
+ LOGMASKED(LOG_PROT_IGS029, " %02x", m_igs029_recv_buf[i]);
+ LOGMASKED(LOG_PROT_IGS029, "\n");
-// case 0x05: ???
+ if (m_igs029_recv_len)
+ --m_igs029_recv_len;
- default:
- logerror("%s: warning, reading with igs_magic = %02x\n", machine().describe_context(), m_igs_magic);
- break;
+ m_igs029_recv_data = m_igs029_recv_buf[m_igs029_recv_len];
+ }
}
- return 0xffff;
+ if (m_input_select & ~0xfd)
+ logerror("%s: warning, unknown bits written in input_select = %02x\n", machine().describe_context(), m_input_select);
}
-u8 igs017_state::mgcs_keys_r()
+void igs017_state::mgcs_scramble_data_w(u8 data)
{
- if (~m_input_select & 0x08) return m_io_key[0]->read();
- if (~m_input_select & 0x10) return m_io_key[1]->read();
- if (~m_input_select & 0x20) return m_io_key[2]->read();
- if (~m_input_select & 0x40) return m_io_key[3]->read();
- if (~m_input_select & 0x80) return m_io_key[4]->read();
-
- logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select);
- return 0xff;
+ m_scramble_data = data;
+ LOGMASKED(LOG_PROT_SCRAMBLE, "%s: writing scrambled data %02x to igs_mux\n", machine().describe_context(), data);
}
-void igs017_state::mgcs_map(address_map &map)
+u8 igs017_state::mgcs_scramble_data_r()
{
- map(0x000000, 0x07ffff).rom();
- map(0x300000, 0x303fff).ram();
- map(0x49c000, 0x49c001).rw(FUNC(igs017_state::magic_r), FUNC(igs017_state::magic_w));
- map(0x49c002, 0x49c003).rw(FUNC(igs017_state::mgcs_magic_r), FUNC(igs017_state::mgcs_magic_w));
-
- map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
-
- map(0xa12001, 0xa12001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- // oki banking through protection (code at $1a350)?
+ u8 ret = bitswap<8>( (bitswap<8>(m_scramble_data, 0,1,2,3,4,5,6,7) + 1) & 3, 4,5,6,7, 0,1,2,3 );
+ LOGMASKED(LOG_PROT_SCRAMBLE, "%s: reading scrambled data %02x from igs_mux\n", machine().describe_context(), ret);
+ return ret;
}
-
-// sdmg2
-
-u8 igs017_state::sdmg2_keys_r()
+u8 igs017_state::mgcs_igs029_data_r()
{
- if (~m_input_select & 0x01) return m_io_key[0]->read();
- if (~m_input_select & 0x02) return m_io_key[1]->read();
- if (~m_input_select & 0x04) return m_io_key[2]->read();
- if (~m_input_select & 0x08) return m_io_key[3]->read();
- if (~m_input_select & 0x10) return m_io_key[4]->read();
+ u8 ret = m_igs029_recv_data;
+ LOGMASKED(LOG_PROT_IGS029, "%s: reading IGS029 data %02x from igs_mux\n", machine().describe_context(), ret);
+ return ret;
+}
- if (m_input_select == 0x1f) return m_io_key[0]->read(); // in joystick mode
+void igs017_state::mgcs_igs029_data_w(u8 data)
+{
+ m_igs029_send_data = data;
+ LOGMASKED(LOG_PROT_IGS029, "%s: writing %02x to igs_mux\n", machine().describe_context(), data & 0xff);
+}
- logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select);
- return 0xff;
+u8 igs017_state::mgcs_keys_joy_r()
+{
+ u8 ret = 0xff;
+ if (!BIT(m_input_select, 0, 3)) ret &= (m_io_joy->read() | 0x3f); // f8 (joystick mode, top 2 bits)
+ if (!BIT(m_input_select, 3)) ret &= m_io_key[0]->read(); // f7 (keyboard mode)
+ if (!BIT(m_input_select, 4)) ret &= m_io_key[1]->read(); // ef ""
+ if (!BIT(m_input_select, 5)) ret &= m_io_key[2]->read(); // df ""
+ if (!BIT(m_input_select, 6)) ret &= m_io_key[3]->read(); // bf ""
+ if (!BIT(m_input_select, 7)) ret &= m_io_key[4]->read(); // f7 ""
+ return ret;
}
-void igs017_state::sdmg2_magic_w(offs_t offset, u16 data, u16 mem_mask)
+void igs017_state::mgcs_map(address_map &map)
{
- switch (m_igs_magic)
- {
- // case 0x00: ? 0x80
+ map(0x000000, 0x07ffff).rom();
+ map(0x300000, 0x303fff).ram();
- case 0x01:
- if (ACCESSING_BITS_0_7)
- {
- m_input_select = data & 0x1f;
- machine().bookkeeping().coin_counter_w(0, data & 0x20);
- // coin out data & 0x40
- m_hopper = data & 0x80;
- }
- break;
+ map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
+ map(0x49c002, 0x49c003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
- case 0x02:
- if (ACCESSING_BITS_0_7)
- {
- m_oki->set_rom_bank((data >> 7) & 1);
- }
- break;
+ map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
- default:
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_igs_magic, data);
- }
+ map(0xa12001, 0xa12001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ // oki banking through protection (code at $1a350)
}
-u16 igs017_state::sdmg2_magic_r()
+void igs017_state::mgcs_mux_map(address_map &map)
{
- switch (m_igs_magic)
- {
- case 0x00:
- {
- u16 hopper_bit = (m_hopper && ((m_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001;
- return m_io_coins->read() | hopper_bit;
- }
+ map(0x00, 0x00).lr8(NAME([this](){ return m_input_select | 0x02; })).w(FUNC(igs017_state::mgcs_keys_hopper_igs029_w));
+ map(0x01, 0x01).r(FUNC(igs017_state::mgcs_scramble_data_r)).w(FUNC(igs017_state::mgcs_scramble_data_w));
+ map(0x02, 0x02).r(FUNC(igs017_state::mgcs_igs029_data_r));
+ map(0x03, 0x03).w(FUNC(igs017_state::mgcs_igs029_data_w));
- case 0x02:
- return sdmg2_keys_r();
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
+}
- default:
- logerror("%s: warning, reading with igs_magic = %02x\n", machine().describe_context(), m_igs_magic);
- break;
- }
- return 0xffff;
-}
+// sdmg2
void igs017_state::sdmg2_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
+
+ // incdec protection
+ map(0x002001, 0x002001).w(m_igs_incdec, FUNC(igs_incdec_device::reset_w));
+ map(0x002003, 0x002003).w(m_igs_incdec, FUNC(igs_incdec_device::dec_w));
+ map(0x002007, 0x002007).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w));
+ map(0x00200b, 0x00200b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r));
+
map(0x1f0000, 0x1fffff).ram();
map(0x200000, 0x20ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
map(0x210001, 0x210001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x300000, 0x300001).w(FUNC(igs017_state::magic_w));
- map(0x300002, 0x300003).rw(FUNC(igs017_state::sdmg2_magic_r), FUNC(igs017_state::sdmg2_magic_w));
-}
-
-// mgdh, mgdha
+ map(0x300000, 0x300001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
+ map(0x300002, 0x300003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
+}
-u8 igs017_state::mgdh_keys_r()
+u8 igs017_state::sdmg2_keys_joy_r()
{
- if (~m_input_select & 0x04) return m_io_key[0]->read();
- if (~m_input_select & 0x08) return m_io_key[1]->read();
- if (~m_input_select & 0x10) return m_io_key[2]->read();
- if (~m_input_select & 0x20) return m_io_key[3]->read();
- if (~m_input_select & 0x40) return m_io_key[4]->read();
-
- if ((m_input_select & 0xfc) == 0xfc) return m_io_dsw[0]->read();
-
- logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select);
- return 0xff;
+ if (BIT(m_input_select, 0, 5) == 0x1f) return m_io_joy->read(); // 1f/uninitialized in test screen (joystick mode)
+
+ u8 ret = 0xff;
+ if (!BIT(m_input_select, 0)) ret &= m_io_key[0]->read(); // 1e (keyboard mode)
+ if (!BIT(m_input_select, 1)) ret &= m_io_key[1]->read(); // 1d ""
+ if (!BIT(m_input_select, 2)) ret &= m_io_key[2]->read(); // 1b ""
+ if (!BIT(m_input_select, 3)) ret &= m_io_key[3]->read(); // 17 ""
+ if (!BIT(m_input_select, 4)) ret &= m_io_key[4]->read(); // 0f ""
+ return ret;
}
-void igs017_state::mgdha_magic_w(offs_t offset, u16 data, u16 mem_mask)
+void igs017_state::sdmg2_keys_hopper_w(u8 data)
{
- switch (m_igs_magic)
- {
- case 0x00:
- if (ACCESSING_BITS_0_7)
- {
- // coin out data & 0x40
- machine().bookkeeping().coin_counter_w(0, data & 0x80);
- }
-
- if (data & ~0xc0)
- logerror("%s: warning, unknown bits written to igs_magic 00 = %02x\n", machine().describe_context(), data);
-
- break;
-
- case 0x01:
- if (ACCESSING_BITS_0_7)
- {
- m_input_select = data & 0xff;
- m_hopper = data & 0x01;
- }
-
- if (m_input_select & ~0xfd)
- logerror("%s: warning, unknown bits written in input_select = %02x\n", machine().describe_context(), m_input_select);
-
- break;
-
- case 0x03:
- if (ACCESSING_BITS_0_7)
- {
- // bit 7?
- m_oki->set_rom_bank((data >> 6) & 1);
- }
- break;
-
- default:
-/*
- 04aba0: warning, writing to igs_magic 08 = d0
- 04abb0: warning, writing to igs_magic 09 = 76
- 04abc0: warning, writing to igs_magic 0a = 97
- 04abd0: warning, writing to igs_magic 0b = bf
- 04abe0: warning, writing to igs_magic 0c = ff
- 04abf0: warning, writing to igs_magic 04 = 3f
- 04ac00: warning, writing to igs_magic 05 = 82
- 04ac10: warning, writing to igs_magic 06 = ff
- 04ac20: warning, writing to igs_magic 07 = 3f
-*/
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_igs_magic, data);
- }
+ m_input_select = BIT(data, 0, 5); // keys
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); // coin in
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 6)); // coin out
+ m_hopper->motor_w( BIT(data, 7)); // hopper
}
-u16 igs017_state::mgdha_magic_r()
+void igs017_state::sdmg2_mux_map(address_map &map)
{
- switch (m_igs_magic)
- {
- case 0x00:
- return mgdh_keys_r();
-
- case 0x01:
- return m_io_buttons->read();
-
- case 0x02:
- return bitswap<8>(m_io_dsw[1]->read(), 0,1,2,3,4,5,6,7);
-
- case 0x03:
- {
- u16 hopper_bit = (m_hopper && ((m_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001;
- return m_io_coins->read() | hopper_bit;
- }
-
- default:
- logerror("%s: warning, reading with igs_magic = %02x\n", machine().describe_context(), m_igs_magic);
- break;
- }
-
- return 0xffff;
+ map(0x00, 0x00).portr("COINS");
+ map(0x01, 0x01).w(FUNC(igs017_state::sdmg2_keys_hopper_w));
+ map(0x02, 0x02).r(FUNC(igs017_state::sdmg2_keys_joy_r)).w(NAME((&igs017_state::oki_sound_bank_w<7, 0x7f>)));
}
-void igs017_state::mgdha_map(address_map &map)
+// mgdh, mgdha
+
+void igs017_state::mgdh_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x600000, 0x603fff).ram();
- map(0x876000, 0x876001).w(FUNC(igs017_state::magic_w));
- map(0x876002, 0x876003).rw(FUNC(igs017_state::mgdha_magic_r), FUNC(igs017_state::mgdha_magic_w));
+
+ map(0x876000, 0x876001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
+ map(0x876002, 0x876003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
map(0xa10001, 0xa10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
+u8 igs017_state::mgdh_keys_r()
+{
+ u8 ret = 0xff;
+ if (!BIT(m_input_select, 2)) ret &= m_io_key[0]->read(); // f8 (keyboard mode / joystick mode)
+ if (!BIT(m_input_select, 3)) ret &= m_io_key[1]->read(); // f4 (keyboard mode)
+ if (!BIT(m_input_select, 4)) ret &= m_io_key[2]->read(); // ec ""
+ if (!BIT(m_input_select, 5)) ret &= m_io_key[3]->read(); // dc ""
+ if (!BIT(m_input_select, 6)) ret &= m_io_key[4]->read(); // bc ""
+ return ret;
+}
-// tjsb
+void igs017_state::mgdh_keys_hopper_w(u8 data)
+{
+ m_input_select = data;
+ m_hopper->motor_w(BIT(data, 0));
-void igs017_state::tjsb_output_w(u8 data)
+ if (m_input_select & ~0xfd)
+ logerror("%s: warning, unknown bits written in keys_hopper_w = %02x\n", machine().describe_context(), data);
+}
+
+void igs017_state::mgdh_counter_w(u8 data)
{
- switch (m_input_select)
- {
- case 0x00:
- machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in
- if (!(data & ~0x80))
- return;
- break;
-
- case 0x01:
- machine().bookkeeping().coin_counter_w(1, data & 0x01); // coin out
- if (!(data & ~0x01))
- return;
- break;
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 6)); // coin out
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 7)); // coin in
- case 0x02:
- m_oki->set_rom_bank((data >> 4) & 1); // oki bank (0x20/0x30)
- if (!(data & ~0x30))
- return;
- break;
-
- case 0x03:
- m_hopper = data & 0x40;
- if (!(data & ~0x40))
- return;
- break;
- }
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_input_select, data);
+ if (data & ~0xc0)
+ logerror("%s: warning, unknown bits written in counter_w = %02x\n", machine().describe_context(), data);
}
-u8 igs017_state::tjsb_input_r()
+void igs017_state::mgdha_mux_map(address_map &map)
{
- switch (m_input_select)
- {
- case 0x00: return m_io_player1->read();
- case 0x01: return m_io_player2->read();
- case 0x02: return m_io_coins->read();
- case 0x03:
- {
- u8 hopper_bit = (m_hopper && ((m_screen->frame_number()/10)&1)) ? 0x00 : 0x20;
- return m_io_hopper->read() | hopper_bit;
- }
+ map(0x00, 0x00).r(FUNC(igs017_state::mgdh_keys_r)).w(FUNC(igs017_state::mgdh_counter_w));
+ map(0x01, 0x01).portr("BUTTONS").w(FUNC(igs017_state::mgdh_keys_hopper_w));
+ map(0x02, 0x02).lr8(NAME([this](){ return bitswap<8>(m_io_dsw[1]->read(), 0,1,2,3,4,5,6,7); }));
+ map(0x03, 0x03).portr("COINS").w(NAME((&igs017_state::oki_sound_bank_w<6, 0x3f>))); // bit 7? always on
+}
- default:
- logerror("%s: input %02x read\n", machine().describe_context(), m_input_select);
- return 0xff;
- }
+void igs017_state::mgdh_mux_map(address_map &map)
+{
+ mgdha_mux_map(map);
+
+// igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r (actually unused except for the game id check?)
}
+
+// tjsb
+
void igs017_state::tjsb_map(address_map &map)
{
map(0x00000, 0x0dfff).rom();
- map(0x0e000, 0x0e000).w(FUNC(igs017_state::input_select_w));
- map(0x0e001, 0x0e001).rw(FUNC(igs017_state::tjsb_input_r), FUNC(igs017_state::tjsb_output_w));
+
+ map(0x0e000, 0x0e000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0x0e001, 0x0e001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
+
map(0x0e002, 0x0efff).ram();
map(0x0f000, 0x0ffff).ram();
map(0x10000, 0x3ffff).rom();
@@ -2173,7 +2590,6 @@ void igs017_state::tjsb_map(address_map &map)
void igs017_state::tjsb_io(address_map &map)
{
map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
-
map(0x0000, 0x003f).ram(); // internal regs
map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
@@ -2181,119 +2597,106 @@ void igs017_state::tjsb_io(address_map &map)
map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write));
}
-
-// spkrform
-
-void igs017_state::spkrform_map(address_map &map)
+void igs017_state::tjsb_mux_map(address_map &map)
{
- map(0x00000, 0x0dfff).rom();
- map(0x0e000, 0x0efff).ram();
- map(0x0e9bf, 0x0e9bf).noprw(); // hack: uncomment to switch to Formosa
- map(0x0f000, 0x0ffff).ram();
- map(0x10000, 0x3ffff).rom();
+ map(0x00, 0x00).portr("PLAYER1").w(NAME((&igs017_state::counter_w<7, 0x7f, 0>))); // coin in
+ map(0x01, 0x01).portr("PLAYER2").w(NAME((&igs017_state::counter_w<0, 0xfe, 1>))); // coin out
+ map(0x02, 0x02).portr("COINS").w(NAME((&igs017_state::oki_sound_bank_w<4, 0xcf>))); // oki bank (0x20/0x30)
+ map(0x03, 0x03).portr("BUTTONS").w(NAME((&igs017_state::hopper_motor_w<6, 0xbf>)));
+
+ // used ?
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
}
-u8 igs017_state::spkrform_input_r()
-{
- switch (m_input_select)
- {
- case 0x00: return m_io_player1->read();
- case 0x01: return m_io_player2->read();
- case 0x02: return m_io_coins->read();
- case 0x03:
- {
- return m_io_buttons->read();
- }
- default:
- logerror("%s: input %02x read\n", machine().describe_context(), m_input_select);
- return 0xff;
- }
-}
+// spkrform
void igs017_state::spkrform_io(address_map &map)
{
map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
-
map(0x0000, 0x003f).ram(); // internal regs
+ map(0x2010, 0x2011).w(FUNC(igs017_state::incdec_remap_addr_w));
+
map(0x8000, 0x8000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x9000, 0x9001).w("ymsnd", FUNC(ym2413_device::write));
- map(0xa000, 0xa000).portr("A000"); // Game selection
- map(0xa001, 0xa001).portr("A001");
+// map(0xa000, 0xa0??).ram(); // read/written during poker game enabling at boot (patched out)
- map(0xb000, 0xb000).w(FUNC(igs017_state::input_select_w));
- map(0xb001, 0xb001).r(FUNC(igs017_state::spkrform_input_r));
+ map(0xb000, 0xb000).w (m_igs_mux, FUNC(igs_mux_device::address_w));
+ map(0xb001, 0xb001).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w));
+}
+
+void igs017_state::spkrform_mux_map(address_map &map)
+{
+ map(0x00, 0x00).portr("PLAYER1").w(NAME((&igs017_state::counter_w<7, 0x7f, 0>))); // coin in
+ map(0x01, 0x01).portr("PLAYER2").w(NAME((&igs017_state::counter_w<7, 0x7f, 1>))); // coin out
+ map(0x02, 0x02).portr("COINS").w(NAME((&igs017_state::hopper_motor_w<4, 0xef>))); // bit 5 is related to poker game enabling
+ map(0x03, 0x03).portr("BUTTONS");
+
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
}
// lhzb2
-void igs017_state::lhzb2_magic_w(offs_t offset, u16 data, u16 mem_mask)
+void igs017_state::lhzb2_map(address_map &map)
{
- switch (m_igs_magic)
- {
- case 0x00:
- if (ACCESSING_BITS_0_7)
- {
- m_input_select = data & 0xff;
- }
+ map(0x000000, 0x07ffff).rom();
- if (m_input_select & ~0x1f)
- logerror("%s: warning, unknown bits written in input_select = %02x\n", machine().describe_context(), m_input_select);
- break;
+ map(0x100000, 0x103fff).ram().share("igs022:sharedprotram"); // Shared with protection device
- case 0x01:
- if (ACCESSING_BITS_0_7)
- {
- m_oki->set_rom_bank((data >> 7) & 1);
+ map(0x500000, 0x503fff).ram();
- if (data & 0x7f)
- logerror("%s: warning, unknown bits written in oki bank = %04x\n", machine().describe_context(), data);
- }
- break;
+ map(0x910000, 0x910001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
+ map(0x910002, 0x910003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
- default:
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_igs_magic, data);
- }
+ map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
+
+ map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
-u16 igs017_state::lhzb2_magic_r()
+u8 igs017_state::lhzb2_keys_r()
{
- switch (m_igs_magic)
- {
- case 0x01:
- {
- if (~m_input_select & 0x01) return m_io_key[0]->read();
- if (~m_input_select & 0x02) return m_io_key[1]->read();
- if (~m_input_select & 0x04) return m_io_key[2]->read();
- if (~m_input_select & 0x08) return m_io_key[3]->read();
- if (~m_input_select & 0x10) return m_io_key[4]->read();
-
- logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select);
- return 0xffff;
- }
+ u8 ret = 0xff;
+ if (!BIT(m_input_select, 0)) ret &= m_io_key[0]->read();
+ if (!BIT(m_input_select, 1)) ret &= m_io_key[1]->read();
+ if (!BIT(m_input_select, 2)) ret &= m_io_key[2]->read();
+ if (!BIT(m_input_select, 3)) ret &= m_io_key[3]->read();
+ if (!BIT(m_input_select, 4)) ret &= m_io_key[4]->read();
+ return ret;
+}
- default:
- logerror("%s: warning, reading with igs_magic = %02x\n", machine().describe_context(), m_igs_magic);
- break;
- }
+void igs017_state::lhzb2_keys_hopper_w(u8 data)
+{
+ m_input_select = BIT(data, 0, 5); // keys
+ m_hopper->motor_w( BIT(data, 5)); // hopper
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 6)); // coin out counter
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 7)); // coin in counter
+}
- return 0xffff;
+u8 igs017_state::lhzb2_scramble_data_r()
+{
+ u8 ret = bitswap<8>(m_scramble_data, 0,1,2,3,4,5,6,7);
+ LOGMASKED(LOG_PROT_SCRAMBLE, "%s: reading scrambled data %02x from igs_mux\n", machine().describe_context(), ret);
+ return ret;
}
-void igs017_state::lhzb2_map(address_map &map)
+void igs017_state::lhzb2_igs022_execute_w(u8 data)
{
- map(0x000000, 0x07ffff).rom();
- map(0x500000, 0x503fff).ram();
- map(0x910000, 0x910001).w(FUNC(igs017_state::magic_w));
- map(0x910002, 0x910003).rw(FUNC(igs017_state::lhzb2_magic_r), FUNC(igs017_state::lhzb2_magic_w));
+ m_oki->set_rom_bank(BIT(data, 7));
+ igs022_execute_w<6, 0x3f>(data);
+}
- map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
+void igs017_state::lhzb2_mux_map(address_map &map)
+{
+ map(0x00, 0x00).w(FUNC(igs017_state::lhzb2_keys_hopper_w));
+ map(0x01, 0x01).r(FUNC(igs017_state::lhzb2_keys_r)).w(FUNC(igs017_state::lhzb2_igs022_execute_w));
+ map(0x02, 0x02).r(FUNC(igs017_state::lhzb2_scramble_data_r));
+ map(0x03, 0x03).w(FUNC(igs017_state::mgcs_scramble_data_w));
- map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
}
@@ -2302,28 +2705,16 @@ void igs017_state::lhzb2_map(address_map &map)
u16 igs017_state::lhzb2a_input_r(offs_t offset)
{
- switch (offset*2)
+ switch (offset * 2)
{
- case 0x00: // Keys
- {
- if (~m_input_select & 0x01) return m_io_key[0]->read() << 8;
- if (~m_input_select & 0x02) return m_io_key[1]->read() << 8;
- if (~m_input_select & 0x04) return m_io_key[2]->read() << 8;
- if (~m_input_select & 0x08) return m_io_key[3]->read() << 8;
- if (~m_input_select & 0x10) return m_io_key[4]->read() << 8;
-
- logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select);
- return 0xffff;
- }
+ case 0x00: // Keys
+ return (lhzb2_keys_r() << 8) | 0xff;
case 0x02:
- {
- u16 hopper_bit = (m_hopper && ((m_screen->frame_number()/10)&1)) ? 0x0000 : 0x0002;
- return (m_io_dsw[0]->read() << 8) | m_io_coins->read() | hopper_bit;
- }
+ return (m_io_dsw[0]->read() << 8) | m_io_coins->read();
case 0x04:
- return m_io_dsw[1]->read();
+ return 0xff00 | m_io_dsw[1]->read();
}
return 0xffff;
@@ -2333,7 +2724,7 @@ u16 igs017_state::lhzb2a_input_r(offs_t offset)
An address base register (xx = F0 at reset) determines where the bitswap protection device,
as well as game inputs and the address base register itself are mapped in memory:
- inputs are mapped at xx8000, protection at xx4000 and base register at xxc000.
+ inputs are mapped at xx8000, protection at xx4000 and address base register at xxc000.
***************************************************************************/
@@ -2352,30 +2743,30 @@ void igs017_state::lhzb2a_remap_addr_w(address_space &space, u16 data)
m_remap_addr = data & 0xff;
// Add new memory ranges
- space.install_write_handler (m_remap_addr * 0x10000 + 0x4001, m_remap_addr * 0x10000 + 0x4001, write8smo_delegate(*m_igs_bitswap, FUNC(igs_bitswap_device::address_w)));
- space.install_readwrite_handler(m_remap_addr * 0x10000 + 0x4003, m_remap_addr * 0x10000 + 0x4003, read8smo_delegate (*m_igs_bitswap, FUNC(igs_bitswap_device::data_r)), write8smo_delegate(*m_igs_bitswap, FUNC(igs_bitswap_device::data_w)));
+ space.install_write_handler (m_remap_addr * 0x10000 + 0x4001, m_remap_addr * 0x10000 + 0x4001, write8smo_delegate(*m_igs_mux, FUNC(igs_mux_device::address_w)));
+ space.install_readwrite_handler(m_remap_addr * 0x10000 + 0x4003, m_remap_addr * 0x10000 + 0x4003, read8smo_delegate (*m_igs_mux, FUNC(igs_mux_device::data_r)), write8smo_delegate(*m_igs_mux, FUNC(igs_mux_device::data_w)));
space.install_read_handler (m_remap_addr * 0x10000 + 0x8000, m_remap_addr * 0x10000 + 0x8005, read16sm_delegate (*this, FUNC(igs017_state::lhzb2a_input_r)));
space.install_write_handler (m_remap_addr * 0x10000 + 0xc000, m_remap_addr * 0x10000 + 0xc001, write16mo_delegate(*this, FUNC(igs017_state::lhzb2a_remap_addr_w)));
- logerror("%s: inputs and protection remapped at %02xxxxx\n", machine().describe_context(), m_remap_addr);
+ LOGMASKED(LOG_PROT_REMAP, "%s: inputs and protection remapped at %02xxxxx\n", machine().describe_context(), m_remap_addr);
}
-void igs017_state::lhzb2a_input_select_w(offs_t offset, u16 data, u16 mem_mask)
+void igs017_state::lhzb2a_keys_hopper_w(offs_t offset, u16 data, u16 mem_mask)
{
if (ACCESSING_BITS_0_7)
{
- m_input_select = data & 0x1f; // keys
- m_hopper = data & 0x20; // hopper motor
- machine().bookkeeping().coin_counter_w(1, data & 0x40); // coin out counter
- machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in counter
+ m_input_select = BIT(data, 0, 5); // keys
+ m_hopper->motor_w( BIT(data, 5)); // hopper
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 6)); // coin out counter
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 7)); // coin in counter
}
if (ACCESSING_BITS_8_15)
{
- m_oki->set_rom_bank((data >> 8) & 1);
+ m_oki->set_rom_bank(BIT(data, 7));
if (data & 0xfe00)
- logerror("%s: warning, unknown bits written in input_select = %04x\n", machine().describe_context(), data);
+ logerror("%s: warning, unknown bits written in keys_hopper_w = %04x\n", machine().describe_context(), data);
}
}
@@ -2384,10 +2775,10 @@ void igs017_state::lhzb2a_map(address_map &map)
map(0x000000, 0x07ffff).rom();
// incdec protection
- map(0x003200, 0x003201).w(m_igs_incdec, FUNC(igs_incdec_device::reset_w));
- map(0x003202, 0x003203).w(m_igs_incdec, FUNC(igs_incdec_device::dec_w));
- map(0x003206, 0x003207).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w));
- map(0x00320a, 0x00320b).r(m_igs_incdec, FUNC(igs_incdec_device::val_r));
+ map(0x003201, 0x003201).w(m_igs_incdec, FUNC(igs_incdec_device::reset_w));
+ map(0x003203, 0x003203).w(m_igs_incdec, FUNC(igs_incdec_device::dec_w));
+ map(0x003207, 0x003207).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w));
+ map(0x00320b, 0x00320b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r));
map(0x500000, 0x503fff).ram();
// map(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled
@@ -2395,78 +2786,65 @@ void igs017_state::lhzb2a_map(address_map &map)
map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0xb12000, 0xb12001).w(FUNC(igs017_state::lhzb2a_input_select_w));
- // Inputs dynamically mapped at xx8000, protection at xx4000 (xx = f0 initially). xx written to xxc000
-}
+ map(0xb12000, 0xb12001).w(FUNC(igs017_state::lhzb2a_keys_hopper_w));
+ // Inputs dynamically mapped at xx8000, protection at xx4000 (xx = f0 initially). xx written to xxc000
+}
-// slqz2
-
-void igs017_state::slqz2_magic_w(offs_t offset, u16 data, u16 mem_mask)
+void igs017_state::lhzb2a_mux_map(address_map &map)
{
- switch (m_igs_magic)
- {
- case 0x00:
- if (ACCESSING_BITS_0_7)
- {
- m_oki->set_rom_bank(data & 0x01);
-
-// m_hopper = data & 0x20; // hopper motor
-// machine().bookkeeping().coin_counter_w(1, data & 0x40); // coin out counter
- machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in counter
+ igs_bitswap_mux_map(map); // 0x03 r, 0x40 - 0x47 w, 0x48 w, 0x50 w, 0x80 - 0x87 w, 0xa0 w
- if (data & 0x7e)
- logerror("%s: warning, unknown bits written in oki bank = %04x\n", machine().describe_context(), data);
- }
- break;
-
- default:
- logerror("%s: warning, writing to igs_magic %02x = %02x\n", machine().describe_context(), m_igs_magic, data);
- }
+ // used ?
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
}
-u16 igs017_state::slqz2_magic_r()
-{
- switch (m_igs_magic)
- {
- case 0x00:
- return m_io_player2->read();
- case 0x01:
- return m_io_player1->read();
- case 0x02:
- return m_io_buttons->read();
-
- default:
- logerror("%s: warning, reading with igs_magic = %02x\n", machine().describe_context(), m_igs_magic);
- break;
- }
- return 0xffff;
-}
+// slqz2
void igs017_state::slqz2_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x103fff).ram();
- map(0x602000, 0x602001).w(FUNC(igs017_state::magic_w));
- map(0x602002, 0x602003).rw(FUNC(igs017_state::slqz2_magic_r), FUNC(igs017_state::slqz2_magic_w));
+
+ map(0x300000, 0x303fff).ram().share("igs022:sharedprotram"); // Shared with protection device
+
+ map(0x602000, 0x602001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
+ map(0x602002, 0x602003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
map(0x900000, 0x90ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
map(0x910001, 0x910001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
-u8 igs017_state::i8255_port_c_mux_r()
+void igs017_state::slqz2_sound_hopper_w(u8 data)
{
- switch(m_i8255_portc_mux)
- {
- case 0x01: return m_io_dsw[2]->read();
- case 0x02: return m_io_dsw[1]->read();
- case 0x03: return m_io_dsw[0]->read();
- }
+ m_oki->set_rom_bank( BIT(data, 0));
+ //
+ m_hopper->motor_w( BIT(data, 5)); // hopper
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 6)); // coin out counter
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 7)); // coin in counter
+
+ if (data & 0x1e)
+ logerror("%s: warning, unknown bits written in sound_hopper_w = %04x\n", machine().describe_context(), data);
+}
+
+u8 igs017_state::slqz2_scramble_data_r()
+{
+ u8 ret = m_scramble_data;
+ LOGMASKED(LOG_PROT_SCRAMBLE, "%s: reading scrambled data %02x from igs_mux\n", machine().describe_context(), ret);
+ return ret;
+}
+
+void igs017_state::slqz2_mux_map(address_map &map)
+{
+ map(0x00, 0x00).portr("PLAYER2").w(FUNC(igs017_state::slqz2_sound_hopper_w));
+ map(0x01, 0x01).portr("PLAYER1").w(NAME((&igs017_state::igs022_execute_w<6, 0xbf>)));
+ map(0x02, 0x02).r(FUNC(igs017_state::slqz2_scramble_data_r));
+ map(0x03, 0x03).w(FUNC(igs017_state::mgcs_scramble_data_w));
- return 0xff;
+ igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
}
@@ -2476,16 +2854,16 @@ u8 igs017_state::i8255_port_c_mux_r()
static INPUT_PORTS_START( iqblocka )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Hold Mode" )
+ PORT_DIPNAME( 0x02, 0x02, "Hold Mode" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, "In Win" )
PORT_DIPSETTING( 0x00, "Always" )
- PORT_DIPNAME( 0x04, 0x04, "Max Credit" )
+ PORT_DIPNAME( 0x04, 0x04, "Max Credit" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, "4000" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPNAME( 0x38, 0x38, "Cigarette Bet" )
+ PORT_DIPNAME( 0x38, 0x38, "Cigarette Bet" ) PORT_DIPLOCATION("SW1:4,5,6")
PORT_DIPSETTING( 0x38, "1" )
PORT_DIPSETTING( 0x30, "10" )
PORT_DIPSETTING( 0x28, "20" )
@@ -2494,14 +2872,14 @@ static INPUT_PORTS_START( iqblocka )
PORT_DIPSETTING( 0x10, "100" )
PORT_DIPSETTING( 0x08, "120" )
PORT_DIPSETTING( 0x00, "150" )
- PORT_DIPNAME( 0xc0, 0xc0, "Min Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "10" )
PORT_DIPSETTING( 0x40, "20" )
PORT_DIPSETTING( 0x00, "50" )
PORT_START("DSW2")
- PORT_DIPNAME( 0x07, 0x07, "Key In" )
+ PORT_DIPNAME( 0x07, 0x07, "Key In" ) PORT_DIPLOCATION("SW2:1,2,3")
PORT_DIPSETTING( 0x07, "10" )
PORT_DIPSETTING( 0x06, "20" )
PORT_DIPSETTING( 0x05, "40" )
@@ -2510,63 +2888,63 @@ static INPUT_PORTS_START( iqblocka )
PORT_DIPSETTING( 0x02, "200" )
PORT_DIPSETTING( 0x01, "250" )
PORT_DIPSETTING( 0x00, "500" )
- PORT_DIPNAME( 0x08, 0x08, "Key Out" )
+ PORT_DIPNAME( 0x08, 0x08, "Key Out" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, "10" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Open Mode" )
- PORT_DIPSETTING( 0x10, "Gaming" )
+ PORT_DIPNAME( 0x10, 0x10, "Open Mode" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x10, "Gaming (Gambling)" )
PORT_DIPSETTING( 0x00, "Amuse" )
- PORT_DIPNAME( 0x20, 0x00, "Demo Game" )
+ PORT_DIPNAME( 0x20, 0x00, "Demo Game" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0xc0, 0xc0, "Bonus Base" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Bonus Base" ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0xc0, "100" )
PORT_DIPSETTING( 0x80, "200" )
PORT_DIPSETTING( 0x40, "300" )
PORT_DIPSETTING( 0x00, "400" )
PORT_START("DSW3")
- PORT_DIPNAME( 0x03, 0x03, "Win Up Pool" )
+ PORT_DIPNAME( 0x03, 0x03, "Win Up Pool" ) PORT_DIPLOCATION("SW3:1,2")
PORT_DIPSETTING( 0x03, "300" )
PORT_DIPSETTING( 0x02, "500" )
PORT_DIPSETTING( 0x01, "800" )
PORT_DIPSETTING( 0x00, "1000" )
- PORT_DIPNAME( 0x0c, 0x0c, "Max Double Up" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Max Double Up" ) PORT_DIPLOCATION("SW3:3,4")
PORT_DIPSETTING( 0x0c, "20000" )
PORT_DIPSETTING( 0x08, "30000" )
PORT_DIPSETTING( 0x04, "40000" )
PORT_DIPSETTING( 0x00, "50000" )
- PORT_DIPNAME( 0x10, 0x10, "Cards" )
+ PORT_DIPNAME( 0x10, 0x10, "Number Type" ) PORT_DIPLOCATION("SW3:5")
PORT_DIPSETTING( 0x10, "A,J,Q,K" )
PORT_DIPSETTING( 0x00, "Number" )
- PORT_DIPNAME( 0x20, 0x20, "Title Name" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Double Up" )
+ PORT_DIPNAME( 0x20, 0x20, "Show Title" ) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPNAME( 0x40, 0x40, "Double Up" ) PORT_DIPLOCATION("SW3:7")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "CG Select" )
+ PORT_DIPNAME( 0x80, 0x80, "CG Select" ) PORT_DIPLOCATION("SW3:8") // Switches CG ROM (sprites). Unpopulated in this set
PORT_DIPSETTING( 0x80, DEF_STR( Low ) )
PORT_DIPSETTING( 0x00, DEF_STR( High ) )
PORT_START("PLAYER1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME( "Start" ) // start, in videogame mode (keep pressed while booting for DSW and inputs test)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // start, in videogame mode (keep pressed while booting for DSW and inputs test)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME( "Down / Collect Win" )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("%p Down / Collect Win")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Hold 1 / Big / Help" ) // help = next tile becomes a wildcard (in videogame mode)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Hold 2 / Double Up" )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 / Big / Help") // (1P A in test mode) help = next tile becomes a wildcard (in videogame mode)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Double Up") // (1P B in test mode)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("PLAYER2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( "Play / Last Bet" ) // play current bet or, if null, bet as last time (2P C in test mode)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Last Bet") // play current bet or, if null, the last bet (START2 in test mode)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) // unused? shown in test mode
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) // ""
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) // ""
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) // ""
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Hold 4 / Half Double" ) // (2P A in test mode)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME( "Hold 5 / Tile in Double Up?" ) // (2P B in test mode)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Half Double") // (2P A in test mode)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Tile in Double Up?") // (2P B in test mode)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("COINS")
@@ -2577,15 +2955,15 @@ static INPUT_PORTS_START( iqblocka )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME( "Toggle Gambling" ) // this toggles between videogame and gambling
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Toggle Gambling") // this toggles between videogame and gambling
PORT_START("BUTTONS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Hold 3 / Small" )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // no coin. Hopper sensor? impulse prevents coin error in gambling mode (1P D in test mode)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) // unused? (1P E in test mode)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START3 ) PORT_NAME( "Bet" ) // Bet 1 credit (2P C in test mode)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // unused? (2P D in test mode)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // unused? (2P E in test mode)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3 / Small") // (1P C in test mode)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // no coin. Hopper sensor? impulse prevents coin error in gambling mode (1P D in test mode)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) // unused? (1P E in test mode)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // Bet 1 credit (2P C in test mode)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // unused? (2P D in test mode)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) // unused? (2P E in test mode)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
@@ -2594,195 +2972,200 @@ static INPUT_PORTS_START( iqblockf )
PORT_INCLUDE( iqblocka )
PORT_MODIFY("DSW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Hold Mode" )
+ PORT_DIPNAME( 0x02, 0x02, "Hold Mode" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, "In Win" )
PORT_DIPSETTING( 0x00, "Always" )
- PORT_DIPNAME( 0x0c, 0x0c, "Coin In" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Coin In" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "5" )
PORT_DIPSETTING( 0x04, "10" )
PORT_DIPSETTING( 0x00, "20" )
- PORT_DIPNAME( 0x30, 0x30, "Key In" )
+ PORT_DIPNAME( 0x30, 0x30, "Key In" ) PORT_DIPLOCATION("SW1:5,6")
PORT_DIPSETTING( 0x30, "10" )
PORT_DIPSETTING( 0x20, "100" )
PORT_DIPSETTING( 0x10, "200" )
PORT_DIPSETTING( 0x00, "500" )
- PORT_DIPNAME( 0xc0, 0xc0, "Min Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "2" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_MODIFY("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Max Bet" )
+ PORT_DIPNAME( 0x03, 0x03, "Max Bet" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPSETTING( 0x02, "10" )
PORT_DIPSETTING( 0x01, "20" )
PORT_DIPSETTING( 0x00, "50" )
- PORT_DIPNAME( 0x04, 0x04, "Register" )
+ PORT_DIPNAME( 0x04, 0x04, "Register" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Key Out Base" )
+ PORT_DIPNAME( 0x08, 0x08, "Key Out Base" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x10, 0x10, "Open Mode" )
- PORT_DIPSETTING( 0x10, "Gaming" )
+ PORT_DIPNAME( 0x10, 0x10, "Open Mode" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x10, "Gaming (Gambling)" )
PORT_DIPSETTING( 0x00, "Amuse" )
- PORT_DIPNAME( 0x20, 0x00, "Demo Game" )
+ PORT_DIPNAME( 0x20, 0x00, "Demo Game" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNUSED( 0x40, 0x40 )
- PORT_DIPUNUSED( 0x80, 0x80 )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
PORT_MODIFY("DSW3")
- PORT_DIPUNUSED( 0x01, 0x01 )
- PORT_DIPUNUSED( 0x02, 0x02 )
- PORT_DIPUNUSED( 0x04, 0x04 )
- PORT_DIPUNUSED( 0x08, 0x08 )
- PORT_DIPNAME( 0x10, 0x10, "Cards" )
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW3:1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW3:2" )
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW3:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW3:4" )
+ PORT_DIPNAME( 0x10, 0x10, "Number Type" ) PORT_DIPLOCATION("SW3:5")
PORT_DIPSETTING( 0x10, "A,J,Q,K" )
PORT_DIPSETTING( 0x00, "Number" )
- PORT_DIPUNUSED( 0x20, 0x20 )
- PORT_DIPUNUSED( 0x40, 0x40 )
- PORT_DIPNAME( 0x80, 0x80, "CG Select" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" )
+ PORT_DIPNAME( 0x80, 0x80, "CG Select" ) PORT_DIPLOCATION("SW3:8") // Switches CG ROM (sprites). Unpopulated in this set
PORT_DIPSETTING( 0x80, DEF_STR( Low ) )
PORT_DIPSETTING( 0x00, DEF_STR( High ) )
PORT_MODIFY("PLAYER2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( "Play / Last Bet / Toggle Gambling (8 Times)" ) // play current bet or, if null, bet as last time (2P C in test mode)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Last Bet / Toggle Gambling (8 Times)") // play current bet or, if null, bet as last time (START2 in test mode)
PORT_MODIFY("COINS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // impulse prevents coin error in gambling mode
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
- //
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME( "Start Gambling Toggle" ) // this starts toggling between videogame and gambling
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW ) // book-keeping after switching to gambling (TEST in test mode)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Start Gambling Toggle (Then Deal x 8)") // this starts toggling between videogame and gambling
PORT_MODIFY("BUTTONS")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // (2P E in test mode)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // (1P E in test mode)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // (2P E in test mode)
INPUT_PORTS_END
static INPUT_PORTS_START( genius6 )
PORT_INCLUDE( iqblockf )
PORT_MODIFY("DSW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Auto Hold" )
+ PORT_DIPNAME( 0x02, 0x02, "Auto Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Coin In" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Coin In" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "10" )
PORT_DIPSETTING( 0x04, "20" )
PORT_DIPSETTING( 0x00, "50" )
- PORT_DIPNAME( 0x30, 0x30, "Key In" )
+ PORT_DIPNAME( 0x30, 0x30, "Key In" ) PORT_DIPLOCATION("SW1:5,6")
PORT_DIPSETTING( 0x30, "10" )
PORT_DIPSETTING( 0x20, "100" )
PORT_DIPSETTING( 0x10, "200" )
PORT_DIPSETTING( 0x00, "500" )
- PORT_DIPNAME( 0xc0, 0xc0, "Min Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "2" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_MODIFY("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Max Bet" )
+ PORT_DIPNAME( 0x03, 0x03, "Max Bet" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPSETTING( 0x02, "10" )
PORT_DIPSETTING( 0x01, "20" )
PORT_DIPSETTING( 0x00, "50" )
- PORT_DIPUNUSED( 0x04, 0x04 )
- PORT_DIPNAME( 0x08, 0x08, "Key Out" )
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" )
+ PORT_DIPNAME( 0x08, 0x08, "Key Out" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x10, 0x10, "Open Mode" )
- PORT_DIPSETTING( 0x10, "Gaming" )
+ PORT_DIPNAME( 0x10, 0x10, "Open Mode" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x10, "Gaming (Gambling)" )
PORT_DIPSETTING( 0x00, "Amuse" )
- PORT_DIPNAME( 0x20, 0x00, "Demo Game" )
+ PORT_DIPNAME( 0x20, 0x00, "Demo Game" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNUSED( 0x40, 0x40 )
- PORT_DIPUNUSED( 0x80, 0x80 )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
PORT_MODIFY("DSW3")
- PORT_DIPUNUSED( 0x01, 0x01 )
- PORT_DIPUNUSED( 0x02, 0x02 )
- PORT_DIPUNUSED( 0x04, 0x04 )
- PORT_DIPUNUSED( 0x08, 0x08 )
- PORT_DIPNAME( 0x10, 0x10, "Cards" )
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW3:1" ) // the input test screen prints garbage when not all off
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW3:2" ) // ""
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW3:3" ) // ""
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW3:4" ) // ""
+ PORT_DIPNAME( 0x10, 0x10, "Number Type" ) PORT_DIPLOCATION("SW3:5")
PORT_DIPSETTING( 0x10, "A,J,Q,K" )
PORT_DIPSETTING( 0x00, "Number" )
- PORT_DIPUNUSED( 0x20, 0x20 )
- PORT_DIPUNUSED( 0x40, 0x40 )
- PORT_DIPUNUSED( 0x80, 0x80 )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW3:8" )
PORT_MODIFY("PLAYER2")
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME( "Hold 5" ) // (2P B in test mode)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) // (2P B in test mode)
INPUT_PORTS_END
static INPUT_PORTS_START( lhzb2 )
PORT_START("DSW1")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1: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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "1000" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
+ PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "500" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1500" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0c, "1" )
- PORT_DIPSETTING( 0x08, "2" )
- PORT_DIPSETTING( 0x04, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, "Bonus Round" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4")
+ PORT_DIPSETTING( 0x0c, "1 (1)" )
+ PORT_DIPSETTING( 0x08, "1 (2)" )
+ PORT_DIPSETTING( 0x04, "1 (3)" )
+ PORT_DIPSETTING( 0x00, "1 (4)" )
+ PORT_DIPNAME( 0x10, 0x10, "Bonus Round" ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x20, "Number Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Number Type" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, "Number" )
PORT_DIPSETTING( 0x00, "Dice" )
- PORT_DIPNAME( 0x40, 0x40, "Symbols" )
+ PORT_DIPNAME( 0x40, 0x40, "Symbols" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // pigs, apples
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // pigs, apples
+ PORT_DIPNAME( 0x80, 0x80, "Hide Gambling" ) PORT_DIPLOCATION("SW2:8") // press "Hide Gambling" to hide credits and bets
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) // hopper switch (unimplemented)
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // service mode (keep pressed during boot too)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") // press with the above for sound test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) // ? (shown in service mode)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // test mode (keep pressed during boot too)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // press with the above for sound test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
@@ -2836,175 +3219,94 @@ static INPUT_PORTS_START( lhzb2 )
INPUT_PORTS_END
static INPUT_PORTS_START( lhzb2a )
- PORT_START("DSW1")
- 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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
- PORT_DIPSETTING( 0x0c, "10" )
- PORT_DIPSETTING( 0x08, "20" )
- PORT_DIPSETTING( 0x04, "50" )
- PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
- PORT_DIPSETTING( 0x10, "1000" )
- PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
- PORT_DIPSETTING( 0x20, "Coins" )
- PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
- PORT_DIPSETTING( 0x40, "Coins" )
- PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-
- PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
- PORT_DIPSETTING( 0x03, "500" )
- PORT_DIPSETTING( 0x02, "1000" )
- PORT_DIPSETTING( 0x01, "1500" )
- PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0c, "1" )
- PORT_DIPSETTING( 0x08, "2" )
- PORT_DIPSETTING( 0x04, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, "Bonus Round" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x20, "Number Type" )
- PORT_DIPSETTING( 0x20, "Number" )
- PORT_DIPSETTING( 0x00, "Dice" )
- PORT_DIPNAME( 0x40, 0x40, "Symbols" )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // pigs, apples
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) // hopper switch
- PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") // press with the above for sound test
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 ) // shown in test mode
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_INCLUDE( lhzb2 )
- PORT_START("KEY0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("KEY1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("KEY2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
- 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("KEY3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- 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("KEY4")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_MODIFY("COINS")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // press with the above for sound test
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( mgcs )
- // DSWs are read through a protection device (IGS029). See code at 1CF16
+ // DSWs are read through a protection device (IGS029). See code at $1cf16
- PORT_START("DSW1") // $3009e2
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_START("DSW1") // $3009e2
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1: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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "500" )
PORT_DIPSETTING( 0x00, "1000" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
+ PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, "Double Up Limit" )
+ PORT_DIPNAME( 0x80, 0x80, "Double Up Limit" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, "1000" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_START("DSW2") // $3009e3
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
+ PORT_START("DSW2") // $3009e3
+ PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x04, 0x04, "Double Up" )
+ PORT_DIPNAME( 0x04, 0x04, "Double Up" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Controls ) )
+ PORT_DIPNAME( 0x08, 0x08, "Continue To Play" ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x10, "Keyboard" )
PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
- PORT_DIPNAME( 0x20, 0x20, "Number Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Number Type" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, "Number" )
PORT_DIPSETTING( 0x00, "Tile" )
- PORT_DIPNAME( 0x40, 0x40, "Double Up Type" )
- PORT_DIPSETTING( 0x40, "Double" )
- PORT_DIPSETTING( 0x00, DEF_STR( Single ) )
- PORT_DIPNAME( 0x80, 0x80, "Bet Number" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "Hide Gambling" ) PORT_DIPLOCATION("SW2:7") // press "Hide Gambling" to hide credits and bets
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" )
- // the top 2 bits of COINS (port A) and KEYx (port B) are read and combined with the bottom 4 bits read from port C (see code at 1C83A)
+ // Joystick mode: the top 2 bits of COINS (i8255 port A) and JOY (i8255 port B) are read and combined with the bottom 4 bits read from port C (see code at $1c83a)
+
+ PORT_START("JOY")
+ // Joystick mode:
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) // take tile or throw (as N in mahjong keyboard)
+ // i8255 port C input is 4 bits
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper switch
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // service mode (keep pressed during boot too)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") // press with the above for sound test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE3 ) // ? must be high to display numbers (shown in service mode)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // test mode (keep pressed during boot too)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // press with the above for sound test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
+ // Keyboard mode:
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x10,EQUALS,0x10)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x10,EQUALS,0x10)
+ // Joystick mode:
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW2",0x10,EQUALS,0x00) // bet
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW2",0x10,EQUALS,0x00) // function
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
@@ -3059,87 +3361,85 @@ INPUT_PORTS_END
static INPUT_PORTS_START( sdmg2 )
PORT_START("DSW1")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1: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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "2000" )
PORT_DIPSETTING( 0x00, "29999" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
+ PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
+ PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "500" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1500" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, "Keyboard" )
PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
- PORT_DIPNAME( 0x80, 0x80, "Number Type" )
+ PORT_DIPNAME( 0x80, 0x80, "Number Type" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, "Number" )
PORT_DIPSETTING( 0x00, "Tile" )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) // hopper switch
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) // shown in test mode
- PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
-
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除), does not work in game?
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
// Keyboard mode:
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40) // shown in test mode
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40) // shown in test mode ('O' appears, or it might be a 0)
// Joystick mode:
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
-
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // related to joystick BUTTON3
PORT_START("KEY0")
- // Keyboard mode:
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
- // Joystick mode:
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
@@ -3184,45 +3484,45 @@ INPUT_PORTS_END
static INPUT_PORTS_START( mgdh )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x06, 0x06, "Credits Per Note" )
+ PORT_DIPNAME( 0x06, 0x06, "Credits Per Note" ) PORT_DIPLOCATION("SW1:2,3")
PORT_DIPSETTING( 0x06, "5" )
PORT_DIPSETTING( 0x04, "10" )
PORT_DIPSETTING( 0x02, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x08, 0x08, "Max Note Credits" )
+ PORT_DIPNAME( 0x08, 0x08, "Max Note Credits" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "100" )
PORT_DIPSETTING( 0x00, "500" )
- PORT_DIPNAME( 0x10, 0x10, "Money Type" )
+ PORT_DIPNAME( 0x10, 0x10, "Money Type" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x20, 0x20, "Pay Out Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Pay Out Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0xc0, 0xc0, "Min Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "2" )
PORT_DIPSETTING( 0x40, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_START("DSW2") // bitswapped
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
+ PORT_START("DSW2") // bitswapped
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Controls ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, "Keyboard" )
PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x04, 0x04, "Continue To Play" ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:4,5")
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C ) )
- PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6,7,8")
PORT_DIPSETTING( 0xe0, "1" )
PORT_DIPSETTING( 0xc0, "2" )
PORT_DIPSETTING( 0xa0, "5" )
@@ -3233,34 +3533,34 @@ static INPUT_PORTS_START( mgdh )
PORT_DIPSETTING( 0x00, "10" )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) // hopper switch
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // service mode (keep pressed during boot too)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") // press with the above for sound test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) // ? (shown in service mode)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // test mode (keep pressed during boot too)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // press with the above for sound test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除), does not work in game?
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0")
// Keyboard mode:
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x02)
// Joystick mode:
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
@@ -3315,62 +3615,62 @@ INPUT_PORTS_END
static INPUT_PORTS_START( slqz2 )
PORT_START("DSW1")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1: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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "1000" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" )
+ PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
+ PORT_DIPNAME( 0x03, 0x03, "Double Up Limit" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "500" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1500" )
PORT_DIPSETTING( 0x00, "2000" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, "Bonus Round" )
+ PORT_DIPNAME( 0x10, 0x10, "Bonus Round" ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x20, "Number Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Number Type" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, "Number" )
PORT_DIPSETTING( 0x00, "Dice" )
- PORT_DIPNAME( 0x40, 0x40, "Symbols" )
+ PORT_DIPNAME( 0x40, 0x40, "Symbols" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // pigs, apples
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // pigs, apples
+ PORT_DIPNAME( 0x80, 0x80, "Hide Gambling" ) PORT_DIPLOCATION("SW2:8") // press "Hide Gambling" to hide credits and bets
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) // hopper switch (unimplemented)
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // service mode (keep pressed during boot too)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") // press with the above for sound test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // test mode (keep pressed during boot too)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // press with the above for sound test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin error otherwise
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // needs to be 0 for "clear" input below to work
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_START("PLAYER1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Don Den")
@@ -3378,82 +3678,72 @@ static INPUT_PORTS_START( slqz2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Help / Big" )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Help / Big")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("PLAYER2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( "Bet" )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
-
- PORT_START("BUTTONS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_1_PAD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_2_PAD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_3_PAD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_4_PAD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_5_PAD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_6_PAD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_7_PAD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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( tjsb )
PORT_START("DSW1")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1: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_5C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "1000" )
PORT_DIPSETTING( 0x00, "5000" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) // 2/4
+ PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7") // 2/4
PORT_DIPSETTING( 0x40, "Coins" )
PORT_DIPSETTING( 0x00, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Min Bet" )
+ PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "1000" )
PORT_DIPSETTING( 0x02, "2000" )
PORT_DIPSETTING( 0x01, "3000" )
PORT_DIPSETTING( 0x00, "4000" )
- PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x04, "5" )
PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x10, 0x10, "Bonus Round" ) // show bonus round in demo mode -> protection check
+ PORT_DIPNAME( 0x10, 0x10, "Bonus Round" ) PORT_DIPLOCATION("SW2:5") // show bonus round in demo mode -> protection check
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x20, "Number Type" )
+ PORT_DIPNAME( 0x20, 0x20, "Number Type" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, "Number" )
PORT_DIPSETTING( 0x00, "Dice" )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("DSW3") // check: (val^ff) & 9a == 0a
- PORT_DIPNAME( 0xff, 0xf5, "Bonus Round Protection Check" )
+ PORT_START("DSW3") // the protection check is skipped if (DSW3 ^ 0xff) & 0x9a == 0x0a
+ PORT_DIPNAME( 0xff, 0xf5, "Bonus Round Protection Check" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7,8")
PORT_DIPSETTING( 0xf5, DEF_STR( Off ) )
PORT_DIPSETTING( 0xff, DEF_STR( On ) )
@@ -3478,141 +3768,299 @@ static INPUT_PORTS_START( tjsb )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics")
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
-
- PORT_START("HOPPER")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // ? shown in test mode
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH,IPT_CUSTOM ) // hopper switch
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+
+ PORT_START("BUTTONS")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除), does not work in game?
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-// to do:
static INPUT_PORTS_START( spkrform )
PORT_START("DSW1")
- PORT_DIPUNKNOWN( 0x01, 0x01 )
- PORT_DIPUNKNOWN( 0x02, 0x02 )
- PORT_DIPUNKNOWN( 0x04, 0x04 )
- PORT_DIPUNKNOWN( 0x08, 0x08 )
- PORT_DIPUNKNOWN( 0x10, 0x10 )
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPUNKNOWN( 0x40, 0x40 )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW1:2" )
+ PORT_DIPNAME( 0x01c, 0x1c, "Credits Per Coin" ) PORT_DIPLOCATION("SW1:3,4,5")
+ PORT_DIPSETTING( 0x1c, "1" )
+ PORT_DIPSETTING( 0x18, "4" )
+ PORT_DIPSETTING( 0x14, "5" )
+ PORT_DIPSETTING( 0x10, "10" )
+ PORT_DIPSETTING( 0x0c, "20" )
+ PORT_DIPSETTING( 0x08, "40" )
+ PORT_DIPSETTING( 0x04, "50" )
+ PORT_DIPSETTING( 0x00, "100" )
+ PORT_DIPNAME( 0x20, 0x20, "Hopper" ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" )
PORT_START("DSW2")
- PORT_DIPUNKNOWN( 0x01, 0x01 )
- PORT_DIPUNKNOWN( 0x02, 0x02 )
- PORT_DIPUNKNOWN( 0x04, 0x04 )
- PORT_DIPUNKNOWN( 0x08, 0x08 )
- PORT_DIPUNKNOWN( 0x10, 0x10 )
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPUNKNOWN( 0x40, 0x40 )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
+ PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2")
+ PORT_DIPSETTING( 0x03, "1" )
+ PORT_DIPSETTING( 0x02, "5" )
+ PORT_DIPSETTING( 0x01, "10" )
+ PORT_DIPSETTING( 0x00, "20" )
+ PORT_DIPNAME( 0x1c, 0x1c, "Credits Per Note" ) PORT_DIPLOCATION("SW2:3,4,5")
+ PORT_DIPSETTING( 0x1c, "10" )
+ PORT_DIPSETTING( 0x18, "20" )
+ PORT_DIPSETTING( 0x14, "40" )
+ PORT_DIPSETTING( 0x10, "50" )
+ PORT_DIPSETTING( 0x0c, "100" )
+ PORT_DIPSETTING( 0x08, "200" )
+ PORT_DIPSETTING( 0x04, "250" )
+ PORT_DIPSETTING( 0x00, "500" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" )
PORT_START("DSW3")
- PORT_DIPNAME( 0x03, 0x03, "Win Up Pool" )
- PORT_DIPSETTING( 0x03, "300" )
- PORT_DIPSETTING( 0x02, "500" )
- PORT_DIPSETTING( 0x01, "800" )
- PORT_DIPSETTING( 0x00, "800" )
- PORT_DIPUNKNOWN( 0x04, 0x04 )
- PORT_DIPUNKNOWN( 0x08, 0x08 )
- PORT_DIPUNKNOWN( 0x10, 0x10 )
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPUNKNOWN( 0x40, 0x40 )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
+ PORT_DIPNAME( 0x03, 0x03, "?" ) PORT_DIPLOCATION("SW3:1,2")
+ PORT_DIPSETTING( 0x03, "100" )
+ PORT_DIPSETTING( 0x02, "200" )
+ PORT_DIPSETTING( 0x01, "300" )
+ PORT_DIPSETTING( 0x00, "400" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Win Up Pool" ) PORT_DIPLOCATION("SW3:3,4")
+ PORT_DIPSETTING( 0x0c, "300" )
+ PORT_DIPSETTING( 0x08, "500" )
+ PORT_DIPSETTING( 0x04, "800 (1)" )
+ PORT_DIPSETTING( 0x00, "800 (2)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW3:5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW3:6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW3:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW3:8" )
PORT_START("PLAYER1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // ?? exit poker
- 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 ) // start (formosa)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) // up
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) // down / start
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Hide Gambling (Switch To Formosa)")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Start (Formosa)")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // up (Formosa)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START ) PORT_NAME("Start / Draw / Take / %p Down (Formosa)")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("PLAYER2")
- 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) // right / bet
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // button1 / hold1
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) // hold2
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Half")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) // hold 5
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / W-Up")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // right (Formosa)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 / High / Button (Formosa)")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Double Up")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // left
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) // hold3
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) // credit in
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START4 ) // credit out
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) // left (Formosa)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3 / Low")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) // key in
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // key out
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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("BUTTONS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) // coin (coin error)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) // coin (coin error)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE4 ) // hopper error
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1") PORT_CODE(KEYCODE_1_PAD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2") PORT_CODE(KEYCODE_2_PAD) // record
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3") PORT_CODE(KEYCODE_3_PAD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("4") PORT_CODE(KEYCODE_4_PAD)
-
- PORT_START("A000")
- PORT_DIPNAME( 0xff, 0xff, "A000" )
- PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin 1 (impulse prevents coin error in gambling mode)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // coin 2 ""
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // payout
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Return To Gambling (From Formosa). Then Bet, Hold 1..5") // To switch back to poker from Formosa, start the sequence pressing this key (memory $f4a3 holds the sequence number)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // book
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
- PORT_START("A001")
- PORT_DIPNAME( 0xff, 0xff, "A001" )
- PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+static INPUT_PORTS_START( tarzan )
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0e, 0x0e, "Coin Value" ) PORT_DIPLOCATION("SW1:2,3,4")
+ PORT_DIPSETTING( 0x0e, "1" )
+ PORT_DIPSETTING( 0x0c, "2" )
+ PORT_DIPSETTING( 0x0a, "4" )
+ PORT_DIPSETTING( 0x08, "5" )
+ PORT_DIPSETTING( 0x06, "10" )
+ PORT_DIPSETTING( 0x04, "20" )
+ PORT_DIPSETTING( 0x02, "50" )
+ PORT_DIPSETTING( 0x00, "100" )
+ PORT_DIPNAME( 0x30, 0x30, "Key Value" ) PORT_DIPLOCATION("SW1:5,6")
+ PORT_DIPSETTING( 0x30, "100" )
+ PORT_DIPSETTING( 0x20, "200" )
+ PORT_DIPSETTING( 0x10, "500" )
+ PORT_DIPSETTING( 0x00, "1000" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Point Value" ) PORT_DIPLOCATION("SW1:7,8")
+ PORT_DIPSETTING( 0xc0, "1" )
+ PORT_DIPSETTING( 0x80, "10" )
+ PORT_DIPSETTING( 0x40, "100" )
+ PORT_DIPSETTING( 0x00, "100 (2)" )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x01, "Coin Type" ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x01, "Coin" )
+ PORT_DIPSETTING( 0x00, "Key" )
+ PORT_DIPNAME( 0x0e, 0x0e, "Minimum Bet" ) PORT_DIPLOCATION("SW2:2,3,4")
+ PORT_DIPSETTING( 0x0e, "5" )
+ PORT_DIPSETTING( 0x0c, "25" )
+ PORT_DIPSETTING( 0x0a, "50" )
+ PORT_DIPSETTING( 0x08, "75" )
+ PORT_DIPSETTING( 0x06, "100" )
+ PORT_DIPSETTING( 0x04, "125" )
+ PORT_DIPSETTING( 0x02, "125 (2)" )
+ PORT_DIPSETTING( 0x00, "125 (3)" )
+ PORT_DIPNAME( 0x30, 0x30, "Bonus Bet" ) PORT_DIPLOCATION("SW2:5,6")
+ PORT_DIPSETTING( 0x30, "75" )
+ PORT_DIPSETTING( 0x20, "125" )
+ PORT_DIPSETTING( 0x10, "200" )
+ PORT_DIPSETTING( 0x00, "250" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Continue To Play" ) PORT_DIPLOCATION("SW2:7,8")
+ PORT_DIPSETTING( 0xc0, "50k" )
+ PORT_DIPSETTING( 0x80, "100k" )
+ PORT_DIPSETTING( 0x40, "150k" )
+ PORT_DIPSETTING( 0x00, "200k" )
+
+ PORT_START("DSW3")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x01, "Keyboard" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
+ PORT_DIPNAME( 0x02, 0x00, "Back Color" ) PORT_DIPLOCATION("SW3:2")
+ PORT_DIPSETTING( 0x02, "Black" )
+ PORT_DIPSETTING( 0x00, "Color" )
+ PORT_DIPNAME( 0x04, 0x04, "Hide Gambling" ) PORT_DIPLOCATION("SW3:3") // Press "Hide Gambling" to hide credits and bets
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Number Type" ) PORT_DIPLOCATION("SW3:4")
+ PORT_DIPSETTING( 0x08, "Number" )
+ PORT_DIPSETTING( 0x00, "Mahjong Tile" )
+ PORT_DIPNAME( 0x10, 0x10, "Continue To Play" ) PORT_DIPLOCATION("SW3:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Payout" ) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPSETTING( 0x20, "Hopper" )
+ PORT_DIPSETTING( 0x00, "Points" )
+ PORT_DIPUNUSED_DIPLOC(0x40, 0x40, "SW3:7")
+ PORT_DIPUNUSED_DIPLOC(0x80, 0x80, "SW3:8")
+
+ PORT_START("COINS")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) // Service
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // Book
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // Coin/Key in (coin error in coin mode)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // Coin/Key out
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
+ // Keyboard mode:
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3",0x01,EQUALS,0x01)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3",0x01,EQUALS,0x01)
+ // Joystick mode:
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW3",0x01,EQUALS,0x00) PORT_NAME("%p Button 2 / Bet / Same Double Up" ) // Button B (test mode)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW3",0x01,EQUALS,0x00) PORT_NAME("%p Button 3 / Small / Half Double Up") // Button C (test mode)
+
+ PORT_START("JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Take") // Exit (test mode)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // Up (test mode)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) // Down (test mode)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) // Left (test mode)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // Right (test mode)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("%p Button 1 / Help / Big / Double Up") // Button A (test mode)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("KEY0")
+ // Keyboard mode:
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_NAME("%p Mahjong A / Help / Double Up")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_NAME("%p Mahjong M / Small")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START ) PORT_NAME("%p Mahjong Start / Take")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("KEY1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B (test mode)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // Bet
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("KEY2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_NAME("%p Mahjong C / Half Double Up")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_NAME("%p Mahjong K / Big")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
+ 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("KEY3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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("KEY4") // never read and not shown in test mode
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( starzan )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, "Unlimited" )
PORT_DIPSETTING( 0x00, "Limited" )
- PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Back Color" ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPNAME( 0x08, 0x00, "Back Color" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "Black" )
PORT_DIPSETTING( 0x00, "Color" )
- PORT_DIPNAME( 0x10, 0x10, "Stop Status" ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPNAME( 0x10, 0x10, "Stop Status" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "Non Stop" )
PORT_DIPSETTING( 0x00, "Auto Stop" )
- PORT_DIPNAME( 0x20, 0x20, "Key" ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPNAME( 0x20, 0x20, "Key" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Mode 1" )
- PORT_DIPSETTING( 0x00, "Mode 2" )
- PORT_DIPNAME( 0x40, 0x40, "Credit Level" ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x00, "Mode 2" ) // To Do
+ PORT_DIPNAME( 0x40, 0x40, "Credit Level" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Odds Table" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPNAME( 0x80, 0x80, "Odds Table" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, "Show" )
PORT_DIPSETTING( 0x00, "No Show" )
PORT_START("DSW2")
- PORT_DIPNAME( 0x01, 0x01, "Normal Level" ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPNAME( 0x01, 0x01, "Normal Level" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Low ) )
PORT_DIPSETTING( 0x00, DEF_STR( High ) )
PORT_DIPUNUSED_DIPLOC(0x02, 0x02, "SW2:2") // not used from here on according to test mode, PCB does have 3 8-dip banks
@@ -3634,97 +4082,94 @@ static INPUT_PORTS_START( starzan )
PORT_DIPUNUSED_DIPLOC(0x80, 0x80, "SW3:8")
PORT_START("PLAYER1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "HP SW" ) // called like this in key test, not clear what it does
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / HW-Up")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop Reel 3 / Low")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL ) PORT_NAME("Stop All Reels / Bet / 2W-Up")
PORT_START("PLAYER2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP4 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop Reel 2 / High")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP4 ) PORT_NAME("Stop Reel 4 / W-Up")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop Reel 1 / Take")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // 'gettone C'
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // 'gettone A'
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
- PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // enters book-keeping menu
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
-
- PORT_START("BUTTONS")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // 'coin C'
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // 'coin A'
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+ PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // enters book-keeping menu
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
INPUT_PORTS_END
-// Test mode is in Italian (probably machine translated given how literal it is).
+// Test mode is in Italian (probably machine translated given how literal it is)
static INPUT_PORTS_START( happyskl )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1") // 'demo audio'
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1") // 'demo audio'
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2") // 'lim. sistema'
+ PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2") // 'lim. sistema'
PORT_DIPSETTING( 0x02, "Unlimited" )
PORT_DIPSETTING( 0x00, "Limited" )
- PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3") // 'gioco radd.'
+ PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3") // 'gioco radd.'
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Game Speed" ) PORT_DIPLOCATION("SW1:4") // 'velocitá gioco'
+ PORT_DIPNAME( 0x08, 0x08, "Game Speed" ) PORT_DIPLOCATION("SW1:4") // 'velocitá gioco'
PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Quick" )
- PORT_DIPNAME( 0x10, 0x10, "Replay Game" ) PORT_DIPLOCATION("SW1:5") // not translated for some reason
+ PORT_DIPNAME( 0x10, 0x10, "Replay Game" ) PORT_DIPLOCATION("SW1:5") // not translated for some reason
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Show Table" ) PORT_DIPLOCATION("SW1:6") // 'vedi tabella'
+ PORT_DIPNAME( 0x20, 0x20, "Show Table" ) PORT_DIPLOCATION("SW1:6") // 'vedi tabella'
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Skill" ) PORT_DIPLOCATION("SW1:7") // 'abilitá'
+ PORT_DIPNAME( 0x40, 0x40, "Skill" ) PORT_DIPLOCATION("SW1:7") // 'abilitá'
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Payment Type" ) PORT_DIPLOCATION("SW1:8") // 'tipo pagam.'
+ PORT_DIPNAME( 0x80, 0x80, "Payment Type" ) PORT_DIPLOCATION("SW1:8") // 'tipo pagam.'
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Automatic" )
PORT_START("DSW2")
- PORT_DIPNAME( 0x01, 0x01, "Auto Payment" ) PORT_DIPLOCATION("SW2:1") // 'pagam. autom.'
+ PORT_DIPNAME( 0x01, 0x01, "Auto Payment" ) PORT_DIPLOCATION("SW2:1") // 'pagam. autom.'
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x06, 0x06, "Enable Payment" ) PORT_DIPLOCATION("SW2:2,3") // 'abilitá pagam.', they probably meant "abilita" instead of "abilitá"
+ PORT_DIPNAME( 0x06, 0x06, "Enable Payment" ) PORT_DIPLOCATION("SW2:2,3") // 'abilitá pagam.', they probably meant "abilita" instead of "abilitá"
PORT_DIPSETTING( 0x06, "Everything" ) // 'tutto'
PORT_DIPSETTING( 0x04, "1/Tickets" )
PORT_DIPSETTING( 0x02, "10/Tickets" )
PORT_DIPSETTING( 0x00, "1/Tickets" ) // same as 0x04, why?
- PORT_DIPNAME( 0x08, 0x08, "Select Balls" ) PORT_DIPLOCATION("SW2:4") // 'sel. palloni'
+ PORT_DIPNAME( 0x08, 0x08, "Select Balls" ) PORT_DIPLOCATION("SW2:4") // 'sel. palloni'
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, "Select Cubes" ) PORT_DIPLOCATION("SW2:5") // 'sel. cubi'
+ PORT_DIPNAME( 0x10, 0x10, "Select Cubes" ) PORT_DIPLOCATION("SW2:5") // 'sel. cubi'
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Select Cans" ) PORT_DIPLOCATION("SW2:6") // 'sel. lattine'
+ PORT_DIPNAME( 0x20, 0x20, "Select Cans" ) PORT_DIPLOCATION("SW2:6") // 'sel. lattine'
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Select Cards" ) PORT_DIPLOCATION("SW2:7") // 'sel. carte'
+ PORT_DIPNAME( 0x40, 0x40, "Select Cards" ) PORT_DIPLOCATION("SW2:7") // 'sel. carte'
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Credit Limit" ) PORT_DIPLOCATION("SW2:8") // 'lim. crediti'
+ PORT_DIPNAME( 0x80, 0x80, "Credit Limit" ) PORT_DIPLOCATION("SW2:8") // 'lim. crediti'
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
- PORT_DIPNAME( 0x01, 0x01, "Level Limit" ) PORT_DIPLOCATION("SW3:1") // 'lim. livello'
+ PORT_DIPNAME( 0x01, 0x01, "Level Limit" ) PORT_DIPLOCATION("SW3:1") // 'lim. livello'
PORT_DIPSETTING( 0x01, DEF_STR( Low ) )
PORT_DIPSETTING( 0x00, DEF_STR( High ) )
- PORT_DIPNAME( 0x02, 0x02, "Background" ) PORT_DIPLOCATION("SW3:2") // 'sfondo'
+ PORT_DIPNAME( 0x02, 0x02, "Background" ) PORT_DIPLOCATION("SW3:2") // 'sfondo'
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC(0x04, 0x04, "SW3:3") // not used from here on according to test mode
@@ -3735,40 +4180,37 @@ static INPUT_PORTS_START( happyskl )
PORT_DIPUNUSED_DIPLOC(0x80, 0x80, "SW3:8")
PORT_START("PLAYER1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "HP SW" ) // called like this in key test, not clear what it does
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
PORT_START("PLAYER2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // 'gettone C'
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // 'gettone A'
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
- PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // enters book-keeping menu
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
-
- PORT_START("BUTTONS")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // 'gettone C' (shows 'ricarica in corso')
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // 'gettone A'
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+ PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // enters book-keeping menu
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effects in key test
INPUT_PORTS_END
-static INPUT_PORTS_START( unkigs )
+static INPUT_PORTS_START( cpoker2 )
PORT_INCLUDE(happyskl)
PORT_MODIFY("PLAYER1")
@@ -3780,38 +4222,38 @@ static INPUT_PORTS_START( unkigs )
// dips definitions taken from test mode, to be verified when the game will be playable
PORT_MODIFY("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPNAME( 0x02, 0x02, "System Limit" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, "Unlimited" )
PORT_DIPSETTING( 0x00, "Limited" )
- PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPNAME( 0x04, 0x04, "W-Up Game" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "W-Up Type" ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPNAME( 0x08, 0x08, "W-Up Type" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "Big-Small" )
PORT_DIPSETTING( 0x00, "Red-Black" )
- PORT_DIPNAME( 0x10, 0x10, "Game Speed" ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPNAME( 0x10, 0x10, "Game Speed" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Quick" )
- PORT_DIPNAME( 0x20, 0x20, "Card Type" ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPNAME( 0x20, 0x20, "Card Type" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, "Poker" )
PORT_DIPSETTING( 0x00, "Symbol" )
- PORT_DIPNAME( 0x40, 0x40, "Sexy Girl" ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPNAME( 0x40, 0x40, "Sexy Girl" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Title Name" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, "Show Title" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( No ) )
PORT_MODIFY("DSW2")
- PORT_DIPNAME( 0x01, 0x01, "Show Hold" ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPNAME( 0x01, 0x01, "Show Hold" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Number Type" ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPNAME( 0x02, 0x02, "Number Type" ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, "Number" )
- PORT_DIPSETTING( 0x00, "AJQK" )
+ PORT_DIPSETTING( 0x00, "A,J,Q,K" )
PORT_DIPUNUSED_DIPLOC(0x04, 0x04, "SW2:3") // not used from here on according to test mode, PCB does have 3 8-dip banks
PORT_DIPUNUSED_DIPLOC(0x08, 0x08, "SW2:4")
PORT_DIPUNUSED_DIPLOC(0x10, 0x10, "SW2:5")
@@ -3823,10 +4265,38 @@ static INPUT_PORTS_START( unkigs )
PORT_DIPUNUSED_DIPLOC(0x01, 0x01, "SW3:1")
PORT_DIPUNUSED_DIPLOC(0x02, 0x02, "SW3:2")
INPUT_PORTS_END
+
/***************************************************************************
Machine Drivers
***************************************************************************/
+void igs017_state::base_machine_oki(machine_config &config, const XTAL &xtal_oki)
+{
+ // i/o
+ IGS_MUX(config, m_igs_mux, 0);
+
+ I8255A(config, m_ppi);
+
+ // video
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(512, 256);
+ m_screen->set_visarea(0, 512-1, 0, 240-1);
+ m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
+ m_screen->set_palette("igs017_igs031:palette");
+
+ IGS017_IGS031(config, m_igs017_igs031, 0);
+ m_igs017_igs031->set_i8255_tag("ppi8255");
+
+ // sound
+ SPEAKER(config, "mono").front_center();
+ OKIM6295(config, m_oki, xtal_oki, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+}
+
+
+// iqblocka, iqblockf, genius6
+
TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::iqblocka_interrupt)
{
int scanline = param;
@@ -3838,33 +4308,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::iqblocka_interrupt)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-MACHINE_RESET_MEMBER(igs017_state,iqblocka)
-{
- machine_reset();
- m_input_select = 0;
-}
-
void igs017_state::iqblocka(machine_config &config)
{
- HD64180RP(config, m_maincpu, XTAL(16'000'000));
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
m_maincpu->set_addrmap(AS_IO, &igs017_state::iqblocka_io);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
-
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("DSW1");
- ppi.in_pb_callback().set_ioport("DSW2");
- ppi.in_pc_callback().set_ioport("DSW3");
+ m_igs_mux->set_addrmap(0, &igs017_state::iqblocka_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("DSW1");
+ m_ppi->in_pb_callback().set_ioport("DSW2");
+ m_ppi->in_pc_callback().set_ioport("DSW3");
// protection
IGS_BITSWAP(config, m_igs_bitswap, 0);
- m_igs_bitswap->in_pa_callback().set_ioport("PLAYER1");
- m_igs_bitswap->in_pb_callback().set_ioport("PLAYER2");
- m_igs_bitswap->in_pc_callback().set_ioport("COINS");
- m_igs_bitswap->out_pa_callback().set(FUNC(igs017_state::iqblocka_keyin_w));
m_igs_bitswap->set_val_xor(0x15d6);
m_igs_bitswap->set_mf_bits(3, 5, 9, 11);
m_igs_bitswap->set_m3_bits<0>(~5, 8, ~10, ~15);
@@ -3874,31 +4335,17 @@ void igs017_state::iqblocka(machine_config &config)
IGS_INCDEC(config, m_igs_incdec, 0);
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_i8255_tag("ppi8255");
-
// sound
- SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
-
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+ YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.5);
}
void igs017_state::iqblockf(machine_config &config)
{
iqblocka(config);
+ m_igs_mux->set_addrmap(0, &igs017_state::iqblockf_mux_map);
+
// tweaked protection bitswap
- m_igs_bitswap->out_pb_callback().set(FUNC(igs017_state::iqblockf_keyout_w));
m_igs_bitswap->set_mf_bits(0, 5, 9, 13);
}
@@ -3914,26 +4361,191 @@ void igs017_state::genius6(machine_config &config)
m_igs_bitswap->set_m3_bits<3>( 3, ~5, ~6, ~15);
}
+
+// tarzan
+
void igs017_state::tarzan(machine_config &config)
{
- iqblocka(config);
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::tarzan_io);
m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::tarzan_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set(FUNC(igs017_state::tarzan_keys_joy_r));
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // protection
+ IGS_STRING(config, m_igs_string, 0);
+
+ IGS_INCDEC(config, m_igs_incdec, 0);
+
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tarzan_palette_bitswap));
+
+ // sound
+ YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.5);
}
+
+// starzan
+
void igs017_state::starzan(machine_config &config)
{
- tarzan(config);
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::starzan_io);
+ m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::starzan_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set_ioport("PLAYER1");
+ m_ppi->in_pc_callback().set(FUNC(igs017_state::dsw_r));
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // protection
+ IGS_STRING(config, m_igs_string, 0);
+
+ IGS_INCDEC(config, m_igs_incdec, 0);
+
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tarzan_palette_bitswap));
+
+ // sound
+ YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.5);
+}
+
+
+// happyskl
+
+void igs017_state::happyskl(machine_config &config)
+{
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::happyskl_io);
+ m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::happyskl_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set_ioport("PLAYER1");
+ m_ppi->in_pc_callback().set(FUNC(igs017_state::dsw_r));
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tarzan_palette_bitswap));
+}
+
+
+// cpoker2
+
+void igs017_state::cpoker2(machine_config &config)
+{
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::cpoker2_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::cpoker2_io);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::cpoker2_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set_ioport("PLAYER1");
+ m_ppi->in_pc_callback().set(FUNC(igs017_state::dsw_r));
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // protection
+ IGS_INCDEC(config, m_igs_incdec, 0);
+
+ IGS_INC(config, m_igs_inc, 0);
+
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tarzan_palette_bitswap));
+}
+
+
+// tjsb
+
+void igs017_state::tjsb(machine_config &config)
+{
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::tjsb_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::tjsb_io);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::tjsb_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("DSW1");
+ m_ppi->in_pb_callback().set_ioport("DSW2");
+ m_ppi->in_pc_callback().set_ioport("DSW3");
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // protection
+ IGS_STRING(config, m_igs_string, 0);
+
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tjsb_palette_bitswap));
+
+ // sound
+ YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.5);
+}
+
+
+// spkrform
+
+void igs017_state::spkrform(machine_config &config)
+{
+ base_machine_oki(config, 16_MHz_XTAL / 16);
+
+ HD64180RP(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
+ m_maincpu->set_addrmap(AS_IO, &igs017_state::spkrform_io);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
+
+ // i/o
+ m_igs_mux->set_addrmap(0, &igs017_state::spkrform_mux_map);
- subdevice<i8255_device>("ppi8255")->in_pa_callback().set_ioport("COINS");
- subdevice<i8255_device>("ppi8255")->in_pb_callback().set_ioport("PLAYER1");
- subdevice<i8255_device>("ppi8255")->in_pc_callback().set(FUNC(igs017_state::i8255_port_c_mux_r));
+ m_ppi->in_pa_callback().set_ioport("DSW1");
+ m_ppi->in_pb_callback().set_ioport("DSW2");
+ m_ppi->in_pc_callback().set_ioport("DSW3");
- m_igs_bitswap->in_pa_callback().set_constant(0xff);
- m_igs_bitswap->in_pc_callback().set_constant(0xff);
- m_igs_bitswap->out_pd_callback().set([this](u8 data){ m_i8255_portc_mux = data >> 1; });
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
+
+ // protection
+ IGS_STRING(config, m_igs_string, 0);
+
+ IGS_INCDEC(config, m_igs_incdec, 0);
+
+ // sound
+ YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.5);
}
+
// mgcs
TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgcs_interrupt)
@@ -3947,45 +4559,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgcs_interrupt)
m_maincpu->set_input_line(2, HOLD_LINE);
}
-MACHINE_RESET_MEMBER(igs017_state,mgcs)
-{
- MACHINE_RESET_CALL_MEMBER( iqblocka );
-
- m_scramble_data = 0;
- m_igs_magic = 0;
-}
-
void igs017_state::mgcs(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
+ base_machine_oki(config, 8_MHz_XTAL / 8);
+
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgcs_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
-
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("COINS");
- ppi.in_pb_callback().set(FUNC(igs017_state::mgcs_keys_r));
+ m_igs_mux->set_addrmap(0, &igs017_state::mgcs_mux_map);
- TICKET_DISPENSER(config, m_hopperdev, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW );
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set(FUNC(igs017_state::mgcs_keys_joy_r));
+ m_ppi->in_pc_callback().set_ioport("JOY");
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::mgcs_palette_bitswap));
- m_igs017_igs031->set_i8255_tag("ppi8255");
+ // protection
+ IGS_STRING(config, m_igs_string, 0);
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+ // video
+ m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::mgcs_palette_bitswap));
}
@@ -3993,63 +4588,59 @@ void igs017_state::mgcs(machine_config &config)
void igs017_state::lhzb2(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
+ base_machine_oki(config, 8_MHz_XTAL / 8);
+
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
-
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("COINS");
- ppi.in_pb_callback().set_ioport("DSW1");
- ppi.in_pc_callback().set_ioport("DSW2");
+ m_igs_mux->set_addrmap(0, &igs017_state::lhzb2_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set_ioport("DSW1");
+ m_ppi->in_pc_callback().set_ioport("DSW2");
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
// protection
- IGS025(config, m_igs025, 0);
- m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback));
+ IGS_STRING(config, m_igs_string, 0);
IGS022(config, m_igs022, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap));
- m_igs017_igs031->set_i8255_tag("ppi8255");
-
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
}
// lhzb2a
-MACHINE_RESET_MEMBER(igs017_state,lhzb2a)
+MACHINE_RESET_MEMBER(igs017_state, lhzb2a)
{
- MACHINE_RESET_CALL_MEMBER( mgcs );
+ machine_reset();
lhzb2a_remap_addr_w(m_maincpu->space(AS_PROGRAM), 0xf0);
}
void igs017_state::lhzb2a(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
+ base_machine_oki(config, 8_MHz_XTAL / 8);
+
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2a_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,lhzb2a)
+ MCFG_MACHINE_RESET_OVERRIDE(igs017_state, lhzb2a)
// i/o
-// I8255A(config, "ppi8255", 0);
+ m_igs_mux->set_addrmap(0, &igs017_state::lhzb2a_mux_map);
+
+ // ppi8255 not used for i/o (just video enable)?
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
// protection
+ IGS_STRING(config, m_igs_string, 0);
+
IGS_BITSWAP(config, m_igs_bitswap, 0);
m_igs_bitswap->set_val_xor(0x289a);
m_igs_bitswap->set_mf_bits(4, 7, 10, 13);
@@ -4061,21 +4652,7 @@ void igs017_state::lhzb2a(machine_config &config)
IGS_INCDEC(config, m_igs_incdec, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // VSync 60Hz, HSync 15.3kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap));
-// m_igs017_igs031->set_i8255_tag("ppi8255");
-
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
}
@@ -4083,40 +4660,28 @@ void igs017_state::lhzb2a(machine_config &config)
void igs017_state::slqz2(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
+ base_machine_oki(config, 8_MHz_XTAL / 8);
+
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::slqz2_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
-
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("COINS");
- ppi.in_pb_callback().set_ioport("DSW1");
- ppi.in_pc_callback().set_ioport("DSW2");
+ m_igs_mux->set_addrmap(0, &igs017_state::slqz2_mux_map);
+
+ m_ppi->in_pa_callback().set_ioport("COINS");
+ m_ppi->in_pb_callback().set_ioport("DSW1");
+ m_ppi->in_pc_callback().set_ioport("DSW2");
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
// protection
- IGS025(config, m_igs025, 0);
- m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback));
+ IGS_STRING(config, m_igs_string, 0);
IGS022(config, m_igs022, 0);
// video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::slqz2_palette_bitswap));
- m_igs017_igs031->set_i8255_tag("ppi8255");
-
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(8'000'000) / 8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
}
@@ -4124,36 +4689,27 @@ void igs017_state::slqz2(machine_config &config)
void igs017_state::sdmg2(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
+ base_machine_oki(config, 22_MHz_XTAL / 22);
+
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
-
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("DSW1");
- ppi.in_pb_callback().set_ioport("DSW2");
+ m_igs_mux->set_addrmap(0, &igs017_state::sdmg2_mux_map);
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60); // VSync 60Hz, HSync 15.3kHz
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
+ m_ppi->in_pa_callback().set_ioport("DSW1");
+ m_ppi->in_pb_callback().set_ioport("DSW2");
+ // DSW3 is read but unused (it's not populated on the PCB)
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_i8255_tag("ppi8255");
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+ // protection
+ IGS_INCDEC(config, m_igs_incdec, 0);
}
-// mgdh
+// mgdh, mgdha
TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt)
{
@@ -4168,106 +4724,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt)
void igs017_state::mgdha(machine_config &config)
{
- M68000(config, m_maincpu, XTAL(22'000'000) / 2);
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgdha_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
+ base_machine_oki(config, 22_MHz_XTAL / 22);
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,mgcs)
+ M68000(config, m_maincpu, 22_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgdh_map);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
// i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("DSW1");
+ m_igs_mux->set_addrmap(0, &igs017_state::mgdha_mux_map);
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 256-16-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
+ m_ppi->in_pa_callback().set_ioport("DSW1");
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_i8255_tag("ppi8255");
-
- // sound
- SPEAKER(config, "mono").front_center();
- OKIM6295(config, m_oki, XTAL(22'000'000) / 22, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
}
-
-// tjsb
-
-void igs017_state::tjsb(machine_config &config)
+void igs017_state::mgdh(machine_config &config)
{
- HD64180RP(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::tjsb_map);
- m_maincpu->set_addrmap(AS_IO, &igs017_state::tjsb_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
-
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
-
- // i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("DSW1");
- ppi.in_pb_callback().set_ioport("DSW2");
- ppi.in_pc_callback().set_ioport("DSW3");
-
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tjsb_palette_bitswap));
- m_igs017_igs031->set_i8255_tag("ppi8255");
+ mgdha(config);
- // sound
- SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
+ m_igs_mux->set_addrmap(0, &igs017_state::mgdh_mux_map);
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
-}
-
-
-// spkrform
-
-void igs017_state::spkrform(machine_config &config)
-{
- HD64180RP(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::spkrform_map);
- m_maincpu->set_addrmap(AS_IO, &igs017_state::spkrform_io);
- TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
-
- MCFG_MACHINE_RESET_OVERRIDE(igs017_state,iqblocka)
-
- // i/o
- i8255_device &ppi(I8255A(config, "ppi8255"));
- ppi.in_pa_callback().set_ioport("DSW1");
- ppi.in_pb_callback().set_ioport("DSW2");
- ppi.in_pc_callback().set_ioport("DSW3");
-
- // video
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(512, 256);
- m_screen->set_visarea(0, 512-1, 0, 240-1);
- m_screen->set_screen_update("igs017_igs031", FUNC(igs017_igs031_device::screen_update));
- m_screen->set_palette("igs017_igs031:palette");
-
- IGS017_IGS031(config, m_igs017_igs031, 0);
- m_igs017_igs031->set_i8255_tag("ppi8255");
-
- // sound
- SPEAKER(config, "mono").front_center();
- YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.5);
-
- OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
+ // protection (only used for the game id check?)
+// IGS_STRING(config, m_igs_string, 0);
}
@@ -4279,13 +4757,14 @@ void igs017_state::spkrform(machine_config &config)
/***************************************************************************
-數字樂園 (Shùzì Lèyuán, V127M)
+Shuzi Leyuan (V127M)
+數字樂園 (Shùzì Lèyuán)
IGS, 1996
PCB Layout
----------
-IGS PCB N0- 0131-4
+IGS PCB NO-0131-4
|---------------------------------------|
|uPD1242H VOL U3567 3.579545MHz|
| AR17961 |
@@ -4325,14 +4804,21 @@ ROM_START( iqblocka )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "v.u18", 0x00000, 0x40000, CRC(2e2b7d43) SHA1(cc73f4c8f9a6e2219ee04c9910725558a80b4eb2) )
- ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "cg.u7", 0x000000, 0x080000, CRC(cb48a66e) SHA1(6d597193d1333a97957d5ceec8179a24bedfd928) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_REGION( 0x100000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD( "cg.u7", 0x000000, 0x080000, CRC(cb48a66e) SHA1(6d597193d1333a97957d5ceec8179a24bedfd928) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_FILL( 0x080000, 0x080000, 0xff ) // unpopulated
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0)
ROM_LOAD( "text.u8", 0x000000, 0x080000, CRC(48c4f4e6) SHA1(b1e1ca62cf6a99c11a5cc56705eef7e22a3b2740) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "speech.u17", 0x00000, 0x40000, CRC(d9e3d39f) SHA1(bec85d1ac2dfca77453cbca0e7dd53fee8fb438b) )
+
+ ROM_REGION( 0x2dd, "pld", ROMREGION_ERASE )
+ ROM_LOAD( "cq.u24", 0x000, 0x2dd, NO_DUMP ) // PAL22CV10
+
+ ROM_REGION( 0x15, "igs_fixed_data", 0 )
+ ROM_LOAD( "igs_fixed_data.key", 0x00, 0x15, CRC(9159ecbf) SHA1(b6bdb1f327944dfc7f6f71565a24e89517607490) )
ROM_END
// English title (IQ Block) and year 1997:
@@ -4341,22 +4827,31 @@ ROM_START( iqblockf )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "v113fr.u18", 0x00000, 0x40000, CRC(346c68af) SHA1(ceae4c0143c288dc9c1dd1e8a51f1e3371ffa439) )
- ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "cg.u7", 0x000000, 0x080000, CRC(cb48a66e) SHA1(6d597193d1333a97957d5ceec8179a24bedfd928) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_REGION( 0x100000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD( "cg.u7", 0x000000, 0x080000, CRC(cb48a66e) SHA1(6d597193d1333a97957d5ceec8179a24bedfd928) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_FILL( 0x080000, 0x080000, 0xff ) // unpopulated
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u8", 0x000000, 0x080000, CRC(48c4f4e6) SHA1(b1e1ca62cf6a99c11a5cc56705eef7e22a3b2740) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "sp.u17", 0x00000, 0x40000, CRC(71357845) SHA1(25f4f7aebdcc0706018f041d3696322df569b0a3) )
+
+ ROM_REGION( 0x2dd, "pld", ROMREGION_ERASE )
+ ROM_LOAD( "cq.u24", 0x000, 0x2dd, NO_DUMP ) // PAL22CV10
+
+ ROM_REGION( 0x15, "igs_fixed_data", 0 )
+ ROM_LOAD( "igs_fixed_data.key", 0x00, 0x15, CRC(9159ecbf) SHA1(b6bdb1f327944dfc7f6f71565a24e89517607490) )
ROM_END
+// IQ Block V110F also exists (undumped) with IGS003e (not 8255)
+
/***************************************************************************
-Genius 6
+Genius 6 (V110F)
IGS, 1998
-IGS PCB N0- 0131-4
+IGS PCB NO-0131-4
|---------------------------------------|
|uPD1242H VOL U3567 3.579545MHz|
| K668 |
@@ -4388,13 +4883,19 @@ ROM_START( genius6 )
ROM_LOAD( "genius6_v110f.u18", 0x00000, 0x40000, CRC(2630ad44) SHA1(37002fa913ad60c59145f5a7692eef8862b9d6eb) )
ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "genius6_cg.u7", 0x000000, 0x080000, CRC(1842d021) SHA1(78bfb5108741d39bd19b603cc97623fba7b2a31e) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_LOAD( "genius6_cg.u7", 0x000000, 0x080000, CRC(1842d021) SHA1(78bfb5108741d39bd19b603cc97623fba7b2a31e) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u8", 0x000000, 0x080000, CRC(48c4f4e6) SHA1(b1e1ca62cf6a99c11a5cc56705eef7e22a3b2740) ) // same as iqblocka
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "speech.u17", 0x00000, 0x40000, CRC(d9e3d39f) SHA1(bec85d1ac2dfca77453cbca0e7dd53fee8fb438b) ) // same as iqblocka
+
+ ROM_REGION( 0x2dd, "pld", ROMREGION_ERASE )
+ ROM_LOAD( "cq.u24", 0x000, 0x2dd, NO_DUMP ) // PAL22CV10
+
+ ROM_REGION( 0x15, "igs_fixed_data", 0 )
+ ROM_LOAD( "igs_fixed_data.key", 0x00, 0x15, CRC(9159ecbf) SHA1(b6bdb1f327944dfc7f6f71565a24e89517607490) )
ROM_END
// strangely identifies as V133F and has 1997 copyright, while the parent is V110F but with 1998 copyright
@@ -4403,16 +4904,22 @@ ROM_START( genius6a )
ROM_LOAD( "genius6_v133.u18", 0x00000, 0x40000, CRC(b34ce8c6) SHA1(845e6c4f5b1f06229a4046cf085ce08802458bd8) )
ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "genius6_cg.u7", 0x000000, 0x080000, CRC(1842d021) SHA1(78bfb5108741d39bd19b603cc97623fba7b2a31e) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_LOAD( "genius6_cg.u7", 0x000000, 0x080000, CRC(1842d021) SHA1(78bfb5108741d39bd19b603cc97623fba7b2a31e) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
- ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
- ROM_LOAD( "text.u8", 0x000000, 0x040000, CRC(7716b601) SHA1(363cddd930fdec4821ebfaced64276f8fa943eae) ) // half sized if compared to the parent and identical to its 1st half, confirmed correct
+ ROM_REGION( 0x40000, "igs017_igs031:tilemaps", 0 )
+ ROM_LOAD( "text.u8", 0x000000, 0x040000, CRC(7716b601) SHA1(363cddd930fdec4821ebfaced64276f8fa943eae) ) // half sized if compared to the parent and identical to its 1st half, confirmed correct (27c2048)
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "speech.u17", 0x00000, 0x40000, CRC(d9e3d39f) SHA1(bec85d1ac2dfca77453cbca0e7dd53fee8fb438b) ) // same as iqblocka
+
+ ROM_REGION( 0x2dd, "pld", ROMREGION_ERASE )
+ ROM_LOAD( "cq.u24", 0x000, 0x2dd, NO_DUMP ) // PAL22CV10
+
+ ROM_REGION( 0x15, "igs_fixed_data", 0 )
+ ROM_LOAD( "igs_fixed_data.key", 0x00, 0x15, CRC(9159ecbf) SHA1(b6bdb1f327944dfc7f6f71565a24e89517607490) )
ROM_END
-ROM_START( genius6b ) // PCB N0 - 0132, identical to V133F but for the main CPU ROM
+ROM_START( genius6b ) // PCB NO-0132, identical to V133F but for the main CPU ROM
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "genius6_v-132f.u18", 0x00000, 0x40000, CRC(231be791) SHA1(1684395dc93902893dca32952c236617ccdbc269) )
@@ -4424,12 +4931,17 @@ ROM_START( genius6b ) // PCB N0 - 0132, identical to V133F but for the main CPU
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "speech.u17", 0x00000, 0x40000, CRC(d9e3d39f) SHA1(bec85d1ac2dfca77453cbca0e7dd53fee8fb438b) )
-ROM_END
+ ROM_REGION( 0x2dd, "pld", ROMREGION_ERASE )
+ ROM_LOAD( "cq.u24", 0x000, 0x2dd, NO_DUMP ) // PAL22CV10
+
+ ROM_REGION( 0x15, "igs_fixed_data", 0 )
+ ROM_LOAD( "igs_fixed_data.key", 0x00, 0x15, CRC(9159ecbf) SHA1(b6bdb1f327944dfc7f6f71565a24e89517607490) )
+ROM_END
/***************************************************************************
-Mahjong Tian Jiang Shen Bing
+Tian Jiang Shen Bing (V137C)
天將神兵 (Tiān Jiāng Shén Bīng)
IGS, 1997
@@ -4439,7 +4951,7 @@ but the 8255 has been replaced with the IGS025 IC
PCB Layout
----------
-IGS PCB N0- 0157-2
+IGS PCB NO-0157-2
|---------------------------------------|
|uPD1242H VOL U3567 3.579545MHz|
| AR17961 |
@@ -4484,15 +4996,18 @@ ROM_START( tjsb )
ROM_LOAD( "a0701.u3", 0x00000, 0x400000, CRC(27502a0a) SHA1(cca79e253697f47b688ef781b1b6de9d2945f199) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
- ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) ) // BADADDR --xxxxxxxxxxxxxxxxx
+ ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(3be886b8) SHA1(15b3624ed076640c1828d065b01306a8656f5a9b) ) // BADADDR --xxxxxxxxxxxxxxxxx
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s0703.u15", 0x00000, 0x80000, CRC(c6f94d29) SHA1(ec413580240711fc4977dd3c96c288501aa7ef6c) )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "tjsb_string.key", 0x00, 0xec, CRC(412c83a0) SHA1(c09618aabecdde4c77d2b5695799fc89dfb325bc) )
ROM_END
/***************************************************************************
-Mahjong Man Guan Caishen
+Man Guan Caishen (V103CS)
满贯财神 (Mǎn Guàn Cáishén)
IGS, 1998
@@ -4539,18 +5054,21 @@ ROM_START( mgcs )
ROM_LOAD16_WORD_SWAP( "p1500.u8", 0x00000, 0x80000, CRC(a8cb5905) SHA1(37be7d926a1352869632d43943763accd4dec4b7) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "m1501.u23", 0x000000, 0x400000, CRC(96fce058) SHA1(6b87f47d646bad9b3061bdc8a9af65467fdbbc9f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "m1501.u23", 0x000000, 0x400000, CRC(96fce058) SHA1(6b87f47d646bad9b3061bdc8a9af65467fdbbc9f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u25", 0x00000, 0x80000, CRC(a37f9613) SHA1(812f060ca98a34540c48a180c359c3d0f1c0b5bb) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1502.u10", 0x00000, 0x80000, CRC(a8a6ba58) SHA1(59276a8ab4a31812600816c2a43b74bd71394419) )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "mgcs_string.key", 0x00, 0xec, CRC(6cdadd19) SHA1(c2b4ced5d45d0af1ddeeabd0e352fd5383995d32) )
ROM_END
/***************************************************************************
-Mahjong Super Da Man Guan 2
+Super Da Man Guan II (China, V754C)
IGS, 1997
PCB Layout
@@ -4596,8 +5114,8 @@ ROM_START( sdmg2 )
ROM_LOAD16_WORD_SWAP( "p0900.u25", 0x00000, 0x80000,CRC(43366f51) SHA1(48dd965dceff7de15b43c2140226a8b17a792dbc) )
ROM_REGION( 0x280000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "m0901.u5", 0x000000, 0x200000, CRC(9699db24) SHA1(50fc2f173c20b48d10595f01f1e9545f1b13a61b) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
- ROM_LOAD( "m0902.u4", 0x200000, 0x080000, CRC(3298b13b) SHA1(13b21ddeed368b7f4fea1408c8fc511244342faf) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_LOAD( "m0901.u5", 0x000000, 0x200000, CRC(9699db24) SHA1(50fc2f173c20b48d10595f01f1e9545f1b13a61b) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
+ ROM_LOAD( "m0902.u4", 0x200000, 0x080000, CRC(3298b13b) SHA1(13b21ddeed368b7f4fea1408c8fc511244342faf) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x20000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u6", 0x000000, 0x020000, CRC(cb34cbc0) SHA1(ceedbdda085fd1acc9a575502bdf7cf998f54f05) )
@@ -4608,7 +5126,7 @@ ROM_END
/***************************************************************************
-Mahjong Long Hu Zhengba 2
+Long Hu Zhengba 2 (set 1)
龙虎争霸 (Lóng Hǔ Zhēngbà)
IGS, 1998
@@ -4654,38 +5172,44 @@ ROM_START( lhzb2 )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "p1100.u30", 0x00000, 0x80000, CRC(68102b25) SHA1(6c1e8d204be0efda0e9b6c2f49b5c6760712475f) )
- ROM_REGION( 0x10000, "igs022", 0 ) // INTERNATIONAL GAMES SYSTEM CO.,LTD
- ROM_LOAD( "m1104.u11",0x0000, 0x10000, CRC(794d0276) SHA1(ac903d2faa3fb315438dc8da22c5337611a8790d) )
+ ROM_REGION( 0x10000, "igs022", 0 )
+ ROM_LOAD( "m1104.u11",0x0000, 0x10000, CRC(794d0276) SHA1(ac903d2faa3fb315438dc8da22c5337611a8790d) ) // INTERNATIONAL GAMES SYSTEM CO.,LTD
- ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) // address scrambling
- ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
+ ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
- ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) // address scrambling
+ ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "lhzb2_string.key", 0x00, 0xec, CRC(c964dc35) SHA1(81036e0dfa9abad123701ae8939d0d5b6f91b015) )
ROM_END
-/* alt hardware, no IGS022 (protection) chip */
+// VS221M: alt hardware, no IGS022 protection chip
ROM_START( lhzb2a )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "p-4096", 0x00000, 0x80000, CRC(41293f32) SHA1(df4e993f4a458729ade13981e58f32d8116c0082) )
- ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) // address scrambling
- ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
+ ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
- ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) // address scrambling
+ ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "lhzb2_string.key", 0x00, 0xec, CRC(c964dc35) SHA1(81036e0dfa9abad123701ae8939d0d5b6f91b015) )
ROM_END
/***************************************************************************
-Mahjong Shuang Long Qiang Zhu 2
+Shuang Long Qiang Zhu 2 VS (China, VS203J)
双龙抢珠 (Shuāng Lóng Qiǎng Zhū)
IGS, 1998
@@ -4730,29 +5254,32 @@ ROM_START( slqz2 )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "p1100.u28", 0x00000, 0x80000, CRC(0b8e5c9e) SHA1(16572bd1163bba4da8a76b10649d2f71e50ad369) )
- ROM_REGION( 0x10000, "igs022", 0 ) // INTERNATIONAL GAMES SYSTEM CO.,LTD
- ROM_LOAD( "m1103.u12", 0x00000, 0x10000, CRC(9f3b8d65) SHA1(5ee1ad025474399c2826f21d970e76f25d0fa1fd) )
+ ROM_REGION( 0x10000, "igs022", 0 )
+ ROM_LOAD( "m1103.u12", 0x00000, 0x10000, CRC(9f3b8d65) SHA1(5ee1ad025474399c2826f21d970e76f25d0fa1fd) ) // INTERNATIONAL GAMES SYSTEM CO.,LTD
- ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) // address scrambling
- ROM_LOAD16_WORD_SWAP( "m1101.u4", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
+ ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD16_WORD_SWAP( "m1101.u4", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
- ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) // light address scrambling
+ ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u6", 0x00000, 0x80000, CRC(40d21adf) SHA1(18b202d6330ac89026bec2c9c8224b52540dd48d) )
ROM_REGION( 0x80000, "oki", 0 )
- ROM_LOAD( "s1102.u20", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) ) // = s1102.u23 Mahjong Long Hu Zhengba 2
+ ROM_LOAD( "s1102.u20", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) ) // = s1102.u23 Long Hu Zhengba 2
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "slqz2_string.key", 0x00, 0xec, CRC(5ca22f9d) SHA1(a795415016fdcb6329623786dc992ac7b0877ddf) )
ROM_END
/***************************************************************************
-Mahjong Man Guan Daheng (V123T1)
+Man Guan Daheng (V123T1)
滿貫大亨 (Mǎn Guàn Dàhēng)
(c) 1997 IGS
PCB Layout
----------
-IGS PCB NO- 0252
+IGS PCB NO-0252
|----------------------------------|
| S1002.U22 6264 62256 SW |
|TDA1020 FLASH.U19 PAL BATT|
@@ -4789,7 +5316,7 @@ ROM_START( mgdha )
ROM_LOAD16_WORD_SWAP( "flash.u19", 0x00000, 0x80000, CRC(ff3aed2c) SHA1(829140e6fc7e4dfc039b0e7b647ce26d59b23b3d) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x20000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "text.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) )
@@ -4800,12 +5327,12 @@ ROM_END
/***************************************************************************
-Mahjong Man Guan Da Heng (V125T1)
+Man Guan Daheng (V125T1)
滿貫大亨 (Mǎn Guàn Dàhēng)
(c) 1997 IGS
No hardware info, no sprites rom for this set.
-It has additional protection.
+It has an additional game id check at the start.
***************************************************************************/
@@ -4815,10 +5342,10 @@ ROM_START( mgdh )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
// not in this set
- ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x20000, "igs017_igs031:tilemaps", 0 )
- ROM_LOAD( "igs_512e.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) ) // == text.u6
+ ROM_LOAD( "igs_512e.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) ) // == text.u6
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "ig2_8836.u14", 0x00000, 0x80000, CRC(ac1f4da8) SHA1(789a2e0b58750292909dabca42c7e5ad72af3db5) )
@@ -4826,7 +5353,7 @@ ROM_END
/***************************************************************************
-Taishan (Tarzan) Chuang Tian Guan
+Taishan (Tarzan) Chuang Tian Guan (V109C)
IGS 1999
PCB Layout
@@ -4881,9 +5408,12 @@ ROM_START( tarzanc )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "igs_s2102_sp_v102.u14", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) )
- ROM_REGION( 0x2dd * 2, "plds", 0 )
+ ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE )
ROM_LOAD( "eg.u20", 0x000, 0x2dd, NO_DUMP )
ROM_LOAD( "eg.u21", 0x2dd, 0x2dd, NO_DUMP )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "tarzan_string.key", 0x00, 0xec, CRC(595fe40c) SHA1(0b46983400d237d8bde97a72eaa99b718a03387e) )
ROM_END
// sets below are guesswork, assembled from partial dumps...
@@ -4893,7 +5423,7 @@ ROM_START( tarzan )
ROM_REGION( 0x40000, "maincpu", 0 ) // V109C TARZAN C (same as tarzanc set)
ROM_LOAD( "0228-u16.bin", 0x00000, 0x40000, CRC(e6c552a5) SHA1(f156de9459833474c85a1f5b35917881b390d34c) )
- ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
+ ROM_REGION( 0x80000, "igs017_igs031:sprites", ROMREGION_ERASE )
ROM_LOAD( "sprites.u15", 0x00000, 0x80000, NO_DUMP )
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
@@ -4905,14 +5435,18 @@ ROM_START( tarzan )
ROM_REGION( 0x2dd * 2, "plds", 0 )
ROM_LOAD( "pal1", 0x000, 0x2dd, NO_DUMP )
ROM_LOAD( "pal2", 0x2dd, 0x2dd, NO_DUMP )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "tarzan_string.key", 0x00, 0xec, CRC(595fe40c) SHA1(0b46983400d237d8bde97a72eaa99b718a03387e) )
ROM_END
-// IGS NO-0228?
+// IGS NO-0228? This allegedly has IGS029 protection
ROM_START( tarzana )
- ROM_REGION( 0x80000, "maincpu", 0 ) // V107 TAISAN
- ROM_LOAD( "0228-u21.bin", 0x00000, 0x80000, CRC(80aaece4) SHA1(07cad92492c5de36c3915867ed4c6544b1a30c07) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_REGION( 0x40000, "maincpu", 0 ) // V107 TAISAN
+ ROM_LOAD( "0228-u21.bin", 0x00000, 0x40000, CRC(80aaece4) SHA1(07cad92492c5de36c3915867ed4c6544b1a30c07) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_IGNORE( 0x40000 )
- ROM_REGION( 0x80000, "igs017_igs031:sprites", 0 )
+ ROM_REGION( 0x80000, "igs017_igs031:sprites", ROMREGION_ERASE )
ROM_LOAD( "sprites.u17", 0x00000, 0x80000, NO_DUMP )
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
@@ -4921,9 +5455,12 @@ ROM_START( tarzana )
ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
ROM_LOAD( "sound.u16", 0x00000, 0x40000, NO_DUMP )
- ROM_REGION( 0x2dd * 2, "plds", 0 )
+ ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE )
ROM_LOAD( "pal1", 0x000, 0x2dd, NO_DUMP )
ROM_LOAD( "pal2", 0x2dd, 0x2dd, NO_DUMP )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "tarzan_string.key", 0x00, 0xec, CRC(595fe40c) SHA1(0b46983400d237d8bde97a72eaa99b718a03387e) )
ROM_END
/***************************************************************************
@@ -4977,37 +5514,48 @@ IGS PCB NO-0230-1
ROM_START( starzan )
ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD( "v100i.u9", 0x00000, 0x40000, CRC(64180bff) SHA1(b08dbe8a17ca33024442ebee41f111c8f98a2109) )
+ ROM_LOAD( "sp_tarzan_v100i.u9", 0x00000, 0x40000, CRC(64180bff) SHA1(b08dbe8a17ca33024442ebee41f111c8f98a2109) )
- ROM_REGION( 0x400000, "igs017_igs031:sprites", ROMREGION_ERASEFF )
- ROM_LOAD( "c0057209.u3", 0x00000, 0x400000, NO_DUMP ) // this is also probably the same as tarzanc. Current theory is the 0x400000 mask ROM at u3 is the same for all games of the same type, with EPROM at u2 providing an overlay for game specific sprites
- ROM_LOAD( "cg.u2", 0x00000, 0x080000, CRC(884f95f5) SHA1(2e526aa966e90dc696a8b392a5a99e14f03c4bd4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
+ ROM_LOAD( "igs_a2104_cg_v110.u3", 0x000000, 0x400000, BAD_DUMP CRC(dcbff16f) SHA1(2bf77ef4448c26124c8d8d18bb7ffe4105cfa940) ) // FIXED BITS (xxxxxxx0xxxxxxxx), not dumped for this board, but same label as the one from tarzanc, assuming same contents for now
+ ROM_LOAD( "sp_tarzan_cg.u2", 0x200000, 0x080000, CRC(884f95f5) SHA1(2e526aa966e90dc696a8b392a5a99e14f03c4bd4) ) // FIXED BITS (xxxxxxx0xxxxxxxx), overlay (handwritten label)
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
- ROM_LOAD( "t2105_cg_v110.u11", 0x00000, 0x80000, BAD_DUMP CRC(1d4be260) SHA1(6374c61735144b3ff54d5e490f26adac4a10b14d) ) // not dumped for this board, but same label as the one from tarzanc, assuming same contents for now
+ ROM_LOAD( "igs_t2105_cg_v110.u11", 0x00000, 0x80000, BAD_DUMP CRC(1d4be260) SHA1(6374c61735144b3ff54d5e490f26adac4a10b14d) ) // not dumped for this board, but same label as the one from tarzanc, assuming same contents for now
ROM_REGION( 0x80000, "oki", 0 )
- ROM_LOAD( "s2102_sp_v102.u8", 0x00000, 0x80000, BAD_DUMP CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) ) // not dumped for this board, but same label as the one from tarzanc, assuming same contents for now
+ ROM_LOAD( "igs_s2102_sp_v102.u8", 0x00000, 0x80000, BAD_DUMP CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) ) // not dumped for this board, but same label as the one from tarzanc, assuming same contents for now
- ROM_REGION( 0x2dd * 2, "plds", 0 )
- ROM_LOAD( "palce22v10h_tar97_u10-1.u10", 0x000, 0x2dd, NO_DUMP )
- ROM_LOAD( "palce22v10h_tar97_u20.u20", 0x2dd, 0x2dd, NO_DUMP )
+ ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE )
+ ROM_LOAD( "palce22v10h_tar97_u10-1.u10", 0x000, 0x2dd, NO_DUMP ) // read protected
+ ROM_LOAD( "palce22v10h_tar97_u20.u20", 0x2dd, 0x2dd, NO_DUMP ) // ""
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "starzan_string.key", 0x00, 0xec, CRC(b33f5050) SHA1(900d3c48944dbdd95d9e48d74c355e82e00ac012) )
ROM_END
-// IGS PCB NO-0281
-// Main CPU is a Zilog Z180 clocked @16MHz (XTAL and EXTAL pins directly tied to a 16MHz crystal)
-// OKI MSM6295 (actually a rebadged one marked 'K668 0003') clocked @1MHz, pin 7 is HIGH
-// A QFP208 custom ASIC marked 'IGS 031'
-// A PLCC68 custom IC marked 'IGS025 A9B2201 9931'
-// A Ni-MH 3.6V battery as seen in other IGS hardware
+/***************************************************************************
+
+Happy Skill (Italy, V611IT)
+
+IGS PCB NO-0281
+
+Main CPU is a Zilog Z180 clocked @16MHz (XTAL and EXTAL pins directly tied to a 16MHz crystal)
+OKI MSM6295 (actually a rebadged one marked 'K668 0003') clocked @1MHz, pin 7 is HIGH
+A QFP208 custom ASIC marked 'IGS 031'
+A PLCC68 custom IC marked 'IGS025 A9B2201 9931' (label: '590H/S V300')
+A Ni-MH 3.6V battery as seen in other IGS hardware
+
+***************************************************************************/
+
ROM_START( happyskl )
ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD( "v611.u8", 0x00000, 0x40000, CRC(1fb3da98) SHA1(60674af9f5c53298b8ef856f1986c905b9bd7b96) )
+ ROM_LOAD( "v611.u9", 0x00000, 0x40000, CRC(1fb3da98) SHA1(60674af9f5c53298b8ef856f1986c905b9bd7b96) ) // handwritten label
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
- ROM_LOAD( "igs_a2701_cg_v100.u3", 0x00000, 0x400000, CRC(f3756a51) SHA1(8dd4677584f309cec4b068be9f9370a7a172a031) ) // FIXED BITS (xxxxxxx0xxxxxxxx) - 1xxxxxxxxxxxxxxxxxxxxx = 0x00
- ROM_LOAD( "happyskill_cg.u2", 0x00000, 0x080000, CRC(297a1893) SHA1(9be9e2cdaba1615ea376f3fb7087bf990e68b3b4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "igs_a2701_cg_v100.u3", 0x000000, 0x400000, CRC(f3756a51) SHA1(8dd4677584f309cec4b068be9f9370a7a172a031) ) // FIXED BITS (xxxxxxx0xxxxxxxx) - 1xxxxxxxxxxxxxxxxxxxxx = 0x00
+ ROM_LOAD( "happyskill_cg.u2", 0x200000, 0x080000, CRC(297a1893) SHA1(9be9e2cdaba1615ea376f3fb7087bf990e68b3b4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "happyskill_text.u11", 0x00000, 0x80000, CRC(c6f51041) SHA1(81a9a03e92c1c67f299113dec9e05ba77395ea31) )
@@ -5015,55 +5563,56 @@ ROM_START( happyskl )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "igs_s2702_sp_v100.u8", 0x00000, 0x80000, CRC(0ec9b1b5) SHA1(b8c7e068ddf6777a184339e6796be33e442a3df4) )
- ROM_REGION( 0x2dd * 2, "plds", 0 )
- ROM_LOAD( "atf22v10c.u10", 0x000, 0x2dd, NO_DUMP )
- ROM_LOAD( "peel22cv10a.u20", 0x2dd, 0x2dd, NO_DUMP )
+ ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE )
+ ROM_LOAD( "atf22v10c.u10", 0x000, 0x2dd, NO_DUMP )
+ ROM_LOAD( "et_u20-c.u20", 0x2dd, 0x2dd, NO_DUMP ) // peel22cv10a
ROM_END
// PCB was heavily corroded and not working
-ROM_START( unkigs )
+ROM_START( cpoker2 )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "u9.bin", 0x00000, 0x40000, CRC(8d79eb4d) SHA1(9cad09013f83335ec78c3ff78715bc5d9a989eb7) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
// the following ROM wasn't readable on this PCB, but it's the same as the one in happyskl. Assuming same contents for now
ROM_LOAD( "igs_a2701_cg_v100.u3", 0x00000, 0x400000, BAD_DUMP CRC(f3756a51) SHA1(8dd4677584f309cec4b068be9f9370a7a172a031) ) // FIXED BITS (xxxxxxx0xxxxxxxx) - 1xxxxxxxxxxxxxxxxxxxxx = 0x00
- //ROM_LOAD( "u2", 0x00000, 0x080000, NO_DUMP ) // not populated. Never there or removed? Possibly never there, current theory is the 0x400000 mask ROM at u3 is the same for all games of the same type, with EPROM at u2 providing an overlay for game specific sprites
+ // U2 (overlay) not populated
- ROM_REGION( 0x40000, "igs017_igs031:tilemaps", 0 )
- ROM_LOAD( "u11.bin", 0x00000, 0x40000, CRC(34475c83) SHA1(376ff68d89c25471483b074dcf7542f42f954e67) )
- ROM_IGNORE(0x040000) // 1xxxxxxxxxxxxxxxxxx = 0x00
+ ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
+ ROM_LOAD( "u11.bin", 0x00000, 0x80000, CRC(34475c83) SHA1(376ff68d89c25471483b074dcf7542f42f954e67) ) // 1xxxxxxxxxxxxxxxxxx = 0x00
- ROM_REGION( 0x80000, "oki", 0 ) // same as happyskl
- ROM_LOAD( "igs_s2702_sp_v100.u8", 0x00000, 0x80000, CRC(0ec9b1b5) SHA1(b8c7e068ddf6777a184339e6796be33e442a3df4) )
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "igs_s2702_sp_v100.u8", 0x00000, 0x80000, CRC(0ec9b1b5) SHA1(b8c7e068ddf6777a184339e6796be33e442a3df4) ) // same as happyskl
- ROM_REGION( 0x2dd * 2, "plds", 0 )
- ROM_LOAD( "peel22cv10h.u10", 0x000, 0x2dd, NO_DUMP )
- ROM_LOAD( "peel22cv10h.u20", 0x2dd, 0x2dd, NO_DUMP )
+ ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE )
+ ROM_LOAD( "peel22cv10h.u10", 0x000, 0x2dd, NO_DUMP ) // PALCE22V10H-25P
+ ROM_LOAD( "peel22cv10h.u20", 0x2dd, 0x2dd, NO_DUMP ) // PALCE22V10H-25P
ROM_END
/***************************************************************************
-Super Poker (v100xD03) / Formosa
+Super Poker (V100xD03) / Formosa
PCB NO-0187
CPU Z8018008psc
IGS017
-IGS025
+IGS025 (labels: B2 / FORMOSA)
K668 (AD-65)
UM3567 (YM2413)
-Audio Xtal 3.579545
-CPU Xtal 16Mhz
-3 x DSW8
+Audio Xtal 3.579545 MHz
+CPU Xtal 16 MHz
+3 x DSW8 (SW1-SW3)
+Push Button (SW4)
+3.6V Battery + Toggle Switch (SW5)
***************************************************************************/
ROM_START( spkrform )
ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD( "super2in1-v100xd03.u29", 0x00000, 0x40000, CRC(e8f7476c) SHA1(e20241d68d22ee01a65f5d7921fe2291077f081f) )
+ ROM_LOAD( "super2in1_v100xd03.u29", 0x00000, 0x40000, CRC(e8f7476c) SHA1(e20241d68d22ee01a65f5d7921fe2291077f081f) )
ROM_REGION( 0x100000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "super2in1.u26", 0x00000, 0x80000, CRC(af3b1d9d) SHA1(ce84b076939d2c9d959cd430d4f5664f32735d60) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
@@ -5073,29 +5622,34 @@ ROM_START( spkrform )
ROM_LOAD( "super2in1.u24", 0x00000, 0x40000, CRC(54d68c49) SHA1(faad78779c3a5b4ecb1c733192d9477ce3324f71) )
ROM_REGION( 0x40000, "oki", 0 )
- ROM_LOAD( "super2in1sp.u28", 0x00000, 0x40000, CRC(33e6089d) SHA1(cd1ad01e92c18bbeab3fe3ea9152f8b0a3eb1b29) )
-ROM_END
+ ROM_LOAD( "super2in1_sp.u28", 0x00000, 0x40000, CRC(33e6089d) SHA1(cd1ad01e92c18bbeab3fe3ea9152f8b0a3eb1b29) )
+ ROM_REGION( 0x2dd, "plds", ROMREGION_ERASE )
+ ROM_LOAD( "dn.u18", 0x000, 0x2dd, NO_DUMP )
+
+ ROM_REGION( 0xec, "igs_string", 0 )
+ ROM_LOAD( "spkrform_string.key", 0x00, 0xec, CRC(17a9021a) SHA1(41943e08f9c9be49fc3705e6f2702d504ec6d078) )
+ROM_END
-GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init_iqblocka, ROT0, "IGS", "Shuzi Leyuan (V127M, gambling)", 0 )
-GAME( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
-GAME( 1997, mgdh, 0, mgdha, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Mahjong Man Guan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS ) // wrong colors in betting screen
-GAME( 1997, mgdha, mgdh, mgdha, mgdh , igs017_state, init_mgdha, ROT0, "IGS", "Mahjong Man Guan Daheng (Taiwan, V123T1)", 0 )
-GAME( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Mahjong Super Da Man Guan II (China, V754C)", 0 )
-GAME( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Mahjong Tian Jiang Shen Bing (V137C)", MACHINE_UNEMULATED_PROTECTION )
-GAME( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V110F)", 0 )
-GAME( 1997, genius6a, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V133F)", 0 ) // clone because it has older copyright year
-GAME( 1997, genius6b, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V132F)", 0 ) // "
-GAME( 1998, mgcs, 0, mgcs, mgcs, igs017_state, init_mgcs, ROT0, "IGS", "Mahjong Man Guan Caishen (V103CS)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, init_lhzb2, ROT0, "IGS", "Mahjong Long Hu Zhengba 2 (set 1)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // 龙虎争霸2
-GAME( 1998, lhzb2a, lhzb2, lhzb2a, lhzb2a, igs017_state, init_lhzb2a, ROT0, "IGS", "Mahjong Long Hu Zhengba 2 (VS221M)", 0 ) // 龙虎争霸2
-GAME( 1998, slqz2, 0, slqz2, slqz2, igs017_state, init_slqz2, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 2 (VS203J)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1999, tarzanc, 0, tarzan, iqblocka, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (V109C, set 1)", MACHINE_NOT_WORKING ) // IGS031 protection's game specific parameters not emulated yet, sprites' decryption missing, inputs to be done
-GAME( 1999, tarzan, tarzanc, tarzan, iqblocka, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (V109C, set 2)", MACHINE_NOT_WORKING ) // IGS031 protection's game specific parameters not emulated yet, sprites' decryption missing, inputs to be done
-GAME( 1999, tarzana, tarzanc, tarzan, iqblocka, igs017_state, init_tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // IGS029 needs to be emulated, sprites' decryption missing, inputs to be done
-GAME( 2000?, starzan, 0, starzan, starzan, igs017_state, init_starzan, ROT0, "IGS (G.F. Gioca license)", "Super Tarzan (Italy, V100I)", MACHINE_NOT_WORKING ) // IGS031 protection's game specific parameters not emulated yet, incomplete dump, sprites' decryption missing
-GAME( 2001?, happyskl, 0, starzan, happyskl, igs017_state, init_happyskl, ROT0, "IGS", "Happy Skill (Italy, V611IT)", MACHINE_NOT_WORKING ) // IGS031 protection's game specific parameters not emulated yet, sprites' decryption missing
-GAME( 2001?, unkigs, happyskl, starzan, unkigs, igs017_state, init_unkigs, ROT0, "IGS", "unknown IGS game (V100A)", MACHINE_NOT_WORKING ) // possibly titled 'Champion 2', definitely derived from Happy Skill or vice versa, missing ROM, IGS031 protection's game specific parameters not emulated yet, sprites' decryption missing
-
-// Parent spk306us in driver spoker.cpp. Move this set to that driver?
-GAME( ????, spkrform, spk306us, spkrform, spkrform, igs017_state, init_spkrform, ROT0, "IGS", "Super Poker (v100xD03) / Formosa", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
+} // anonymous namespace
+
+GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init_iqblocka, ROT0, "IGS", "Shuzi Leyuan (China, V127M, gambling)", 0 ) // 數字樂園
+GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
+GAME ( 1997, mgdh, 0, mgdh, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Man Guan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS | MACHINE_UNEMULATED_PROTECTION) // 滿貫大亨, wrong colors in betting screen, game id check (patched out)
+GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Man Guan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨
+GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Super Da Man Guan II (China, V754C)", 0 )
+GAME ( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Tian Jiang Shen Bing (China, V137C)", MACHINE_UNEMULATED_PROTECTION ) // 天將神兵, fails the bonus round protection check (if enabled via DSW), see e.g. demo mode
+GAME ( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V110F)", 0 ) // shows chinese text in puzzle game
+GAME ( 1997, genius6a, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V133F)", 0 ) // clone because it has older copyright year
+GAME ( 1997, genius6b, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V132F)", 0 ) // "
+GAME ( 1998, mgcs, 0, mgcs, mgcs, igs017_state, init_mgcs, ROT0, "IGS", "Man Guan Caishen (China, V103CS)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // 满贯财神, finish IGS029 protection
+GAME ( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, init_lhzb2, ROT0, "IGS", "Long Hu Zhengba 2 (China, set 1)", MACHINE_UNEMULATED_PROTECTION ) // 龙虎争霸2, finish IGS022 protection
+GAME ( 1998, lhzb2a, lhzb2, lhzb2a, lhzb2a, igs017_state, init_lhzb2a, ROT0, "IGS", "Long Hu Zhengba 2 (China, VS221M)", 0 ) // 龙虎争霸2
+GAME ( 1998, slqz2, 0, slqz2, slqz2, igs017_state, init_slqz2, ROT0, "IGS", "Shuang Long Qiang Zhu 2 VS (China, VS203J)", MACHINE_UNEMULATED_PROTECTION ) // 双龙抢珠, finish IGS022 protection
+GAME ( 1999, tarzanc, 0, tarzan, tarzan, igs017_state, init_tarzanc, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 1)", 0 )
+GAME ( 1999, tarzan, tarzanc, tarzan, tarzan, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 2)", MACHINE_NOT_WORKING ) // missing sprites and sound rom, imperfect tiles decryption
+GAME ( 1999, tarzana, tarzanc, tarzan, tarzan, igs017_state, init_tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // missing IGS029 protection, missing sprites and sound rom
+GAMEL( 2000?, starzan, 0, starzan, starzan, igs017_state, init_starzan, ROT0, "IGS (G.F. Gioca license)", "Super Tarzan (Italy, V100I)", 0, layout_igsslot )
+GAMEL( 2000?, happyskl, 0, happyskl, happyskl, igs017_state, init_happyskl, ROT0, "IGS", "Happy Skill (Italy, V611IT)", 0, layout_igspoker )
+GAMEL( 2000?, cpoker2, 0, cpoker2, cpoker2, igs017_state, init_cpoker2, ROT0, "IGS", "Champion Poker 2 (V100A)", 0, layout_igspoker )
+GAME ( 2000?, spkrform, spk306us, spkrform, spkrform, igs017_state, init_spkrform, ROT0, "IGS", "Super Poker (V100xD03) / Formosa", MACHINE_UNEMULATED_PROTECTION ) // poker game enabling forced with a patch. Parent spk306us in driver spoker.cpp
diff --git a/src/mame/drivers/macquadra700.cpp b/src/mame/drivers/macquadra700.cpp
index eec06d4d949..82e9d692cc5 100644
--- a/src/mame/drivers/macquadra700.cpp
+++ b/src/mame/drivers/macquadra700.cpp
@@ -249,6 +249,31 @@ void macquadra_state::machine_start()
m_6015_timer = timer_alloc(FUNC(macquadra_state::mac_6015_tick), this);
m_6015_timer->adjust(attotime::never);
+
+ save_item(NAME(m_cursor_line));
+ save_item(NAME(m_dafb_int_status));
+ save_item(NAME(m_dafb_scsi1_drq));
+ save_item(NAME(m_dafb_scsi2_drq));
+ save_item(NAME(m_dafb_mode));
+ save_item(NAME(m_dafb_base));
+ save_item(NAME(m_dafb_stride));
+ save_item(NAME(m_dafb_colors));
+ save_item(NAME(m_dafb_count));
+ save_item(NAME(m_dafb_clutoffs));
+ save_item(NAME(m_dafb_montype));
+ save_item(NAME(m_dafb_vbltime));
+ save_item(NAME(m_dafb_palette));
+ save_item(NAME(m_via2_ca1_hack));
+ save_item(NAME(m_nubus_irq_state));
+ save_item(NAME(m_adb_irq_pending));
+ save_item(NAME(m_hdsel));
+ save_item(NAME(m_via_interrupt));
+ save_item(NAME(m_via2_interrupt));
+ save_item(NAME(m_scc_interrupt));
+ save_item(NAME(m_last_taken_interrupt));
+ save_item(NAME(m_irq_count));
+ save_item(NAME(m_ca2_data));
+ save_item(NAME(m_overlay));
}
void macquadra_state::machine_reset()
@@ -1038,4 +1063,4 @@ ROM_START( macqd700 )
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_END
-COMP( 1991, macqd700, 0, 0, macqd700, macadb, macquadra_state, init_macqd700, "Apple Computer", "Macintosh Quadra 700", MACHINE_NOT_WORKING )
+COMP( 1991, macqd700, 0, 0, macqd700, macadb, macquadra_state, init_macqd700, "Apple Computer", "Macintosh Quadra 700", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp
index a68163c213d..369f9c6003e 100644
--- a/src/mame/drivers/namcos10.cpp
+++ b/src/mame/drivers/namcos10.cpp
@@ -1276,6 +1276,18 @@ ROM_START( sekaikh )
ROM_FILL( 0x0000000, 0x400000, 0x55 )
ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
+ ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(b0cc4a4f) SHA1(41974931901090811e07f18c04e2af853c308f88) )
+ ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(65c4a8b4) SHA1(c7fefc32604bb47519a05cdb6c8b0f50034e0efd) )
+
+ ROM_REGION( 0x8000, "mgexio", 0 )
+ ROM_LOAD( "m48z35y.ic11", 0x0000, 0x8000, CRC(e0e52ffc) SHA1(557490e2f286773a945851f44ed0214de731cd75) )
+ROM_END
+
+ROM_START( sekaikha )
+ ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
+ ROM_FILL( 0x0000000, 0x400000, 0x55 )
+
+ ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(e32c36ac) SHA1(d762723b6ecf65c8cb7c85c25d9a1fbbcdcfd27a) )
ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(7cb38ece) SHA1(e21fbc9ff09ca51e1857e32318b95107ae4b3f0b) )
@@ -1368,7 +1380,8 @@ GAME( 2002, gamsharaj, gamshara, ns10_gamshara, namcos10, namcos10_state, i
GAME( 2003, nflclsfb, 0, ns10_nflclsfb, namcos10, namcos10_state, init_nflclsfb, ROT0, "Namco", "NFL Classic Football (US, NCF3 Ver.A.)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, pacmball, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Pacman BALL (PMB2 Ver.A.)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, konotako, 0, ns10_konotako, namcos10, namcos10_state, init_konotako, ROT0, "Mitchell", "Kono Tako (10021 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2004, sekaikh, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Sekai Kaseki Hakken (Japan, SKH1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+GAME( 2004, sekaikh, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Sekai Kaseki Hakken (Japan, SKH1 Ver.B)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+GAME( 2004, sekaikha, sekaikh, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Sekai Kaseki Hakken (Japan, SKH1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME( 2004, taiko6, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Taiko no Tatsujin 6 (Japan, TK61 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
GAME( 2006, keroro, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Keroro Gunso Chikyu Shinryaku Shirei Dearimasu! (KRG1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // ケロロ軍曹 地球侵略指令…であります!
GAME( 2007, gegemdb, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Gegege no Kitaro Yokai Yokocho Matsuri De Batoru Ja (GYM1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // ゲゲゲの鬼太郎 妖怪横丁まつりでバトルじゃ
diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp
index dc52a3bf575..51d423f8f3f 100644
--- a/src/mame/drivers/patinho_feio.cpp
+++ b/src/mame/drivers/patinho_feio.cpp
@@ -248,6 +248,7 @@ void patinho_feio_state::patinho_feio(machine_config &config)
PATO_FEIO_CPU(config, m_maincpu, 500000);
m_maincpu->rc_read().set_ioport("RC");
m_maincpu->buttons_read().set_ioport("BUTTONS");
+ m_maincpu->set_update_panel_cb(FUNC(patinho_feio_state::update_panel));
/* Printer */
// m_maincpu->iodev_write<5>().set(FUNC(patinho_feio_state::printer_data_w));
diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp
index 23887ed219d..dcc456f951f 100644
--- a/src/mame/drivers/punchout.cpp
+++ b/src/mame/drivers/punchout.cpp
@@ -286,8 +286,8 @@ static INPUT_PORTS_START( punchout )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // this should be COIN2? only works on Italian bootleg though
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_START("DSW2")
@@ -343,6 +343,9 @@ static INPUT_PORTS_START( spnchout )
PORT_MODIFY("IN0")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 )
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
+
PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!1,!2,!3,!4")
PORT_DIPSETTING( 0x08, DEF_STR( 6C_1C ) ) /* Not documented */
@@ -377,7 +380,6 @@ static INPUT_PORTS_START( armwrest )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE1 )
/* Coinage:
diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp
index 77648b5bb18..93bbaaf677d 100644
--- a/src/mame/drivers/pwrview.cpp
+++ b/src/mame/drivers/pwrview.cpp
@@ -88,7 +88,7 @@ private:
u8 m_c080;
u8 m_errcode;
u16 m_vramwin[2];
- bool m_dtr;
+ bool m_dtr, m_rtsa, m_rtsb;
bool m_rts;
emu_timer *m_tmr0ext;
emu_timer *m_tmrkbd;
@@ -300,6 +300,9 @@ u8 pwrview_state::unk3_r(offs_t offset)
case 2:
ret = (m_rts ? 0 : 0x40) | (m_dtr ? 0 : 0x80) | 0x20;
break;
+ case 3:
+ ret = m_sio->m1_r();
+ break;
}
return ret;
}
@@ -483,7 +486,6 @@ void pwrview_state::pwrview(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &pwrview_state::pwrview_map);
m_maincpu->set_addrmap(AS_OPCODES, &pwrview_state::pwrview_fetch_map);
m_maincpu->set_addrmap(AS_IO, &pwrview_state::pwrview_io);
- m_maincpu->irqa_cb().set([this] (int state) { if(state) m_sio->m1_r(); });
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_physical_aspect(3, 4); // Portrait CRT
@@ -494,10 +496,10 @@ void pwrview_state::pwrview(machine_config &config)
m_pit->set_clk<0>(XTAL(16'000'000)/16); // clocks unknown, fix above when found
m_pit->set_clk<1>(XTAL(16'000'000)/16);
m_pit->set_clk<2>(XTAL(16'000'000)/16);
- m_pit->out_handler<1>().set(m_sio, FUNC(z80sio_device::rxca_w));
- m_pit->out_handler<1>().append(m_sio, FUNC(z80sio_device::rxcb_w));
- m_pit->out_handler<1>().append(m_sio, FUNC(z80sio_device::txca_w));
- m_pit->out_handler<1>().append(m_sio, FUNC(z80sio_device::txcb_w));
+ m_pit->out_handler<1>().set([this](int state){ if (!m_rtsa) m_sio->rxca_w(state); }); //HACK: prevent sdlc_receive from finding sync immediately because wr7 is 0 when rx is enabled
+ m_pit->out_handler<1>().append([this](int state){ if (!m_rtsb) m_sio->rxcb_w(state); });
+ m_pit->out_handler<1>().append([this](int state){ if (!m_rtsa) m_sio->txca_w(state); });
+ m_pit->out_handler<1>().append([this](int state){ if (!m_rtsb) m_sio->txcb_w(state); });
// floppy disk controller
UPD765A(config, "fdc", 8'000'000, true, true); // Rockwell R7675P
@@ -514,6 +516,12 @@ void pwrview_state::pwrview(machine_config &config)
Z80SIO(config, m_sio, 4000000); // Z8442BPS (SIO/2)
m_sio->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int2_w));
+ m_sio->out_txda_callback().set([this](int state){ m_sio->rxa_w(state); }); // TODO: find loopback control reg
+ m_sio->out_rtsa_callback().set([this](int state){ m_rtsa = state; });
+ m_sio->out_txdb_callback().set([this](int state){ m_sio->rxb_w(state); });
+ m_sio->out_rtsb_callback().set([this](int state){ m_rtsb = state; });
+ m_sio->out_wrdya_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w)).invert();
+ m_sio->out_wrdyb_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w)).invert();
hd6845s_device &crtc(HD6845S(config, "crtc", XTAL(64'000'000)/64)); // clock unknown
crtc.set_char_width(62);
diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp
index 7008cbc210a..d57425e71e5 100644
--- a/src/mame/drivers/sderby.cpp
+++ b/src/mame/drivers/sderby.cpp
@@ -11,9 +11,12 @@
Supported games:
- Super Derby, 1996, Playmark.
- Scacco Matto / Space Win, 1996, Playmark.
- Croupier (Playmark Roulette), 1997, Playmark.
+ Lucky Boom 1996, Playmark.
+ Scacco Matto / Space Win, 1996, Playmark.
+ Shiny Golds, 1996, Playmark.
+ Super Derby (2 sets), 1996, Playmark.
+ Croupier (Playmark Roulette) (2 sets), 1997, Playmark.
+ Magic Touch, 1998, Playmark.
********************************************************************************************
@@ -54,71 +57,269 @@
TO DO :
- - figure out the reads from 0x308002.w and 0x30800e.w (see sderby_input_r read handler)
- (by default, demo sounds are OFF, so change this in the "test mode")
-
+ - figure out the reads from 0x308002.w and 0x30800e.w (see input_r read handler)
+ (by default, demo sounds are OFF, so change this in the "test mode");
+ - dump and hook up the MCU for croupier;
+ - almost everything for magictch. To enter gameplay just do PC=29c2 when it enters a loop at 0x29c0
*******************************************************************************************/
#include "emu.h"
-#include "includes/sderby.h"
#include "cpu/m68000/m68000.h"
#include "machine/nvram.h"
#include "sound/okim6295.h"
+
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "tilemap.h"
#include "pmroulet.lh"
#include "sderby.lh"
#include "spacewin.lh"
-/***************************
-* R/W Handlers *
-***************************/
+// configurable logging
+#define LOG_INPUTS (1U << 1)
+#define LOG_CROUPIER_MCU (1U << 2)
+
+//#define VERBOSE (LOG_GENERAL | LOG_INPUTS | LOG_CROUPIER_MCU)
+
+#include "logmacro.h"
-uint16_t sderby_state::sderby_input_r(offs_t offset)
+#define LOGINPUTS(...) LOGMASKED(LOG_INPUTS, __VA_ARGS__)
+#define LOGCROUPIERMCU(...) LOGMASKED(LOG_CROUPIER_MCU, __VA_ARGS__)
+
+
+namespace {
+
+class sderby_state : public driver_device
{
- switch (offset)
+public:
+ sderby_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_bg_videoram(*this, "bg_videoram"),
+ m_md_videoram(*this, "md_videoram"),
+ m_fg_videoram(*this, "fg_videoram"),
+ m_spriteram(*this, "spriteram"),
+ m_maincpu(*this, "maincpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_in(*this, "IN%u", 0U),
+ m_lamps(*this, "lamp%u", 1U)
+ { }
+
+
+ void luckboom(machine_config &config);
+ void magictch(machine_config &config);
+ void pmroulet(machine_config &config);
+ void sderby(machine_config &config);
+ void sderbya(machine_config &config);
+ void shinygld(machine_config &config);
+ void spacewin(machine_config &config);
+
+protected:
+ virtual void machine_start() override { m_lamps.resolve(); }
+ virtual void video_start() override;
+
+private:
+ required_shared_ptr<uint16_t> m_bg_videoram;
+ required_shared_ptr<uint16_t> m_md_videoram;
+ required_shared_ptr<uint16_t> m_fg_videoram;
+ required_shared_ptr<uint16_t> m_spriteram;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+
+ optional_ioport_array<3> m_in;
+ output_finder<7> m_lamps;
+
+ tilemap_t *m_bg_tilemap = nullptr;
+ tilemap_t *m_md_tilemap = nullptr;
+ tilemap_t *m_fg_tilemap = nullptr;
+
+ uint16_t m_scroll[6]{};
+
+ uint16_t input_r(offs_t offset);
+ uint16_t roulette_input_r(offs_t offset);
+ uint16_t rprot_r();
+ void rprot_w(uint16_t data);
+ void sderby_out_w(uint16_t data);
+ void scmatto_out_w(uint16_t data);
+ void roulette_out_w(uint16_t data);
+ void bg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void md_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void fg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void scroll_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ TILE_GET_INFO_MEMBER(get_bg_tile_info);
+ TILE_GET_INFO_MEMBER(get_md_tile_info);
+ TILE_GET_INFO_MEMBER(get_fg_tile_info);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_pmroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void luckboom_map(address_map &map);
+ void magictch_map(address_map &map);
+ void roulette_map(address_map &map);
+ void sderby_map(address_map &map);
+ void sderbya_map(address_map &map);
+ void shinygld_map(address_map &map);
+ void spacewin_map(address_map &map);
+};
+
+// video
+
+
+TILE_GET_INFO_MEMBER(sderby_state::get_bg_tile_info)
+{
+ int tileno = m_bg_videoram[tile_index * 2];
+ int colour = m_bg_videoram[tile_index * 2 + 1] & 0x0f;
+
+ tileinfo.set(1, tileno, colour, 0);
+}
+
+void sderby_state::bg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ COMBINE_DATA(&m_bg_videoram[offset]);
+ m_bg_tilemap->mark_tile_dirty(offset / 2);
+}
+
+
+TILE_GET_INFO_MEMBER(sderby_state::get_md_tile_info)
+{
+ int tileno = m_md_videoram[tile_index * 2];
+ int colour = m_md_videoram[tile_index * 2 + 1] & 0x0f;
+
+ tileinfo.set(1, tileno, colour + 16, 0);
+}
+
+void sderby_state::md_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ COMBINE_DATA(&m_md_videoram[offset]);
+ m_md_tilemap->mark_tile_dirty(offset / 2);
+}
+
+
+TILE_GET_INFO_MEMBER(sderby_state::get_fg_tile_info)
+{
+ int tileno = m_fg_videoram[tile_index * 2];
+ int colour = m_fg_videoram[tile_index * 2 + 1] & 0x0f;
+
+ tileinfo.set(0, tileno, colour + 32, 0);
+}
+
+void sderby_state::fg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ COMBINE_DATA(&m_fg_videoram[offset]);
+ m_fg_tilemap->mark_tile_dirty(offset / 2);
+}
+
+
+void sderby_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int height = m_gfxdecode->gfx(0)->height();
+ int colordiv = m_gfxdecode->gfx(0)->granularity() / 16;
+
+ for (int offs = 4; offs < m_spriteram.bytes() / 2; offs += 4)
{
- case 0x00 >> 1:
- return ioport("IN0")->read();
- case 0x02 >> 1:
- return 0xffff; // to avoid game to reset (needs more work)
+ int sy = m_spriteram[offs + 3 - 4]; // -4? what the... ???
+ if (sy == 0x2000) return; // end of list marker
+
+ int flipx = sy & 0x4000;
+ int sx = (m_spriteram[offs + 1] & 0x01ff) - 16 - 7;
+ sy = (256 - 8 - height - sy) & 0xff;
+ int code = m_spriteram[offs + 2];
+ int color = (m_spriteram[offs + 1] & 0x3e00) >> 9;
+
+ m_gfxdecode->gfx(1)->transpen(bitmap, cliprect,
+ code,
+ color / colordiv + 48,
+ flipx, 0,
+ sx, sy, 0);
}
+}
- logerror("sderby_input_r : offset = %x - PC = %06x\n",offset*2,m_maincpu->pc());
- return 0xffff;
+void sderby_state::video_start()
+{
+ m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_md_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+
+ m_md_tilemap->set_transparent_pen(0);
+
+ m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
+ m_fg_tilemap->set_transparent_pen(0);
+
+ save_item(NAME(m_scroll));
+}
+
+uint32_t sderby_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ draw_sprites(bitmap, cliprect);
+ m_md_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
}
-uint16_t sderby_state::sderbya_input_r(offs_t offset)
+uint32_t sderby_state::screen_update_pmroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_md_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ draw_sprites(bitmap, cliprect);
+ m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
+}
+
+
+void sderby_state::scroll_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+{
+ data = COMBINE_DATA(&m_scroll[offset]);
+
+ switch (offset)
+ {
+ case 0: m_fg_tilemap->set_scrollx(0, data + 2); break;
+ case 1: m_fg_tilemap->set_scrolly(0, data - 8); break;
+ case 2: m_md_tilemap->set_scrollx(0, data + 4); break;
+ case 3: m_md_tilemap->set_scrolly(0, data - 8); break;
+ case 4: m_bg_tilemap->set_scrollx(0, data + 6); break;
+ case 5: m_bg_tilemap->set_scrolly(0, data - 8); break;
+ }
+}
+
+
+// machine
+
+/***************************
+* R/W Handlers *
+***************************/
+
+uint16_t sderby_state::input_r(offs_t offset)
{
switch (offset)
{
case 0x00 >> 1:
- return ioport("IN0")->read();
+ return m_in[0]->read();
case 0x02 >> 1:
return 0xffff; // to avoid game to reset (needs more work)
}
- logerror("sderby_input_r : offset = %x - PC = %06x\n",offset*2,m_maincpu->pc());
+ LOGINPUTS("input_r : offset = %x - PC = %06x\n", offset * 2, m_maincpu->pc());
return 0xffff;
}
-
uint16_t sderby_state::roulette_input_r(offs_t offset)
{
switch (offset)
{
case 0x00 >> 1:
- return ioport("IN0")->read();
+ return m_in[0]->read();
case 0x02 >> 1:
- return ioport("IN1")->read();
+ return m_in[1]->read();
case 0x04 >> 1:
- return ioport("IN2")->read();
+ return m_in[2]->read();
}
return 0xffff;
@@ -136,7 +337,7 @@ uint16_t sderby_state::roulette_input_r(offs_t offset)
Writes to the MCU are always the same values.
At beginning, the code writes 3 values: 0x53, 0x5a and 0x0d.
- Then, whith each placed bet the code normally writes 0x4e.
+ Then, with each placed bet the code normally writes 0x4e.
After that, there are 2 reads expecting the MCU response.
Most probably there is a shared RAM there for communication,
@@ -148,7 +349,7 @@ uint16_t sderby_state::roulette_input_r(offs_t offset)
uint16_t sderby_state::rprot_r()
{
- logerror("rprot_r : offset = %02x\n",m_maincpu->pc());
+ LOGCROUPIERMCU("rprot_r : offset = %02x\n", m_maincpu->pc());
/* This is the only mask I found that allow a normal play.
Using other values, the game hangs waiting for response,
@@ -162,7 +363,7 @@ uint16_t sderby_state::rprot_r()
void sderby_state::rprot_w(uint16_t data)
{
- logerror("rprot_w %02x\n", data);
+ LOGCROUPIERMCU("rprot_w %02x\n", data);
}
@@ -206,9 +407,9 @@ void sderby_state::sderby_out_w(uint16_t data)
x--- ---- End of Race lamp.
*/
- m_lamps[0] = BIT(data, 0); /* Lamp 1 - START */
- m_lamps[1] = BIT(data, 1); /* Lamp 2 - BET */
- m_lamps[2] = BIT(data, 15); /* Lamp 3 - END OF RACE */
+ m_lamps[0] = BIT(data, 0); // Lamp 1 - START
+ m_lamps[1] = BIT(data, 1); // Lamp 2 - BET
+ m_lamps[2] = BIT(data, 15); // Lamp 3 - END OF RACE
machine().bookkeeping().coin_counter_w(0, data & 0x2000);
}
@@ -251,13 +452,13 @@ void sderby_state::scmatto_out_w(uint16_t data)
--x- ---- Coin counter.
*/
- m_lamps[0] = BIT(data, 0); /* Lamp 1 - HOLD 1 */
- m_lamps[1] = BIT(data, 1); /* Lamp 2 - HOLD 2 */
- m_lamps[2] = BIT(data, 2); /* Lamp 3 - HOLD 3 */
- m_lamps[3] = BIT(data, 3); /* Lamp 4 - HOLD 4 */
- m_lamps[4] = BIT(data, 4); /* Lamp 5 - HOLD 5 */
- m_lamps[5] = BIT(data, 5); /* Lamp 6 - START */
- m_lamps[6] = BIT(data, 6); /* Lamp 7 - BET */
+ m_lamps[0] = BIT(data, 0); // Lamp 1 - HOLD 1
+ m_lamps[1] = BIT(data, 1); // Lamp 2 - HOLD 2
+ m_lamps[2] = BIT(data, 2); // Lamp 3 - HOLD 3
+ m_lamps[3] = BIT(data, 3); // Lamp 4 - HOLD 4
+ m_lamps[4] = BIT(data, 4); // Lamp 5 - HOLD 5
+ m_lamps[5] = BIT(data, 5); // Lamp 6 - START
+ m_lamps[6] = BIT(data, 6); // Lamp 7 - BET
machine().bookkeeping().coin_counter_w(0, data & 0x2000);
}
@@ -287,8 +488,8 @@ void sderby_state::roulette_out_w(uint16_t data)
---- x--- Unknown (always activated).
*/
- m_lamps[0] = BIT(data, 0); /* Lamp 1 - START */
- m_lamps[1] = BIT(data, 1); /* Lamp 2 - BET */
+ m_lamps[0] = BIT(data, 0); // Lamp 1 - START
+ m_lamps[1] = BIT(data, 1); // Lamp 2 - BET
}
@@ -299,18 +500,18 @@ void sderby_state::roulette_out_w(uint16_t data)
void sderby_state::sderby_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
- map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x104000, 0x10400b).w(FUNC(sderby_state::sderby_scroll_w));
- map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
- map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
- map(0x200000, 0x200fff).ram().share("spriteram");
- map(0x308000, 0x30800d).r(FUNC(sderby_state::sderby_input_r));
- map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x104000, 0x10400b).w(FUNC(sderby_state::scroll_w));
+ map(0x10400c, 0x10400d).nopw(); // ??? - check code at 0x000456 (executed once at startup)
+ map(0x10400e, 0x10400f).nopw(); // ??? - check code at 0x000524 (executed once at startup)
+ map(0x200000, 0x200fff).ram().share(m_spriteram);
+ map(0x308000, 0x30800d).r(FUNC(sderby_state::input_r));
+ map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w));
map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0x500000, 0x500001).nopw();
map(0xd00000, 0xd007ff).ram().share("nvram");
map(0xffc000, 0xffffff).ram();
}
@@ -318,18 +519,18 @@ void sderby_state::sderby_map(address_map &map)
void sderby_state::sderbya_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
- map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x104000, 0x10400b).w(FUNC(sderby_state::sderby_scroll_w));
- map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
- map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
- map(0x200000, 0x200fff).ram().share("spriteram");
- map(0x308000, 0x30800d).r(FUNC(sderby_state::sderbya_input_r));
- map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x104000, 0x10400b).w(FUNC(sderby_state::scroll_w));
+ map(0x10400c, 0x10400d).nopw(); // ??? - check code at 0x000456 (executed once at startup)
+ map(0x10400e, 0x10400f).nopw(); // ??? - check code at 0x000524 (executed once at startup)
+ map(0x200000, 0x200fff).ram().share(m_spriteram);
+ map(0x308000, 0x30800d).r(FUNC(sderby_state::input_r));
+ map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w));
map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD
+ map(0x300000, 0x300001).nopw(); // unknown... write 0x01 in game, and 0x00 on reset //MOD
map(0xcf0000, 0xcf07ff).ram().share("nvram");
map(0xcfc000, 0xcfffff).ram(); //MOD
}
@@ -338,18 +539,18 @@ void sderby_state::sderbya_map(address_map &map)
void sderby_state::luckboom_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
- map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x104000, 0x10400b).w(FUNC(sderby_state::sderby_scroll_w));
- map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */
- map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */
- map(0x200000, 0x200fff).ram().share("spriteram");
- map(0x308000, 0x30800d).r(FUNC(sderby_state::sderby_input_r));
- map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w)); /* output port */
+ map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x104000, 0x10400b).w(FUNC(sderby_state::scroll_w));
+ map(0x10400c, 0x10400d).nopw(); // ??? - check code at 0x000456 (executed once at startup)
+ map(0x10400e, 0x10400f).nopw(); // ??? - check code at 0x000524 (executed once at startup)
+ map(0x200000, 0x200fff).ram().share(m_spriteram);
+ map(0x308000, 0x30800d).r(FUNC(sderby_state::input_r));
+ map(0x308008, 0x308009).w(FUNC(sderby_state::sderby_out_w));
map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
+ map(0x500000, 0x500001).nopw(); // unknown... write 0x01 in game, and 0x00 on reset
map(0xe00000, 0xe007ff).ram().share("nvram");
map(0xff0000, 0xffffff).ram();
}
@@ -357,67 +558,83 @@ void sderby_state::luckboom_map(address_map &map)
void sderby_state::spacewin_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x104000, 0x10400b).w(FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */
- map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */
- map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */
- map(0x104010, 0x105fff).nopw(); /* unknown */
- map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
- map(0x308000, 0x30800d).r(FUNC(sderby_state::sderby_input_r));
- map(0x308008, 0x308009).w(FUNC(sderby_state::scmatto_out_w)); /* output port */
+ map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x104000, 0x10400b).w(FUNC(sderby_state::scroll_w));
+ map(0x10400c, 0x10400d).nopw(); // seems another video register. constantly used
+ map(0x10400e, 0x10400f).nopw(); // seems another video register. constantly used
+ map(0x104010, 0x105fff).nopw(); // unknown
+ map(0x300000, 0x300001).nopw(); // unknown... write 0x01 in game, and 0x00 on reset
+ map(0x308000, 0x30800d).r(FUNC(sderby_state::input_r));
+ map(0x308008, 0x308009).w(FUNC(sderby_state::scmatto_out_w));
map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xd00000, 0xd001ff).ram();
- map(0x800000, 0x800fff).ram().share("spriteram");
- map(0x801000, 0x80100d).nopw(); /* unknown */
- map(0x8f0000, 0x8f07ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */
+ map(0x800000, 0x800fff).ram().share(m_spriteram);
+ map(0x801000, 0x80100d).nopw(); // unknown
+ map(0x8f0000, 0x8f07ff).ram().share("nvram"); // 16K Dallas DS1220Y-200 NVRAM
map(0x8fc000, 0x8fffff).ram();
}
void sderby_state::shinygld_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x104000, 0x10400b).w(FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */
- map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */
- map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */
- map(0x104010, 0x105fff).nopw(); /* unknown */
- map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */
- map(0x308000, 0x30800d).r(FUNC(sderby_state::sderby_input_r));
- map(0x308008, 0x308009).nopw(); /* output port */
+ map(0x100000, 0x100fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x101000, 0x101fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x102000, 0x103fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x104000, 0x10400b).w(FUNC(sderby_state::scroll_w));
+ map(0x10400c, 0x10400d).nopw(); // seems another video register. constantly used
+ map(0x10400e, 0x10400f).nopw(); // seems another video register. constantly used
+ map(0x104010, 0x105fff).nopw(); // unknown
+ map(0x300000, 0x300001).nopw(); // unknown... write 0x01 in game, and 0x00 on reset
+ map(0x308000, 0x30800d).r(FUNC(sderby_state::input_r));
+ map(0x308008, 0x308009).nopw();
map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x400000, 0x400fff).ram().share("spriteram");
- map(0x401000, 0x40100d).nopw(); /* unknown */
- map(0x700000, 0x7007ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */
+ map(0x400000, 0x400fff).ram().share(m_spriteram);
+ map(0x401000, 0x40100d).nopw(); // unknown
+ map(0x700000, 0x7007ff).ram().share("nvram"); // 16K Dallas DS1220Y-200 NVRAM
map(0x7f0000, 0x7fffff).ram();
}
void sderby_state::roulette_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x440000, 0x440fff).writeonly().share("spriteram");
- map(0x500000, 0x500fff).ram().w(FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */
- map(0x501000, 0x501fff).ram().w(FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */
- map(0x502000, 0x503fff).ram().w(FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */
- map(0x504000, 0x50400b).ram().w(FUNC(sderby_state::sderby_scroll_w));
+ map(0x440000, 0x440fff).writeonly().share(m_spriteram);
+ map(0x500000, 0x500fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x501000, 0x501fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x502000, 0x503fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x504000, 0x50400b).ram().w(FUNC(sderby_state::scroll_w));
map(0x50400e, 0x50400f).nopw();
map(0x708000, 0x708009).r(FUNC(sderby_state::roulette_input_r));
map(0x708006, 0x708007).w(FUNC(sderby_state::roulette_out_w));
map(0x70800b, 0x70800b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x70800c, 0x70800d).nopw(); /* watchdog?? (0x0003) */
- map(0x70800e, 0x70800f).rw(FUNC(sderby_state::rprot_r), FUNC(sderby_state::rprot_w)); /* MCU communication */
+ map(0x70800c, 0x70800d).nopw(); // watchdog?? (0x0003)
+ map(0x70800e, 0x70800f).rw(FUNC(sderby_state::rprot_r), FUNC(sderby_state::rprot_w)); // MCU communication
map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xff0000, 0xff07ff).ram().share("nvram");
map(0xffc000, 0xffffff).ram();
}
+void sderby_state::magictch_map(address_map &map) // memory map is very similar to the above roulette_map. TODO: verify if deriving makes sense once everything's figured out
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x440000, 0x440fff).writeonly().share(m_spriteram);
+ map(0x500000, 0x500fff).ram().w(FUNC(sderby_state::bg_videoram_w)).share(m_bg_videoram);
+ map(0x501000, 0x501fff).ram().w(FUNC(sderby_state::md_videoram_w)).share(m_md_videoram);
+ map(0x502000, 0x503fff).ram().w(FUNC(sderby_state::fg_videoram_w)).share(m_fg_videoram);
+ map(0x504000, 0x50400b).ram().w(FUNC(sderby_state::scroll_w));
+ map(0x50400e, 0x50400f).nopw();
+ map(0x708000, 0x70800d).r(FUNC(sderby_state::input_r));
+ //map(0x708008, 0x708009).w(FUNC(sderby_state::magictch_out_w)); // TODO
+ map(0x70800f, 0x70800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xf00000, 0xf007ff).ram().share("nvram");
+ map(0xff0000, 0xffffff).ram();
+}
/***************************
@@ -425,7 +642,7 @@ void sderby_state::roulette_map(address_map &map)
***************************/
static INPUT_PORTS_START( sderby )
- PORT_START("IN0") /* 0x308000.w */
+ PORT_START("IN0") // 0x308000.w
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
@@ -445,7 +662,7 @@ static INPUT_PORTS_START( sderby )
INPUT_PORTS_END
static INPUT_PORTS_START( sderbya )
- PORT_START("IN0") /* 0x308000.w */
+ PORT_START("IN0") // 0x308000.w
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
@@ -465,7 +682,7 @@ static INPUT_PORTS_START( sderbya )
INPUT_PORTS_END
static INPUT_PORTS_START( luckboom )
- PORT_START("IN0") /* 0x308000.w */
+ PORT_START("IN0") // 0x308000.w
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
@@ -485,7 +702,7 @@ static INPUT_PORTS_START( luckboom )
INPUT_PORTS_END
static INPUT_PORTS_START( spacewin )
- PORT_START("IN0") /* 0x308000.w */
+ PORT_START("IN0") // 0x308000.w
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
@@ -505,7 +722,7 @@ static INPUT_PORTS_START( spacewin )
INPUT_PORTS_END
static INPUT_PORTS_START( shinygld )
- PORT_START("IN0") /* 0x308000.w */
+ PORT_START("IN0") // 0x308000.w
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )
@@ -527,7 +744,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( pmroulet )
PORT_START("IN0")
PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") /* it must be toggled to boot anyway */
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // it must be toggled to boot anyway
PORT_SERVICE_NO_TOGGLE(0x0020, IP_ACTIVE_LOW)
PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -547,7 +764,7 @@ static INPUT_PORTS_START( pmroulet )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* to cancel bets in 3-button mode */
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) // to cancel bets in 3-button mode
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -590,8 +807,8 @@ static const gfx_layout tiles16x16_layout =
****************************/
static GFXDECODE_START( gfx_sderby )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x000, 256 ) /* sprites */
- GFXDECODE_ENTRY( "gfx1", 0, tiles16x16_layout, 0x000, 256 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx", 0, tiles8x8_layout, 0x000, 256 )
+ GFXDECODE_ENTRY( "gfx", 0, tiles16x16_layout, 0x000, 256 )
GFXDECODE_END
@@ -612,14 +829,14 @@ void sderby_state::sderby(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
+ screen.set_screen_update(FUNC(sderby_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
+ OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
}
void sderby_state::sderbya(machine_config &config)
@@ -635,14 +852,14 @@ void sderby_state::sderbya(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
+ screen.set_screen_update(FUNC(sderby_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
+ OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
}
void sderby_state::luckboom(machine_config &config)
@@ -658,14 +875,14 @@ void sderby_state::luckboom(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
+ screen.set_screen_update(FUNC(sderby_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
+ OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
}
void sderby_state::spacewin(machine_config &config)
@@ -688,7 +905,7 @@ void sderby_state::spacewin(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
+ OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
}
void sderby_state::shinygld(machine_config &config)
@@ -704,14 +921,14 @@ void sderby_state::shinygld(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
- screen.set_screen_update(FUNC(sderby_state::screen_update_sderby));
+ screen.set_screen_update(FUNC(sderby_state::screen_update));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 verified */
+ OKIM6295(config, "oki", 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 verified
}
void sderby_state::pmroulet(machine_config &config)
@@ -724,7 +941,30 @@ void sderby_state::pmroulet(machine_config &config)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
+ screen.set_size(64*8, 64*8);
+ screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
+ screen.set_screen_update(FUNC(sderby_state::screen_update_pmroulet));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_sderby);
+ PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
+
+ SPEAKER(config, "mono").front_center();
+ OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified
+}
+
+void sderby_state::magictch(machine_config &config)
+{
+ M68000(config, m_maincpu, 12_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &sderby_state::magictch_map);
+ m_maincpu->set_vblank_int("screen", FUNC(sderby_state::irq2_line_hold));
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
screen.set_size(64*8, 64*8);
screen.set_visarea(4*8, 44*8-1, 3*8, 33*8-1);
screen.set_screen_update(FUNC(sderby_state::screen_update_pmroulet));
@@ -734,7 +974,7 @@ void sderby_state::pmroulet(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::RGBx_555, 0x1000);
SPEAKER(config, "mono").front_center();
- OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */
+ OKIM6295(config, "oki", 1_MHz_XTAL, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 verified
}
@@ -768,14 +1008,14 @@ two FPGA chips - one labelled 'Playmark 010412'
*/
ROM_START( sderby )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "22.bin", 0x00000, 0x20000, CRC(a319f1e0) SHA1(d932cc7e990aa87308dcd9ffa5af2aaea333aa9a) )
ROM_LOAD16_BYTE( "23.bin", 0x00001, 0x20000, CRC(1d6e2321) SHA1(3bb32021cc9ee6bd6d1fd79a89159fef70f34f41) )
- ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "21.bin", 0x00000, 0x80000, CRC(6f9f2f2b) SHA1(9778439979bc21b3e49f0c16353488a33b93c01b) )
- ROM_REGION( 0xa0000, "gfx1", 0 ) /* Sprites */
+ ROM_REGION( 0xa0000, "gfx", 0 )
ROM_LOAD( "24.bin", 0x00000, 0x20000, CRC(93c917df) SHA1(dc2fa5e29749ec92871c66146c0412a23f47e316) )
ROM_LOAD( "25.bin", 0x20000, 0x20000, CRC(7ba485cd) SHA1(b0170614d713af9d1556251c76ae762de872abe6) )
ROM_LOAD( "26.bin", 0x40000, 0x20000, CRC(beabe4f7) SHA1(a5615450fae930cb2408f201a9faa12551de0d70) )
@@ -784,14 +1024,14 @@ ROM_START( sderby )
ROM_END
ROM_START( sderbya )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "22.u16", 0x00000, 0x20000, CRC(5baadc33) SHA1(475843d3f99f5a6aa25bdba75b251ad6be32802f) )
ROM_LOAD16_BYTE( "23.u15", 0x00001, 0x20000, CRC(04518b8c) SHA1(97598c43c1cb0a757bca70c0a498838144b2302b) )
- ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "274001.u147", 0x00000, 0x80000, CRC(6f9f2f2b) SHA1(9778439979bc21b3e49f0c16353488a33b93c01b) )
- ROM_REGION( 0x140000, "gfx1", 0 ) /* Sprites */
+ ROM_REGION( 0x140000, "gfx", 0 )
ROM_LOAD( "24.u141", 0x000000, 0x40000, CRC(54234f72) SHA1(c2e3e547255174daa9a6acad743c210b92ded385) )
ROM_LOAD( "25.u142", 0x040000, 0x40000, CRC(1bd98cf7) SHA1(67143a16e2cf01868fac3d8d6d9db423f77d09b9) )
ROM_LOAD( "26.u143", 0x080000, 0x40000, CRC(21bf2004) SHA1(7f7cbdcd89807c9e8ca64023a0060b18ef9b6536) )
@@ -838,14 +1078,14 @@ Title depends on graphics type in test mode.
*/
ROM_START( spacewin )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "2.u16", 0x00000, 0x20000, CRC(2d17c2ab) SHA1(833ab39081fbc3d114103055e3a3f2ea2a28f158) )
ROM_LOAD16_BYTE( "3.u15", 0x00001, 0x20000, CRC(fd6f93ef) SHA1(1dc35fd92a0185434b44aa3c7da47a408fb2ce27) )
- ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "1.u147", 0x00000, 0x40000, CRC(eedc7090) SHA1(fc8cabf7a11a1de3ccc3b8860afd8f32669608b8) )
- ROM_REGION( 0xa0000, "gfx1", 0 ) /* Sprites */
+ ROM_REGION( 0xa0000, "gfx", 0 )
ROM_LOAD( "4.u141", 0x000000, 0x20000, CRC(ce20c599) SHA1(93358c3a891c66ca944eb684bd47e9c25bfcb88d) )
ROM_LOAD( "5.u142", 0x020000, 0x20000, CRC(ae4f8e06) SHA1(cb3b941c67ae5c9df005d9f8b2105dc5a114f19f) )
ROM_LOAD( "6.u143", 0x040000, 0x20000, CRC(b99afc96) SHA1(589270dbd5022db2d032da85a9813c271fa71a90) )
@@ -855,14 +1095,14 @@ ROM_END
// This board seems very similar to the spacewin's one.
ROM_START( shinygld )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "16.u16", 0x00000, 0x20000, CRC(4b08a668) SHA1(8444e7624a40e14eca73c425db1cd574c2bf02e0) ) // 27C1001
ROM_LOAD16_BYTE( "17.u15", 0x00001, 0x20000, CRC(eb126e19) SHA1(d02ba03551f71f3ca46bee49291e4423daeea0ce) ) // 27C1001
- ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "15.u147", 0x00000, 0x40000, CRC(66db6b15) SHA1(4a1ca962c61d60db8ff66c81253131d067bec8c6) ) // 27C2001
- ROM_REGION( 0xa0000, "gfx1", 0 ) /* Sprites */
+ ROM_REGION( 0xa0000, "gfx", 0 )
ROM_LOAD( "18.u141", 0x000000, 0x20000, CRC(a905c02d) SHA1(07a0a70424aa759e4c552408154c2d1515f512d5) ) // 27C1001
ROM_LOAD( "19.u142", 0x020000, 0x20000, CRC(8db53f3b) SHA1(aeb2da8bb065bb49edae1de51f6db9a7a02989c3) ) // 27C1001
ROM_LOAD( "20.u143", 0x040000, 0x20000, CRC(be54ae86) SHA1(23c8a01aa05204a6cd186a59269e515a068e23c4) ) // 27C1001
@@ -871,12 +1111,12 @@ ROM_START( shinygld )
/* Dumper's note: Board carries five PLDs : one GAL22V10 near the 68000 CPU (which most likely acts as main address decoder),
three PALCE22V10H (two are near the GFX ROMs, probably for enabling them), one PALCE16V8H.*/
- ROM_REGION( 0x1000, "plds", 0)
- ROM_LOAD( "gal22v10.bin", 0x0400, 0x02e5, NO_DUMP ) // soldered
- ROM_LOAD( "palce22v10_1.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered
- ROM_LOAD( "palce22v10_2.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered
- ROM_LOAD( "palce22v10_3.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered
- ROM_LOAD( "palce16v8h.bin", 0x0200, 0x0117, NO_DUMP ) // soldered
+ ROM_REGION( 0xd00, "plds", 0)
+ ROM_LOAD( "gal22v10.bin", 0x000, 0x2e5, NO_DUMP ) // soldered
+ ROM_LOAD( "palce22v10_1.bin", 0x300, 0x2dd, NO_DUMP ) // soldered
+ ROM_LOAD( "palce22v10_2.bin", 0x600, 0x2dd, NO_DUMP ) // soldered
+ ROM_LOAD( "palce22v10_3.bin", 0x900, 0x2dd, NO_DUMP ) // soldered
+ ROM_LOAD( "palce16v8h.bin", 0xb00, 0x117, NO_DUMP ) // soldered
ROM_END
/*
@@ -940,17 +1180,17 @@ CRC-32 : D4C2B7DAh
*/
ROM_START( croupier )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "2.bin", 0x00000, 0x20000, CRC(e7941975) SHA1(ea32cd51b8d87205a1d6c6a83ebf8b50e03c55fc))
ROM_LOAD16_BYTE( "3.bin", 0x00001, 0x20000, CRC(29d06a38) SHA1(c6fdca1a31fad9abf854e521e593f3ec8018ae6d))
ROM_REGION( 0x4008, "pic16c74", 0 )
ROM_LOAD( "pic16c74.u39", 0x00000, 0x4008, CRC(9cb88e5b) SHA1(3c6b371efeda757f2bcab6c860e7585b628c210a))
- ROM_REGION( 0x080000, "oki", 0 ) /* samples are ok */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(6673de85) SHA1(df390cd6268efc0e743a9020f19bc0cbeb757cfa))
- ROM_REGION( 0x280000, "gfx1", 0 ) /* sprites */
+ ROM_REGION( 0x280000, "gfx", 0 )
ROM_LOAD( "4.bin", 0x000000, 0x80000, CRC(efcddac9) SHA1(72435ec478b70a067d47f3daf7c224169ee5827a))
ROM_LOAD( "5.bin", 0x080000, 0x80000, CRC(bc75ef8f) SHA1(1f3dc457e5ae143d53cfef0e1fcb4586dceefb67))
ROM_LOAD( "6.bin", 0x100000, 0x80000, CRC(e47d5f55) SHA1(a341e24f98125265cb3986f8c7ce84eedd056b71))
@@ -959,17 +1199,17 @@ ROM_START( croupier )
ROM_END
ROM_START( croupiera )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "2.bin", 0x00000, 0x20000, CRC(1677a2de) SHA1(4dcbb3c1ce9b65e06ba7e0cffa00c0c8016538f5)) // sldh
ROM_LOAD16_BYTE( "3.bin", 0x00001, 0x20000, CRC(11acaac2) SHA1(19e7bbbf4356fc9a866f9f36d0568c42d6a36c07)) // sldh
ROM_REGION( 0x4008, "pic16c74", 0 )
ROM_LOAD( "pic16c74.u39", 0x00000, 0x4008, CRC(9cb88e5b) SHA1(3c6b371efeda757f2bcab6c860e7585b628c210a))
- ROM_REGION( 0x080000, "oki", 0 ) /* samples are ok */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(6673de85) SHA1(df390cd6268efc0e743a9020f19bc0cbeb757cfa))
- ROM_REGION( 0x280000, "gfx1", 0 ) /* sprites */
+ ROM_REGION( 0x280000, "gfx", 0 )
ROM_LOAD( "4.bin", 0x000000, 0x80000, CRC(efcddac9) SHA1(72435ec478b70a067d47f3daf7c224169ee5827a))
ROM_LOAD( "5.bin", 0x080000, 0x80000, CRC(bc75ef8f) SHA1(1f3dc457e5ae143d53cfef0e1fcb4586dceefb67))
ROM_LOAD( "6.bin", 0x100000, 0x80000, CRC(e47d5f55) SHA1(a341e24f98125265cb3986f8c7ce84eedd056b71))
@@ -1009,14 +1249,14 @@ QTY Type position status
ROM_START( luckboom )
- ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 Code
ROM_LOAD16_BYTE( "2.u16", 0x00000, 0x20000, CRC(0a20eaca) SHA1(edd325b60b3a3ce84e89f8be91b9e19f82d15317) )
ROM_LOAD16_BYTE( "3.u15", 0x00001, 0x20000, CRC(0d3bb24c) SHA1(31826ec29650aa8b70e1b713678401113e008832) )
- ROM_REGION( 0x080000, "oki", 0 ) /* Samples */
+ ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "1.u147", 0x00000, 0x40000, CRC(0d42c0a3) SHA1(1b1d4c7dcbb063e8bf133063770b753947d1a017) )
- ROM_REGION( 0xa0000, "gfx1", 0 ) /* Sprites */
+ ROM_REGION( 0xa0000, "gfx", 0 )
ROM_LOAD( "4.u141", 0x000000, 0x20000, CRC(3aeccad7) SHA1(4104dd3ae928c1a876ac9b460fe18b58ce1206f7) )
ROM_LOAD( "5.u142", 0x020000, 0x20000, CRC(4e4f9ac6) SHA1(e9b0c48195d8b21cdab16d66423ff43e6292ef2c) )
ROM_LOAD( "6.u143", 0x040000, 0x20000, CRC(d1b4910e) SHA1(cfcb14bcd992bceaa634b20eb2d446caa62b6d82) )
@@ -1025,6 +1265,40 @@ ROM_START( luckboom )
ROM_END
+/*
+ZW3 PCB with 'MAGIC' sticker
+1x MC68000FN12
+1x scratched off DIP-40 chip near the main CPU
+1x M48Z02-150PC1 ZEROPOWER RAM
+1x 12 MHz XTAL
+1x 14.318180 MHz XTAL
+3x Actel A1020B FPGA
+1x Oki M6295
+1x 1.000J blue resonator
+*/
+
+ROM_START( magictch )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "22.u43", 0x00000, 0x20000, CRC(47f047b1) SHA1(f47ab9734f6bb1dc50baf159bca144fa79eac1a5) ) // TMS27C010A
+ ROM_LOAD16_BYTE( "23.u42", 0x00001, 0x20000, CRC(f63e31bf) SHA1(e96da519a8d6488d600e031ac48f5ce1a8a376f5) ) // TMS27C010A
+
+ ROM_REGION( 0x040000, "oki", 0 )
+ ROM_LOAD( "21.u16", 0x00000, 0x40000, CRC(e06a023f) SHA1(b4cd64f6c97e9c3e50a9658e171d748cb9f1c4ef) ) // ST M27C2001, 1xxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0xa0000, "gfx", 0 )
+ ROM_LOAD( "28.u76", 0x000000, 0x20000, CRC(ca49b54c) SHA1(69d6a3b32ebc357231b22ded40468971ba9ef8c3) ) // TMS27C010A
+ ROM_LOAD( "27.u77", 0x020000, 0x20000, CRC(55b10fe5) SHA1(caf16512afe1b3fa66018075598cbc2626a63b3e) ) // TMS27C010A
+ ROM_LOAD( "26.u78", 0x040000, 0x20000, CRC(d7974bd9) SHA1(b49678697e30d104a88adcc8e2c09cd62233c7b4) ) // TMS27C010A
+ ROM_LOAD( "25.u79", 0x060000, 0x20000, CRC(f825cb9d) SHA1(10ffa614ac82e5c625c36095b298a8acfc7465bf) ) // TMS27C010A
+ ROM_LOAD( "24.u80", 0x080000, 0x20000, CRC(3bdaea12) SHA1(8d9493ab80f96e6f941039ce6d1b8f1ed3c78379) ) // TMS27C010A
+
+ ROM_REGION( 0x300, "plds", 0)
+ ROM_LOAD( "gal22cv10-15lnc.u40", 0x000, 0x2e5, NO_DUMP ) // soldered
+ROM_END
+
+} // anonymous namespace
+
+
/******************************
* Game Drivers *
******************************/
@@ -1037,3 +1311,4 @@ GAME( 1996, shinygld, 0, shinygld, shinygld, sderby_state, empty_init,
GAMEL( 1997, croupier, 0, pmroulet, pmroulet, sderby_state, empty_init, ROT0, "Playmark", "Croupier (Playmark Roulette v.20.05)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet )
GAMEL( 1997, croupiera, croupier, pmroulet, pmroulet, sderby_state, empty_init, ROT0, "Playmark", "Croupier (Playmark Roulette v.09.04)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet )
GAME( 1996, luckboom, 0, luckboom, luckboom, sderby_state, empty_init, ROT0, "Playmark", "Lucky Boom", 0 )
+GAME( 1998, magictch, 0, magictch, spacewin, sderby_state, empty_init, ROT0, "Playmark", "Magic Touch", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // wrong text layer hook up, stops during boot and needs debugger help to go in game, inputs aren't done, some scroll offsets are wrong
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index 708f90b8ca4..402eb581b83 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -2773,8 +2773,8 @@ static INPUT_PORTS_START( goldnaxe )
PORT_DIPNAME( 0x3c, 0x3c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4,5,6") // Definition according to manual
PORT_DIPSETTING( 0x00, "Special" )
PORT_DIPSETTING( 0x14, DEF_STR( Easiest ) )
- PORT_DIPSETTING( 0x1c, DEF_STR( Easier ) )
- PORT_DIPSETTING( 0x34, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x34, DEF_STR( Easier ) )
+ PORT_DIPSETTING( 0x1c, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x3c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x38, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x2c, DEF_STR( Harder ) )
diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp
index 4c751eaac17..bcdc1740f6d 100644
--- a/src/mame/drivers/segaufo.cpp
+++ b/src/mame/drivers/segaufo.cpp
@@ -15,7 +15,7 @@
- # UFO Catcher DX II (1987)
3rd gen - UFO brd
- * Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C
+ * Z80 (sticker obscures label), 16MHz XTAL, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C
- # Dream Town (1990)
- New UFO Catcher (1991) (2P) - probably the most popular cabinet of all UFO Catcher series
- UFO Catcher Mini (1991) (1P)
@@ -23,7 +23,8 @@
- # School Kids (1993)
4th gen - EX brd
- * Z80, 2 Sega 315-5296(I/O), 315-5338A, YM3438, NEC uPD71054C, optional NEC uPD7759C
+ * Z80 Z0840008PSC, 8MHz XTAL, 32MHz XTAL, 2 Sega 315-5296(I/O), 315-5338A, YM3438,
+ NEC uPD71054C, optional NEC uPD7759C
- # Dream Palace (1992)
- # Dream Kitchen (1994)
- # UFO Catcher Excellent (1994)
@@ -916,21 +917,21 @@ ROM_END
ROM_START( ufomini )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "epr-14355.bin", 0x000000, 0x010000, CRC(fbc969c5) SHA1(4a99dcd36bc48b6472988e0bc679fd61af17359c) )
+ ROM_LOAD( "epr-14355.ic21", 0x000000, 0x010000, CRC(fbc969c5) SHA1(4a99dcd36bc48b6472988e0bc679fd61af17359c) )
ROM_END
ROM_START( ufo21 )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "epr-19063a.bin", 0x000000, 0x010000, CRC(2e13e3e9) SHA1(6908f7db79c1a1da4ebc0456afc50ff18f2e8cf3) )
+ ROM_LOAD( "epr-19063a.ic33", 0x000000, 0x010000, CRC(2e13e3e9) SHA1(6908f7db79c1a1da4ebc0456afc50ff18f2e8cf3) )
ROM_REGION( 0x40000, "upd", 0 )
- ROM_LOAD( "epr-19064.bin", 0x000000, 0x040000, CRC(ab62c1f0) SHA1(8791a88546ae69e710e128ffc2ea6e9b464f0631) )
+ ROM_LOAD( "epr-19064.ic32", 0x000000, 0x040000, CRC(ab62c1f0) SHA1(8791a88546ae69e710e128ffc2ea6e9b464f0631) )
ROM_END
ROM_START( ufo800 )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "epr-20413a.bin", 0x000000, 0x010000, CRC(36e9da6d) SHA1(8e1dbf8b24bc31be7de28f4d562838c291af7c7b) )
+ ROM_LOAD( "epr-20413a.ic33", 0x000000, 0x010000, CRC(36e9da6d) SHA1(8e1dbf8b24bc31be7de28f4d562838c291af7c7b) )
ROM_END
diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp
index 541046117d5..1f55ed60fb0 100644
--- a/src/mame/drivers/supstarf.cpp
+++ b/src/mame/drivers/supstarf.cpp
@@ -7,10 +7,6 @@ Super Star (Recreativos Franco)
Skeleton driver for 8085-based pinball hardware.
TODO:
-- The ROM for the sound cpu is a bad dump. The 8035 should set itself up,
- then signal a rst(call 0024) to the 8085 which in turn sets up key
- indicators in RAM and enabling the machine to begin. With the bad dump,
- none of that can happen.
- Display circuits: i8259, 74164, 74159 and other bits.
- Default layout
- Outputs (solenoids, lamps)
@@ -263,11 +259,21 @@ INPUT_PORTS_END
ROM_START(supstarf)
ROM_REGION(0x4000, "maincpu", 0)
+ ROM_LOAD("m31-a-01187.ic19", 0x0000, 0x4000, CRC(ab8b1148) SHA1(496d3c9664386ae64e94462db2fdd36811a68a87))
+ // IC14 for second program ROM is unpopulated
+
+ ROM_REGION(0x1000, "soundcpu", 0)
+ ROM_LOAD("2532.ic4", 0x0000, 0x1000, CRC(d6d7eee2) SHA1(60e497c8845320eea01662d894d0b16349ebb7e4))
+ROM_END
+
+ROM_START(supstarfa)
+ ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("27c128.ic19", 0x0000, 0x4000, CRC(9a440461) SHA1(e2f8dcf95084f755d3a34d77ba2649602687a610))
// IC14 for second program ROM is unpopulated
ROM_REGION(0x1000, "soundcpu", 0)
- ROM_LOAD("2532.ic4", 0x0000, 0x1000, CRC(b6ef3c7a) SHA1(aabb6f8569685fc3a917a7bb5ebfcc4b20086b15) BAD_DUMP) // D6 stuck high and probably totally garbage
+ ROM_LOAD("2532.ic4", 0x0000, 0x1000, BAD_DUMP CRC(b6ef3c7a) SHA1(aabb6f8569685fc3a917a7bb5ebfcc4b20086b15)) // D6 stuck high and probably totally garbage
ROM_END
-GAME( 1986, supstarf, 0, supstarf, supstarf, supstarf_state, empty_init, ROT0, "Recreativos Franco", "Super Star (Recreativos Franco)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, supstarf, 0, supstarf, supstarf, supstarf_state, empty_init, ROT0, "Recreativos Franco", "Super Star (Recreativos Franco, set 1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, supstarfa, supstarf, supstarf, supstarf, supstarf_state, empty_init, ROT0, "Recreativos Franco", "Super Star (Recreativos Franco, set 2)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 0c2f7a5c5db..621fd1affe0 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -1674,8 +1674,8 @@ static INPUT_PORTS_START( goldnaxe )
PORT_DIPNAME( 0x3c, 0x3c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4,5,6") /* Definition according to manual */
PORT_DIPSETTING( 0x00, "Special" )
PORT_DIPSETTING( 0x14, DEF_STR( Easiest ) )
- PORT_DIPSETTING( 0x1c, DEF_STR( Easier ) )
- PORT_DIPSETTING( 0x34, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x34, DEF_STR( Easier ) )
+ PORT_DIPSETTING( 0x1c, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x3c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x38, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x2c, DEF_STR( Harder ) )
diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp
index 9f4603f2a40..842c334dea0 100644
--- a/src/mame/drivers/tickee.cpp
+++ b/src/mame/drivers/tickee.cpp
@@ -22,6 +22,7 @@
***************************************************************************/
#include "emu.h"
+
#include "cpu/tms34010/tms34010.h"
#include "machine/nvram.h"
#include "machine/ticket.h"
@@ -29,81 +30,120 @@
#include "sound/ay8910.h"
#include "sound/okim6295.h"
#include "video/tlc34076.h"
+
#include "screen.h"
#include "speaker.h"
+namespace {
+
class tickee_state : public driver_device
{
public:
- tickee_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
+ tickee_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_vram(*this, "vram"),
+ m_control(*this, "control"),
m_maincpu(*this, "maincpu"),
- m_oki(*this, "oki"),
m_screen(*this, "screen"),
+ m_oki(*this, "oki"),
m_tlc34076(*this, "tlc34076"),
- m_ticket(*this, "ticket%u", 1),
- m_vram(*this, "vram"),
- m_control(*this, "control") { }
+ m_ticket(*this, "ticket%u", 1)
+ {
+ }
- void rapidfir(machine_config &config);
- void ghoshunt(machine_config &config);
- void tickee(machine_config &config);
+ // Machine drivers
void mouseatk(machine_config &config);
-private:
- enum
- {
- TIMER_TRIGGER_GUN_INTERRUPT,
- TIMER_CLEAR_GUN_INTERRUPT,
- TIMER_SETUP_GUN_INTERRUPTS
- };
+protected:
+ required_shared_ptr<uint16_t> m_vram;
+ optional_shared_ptr<uint16_t> m_control;
required_device<tms34010_device> m_maincpu;
- optional_device<okim6295_device> m_oki;
required_device<screen_device> m_screen;
+
+ optional_device<okim6295_device> m_oki;
required_device<tlc34076_device> m_tlc34076;
optional_device_array<ticket_dispenser_device, 2> m_ticket;
- required_shared_ptr<uint16_t> m_vram;
- optional_shared_ptr<uint16_t> m_control;
+ // Video update
+ TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update);
+
+ // Miscellaneous control bits
+ void tickee_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+
+private:
+ // Memory maps
+ void mouseatk_map(address_map &map);
+};
+
+
+class tickee_gun_state : public tickee_state
+{
+public:
+ tickee_gun_state(const machine_config &mconfig, device_type type, const char *tag) :
+ tickee_state(mconfig, type, tag),
+ m_gun_axis_x(*this, "GUNX%u", 1U),
+ m_gun_axis_y(*this, "GUNY%u", 1U)
+ {
+ }
+
+ // Machine drivers
+ void tickee(machine_config &config);
+ void ghoshunt(machine_config &config);
+ void rapidfir(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ required_ioport_array<2> m_gun_axis_x;
+ required_ioport_array<2> m_gun_axis_y;
+
+ emu_timer *m_setup_gun_timer;
+ emu_timer *m_set_gun_int_timer[2];
+ emu_timer *m_clear_gun_int_timer[2];
- emu_timer *m_setup_gun_timer = nullptr;
- emu_timer *m_set_gun_int_timer[2]{};
- emu_timer *m_clear_gun_int_timer[2]{};
int m_beamxadd = 0;
int m_beamyadd = 0;
- int m_palette_bank = 0;
- uint8_t m_gunx[2]{};
+ int m_palette_bank;
+ uint8_t m_gunx[2];
+
+ void set_beamadd(int x, int y) { m_beamxadd = x; m_beamyadd = y; }
+
+ // Compute X/Y coordinates
void get_crosshair_xy(int player, int &x, int &y);
+ // Light gun interrupts
+ TIMER_CALLBACK_MEMBER(trigger_gun_interrupt);
+ TIMER_CALLBACK_MEMBER(clear_gun_interrupt);
+ TIMER_CALLBACK_MEMBER(setup_gun_interrupts);
+
+ // Video update
+ TMS340X0_SCANLINE_RGB32_CB_MEMBER(rapidfir_scanline_update);
+
+ // Video related
void rapidfir_transparent_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint16_t rapidfir_transparent_r(offs_t offset);
- void tickee_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ TMS340X0_TO_SHIFTREG_CB_MEMBER(rapidfir_to_shiftreg);
+ TMS340X0_FROM_SHIFTREG_CB_MEMBER(rapidfir_from_shiftreg);
+
+ // Unknowns
uint16_t ffff_r();
uint16_t rapidfir_gun1_r();
uint16_t rapidfir_gun2_r();
uint16_t ff7f_r();
void ff7f_w(uint16_t data);
void rapidfir_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sound_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- DECLARE_MACHINE_RESET(tickee);
- DECLARE_VIDEO_START(tickee);
- DECLARE_VIDEO_RESET(tickee);
- DECLARE_MACHINE_RESET(rapidfir);
- TIMER_CALLBACK_MEMBER(trigger_gun_interrupt);
- TIMER_CALLBACK_MEMBER(clear_gun_interrupt);
- TIMER_CALLBACK_MEMBER(setup_gun_interrupts);
- TMS340X0_TO_SHIFTREG_CB_MEMBER(rapidfir_to_shiftreg);
- TMS340X0_FROM_SHIFTREG_CB_MEMBER(rapidfir_from_shiftreg);
- TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update);
- TMS340X0_SCANLINE_RGB32_CB_MEMBER(rapidfir_scanline_update);
+ // Sound
+ void sound_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ // Memory maps
+ void tickee_map(address_map &map);
void ghoshunt_map(address_map &map);
- void mouseatk_map(address_map &map);
void rapidfir_map(address_map &map);
- void tickee_map(address_map &map);
};
@@ -118,12 +158,12 @@ private:
*
*************************************/
-inline void tickee_state::get_crosshair_xy(int player, int &x, int &y)
+inline void tickee_gun_state::get_crosshair_xy(int player, int &x, int &y)
{
const rectangle &visarea = m_screen->visible_area();
- x = (((ioport(player ? "GUNX2" : "GUNX1")->read() & 0xff) * visarea.width()) >> 8) + visarea.min_x;
- y = (((ioport(player ? "GUNY2" : "GUNY1")->read() & 0xff) * visarea.height()) >> 8) + visarea.min_y;
+ x = (((m_gun_axis_x[player]->read() & 0xff) * visarea.width()) >> 8) + visarea.min_x;
+ y = (((m_gun_axis_y[player]->read() & 0xff) * visarea.height()) >> 8) + visarea.min_y;
}
@@ -134,10 +174,10 @@ inline void tickee_state::get_crosshair_xy(int player, int &x, int &y)
*
*************************************/
-TIMER_CALLBACK_MEMBER(tickee_state::trigger_gun_interrupt)
+TIMER_CALLBACK_MEMBER(tickee_gun_state::trigger_gun_interrupt)
{
- int which = param & 1;
- int beamx = (m_screen->hpos()/2)-58;
+ int const which = param & 1;
+ int const beamx = (m_screen->hpos() / 2) - 58;
/* once we're ready to fire, set the X coordinate and assert the line */
m_gunx[which] = beamx;
@@ -147,34 +187,33 @@ TIMER_CALLBACK_MEMBER(tickee_state::trigger_gun_interrupt)
}
-TIMER_CALLBACK_MEMBER(tickee_state::clear_gun_interrupt)
+TIMER_CALLBACK_MEMBER(tickee_gun_state::clear_gun_interrupt)
{
/* clear the IRQ on the next scanline? */
m_maincpu->set_input_line(param, CLEAR_LINE);
}
-TIMER_CALLBACK_MEMBER(tickee_state::setup_gun_interrupts)
+TIMER_CALLBACK_MEMBER(tickee_gun_state::setup_gun_interrupts)
{
- int beamx, beamy;
-
/* set a timer to do this again next frame */
m_setup_gun_timer->adjust(m_screen->time_until_pos(0));
/* only do work if the palette is flashed */
- if (m_control)
- if (!m_control[2])
- return;
-
- /* generate interrupts for player 1's gun */
- get_crosshair_xy(0, beamx, beamy);
- m_set_gun_int_timer[0]->adjust(m_screen->time_until_pos(beamy + m_beamyadd, beamx + m_beamxadd), 0);
- m_clear_gun_int_timer[0]->adjust(m_screen->time_until_pos(beamy + m_beamyadd + 1, beamx + m_beamxadd), 0);
-
- /* generate interrupts for player 2's gun */
- get_crosshair_xy(1, beamx, beamy);
- m_set_gun_int_timer[1]->adjust(m_screen->time_until_pos(beamy + m_beamyadd, beamx + m_beamxadd), 1);
- m_clear_gun_int_timer[1]->adjust(m_screen->time_until_pos(beamy + m_beamyadd + 1, beamx + m_beamxadd), 1);
+ if (!m_control || m_control[2])
+ {
+ int beamx, beamy;
+
+ /* generate interrupts for player 1's gun */
+ get_crosshair_xy(0, beamx, beamy);
+ m_set_gun_int_timer[0]->adjust(m_screen->time_until_pos(beamy + m_beamyadd, beamx + m_beamxadd), 0);
+ m_clear_gun_int_timer[0]->adjust(m_screen->time_until_pos(beamy + m_beamyadd + 1, beamx + m_beamxadd), 0);
+
+ /* generate interrupts for player 2's gun */
+ get_crosshair_xy(1, beamx, beamy);
+ m_set_gun_int_timer[1]->adjust(m_screen->time_until_pos(beamy + m_beamyadd, beamx + m_beamxadd), 1);
+ m_clear_gun_int_timer[1]->adjust(m_screen->time_until_pos(beamy + m_beamyadd + 1, beamx + m_beamxadd), 1);
+ }
}
@@ -185,20 +224,30 @@ TIMER_CALLBACK_MEMBER(tickee_state::setup_gun_interrupts)
*
*************************************/
-VIDEO_START_MEMBER(tickee_state,tickee)
+void tickee_gun_state::machine_start()
{
+ tickee_state::machine_start();
+
/* start a timer going on the first scanline of every frame */
- m_setup_gun_timer = timer_alloc(FUNC(tickee_state::setup_gun_interrupts), this);
+ m_setup_gun_timer = timer_alloc(FUNC(tickee_gun_state::setup_gun_interrupts), this);
/* initialize gun set/clear interrupts for both players */
- m_set_gun_int_timer[0] = timer_alloc(FUNC(tickee_state::trigger_gun_interrupt), this);
- m_set_gun_int_timer[1] = timer_alloc(FUNC(tickee_state::trigger_gun_interrupt), this);
- m_clear_gun_int_timer[0] = timer_alloc(FUNC(tickee_state::clear_gun_interrupt), this);
- m_clear_gun_int_timer[1] = timer_alloc(FUNC(tickee_state::clear_gun_interrupt), this);
+ m_set_gun_int_timer[0] = timer_alloc(FUNC(tickee_gun_state::trigger_gun_interrupt), this);
+ m_set_gun_int_timer[1] = timer_alloc(FUNC(tickee_gun_state::trigger_gun_interrupt), this);
+ m_clear_gun_int_timer[0] = timer_alloc(FUNC(tickee_gun_state::clear_gun_interrupt), this);
+ m_clear_gun_int_timer[1] = timer_alloc(FUNC(tickee_gun_state::clear_gun_interrupt), this);
+
+ m_palette_bank = 0;
+ std::fill(std::begin(m_gunx), std::end(m_gunx), 0);
+
+ save_item(NAME(m_palette_bank));
+ save_item(NAME(m_gunx));
}
-VIDEO_RESET_MEMBER(tickee_state,tickee)
+void tickee_gun_state::machine_reset()
{
+ tickee_state::machine_reset();
+
m_setup_gun_timer->adjust(m_screen->time_until_pos(0));
m_set_gun_int_timer[0]->adjust(attotime::never);
@@ -228,6 +277,7 @@ TMS340X0_SCANLINE_RGB32_CB_MEMBER(tickee_state::scanline_update)
dest[x] = pens[0xff];
}
else
+ {
/* copy the non-blanked portions of this scanline */
for (int x = params->heblnk; x < params->hsblnk; x += 2)
{
@@ -235,10 +285,11 @@ TMS340X0_SCANLINE_RGB32_CB_MEMBER(tickee_state::scanline_update)
dest[x + 0] = pens[pixels & 0xff];
dest[x + 1] = pens[pixels >> 8];
}
+ }
}
-TMS340X0_SCANLINE_RGB32_CB_MEMBER(tickee_state::rapidfir_scanline_update)
+TMS340X0_SCANLINE_RGB32_CB_MEMBER(tickee_gun_state::rapidfir_scanline_update)
{
uint16_t const *const src = &m_vram[(params->rowaddr << 8) & 0x3ff00];
uint32_t *const dest = &bitmap.pix(scanline);
@@ -269,30 +320,11 @@ TMS340X0_SCANLINE_RGB32_CB_MEMBER(tickee_state::rapidfir_scanline_update)
/*************************************
*
- * Machine init
- *
- *************************************/
-
-MACHINE_RESET_MEMBER(tickee_state,tickee)
-{
- m_beamxadd = 50;
- m_beamyadd = 0;
-}
-
-MACHINE_RESET_MEMBER(tickee_state,rapidfir)
-{
- m_beamxadd = 0;
- m_beamyadd = -5;
-}
-
-
-/*************************************
- *
* Video related
*
*************************************/
-void tickee_state::rapidfir_transparent_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void tickee_gun_state::rapidfir_transparent_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (!(data & 0xff00)) mem_mask &= 0x00ff;
if (!(data & 0x00ff)) mem_mask &= 0xff00;
@@ -300,20 +332,20 @@ void tickee_state::rapidfir_transparent_w(offs_t offset, uint16_t data, uint16_t
}
-uint16_t tickee_state::rapidfir_transparent_r(offs_t offset)
+uint16_t tickee_gun_state::rapidfir_transparent_r(offs_t offset)
{
return m_vram[offset];
}
-TMS340X0_TO_SHIFTREG_CB_MEMBER(tickee_state::rapidfir_to_shiftreg)
+TMS340X0_TO_SHIFTREG_CB_MEMBER(tickee_gun_state::rapidfir_to_shiftreg)
{
if (address < 0x800000)
memcpy(shiftreg, &m_vram[address >> 4], 0x400);
}
-TMS340X0_FROM_SHIFTREG_CB_MEMBER(tickee_state::rapidfir_from_shiftreg)
+TMS340X0_FROM_SHIFTREG_CB_MEMBER(tickee_gun_state::rapidfir_from_shiftreg)
{
if (address < 0x800000)
memcpy(&m_vram[address >> 4], shiftreg, 0x400);
@@ -358,36 +390,36 @@ void tickee_state::tickee_control_w(offs_t offset, uint16_t data, uint16_t mem_m
*
*************************************/
-uint16_t tickee_state::ffff_r()
+uint16_t tickee_gun_state::ffff_r()
{
return 0xffff;
}
-uint16_t tickee_state::rapidfir_gun1_r()
+uint16_t tickee_gun_state::rapidfir_gun1_r()
{
return m_gunx[0];
}
-uint16_t tickee_state::rapidfir_gun2_r()
+uint16_t tickee_gun_state::rapidfir_gun2_r()
{
return m_gunx[1];
}
-uint16_t tickee_state::ff7f_r()
+uint16_t tickee_gun_state::ff7f_r()
{
/* Ticket dispenser status? */
return 0xff7f;
}
-void tickee_state::ff7f_w(uint16_t data)
+void tickee_gun_state::ff7f_w(uint16_t data)
{
/* Ticket dispenser output? */
}
-void tickee_state::rapidfir_control_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void tickee_gun_state::rapidfir_control_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
/* other bits like control on tickee? */
if (ACCESSING_BITS_0_7)
@@ -402,7 +434,7 @@ void tickee_state::rapidfir_control_w(offs_t offset, uint16_t data, uint16_t mem
*
*************************************/
-void tickee_state::sound_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void tickee_gun_state::sound_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
switch (data & 0xff)
{
@@ -436,7 +468,7 @@ void tickee_state::sound_bank_w(offs_t offset, uint16_t data, uint16_t mem_mask)
*
*************************************/
-void tickee_state::tickee_map(address_map &map)
+void tickee_gun_state::tickee_map(address_map &map)
{
map(0x00000000, 0x003fffff).ram().share("vram");
map(0x02000000, 0x02ffffff).rom().region("user1", 0);
@@ -446,7 +478,7 @@ void tickee_state::tickee_map(address_map &map)
map(0x04200000, 0x0420001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
map(0x04200100, 0x0420010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff);
map(0x04200100, 0x0420011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
- map(0x04400000, 0x0440007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
+ map(0x04400000, 0x0440007f).w(FUNC(tickee_gun_state::tickee_control_w)).share(m_control);
map(0x04400040, 0x0440004f).portr("IN2");
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
@@ -454,7 +486,7 @@ void tickee_state::tickee_map(address_map &map)
/* addreses in the 04x range shifted slightly...*/
-void tickee_state::ghoshunt_map(address_map &map)
+void tickee_gun_state::ghoshunt_map(address_map &map)
{
map(0x00000000, 0x003fffff).ram().share("vram");
map(0x02000000, 0x02ffffff).rom().region("user1", 0);
@@ -464,7 +496,7 @@ void tickee_state::ghoshunt_map(address_map &map)
map(0x04300000, 0x0430001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
map(0x04300100, 0x0430010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff);
map(0x04300100, 0x0430011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
- map(0x04500000, 0x0450007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
+ map(0x04500000, 0x0450007f).w(FUNC(tickee_gun_state::tickee_control_w)).share(m_control);
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
}
@@ -479,7 +511,7 @@ void tickee_state::mouseatk_map(address_map &map)
map(0x04200000, 0x0420000f).r("ym", FUNC(ay8910_device::data_r)).umask16(0x00ff);
map(0x04200000, 0x0420000f).w("ym", FUNC(ay8910_device::address_data_w)).umask16(0x00ff);
map(0x04200100, 0x0420010f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
- map(0x04400000, 0x0440007f).w(FUNC(tickee_state::tickee_control_w)).share("control");
+ map(0x04400000, 0x0440007f).w(FUNC(tickee_state::tickee_control_w)).share(m_control);
map(0x04400040, 0x0440004f).portr("IN2"); // ?
map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */
map(0xff000000, 0xffffffff).rom().region("user1", 0);
@@ -487,16 +519,16 @@ void tickee_state::mouseatk_map(address_map &map)
/* newer hardware */
-void tickee_state::rapidfir_map(address_map &map)
+void tickee_gun_state::rapidfir_map(address_map &map)
{
map(0x00000000, 0x007fffff).ram().share("vram");
- map(0x02000000, 0x027fffff).rw(FUNC(tickee_state::rapidfir_transparent_r), FUNC(tickee_state::rapidfir_transparent_w));
- map(0xfc000000, 0xfc00000f).r(FUNC(tickee_state::rapidfir_gun1_r));
- map(0xfc000100, 0xfc00010f).r(FUNC(tickee_state::rapidfir_gun2_r));
- map(0xfc000400, 0xfc00040f).r(FUNC(tickee_state::ffff_r));
+ map(0x02000000, 0x027fffff).rw(FUNC(tickee_gun_state::rapidfir_transparent_r), FUNC(tickee_gun_state::rapidfir_transparent_w));
+ map(0xfc000000, 0xfc00000f).r(FUNC(tickee_gun_state::rapidfir_gun1_r));
+ map(0xfc000100, 0xfc00010f).r(FUNC(tickee_gun_state::rapidfir_gun2_r));
+ map(0xfc000400, 0xfc00040f).r(FUNC(tickee_gun_state::ffff_r));
map(0xfc000500, 0xfc00050f).noprw();
- map(0xfc000600, 0xfc00060f).w(FUNC(tickee_state::rapidfir_control_w));
- map(0xfc000700, 0xfc00070f).w(FUNC(tickee_state::sound_bank_w));
+ map(0xfc000600, 0xfc00060f).w(FUNC(tickee_gun_state::rapidfir_control_w));
+ map(0xfc000700, 0xfc00070f).w(FUNC(tickee_gun_state::sound_bank_w));
map(0xfc000800, 0xfc00080f).portr("IN0");
map(0xfc000900, 0xfc00090f).portr("IN1");
map(0xfc000a00, 0xfc000a0f).portr("IN2");
@@ -506,7 +538,7 @@ void tickee_state::rapidfir_map(address_map &map)
map(0xfc100000, 0xfc1000ff).mirror(0x80000).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
map(0xfc200000, 0xfc207fff).ram().share("nvram");
map(0xfc300000, 0xfc30000f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff);
- map(0xfc400010, 0xfc40001f).rw(FUNC(tickee_state::ff7f_r), FUNC(tickee_state::ff7f_w));
+ map(0xfc400010, 0xfc40001f).rw(FUNC(tickee_gun_state::ff7f_r), FUNC(tickee_gun_state::ff7f_w));
map(0xfe000000, 0xffffffff).rom().region("user1", 0);
}
@@ -742,23 +774,24 @@ static INPUT_PORTS_START( rapidfir )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2)
INPUT_PORTS_END
+
/*************************************
*
* Machine drivers
*
*************************************/
-void tickee_state::tickee(machine_config &config)
+void tickee_gun_state::tickee(machine_config &config)
{
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(40'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::tickee_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tickee_gun_state::tickee_map);
m_maincpu->set_halt_on_reset(false);
m_maincpu->set_pixel_clock(VIDEO_CLOCK/2);
m_maincpu->set_pixels_per_clock(1);
- m_maincpu->set_scanline_rgb32_callback(FUNC(tickee_state::scanline_update));
+ m_maincpu->set_scanline_rgb32_callback(FUNC(tickee_gun_state::scanline_update));
- MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
+ set_beamadd(50, 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
@@ -767,9 +800,6 @@ void tickee_state::tickee(machine_config &config)
/* video hardware */
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
- MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
- MCFG_VIDEO_RESET_OVERRIDE(tickee_state,tickee)
-
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
@@ -789,28 +819,28 @@ void tickee_state::tickee(machine_config &config)
}
-void tickee_state::ghoshunt(machine_config &config)
+void tickee_gun_state::ghoshunt(machine_config &config)
{
tickee(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::ghoshunt_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tickee_gun_state::ghoshunt_map);
}
-void tickee_state::rapidfir(machine_config &config)
+void tickee_gun_state::rapidfir(machine_config &config)
{
/* basic machine hardware */
TMS34010(config, m_maincpu, XTAL(50'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tickee_state::rapidfir_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tickee_gun_state::rapidfir_map);
m_maincpu->set_halt_on_reset(false);
m_maincpu->set_pixel_clock(VIDEO_CLOCK/2);
m_maincpu->set_pixels_per_clock(1);
- m_maincpu->set_scanline_rgb32_callback(FUNC(tickee_state::rapidfir_scanline_update));
- m_maincpu->set_shiftreg_in_callback(FUNC(tickee_state::rapidfir_to_shiftreg));
- m_maincpu->set_shiftreg_out_callback(FUNC(tickee_state::rapidfir_from_shiftreg));
+ m_maincpu->set_scanline_rgb32_callback(FUNC(tickee_gun_state::rapidfir_scanline_update));
+ m_maincpu->set_shiftreg_in_callback(FUNC(tickee_gun_state::rapidfir_to_shiftreg));
+ m_maincpu->set_shiftreg_out_callback(FUNC(tickee_gun_state::rapidfir_from_shiftreg));
- MCFG_MACHINE_RESET_OVERRIDE(tickee_state,rapidfir)
+ set_beamadd(0, -5);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
WATCHDOG_TIMER(config, "watchdog");
@@ -818,8 +848,6 @@ void tickee_state::rapidfir(machine_config &config)
/* video hardware */
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
- MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
-
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200);
m_screen->set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_rgb32));
@@ -841,7 +869,6 @@ void tickee_state::mouseatk(machine_config &config)
m_maincpu->set_pixels_per_clock(1);
m_maincpu->set_scanline_rgb32_callback(FUNC(tickee_state::scanline_update));
- MCFG_MACHINE_RESET_OVERRIDE(tickee_state,tickee)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH);
@@ -1150,6 +1177,8 @@ ROM_START( maletmad ) /* Version 2.1 */
/* U510 not populated */
ROM_END
+} // anonymous namespace
+
/*************************************
*
@@ -1157,11 +1186,11 @@ ROM_END
*
*************************************/
-GAME( 1994, tickee, 0, tickee, tickee, tickee_state, empty_init, ROT0, "Raster Elite", "Tickee Tickats", 0 )
-GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, tickee_state, empty_init, ROT0, "Hanaho Games", "Ghost Hunter", 0 )
-GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, tickee_state, empty_init, ROT0, "Island Design", "Tut's Tomb", 0 )
-GAME( 1996, mouseatk, 0, mouseatk, mouseatk, tickee_state, empty_init, ROT0, "ICE", "Mouse Attack", 0 )
-GAME( 1998, rapidfir, 0, rapidfir, rapidfir, tickee_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 239)", 0 )
-GAME( 1998, rapidfira, rapidfir, rapidfir, rapidfir, tickee_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 238)", 0 )
-GAME( 1998, rapidfire, rapidfir, rapidfir, rapidfir, tickee_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.0 (Build 236)", 0 )
-GAME( 1999, maletmad, 0, rapidfir, rapidfir, tickee_state, empty_init, ROT0, "Hanaho Games", "Mallet Madness v2.1", 0 )
+GAME( 1994, tickee, 0, tickee, tickee, tickee_gun_state, empty_init, ROT0, "Raster Elite", "Tickee Tickats", 0 )
+GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, tickee_gun_state, empty_init, ROT0, "Hanaho Games", "Ghost Hunter", 0 )
+GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, tickee_gun_state, empty_init, ROT0, "Island Design", "Tut's Tomb", 0 )
+GAME( 1996, mouseatk, 0, mouseatk, mouseatk, tickee_state, empty_init, ROT0, "ICE", "Mouse Attack", 0 )
+GAME( 1998, rapidfir, 0, rapidfir, rapidfir, tickee_gun_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 239)", 0 )
+GAME( 1998, rapidfira, rapidfir, rapidfir, rapidfir, tickee_gun_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 238)", 0 )
+GAME( 1998, rapidfire, rapidfir, rapidfir, rapidfir, tickee_gun_state, empty_init, ROT0, "Hanaho Games", "Rapid Fire v1.0 (Build 236)", 0 )
+GAME( 1999, maletmad, 0, rapidfir, rapidfir, tickee_gun_state, empty_init, ROT0, "Hanaho Games", "Mallet Madness v2.1", 0 )
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index 409d572b991..6718856c6bf 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -3423,19 +3423,19 @@ static const u8 nitro_decryption_table[256] = {
/*a*//*r*//*r*//*r*//*x*//*r*//*r*//*r*/ /*W*//*r*//*W*//*W*//*a*//*r*//*a*//*r*/
0x86,0x8b,0xd1,0x3e,0x8d,0x3e,0x58,0xfb, 0xc3,0x79,0xbd,0xb7,0x8a,0xe8,0x0f,0x81, /* 30 */
/*a*//*a*//*a*//*a*//*r*//*r*//*a*//*r*/ /*r*//*a*//*a*//*W*//*r*//*r*//*r*//*r*/
- 0xb7,0xd0,0x8b,0xeb,0xff,0xb8,0x90,0x8b, 0x5e,0xa2,0x90,0x90,0xab,0xb4,0x80,0x59, /* 40 */
+ 0xb7,0xd0,0x8b,0xeb,0xff,0xb8,0x90,0x8b, 0x5e,0xa2,0x90,0xc1,0xab,0xb4,0x80,0x59, /* 40 */
/*r*//*r*//*a*//*r*//*a*//*x*/ /*a*/ /*W*//*W*/ /*r*//*W*//*r*//*a*/
0x87,0x72,0xb5,0xbd,0xb0,0x88,0x50,0x0f, 0xfe,0xd2,0xc3,0x90,0x8a,0x90,0xf9,0x75, /* 50 */
/*W*//*a*//*a*//*r*//*r*//*a*//*a*//*a*/ /*r*//*W*//*r*/ /*r*/ /*W*//*r*/
0x1a,0xb3,0x74,0x0a,0x68,0x24,0xbb,0x90, 0x75,0x47,0xfe,0x2c,0xbe,0xc3,0x88,0xd2, /* 60 */
/*W*//*r*//*a*//*r*//*a*//*a*//*W*/ /*r*//*a*//*r*//*W*//*W*//*a*//*r*//*a*/
- 0x3e,0xc1,0x8c,0x33,0x0f,0x90,0x8b,0x90, 0xb9,0x1e,0xff,0xa2,0x3e,0x22,0xbe,0x57, /* 70 */
+ 0x3e,0xc1,0x8c,0x33,0x0f,0x4f,0x8b,0x90, 0xb9,0x1e,0xff,0xa2,0x3e,0x22,0xbe,0x57, /* 70 */
/*r*//*W*//*r*//*r*//*a*/ /*a*/ /*r*//*r*//*a*//*r*//*a*//*W*//*r*//*a*/
0x81,0x3a,0xf6,0x88,0xeb,0xb1,0x89,0x8a, 0x32,0x80,0x0f,0xb1,0x48,0xc3,0x68,0x72, /* 80 */
/*r*//*r*//*r*//*r*//*a*//*W*//*a*//*r*/ /*r*//*r*//*r*//*a*//*x*//*a*//*a*//*r*/
0x53,0x02,0xc0,0x02,0xe8,0xb4,0x74,0xbc, 0x90,0x58,0x0a,0xf3,0x75,0xc6,0x90,0xe8, /* 90 */
/*a*//*W*//*r*//*W*//*r*//*r*//*r*//*x*/ /*a*//*r*//*r*//*r*//*x*/ /*r*/
- 0x26,0x50,0xfc,0x8c,0x90,0xb1,0xc3,0xd1, 0xeb,0x83,0xa4,0xbf,0x26,0x4b,0x46,0xfe, /* a0 */
+ 0x26,0x50,0xfc,0x8c,0x06,0xb1,0xc3,0xd1, 0xeb,0x83,0xa4,0xbf,0x26,0x4b,0x46,0xfe, /* a0 */
/*r*//*a*//*a*//*r*/ /*a*//*r*//*W*/ /*a*//*r*//*r*//*r*//*r*//*W*//*a*//*r*/
0xe2,0x89,0xb3,0x88,0x03,0x56,0x0f,0x38, 0xbb,0x0c,0x90,0x0f,0x07,0x8a,0x8a,0x33, /* b0 */
/*r*//*a*//*W*//*r*//*a*//*W*//*r*//*W*/ /*W*//*W*/ /*a*//*r*//*r*//*r*//*x*/
@@ -3443,7 +3443,7 @@ static const u8 nitro_decryption_table[256] = {
/*r*//*W*//*r*//*r*//*r*//*r*//*W*//*r*/ /*r*//*W*//*x*//*x*//*r*//*?*//*r*//*r*/
0x90,0xeb,0x55,0xf6,0x8a,0xb0,0x5d,0xc0, 0xbb,0x8d,0xf6,0xd0,0xd1,0x88,0x4d,0x90, /* d0 */
/*a*//*r*//*r*//*a*//*a*//*r*//*W*/ /*x*//*r*//*r*//*a*//*W*//*r*//*W*/
- 0x51,0x51,0x74,0xbd,0x32,0xd1,0x90,0xd2, 0x53,0xc7,0xab,0x36,0x50,0xe9,0x33,0xb3, /* e0 */
+ 0x51,0x51,0x74,0xbd,0x32,0xd1,0xc6,0xd2, 0x53,0xc7,0xab,0x36,0x50,0xe9,0x33,0xb3, /* e0 */
/*r*//*a*//*r*//*r*//*r*//*W*/ /*a*/ /*r*//*x*//*r*//*r*//*W*//*a*//*r*//*W*/
0x2e,0x05,0x88,0x59,0x74,0x74,0x22,0x8e, 0x8a,0x8a,0x36,0x08,0x0f,0x45,0x90,0x2e, /* f0 */
/*r*//*W*//*r*//*r*//*a*//*a*//*W*//*x*/ /*r*//*r*//*x*//*a*//*r*//*a*/ /*r*/
@@ -4522,6 +4522,42 @@ ROM_START( kbashk )
ROM_REGION( 0x40000, "oki1", 0 ) /* ADPCM Samples */
ROM_LOAD( "tp023_7.bin", 0x00000, 0x40000, CRC(3732318f) SHA1(f0768459f5ad2dee53d408a0a5ae3a314864e667) )
ROM_END
+
+// all labels handwritten. Given the AOU on the audio ROM, maybe a prototype destined to be showed there?
+// GFX ROMs are on 4 riser boards. They are smaller but contain the same data as the final version.
+// Only different ROMs are the main and audio CPU ones
+ROM_START( kbashp )
+ ROM_REGION( 0x080000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2-19.u52", 0x000000, 0x080000, CRC(60dfdfec) SHA1(ca61433c8f7b1b765a699c375c946f113beeccc4) ) // actually 2/19
+
+ /* Secondary CPU is a Toaplan marked chip, (NITRO TOA PLAN 509) */
+ /* It's a NEC V25 (PLCC94) (encrypted) */
+
+ ROM_REGION( 0x8000, "audiocpu", 0 )
+ ROM_LOAD( "aou-nb-sound.u34", 0x0000, 0x8000, CRC(26ba8fb1) SHA1(4259c4704f0fea0c8befa2e60a0838280b23a507) )
+
+ ROM_REGION( 0x800000, "gp9001_0", 0 )
+ ROM_LOAD( "0.u1", 0x000000, 0x080000, CRC(1b87ffa5) SHA1(fbd5ac9e9635c1f5b1b896a3d504b827c0a99679) )
+ ROM_LOAD( "2.u2", 0x080000, 0x080000, CRC(a411457e) SHA1(6b515e6524aa4fb1785d99556fefb0434368de84) )
+ ROM_LOAD( "4.u3", 0x100000, 0x080000, CRC(631f770d) SHA1(0f0c11bc5549ed68d20dfc6ae51c3caec65aab88) )
+ ROM_LOAD( "6.u4", 0x180000, 0x080000, CRC(5a46d262) SHA1(56d5180196b5acf76b700e627878998e88a21f3c) )
+ ROM_LOAD( "8.u1", 0x200000, 0x080000, CRC(11b1c986) SHA1(05260c6cc5ab4239b52549e0dcda8853fc1fcd3a) )
+ ROM_LOAD( "a.u2", 0x280000, 0x080000, CRC(4c4b47ce) SHA1(a41a27ac96bd9eb57bc4bd8b6592b70e86ad16d3) )
+ ROM_LOAD( "c.u3", 0x300000, 0x080000, CRC(1ccc6a19) SHA1(d5735c2f075d81018021ec9e8642104227b67ace) )
+ ROM_LOAD( "e.u4", 0x380000, 0x080000, CRC(731ad154) SHA1(78efce53000d170098b57342641299aacb7a82aa) )
+ ROM_LOAD( "3.u1", 0x400000, 0x080000, CRC(7fbe0452) SHA1(c9b8c0d7126382fcdf8b5fa9a4466292954c88f7) )
+ ROM_LOAD( "1.u2", 0x480000, 0x080000, CRC(6cd94e90) SHA1(9957ad69f8e80370dbf2cd863d0646241236f6b4) )
+ ROM_LOAD( "5.u3", 0x500000, 0x080000, CRC(9cb4884e) SHA1(f596902b7740de4c262b4b18ac17eccca566ea77) )
+ ROM_LOAD( "7.u4", 0x580000, 0x080000, CRC(53c2e0b6) SHA1(ee1128ad41ae3c68ef32d4211dd5205a9a5bb216) )
+ ROM_LOAD( "g.u1", 0x600000, 0x080000, CRC(a63c795c) SHA1(30d3bb29cd73b31e233229f9304e3b87feaf01f3) )
+ ROM_LOAD( "b.u2", 0x680000, 0x080000, CRC(32f8c39b) SHA1(a9029910c0b4fc3693081056a0afb9bcf9c0e699) )
+ ROM_LOAD( "d.u3", 0x700000, 0x080000, CRC(40ac17d5) SHA1(140c67cf86ce545469fbe899b1f38c3a070908c9) )
+ ROM_LOAD( "f.u4", 0x780000, 0x080000, CRC(2ca4eb83) SHA1(0d7c4242a82aba49cafd96ee5b051918d1b23b08) )
+
+ ROM_REGION( 0x40000, "oki1", 0 )
+ ROM_LOAD( "2m-nb-pcm.u40", 0x00000, 0x40000, CRC(3732318f) SHA1(f0768459f5ad2dee53d408a0a5ae3a314864e667) )
+ROM_END
+
/*
Knuckle Bash 2
This is a hacked version of Knuckle Bash on bootleg/Korean/Chinese
@@ -5969,8 +6005,9 @@ GAME( 1992, dogyuuna, dogyuun, dogyuun, dogyuuna, toaplan2_state, ini
GAME( 1992, dogyuunb, dogyuun, dogyuun, dogyuunt, toaplan2_state, init_dogyuun, ROT270, "Toaplan", "Dogyuun (oldest set)", MACHINE_SUPPORTS_SAVE ) // maybe a newer location test version, instead
GAME( 1992, dogyuunt, dogyuun, dogyuun, dogyuunt, toaplan2_state, init_dogyuun, ROT270, "Toaplan", "Dogyuun (location test)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, kbash, 0, kbash, kbash, toaplan2_state, empty_init, ROT0, "Toaplan / Atari", "Knuckle Bash", MACHINE_SUPPORTS_SAVE ) // Atari license shown for some regions.
-GAME( 1993, kbashk, kbash, kbash, kbashk, toaplan2_state, empty_init, ROT0, "Toaplan / Taito", "Knuckle Bash (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // Japan region has optional Taito license, maybe the original Japan release?
+GAME( 1993, kbash, 0, kbash, kbash, toaplan2_state, empty_init, ROT0, "Toaplan / Atari", "Knuckle Bash", MACHINE_SUPPORTS_SAVE ) // Atari license shown for some regions.
+GAME( 1993, kbashk, kbash, kbash, kbashk, toaplan2_state, empty_init, ROT0, "Toaplan / Taito", "Knuckle Bash (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // Japan region has optional Taito license, maybe the original Japan release?
+GAME( 1993, kbashp, kbash, kbash, kbash, toaplan2_state, empty_init, ROT0, "Toaplan / Taito", "Knuckle Bash (location test)", MACHINE_SUPPORTS_SAVE )
GAME( 1999, kbash2, 0, kbash2, kbash2, toaplan2_state, empty_init, ROT0, "bootleg", "Knuckle Bash 2 (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 839f90769a8..2563bb06d06 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -130,6 +130,73 @@ Notes:
numbers are in cyan and text in red (and this arrangement doesn't
make much sense, different version maybe?).
+
+Bomb Bee (Namco, 1979)
+Hardware info by Guru
+---------------------
+
+Bomb Bee is Namco's 2nd game board (the first board was Gee Bee).
+Bomb Bee is essentially the color version of Gee Bee with some playfield
+layout changes and real color (Gee Bee is a b/w game with a color overlay).
+To power the board this game requires 8VAC and 12VAC. These pass through
+on-board bridge rectifiers then go to linear regulators to make all the
+DC voltages.
+The controls are....
+5k-ohm potentiometer for the paddle
+Button to serve. If not pressed, the ball launches automatically after a few seconds.
+Button to start a player 1 game
+Button to start a player 2 game
+In test mode the paddle VOL range is 5 to 211
+A play demo of the real arcade PCB can be seen here....
+https://www.youtube.com/watch?v=3-vIXC09nDA
+
+NAMCO
+21059211
+|------------------------------------------------------------------------|
+| LS163 LS368 LS174 LS194 LS157 LS00 18.432MHz SW1|
+| 7905 7812 LS163 LS367 LS174 LS04 LS194 LS74 LS107 |
+| LS393 LS367 8212 TMM334.4C LS366 LS32 8224 |---| |
+| LS153 8212 LS368 LS08 | 8 | |
+| 4066 LS367 LS367 LS157 LS139 | 0 | |
+| 2114 2114 LS367 LS157 LS367 | 8 | |
+| 2114 2114 LS367 LS157 LS367 | 0 | |
+| LS08 LS138 LS86 LS157 |---| |
+|4 LS08 LS393 LS86 LS157 TMM333.2K TMM333.1K|
+|4 MB3712 LS259 LS393 LS86 LS157 |
+|W 10K_VOL LS251 LS92 LS86 LS253 DIP24.2M DIP24.1M |
+|A LM311 LS128 LS08 LS74 LS00 |
+|Y 4066 LS138 LS74 LS30 LS367 DIP24.2P DIP24.1P |
+| LS74 LS283 LS365 |
+| NE556 LS10 LS283 LS365 DIP24.2R DIP24.1R |
+| UA78MGU1C LS151 LS163 LS273 |
+| |-----------------| SW3 LS175 LS163 LS273 DIP24.2T DIP24.1T |
+|FUSE| D568 | LS251 LS164 LS08 LS366 TMM314|
+| |ON LARGE HEATSINK| LS164 LS175 LS368 TMM314|
+|----|-----------------|-------------------------------------------------|
+Notes: (All ICs shown above)
+ 8080 - NEC D8080AFC Microprocessor. Clock 2.048MHz [18.432/9]
+ HSync - 15.2880kHz
+ VSync - 60.5610Hz
+ MB3712 - Fujitsu 5.7W Audio Power Amplifier
+ LM311 - Texas Instruments LM311 Differential Comparator
+ 4066 - Motorola MC14066 CMOS Quad Bilateral Switch
+ UA78MGU1C - Fairchild UA78MGU1C 4-terminal Adjustable 500mA Voltage Regulator
+ 7812 - Texas Instruments LM7812 +12V Linear Regulator
+ 7905 - Texas Instruments LM7905 -5V Linear Regulator
+ D568 - NEC D568 60V 7A NPN Transistor
+ NE566 - Signetics NE556 Dual Precision Timer
+ SW1 - Push button for reset
+ SW3 - 8-position DIP Switch
+ 10K_VOL - 10k-ohm volume potentiometer
+ DIP24.* - Unpopulated DIP24 positions for ROMs
+ 8212 - NEC uPB8212C 8-bit Input/Output Port
+ 8224 - NEC uPB8224C Clock Generator and Driver for 8080 CPU
+ 2114 - NEC uPD2114 1kBx4-bit SRAM (video RAM)
+ TMM314 - Toshiba TMM314 1kBx4-bit SRAM (main program RAM)
+ TMM334.4C - Toshiba TMM334 2kBx8-bit mask ROM (graphics)
+ TMM333.1K \
+ TMM333.2K / Toshiba TMM333 4kBx8-bit mask ROM (main program)
+
***************************************************************************/
#include "emu.h"
@@ -906,10 +973,11 @@ ROM_END
ROM_START( bombbee )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "bombbee.1k", 0x0000, 0x2000, CRC(9f8cd7af) SHA1(0d6e1ee5519660d1498eb7a093872ed5034423f2) )
+ ROM_LOAD( "tmm333.2k", 0x0000, 0x1000, CRC(a442f22b) SHA1(c31a2a44e71fd0e8b6460a415b9bd8b298e68d6c) )
+ ROM_LOAD( "tmm333.1k", 0x1000, 0x1000, CRC(81f805b3) SHA1(380d68c016400ae5d7f271813bc9726d9be639d1) )
ROM_REGION( 0x800, "gfx1", 0 )
- ROM_LOAD( "bombbee.4c", 0x0000, 0x0800, CRC(5f37d569) SHA1(d5e3fb4c5a1612a6e568c8970161b0290b88993f) )
+ ROM_LOAD( "tmm334.4c", 0x0000, 0x0800, CRC(5f37d569) SHA1(d5e3fb4c5a1612a6e568c8970161b0290b88993f) )
ROM_END
ROM_START( cutieq )
diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h
index 806b7c1385d..f399bf0cf85 100644
--- a/src/mame/includes/8080bw.h
+++ b/src/mame/includes/8080bw.h
@@ -255,6 +255,25 @@ DISCRETE_SOUND_EXTERN( schaser_discrete );
/*******************************************************/
+/* Sidam Invasion */
+/*******************************************************/
+
+class invasion_state : public invaders_state
+{
+public:
+ invasion_state(machine_config const &mconfig, device_type type, char const *tag) :
+ invaders_state(mconfig, type, tag)
+ {
+ }
+
+ void invasion(machine_config &config);
+
+private:
+ void io_map(address_map &map);
+};
+
+
+/*******************************************************/
/* Darth Vader bootleg */
/*******************************************************/
diff --git a/src/mame/includes/sderby.h b/src/mame/includes/sderby.h
deleted file mode 100644
index 0b2485421a0..00000000000
--- a/src/mame/includes/sderby.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood, Roberto Fresca
-#ifndef MAME_INCLUDES_SDERBY_H
-#define MAME_INCLUDES_SDERBY_H
-
-#pragma once
-
-#include "emupal.h"
-#include "tilemap.h"
-
-class sderby_state : public driver_device
-{
-public:
- sderby_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_videoram(*this, "videoram"),
- m_md_videoram(*this, "md_videoram"),
- m_fg_videoram(*this, "fg_videoram"),
- m_spriteram(*this, "spriteram"),
- m_maincpu(*this, "maincpu"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_lamps(*this, "lamp%u", 1U)
- { }
-
- void spacewin(machine_config &config);
- void sderbya(machine_config &config);
- void pmroulet(machine_config &config);
- void shinygld(machine_config &config);
- void sderby(machine_config &config);
- void luckboom(machine_config &config);
-
-private:
- uint16_t sderby_input_r(offs_t offset);
- uint16_t sderbya_input_r(offs_t offset);
- uint16_t roulette_input_r(offs_t offset);
- uint16_t rprot_r();
- void rprot_w(uint16_t data);
- void sderby_out_w(uint16_t data);
- void scmatto_out_w(uint16_t data);
- void roulette_out_w(uint16_t data);
- void sderby_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sderby_md_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sderby_fg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sderby_scroll_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- TILE_GET_INFO_MEMBER(get_sderby_tile_info);
- TILE_GET_INFO_MEMBER(get_sderby_md_tile_info);
- TILE_GET_INFO_MEMBER(get_sderby_fg_tile_info);
- uint32_t screen_update_sderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_pmroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int codeshift);
- void luckboom_map(address_map &map);
- void roulette_map(address_map &map);
- void sderby_map(address_map &map);
- void sderbya_map(address_map &map);
- void shinygld_map(address_map &map);
- void spacewin_map(address_map &map);
-
- virtual void machine_start() override { m_lamps.resolve(); }
- virtual void video_start() override;
-
- required_shared_ptr<uint16_t> m_videoram;
- required_shared_ptr<uint16_t> m_md_videoram;
- required_shared_ptr<uint16_t> m_fg_videoram;
- required_shared_ptr<uint16_t> m_spriteram;
-
- tilemap_t *m_tilemap = nullptr;
- tilemap_t *m_md_tilemap = nullptr;
- tilemap_t *m_fg_tilemap = nullptr;
-
- uint16_t m_scroll[6]{};
- required_device<cpu_device> m_maincpu;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
- output_finder<7> m_lamps;
-};
-
-#endif // MAME_INCLUDES_SDERBY_H
diff --git a/src/mame/layout/igsslot.lay b/src/mame/layout/igsslot.lay
new file mode 100644
index 00000000000..8949bd86859
--- /dev/null
+++ b/src/mame/layout/igsslot.lay
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+-->
+<mamelayout version="2">
+ <element name="L1" defstate="1">
+ <rect state="1">
+ <color red="0.0" green="1.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.0" green="0.2" blue="0.0" />
+ </rect>
+ <text string="TAKE">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="STOP1">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="L2" defstate="1">
+ <rect state="1">
+ <color red="0.0" green="1.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.0" green="0.2" blue="0.0" />
+ </rect>
+ <text string="HIGH">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="STOP2">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="L3" defstate="1">
+ <rect state="1">
+ <color red="0.0" green="1.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.0" green="0.2" blue="0.0" />
+ </rect>
+ <text string="LOW">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="STOP3">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="L4" defstate="1">
+ <rect state="1">
+ <color red="0.0" green="1.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.0" green="0.2" blue="0.0" />
+ </rect>
+ <text string="W-UP">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="STOP4">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="L5" defstate="1">
+ <rect state="1">
+ <color red="0.0" green="1.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.0" green="0.2" blue="0.0" />
+ </rect>
+ <text string="BET / 2W-UP">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="STOP ALL">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="L6" defstate="1">
+ <rect state="1">
+ <color red="1.0" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="0">
+ <color red="0.3" green="0.0" blue="0.0" />
+ </rect>
+ <text string="HW-UP">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.1" width="1" height="0.4" />
+ </text>
+ <text string="START">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.5" width="1" height="0.4" />
+ </text>
+ </element>
+
+
+ <view name="Button Lamps">
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+ <element name="lamp1" ref="L1">
+ <bounds x="0.5" y="3.13" width="0.40" height="0.24" />
+ </element>
+ <element name="lamp2" ref="L2">
+ <bounds x="1.0" y="3.13" width="0.40" height="0.24" />
+ </element>
+ <element name="lamp3" ref="L3">
+ <bounds x="1.5" y="3.13" width="0.40" height="0.24" />
+ </element>
+ <element name="lamp4" ref="L4">
+ <bounds x="2.0" y="3.13" width="0.40" height="0.24" />
+ </element>
+ <element name="lamp5" ref="L5">
+ <bounds x="2.5" y="3.13" width="0.40" height="0.24" />
+ </element>
+ <element name="lamp6" ref="L6">
+ <bounds x="3.0" y="3.13" width="0.40" height="0.24" />
+ </element>
+ </view>
+</mamelayout>
diff --git a/src/mame/machine/igs022.cpp b/src/mame/machine/igs022.cpp
index 0fabcd00383..d6adb617ea8 100644
--- a/src/mame/machine/igs022.cpp
+++ b/src/mame/machine/igs022.cpp
@@ -1,17 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, ElSemi
-/*
+/************************************************************************************************************
- IGS022 is an encrypted DMA device, most likely an MCU of some sort
- it can safely be swapped between games so doesn't appear to have
- any kind of game specific programming
+ IGS022 is an encrypted DMA device, most likely an MCU of some sort.
+ It can safely be swapped between games, so doesn't appear to have any kind of game specific programming.
-*/
+************************************************************************************************************/
#include "emu.h"
#include "igs022.h"
+#include <sstream>
-#include <algorithm>
+#define LOG_DMA (1U << 1)
+#define LOG_STACK (1U << 2)
+#define LOG_CMD_6D (1U << 3)
+
+//#define VERBOSE (LOG_GENERAL | LOG_DMA | LOG_STACK | LOG_CMD_6D)
+#define VERBOSE (0)
+#include "logmacro.h"
igs022_device::igs022_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, IGS022, tag, owner, clock)
@@ -22,76 +28,105 @@ igs022_device::igs022_device(const machine_config &mconfig, const char *tag, dev
void igs022_device::device_start()
{
- // Reset stuff
- std::fill(std::begin(m_kb_regs), std::end(m_kb_regs), 0);
-
- save_item(NAME(m_kb_regs));
+ save_item(NAME(m_regs));
+ save_item(NAME(m_stack));
+ save_item(NAME(m_stack_ptr));
}
void igs022_device::device_reset()
{
- //printf("igs022_device::device_reset()");
-
if (!m_sharedprotram)
- {
- logerror("m_sharedprotram was not set\n");
- return;
- }
- IGS022_reset();
+ fatalerror("%s: IGS022 sharedprotram was not set!\n", machine().describe_context());
- std::fill(std::begin(m_kb_regs), std::end(m_kb_regs), 0);
-}
+ // the internal MCU boot code automatically does this DMA
+ // and puts the version # of the data rom in ram
+ // reset regs and stack
+ std::fill(std::begin(m_regs), std::end(m_regs), 0);
+ std::fill(std::begin(m_stack), std::end(m_stack), 0);
+ m_stack_ptr = 0;
-void igs022_device::IGS022_do_dma(u16 src, u16 dst, u16 size, u16 mode)
-{
- //printf("igs022_device::IGS022_do_dma\n");
+ // fill ram with 0xa55a pattern
+ for (int i = 0; i < 0x4000 / 2; i++)
+ m_sharedprotram[i] = 0xa55a;
- /*
- P_SRC =0x300290 (offset from prot rom base)
- P_DST =0x300292 (words from 0x300000)
- P_SIZE=0x300294 (words)
- P_MODE=0x300296
+ // the initial auto-DMA
+ const u16 * const PROTROM = (u16 *)m_rom->base();
+
+ u16 src = PROTROM[0x100 / 2];
+ const u32 dst = PROTROM[0x102 / 2];
+ const u16 size = PROTROM[0x104 / 2];
+ u16 mode = PROTROM[0x106 / 2];
- Mode 5 direct
- Mode 6 swap nibbles and bytes
+ mode = (mode >> 8) | (mode << 8);
+
+ src >>= 1;
- 1,2,3 table based ops
+ do_dma(src, dst, size, mode);
+
+ // there is also a version ID? (or is it some kind of checksum) that is stored in the data rom, and gets copied..
+ // Dragon World 3 checks it
+ // Setting 0x3002a0 to #3 causes Dragon World 3 to skip this check
+ m_sharedprotram[0x2a2 / 2] = PROTROM[0x114 / 2];
+}
+
+// From IGS022 ROM to shared protection RAM
+void igs022_device::do_dma(u16 src, u16 dst, u16 size, u16 mode)
+{
+ LOGMASKED(LOG_DMA, "%s: IGS022 DMA src %04x, dst %04x, size %04x, mode %04x\n", machine().describe_context(), src, dst, size, mode);
+
+ /*
+ P_SRC = 0x300290 (offset from prot rom base)
+ P_DST = 0x300292 (words from 0x300000)
+ P_SIZE = 0x300294 (words)
+ P_MODE = 0x300296
+
+ Mode 0 plain copy
+ Mode 1,2,3 rom table based ops
+ Mode 4 fixed data ('IGS ') based ops
+ Mode 5 swap bytes
+ Mode 6 swap nibbles
*/
const u16 param = mode >> 8;
- // the initial DMA on kilbld has 0x10 set, drgw3 has 0x18 set, not sure how they affect the operation.
- if (mode & 0x00f8) printf("IGS022_do_dma mode bits %04x set\n", mode & 0x00f8);
+ // the initial auto-DMA on killbld/slqz2/lhzb2 has 0x10 set, drgw3 has 0x18 set, not sure how they affect the operation.
+ if (mode & 0x00f8)
+ logerror("%s: IGS022 unknown DMA mode bits %04x set\n", machine().describe_context(), mode & 0x00f8);
- mode &= 0x7; // what are the other bits?
+ mode &= 0x7; // what are the other bits?
- if ((mode == 0) || (mode == 1) || (mode == 2) || (mode == 3) || (mode == 4))
- {
- /* mode3 applies a xor from a 0x100 byte table to the data being
- transferred
+ const u16 * const PROTROM = (u16 *)m_rom->base();
- the table is stored at the start of the protection rom.
+ switch (mode)
+ {
+ case 0: case 1: case 2: case 3: case 4:
+ /*
+ modes 1-3 modify the data being transferred using a 0x100 byte table stored at the start of the protection rom.
- the param used with the mode gives a start offset into the table
+ The param used with the mode gives a start offset into the table.
- odd offsets cause an overflow
+ Odd offsets cause an overflow.
*/
-
- const u16 *PROTROM = (u16*)m_rom->base();
-
for (int x = 0; x < size; x++)
{
- u16 dat2 = PROTROM[src + x];
+ u16 dat = PROTROM[src + x];
+
+ const u8 extraoffset = param & 0xff;
+ const u8 * const dectable = (u8 *)m_rom->base(); // the basic decryption table is at the start of the mcu data rom!
+ const u8 taboff = ((x * 2) + extraoffset) & 0xff; // must allow for overflow in instances of odd offsets
- const u8 extraoffset = param & 0xff;
- const u8* dectable = (u8*)m_rom->base(); // the basic decryption table is at the start of the mcu data rom!
- const u8 taboff = ((x * 2) + extraoffset) & 0xff; // must allow for overflow in instances of odd offsets
- u16 extraxor = ((dectable[taboff + 1]) << 8) | (dectable[taboff + 0] << 0);
+ u16 extraxor = ((dectable[taboff + 1]) << 8) | (dectable[taboff + 0] << 0);
- if (mode == 4)
+ switch (mode)
{
+// case 0: plain copy
+ case 1: dat -= extraxor; break;
+ case 2: dat += extraxor; break;
+ case 3: dat ^= extraxor; break;
+ case 4:
extraxor = 0;
+
if ((x & 0x003) == 0x000) extraxor |= 0x0049; // 'I'
if ((x & 0x003) == 0x001) extraxor |= 0x0047; // 'G'
if ((x & 0x003) == 0x002) extraxor |= 0x0053; // 'S'
@@ -101,166 +136,273 @@ void igs022_device::IGS022_do_dma(u16 src, u16 dst, u16 size, u16 mode)
if ((x & 0x300) == 0x100) extraxor |= 0x4700; // 'G'
if ((x & 0x300) == 0x200) extraxor |= 0x5300; // 'S'
if ((x & 0x300) == 0x300) extraxor |= 0x2000; // ' '
- }
-
- // mode == 0 plain
- if (mode == 3) dat2 ^= extraxor;
- if (mode == 2) dat2 += extraxor;
- if (mode == 1) dat2 -= extraxor;
- if (mode == 4)
- {
- //printf("%06x | %04x (%04x)\n", (dst+x)*2, dat2, (u16)(dat2-extraxor));
+ LOGMASKED(LOG_DMA, "%s: IGS022 DMA mode 4 -> %06x | %04x (%04x)\n", machine().describe_context(), (dst + x) * 2, dat, (u16)(dat - extraxor));
- dat2 -= extraxor;
+ dat -= extraxor;
+ break;
}
- m_sharedprotram[dst + x] = dat2;
+ m_sharedprotram[dst + x] = dat;
}
- }
- else if (mode == 5)
- {
- /* mode 5 seems to be a byteswapped copy */
- const u16 *PROTROM = (u16*)m_rom->base();
+ break;
+
+ case 5: // byteswapped copy
for (int x = 0; x < size; x++)
{
u16 dat = PROTROM[src + x];
+
dat = ((dat &0x00ff) << 8) | ((dat &0xff00) >> 8);
m_sharedprotram[dst + x] = dat;
}
- }
- else if (mode == 6)
- {
- /* mode 6 seems to be a nibble swapped copy */
- const u16 *PROTROM = (u16*)m_rom->base();
+ break;
+
+ case 6: // nibble swapped copy
for (int x = 0; x < size; x++)
{
u16 dat = PROTROM[src + x];
- dat = ((dat & 0xf0f0) >> 4)|
- ((dat & 0x0f0f) << 4);
+ dat = ((dat & 0xf0f0) >> 4) | ((dat & 0x0f0f) << 4);
m_sharedprotram[dst + x] = dat;
}
+ break;
+
+ case 7:
+ logerror("%s: IGS022 DMA unhandled copy mode %04x!\n", machine().describe_context(), mode);
+ // not used by killbld
+ // weird mode, the params get left in memory? - maybe it's a NOP?
+ break;
+
+ default:
+ logerror("%s: IGS022 DMA unhandled copy mode!: %d, src: %04x, dst: %04x, size: %04x, param: %02x\n", machine().describe_context(), mode, src, dst, size, param);
+ // not used by killbld
+ // invalid?
+ }
+}
+
+void igs022_device::push_stack(u32 data)
+{
+ if (m_stack_ptr < STACK_SIZE - 1)
+ ++m_stack_ptr;
+
+ m_stack[m_stack_ptr] = data;
+}
+
+u32 igs022_device::pop_stack()
+{
+ const u32 data = m_stack[m_stack_ptr];
+
+ if (m_stack_ptr > 0)
+ --m_stack_ptr;
+
+ return data;
+}
+
+std::string igs022_device::stack_as_string() const
+{
+ std::ostringstream stream;
+ stream << "stack:";
+
+ for (int i = 0; i <= m_stack_ptr; ++i)
+ util::stream_format(stream, " %08x", m_stack[i]);
+
+ return std::move(stream).str();
+}
+
+u32 igs022_device::read_reg(u16 offset)
+{
+ if (offset < NUM_REGS)
+ {
+ return m_regs[offset];
}
- else if (mode == 7)
+ else if (offset == 0x400)
{
- printf("unhandled copy mode %04x!\n", mode);
- // not used by killing blade
- /* weird mode, the params get left in memory? - maybe it's a NOP? */
+ return pop_stack();
}
else
{
- osd_printf_debug("unhandled copy mode %04x!\n", mode);
- printf ("DMA MODE: %d, src: %4.4x, dst: %4.4x, size: %4.4x, param: %2.2x\n", mode, src, dst, size, param);
- // not used by killing blade
- /* invalid? */
+ return 0; // Invalid!
}
}
-// the internal MCU boot code automatically does this DMA
-// and puts the version # of the data rom in ram
-void igs022_device::IGS022_reset()
+void igs022_device::write_reg(u16 offset, u32 data)
{
- const u16 *PROTROM = (u16*)m_rom->base();
+ if (offset < NUM_REGS)
+ {
+ m_regs[offset] = data;
+ }
+ else if (offset == 0x300)
+ {
+ push_stack(data);
+ }
+ else
+ {
+ // Invalid!
+ }
+}
- // fill ram with A5 patern
- for (int i = 0; i < 0x4000/2; i++)
- m_sharedprotram[i] = 0xa55a;
+// What does this do? write the completion byte for now...
+void igs022_device::handle_incomplete_command(u16 cmd, u16 res)
+{
+ logerror("%s: IGS022 command %04x: INCOMPLETE (NOP)\n", machine().describe_context(), cmd);
+ m_sharedprotram[0x202 / 2] = res;
+}
- // the auto-dma
- u16 src = PROTROM[0x100 / 2];
- const u32 dst = PROTROM[0x102 / 2];
- const u16 size = PROTROM[0x104 / 2];
- u16 mode = PROTROM[0x106 / 2];
+void igs022_device::handle_command()
+{
+ const u16 cmd = m_sharedprotram[0x200 / 2];
- mode &= 0xff;
+ switch (cmd)
+ {
+ case 0x12: // Push
+ {
+ const u32 data = (m_sharedprotram[0x288 / 2] << 16) + m_sharedprotram[0x28a / 2];
- src >>= 1;
+ push_stack(data);
- IGS022_do_dma(src,dst,size,mode);
+ LOGMASKED(LOG_STACK, "%s: IGS022 command %04x: PUSH {288, 28a} (%08x) %s\n", machine().describe_context(), cmd, data, stack_as_string());
- // there is also a version ID? (or is it some kind of checksum) that is stored in the data rom, and gets copied..
- // Dragon World 3 checks it
- // Setting $3002a0 to #3 causes Dragon World 3 to skip this check
- m_sharedprotram[0x2a2/2] = PROTROM[0x114/2];
-}
+ m_sharedprotram[0x202 / 2] = 0x23; // this mode complete?
+ break;
+ }
-void igs022_device::IGS022_handle_command()
-{
- //printf("igs022_device::IGS022_handle_command\n");
+ case 0x2d: handle_incomplete_command(cmd, 0x3c); break; // killbld
- const u16 cmd = m_sharedprotram[0x200/2];
+// case 0x42: break; // killbld
- if (cmd == 0x6d) // Store values to asic ram
- {
- const u32 p1 = (m_sharedprotram[0x298/2] << 16) | m_sharedprotram[0x29a/2];
- const u32 p2 = (m_sharedprotram[0x29c/2] << 16) | m_sharedprotram[0x29e/2];
+ case 0x45: // Pop
+ {
+ const u32 data = pop_stack();
+
+ m_sharedprotram[0x28c / 2] = (data >> 16) & 0xffff;
+ m_sharedprotram[0x28e / 2] = data & 0xffff;
+
+ LOGMASKED(LOG_STACK, "%s: IGS022 command %04x: POP {28c, 28e} (%08x) %s\n", machine().describe_context(), cmd, data, stack_as_string());
+
+ m_sharedprotram[0x202 / 2] = 0x56; // this mode complete?
+ break;
+ }
- if ((p2 & 0xffff) == 0x9) // Set value
+// case 0x47: // NOP? slqz2/lhzb2
+// break;
+
+ case 0x4f: // DMA from protection ROM (memcpy with encryption / scrambling)
{
- const int reg = (p2 >> 16) & 0xffff;
+ LOGMASKED(LOG_DMA, "%s: IGS022 command %04x: DMA\n", machine().describe_context(), cmd);
- if (reg & 0x300) { // 300?? killbld expects 0x200, drgw3 expects 0x100?
- m_kb_regs[reg & 0xff] = p1;
- }
+ const u16 src = m_sharedprotram[0x290 / 2] >> 1; // External mcu data is 8 bit and addressed as such
+ const u32 dst = m_sharedprotram[0x292 / 2];
+ const u16 size = m_sharedprotram[0x294 / 2];
+ const u16 mode = m_sharedprotram[0x296 / 2];
+
+ do_dma(src, dst, size, mode);
+
+ m_sharedprotram[0x202 / 2] = 0x5e; // this mode complete?
+ break;
}
- if ((p2 & 0xffff) == 0x6) // Add value
+ case 0x5a: handle_incomplete_command(cmd, 0x4b); break; // killbld, uses {284} as input
+
+ case 0x6d: // Set/Get values to/from ASIC RAM, arithmetic operations on them
+ handle_command_6d();
+ break;
+
+ default:
+ logerror("%s: IGS022 command %04x: UNKNOWN!\n", machine().describe_context(), cmd);
+ }
+}
+
+// Set/Get values to/from ASIC RAM, arithmetic operations on them
+void igs022_device::handle_command_6d()
+{
+ const u32 p1 = (m_sharedprotram[0x298 / 2] << 16) | m_sharedprotram[0x29a / 2];
+ const u32 p2 = (m_sharedprotram[0x29c / 2] << 16) | m_sharedprotram[0x29e / 2];
+
+ std::ostringstream stream;
+ util::stream_format(stream, "%s: IGS022 command 006d: ASIC RAM %04x %04x %04x %04x ~ ", machine().describe_context(),
+ (p1 >> 16) & 0xffff, (p1 >> 0) & 0xffff, (p2 >> 16) & 0xffff, (p2 >> 0) & 0xffff
+ );
+
+ switch (p2 & 0xffff)
+ {
+ case 0x0: // Add values
{
- const int src1 = (p1 >> 16) & 0xff;
- const int src2 = (p1 >> 0) & 0xff;
- const int dst = (p2 >> 16) & 0xff;
+ const u16 src1 = p1 >> 16;
+ const u16 src2 = p1 >> 0;
+ const u16 dst = p2 >> 16;
+
+ const u32 data1 = read_reg(src1);
+ const u32 data2 = read_reg(src2);
+ const u32 res = data1 + data2;
+
+ write_reg(dst, res);
- m_kb_regs[dst] = m_kb_regs[src2] - m_kb_regs[src1];
+ util::stream_format(stream, "ADD [%04x] = [%04x] + [%04x] (%08x)\n", dst, src1, src2, res);
+ break;
}
- if ((p2 & 0xffff) == 0x1) // Add Imm?
+ case 0x1: // Sub values (src1 - src2)
{
- const int reg = (p2 >> 16) & 0xff;
- const int imm = (p1 >> 0) & 0xffff;
+ const u16 src1 = p1 >> 16;
+ const u16 src2 = p1 >> 0;
+ const u16 dst = p2 >> 16;
- m_kb_regs[reg] += imm;
+ const u32 data1 = read_reg(src1);
+ const u32 data2 = read_reg(src2);
+ const u32 res = data1 - data2;
+
+ write_reg(dst, res);
+
+ util::stream_format(stream, "SUB1 [%04x] = [%04x] - [%04x] (%08x)\n", dst, src1, src2, res);
+ break;
}
- if ((p2 & 0xffff) == 0xa) // Get value
+ case 0x6: // Sub values (src2 - src1)
{
- const int reg = (p1 >> 16) & 0xFF;
+ const u16 src1 = p1 >> 16;
+ const u16 src2 = p1 >> 0;
+ const u16 dst = p2 >> 16;
+
+ const u32 data1 = read_reg(src1);
+ const u32 data2 = read_reg(src2);
+ const u32 res = data2 - data1;
+
+ write_reg(dst, res);
- m_sharedprotram[0x29c/2] = (m_kb_regs[reg] >> 16) & 0xffff;
- m_sharedprotram[0x29e/2] = m_kb_regs[reg] & 0xffff;
+ util::stream_format(stream, "SUB2 [%04x] = [%04x] - [%04x] (%08x)\n", dst, src2, src1, res);
+ break;
}
- m_sharedprotram[0x202 / 2] = 0x7c; // this mode complete?
- }
+ case 0x9: // Set value (Shared Protection RAM -> ASIC RAM)
+ {
+ const u16 dst = p2 >> 16;
- // Is this actually what this is suppose to do? Complete guess.
- if (cmd == 0x12) // copy??
- {
- m_sharedprotram[0x28c / 2] = m_sharedprotram[0x288 / 2];
- m_sharedprotram[0x28e / 2] = m_sharedprotram[0x28a / 2];
+ const u32 data = p1;
- m_sharedprotram[0x202 / 2] = 0x23; // this mode complete?
- }
+ write_reg(dst, data);
- // what do these do? write the completion byte for now...
- if (cmd == 0x45) m_sharedprotram[0x202 / 2] = 0x56;
- if (cmd == 0x5a) m_sharedprotram[0x202 / 2] = 0x4b;
- if (cmd == 0x2d) m_sharedprotram[0x202 / 2] = 0x3c;
+ util::stream_format(stream, "SET [%04x] = {298, 29a} (%08x)\n", dst, data);
+ break;
+ }
- if (cmd == 0x4f) // memcpy with encryption / scrambling
- {
- const u16 src = m_sharedprotram[0x290 / 2] >> 1; // External mcu data is 8 bit and addressed as such
- const u32 dst = m_sharedprotram[0x292 / 2];
- const u16 size = m_sharedprotram[0x294 / 2];
- const u16 mode = m_sharedprotram[0x296 / 2];
+ case 0xa: // Get value (ASIC RAM -> Shared Protection RAM)
+ {
+ const u16 src = p1 >> 16;
+
+ const u32 data = m_regs[src];
- IGS022_do_dma(src,dst,size,mode);
+ m_sharedprotram[0x29c / 2] = (data >> 16) & 0xffff;
+ m_sharedprotram[0x29e / 2] = data & 0xffff;
- m_sharedprotram[0x202 / 2] = 0x5e; // this mode complete?
+ util::stream_format(stream, "GET {29c, 29e} = [%04x] (%08x)\n", src, data);
+ break;
+ }
}
-}
+ LOGMASKED(LOG_CMD_6D, "%s", stream.str());
+ m_sharedprotram[0x202 / 2] = 0x7c; // this mode complete?
+}
-DEFINE_DEVICE_TYPE(IGS022, igs022_device, "igs022", "IGS022")
+DEFINE_DEVICE_TYPE(IGS022, igs022_device, "igs022", "IGS022 encrypted DMA device")
diff --git a/src/mame/machine/igs022.h b/src/mame/machine/igs022.h
index 619b7a0fc86..5fb2bd9115c 100644
--- a/src/mame/machine/igs022.h
+++ b/src/mame/machine/igs022.h
@@ -1,33 +1,42 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, ElSemi
-/* IGS022 */
#ifndef MAME_MACHINE_IGS022_H
#define MAME_MACHINE_IGS022_H
#pragma once
-
class igs022_device : public device_t
{
public:
igs022_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- void IGS022_handle_command();
+ void handle_command();
protected:
virtual void device_start() override;
virtual void device_reset() override;
- u32 m_kb_regs[0x100];
-
- void IGS022_do_dma(u16 src, u16 dst, u16 size, u16 mode);
- void IGS022_reset();
-
private:
+ static constexpr u16 NUM_REGS = 0x300, STACK_SIZE = 0x100;
+ u32 m_regs[NUM_REGS];
+ u32 m_stack[STACK_SIZE];
+ u8 m_stack_ptr;
+
optional_shared_ptr<u16> m_sharedprotram;
required_memory_region m_rom;
-};
+ u32 read_reg(u16 offset);
+ void write_reg(u16 offset, u32 data);
+
+ void push_stack(u32 data);
+ u32 pop_stack();
+ std::string stack_as_string() const;
+
+ void do_dma(u16 src, u16 dst, u16 size, u16 mode);
+
+ void handle_command_6d();
+ void handle_incomplete_command(u16 cmd, u16 res);
+};
DECLARE_DEVICE_TYPE(IGS022, igs022_device)
diff --git a/src/mame/machine/pgmprot_igs025_igs022.cpp b/src/mame/machine/pgmprot_igs025_igs022.cpp
index 29bc98c34a4..0bba9402785 100644
--- a/src/mame/machine/pgmprot_igs025_igs022.cpp
+++ b/src/mame/machine/pgmprot_igs025_igs022.cpp
@@ -4,25 +4,22 @@
PGM 022 + 025 PGM protection emulation
this file contains the game / pgm specifc hookups for the IGS022/IGS025
- protection chips, actual simulation is in igs025_igs022.c
+ protection chips, actual simulation is in igs022.cpp/igs025.cpp
- sed by
+ Used by:
The Killing Blade
Dragon World 3
Dragon World 3 EX
- ----
-
-
-
- ***********************************************************************/
+************************************************************************/
#include "emu.h"
#include "includes/pgm.h"
#include "machine/pgmprot_igs025_igs022.h"
-/* The IGS022 is an MCU which performs encrypted DMA used by
+/*
+ The IGS022 is an MCU which performs encrypted DMA used by:
- The Killing Blade
- Dragon World 3
- Dragon World 3 Ex
@@ -32,7 +29,7 @@
*/
-/* NON-device stuff, game specific, keep here */
+// NON-device stuff, game specific, keep here
void pgm_022_025_state::pgm_dw3_decrypt()
{
@@ -337,7 +334,7 @@ MACHINE_RESET_MEMBER(pgm_022_025_state, dw3)
void pgm_022_025_state::igs025_to_igs022_callback( void )
{
// printf("igs025_to_igs022_callback\n");
- m_igs022->IGS022_handle_command();
+ m_igs022->handle_command();
}
@@ -380,7 +377,6 @@ void pgm_022_025_state::pgm_022_025(machine_config &config)
m_igs025->set_external_cb(FUNC(pgm_022_025_state::igs025_to_igs022_callback));
IGS022(config, m_igs022, 0);
-
}
void pgm_022_025_state::pgm_022_025_dw3(machine_config &config)
@@ -415,6 +411,7 @@ INPUT_PORTS_START( killbld )
PORT_DIPSETTING( 0x0021, DEF_STR( World ) )
INPUT_PORTS_END
+
INPUT_PORTS_START( dw3 )
PORT_INCLUDE ( pgm )
@@ -428,7 +425,6 @@ INPUT_PORTS_START( dw3 )
PORT_CONFSETTING( 0x0005, DEF_STR( China ) )
PORT_CONFSETTING( 0x0006, DEF_STR( World ) )
PORT_CONFSETTING( 0x0007, "Singapore" )
-
INPUT_PORTS_END
@@ -445,5 +441,4 @@ INPUT_PORTS_START( dw3j ) // for dw3100 set
// PORT_CONFSETTING( 0x0005, DEF_STR( China ) )
// PORT_CONFSETTING( 0x0006, DEF_STR( World ) )
// PORT_CONFSETTING( 0x0007, "Singapore" )
-
INPUT_PORTS_END
diff --git a/src/mame/mame.cpp b/src/mame/mame.cpp
index 217651fd510..c3fba77d580 100644
--- a/src/mame/mame.cpp
+++ b/src/mame/mame.cpp
@@ -13,8 +13,8 @@
#define APPNAME "MAME"
#define APPNAME_LOWER "mame"
#define CONFIGNAME "mame"
-#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttps://mamedev.org"
-#define COPYRIGHT_INFO "Copyright Nicola Salmoria and the MAME team"
+#define COPYRIGHT "Copyright MAMEdev and contributors\nhttps://mamedev.org"
+#define COPYRIGHT_INFO "Copyright MAMEdev and contributors"
const char * emulator_info::get_appname() { return APPNAME;}
const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;}
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 66ad012bdc1..78cad5ba820 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -11805,6 +11805,7 @@ d6809 //
@source:d9final.cpp
d9final // (c) 1992 Excellent System
+rpanic // (c) 1992 Excellent System / Jaleco
@source:dacholer.cpp
dacholer // (c) 1983
@@ -12778,6 +12779,9 @@ drumsta //
drw80pk2 // (c) 1983 IGT
drw80pkr // (c) 1982 IGT
+@source:ds90.cpp
+x37 //
+
@source:dsb46.cpp
dsb46 //
@@ -17299,10 +17303,11 @@ wlcc // (c) 1996
xymg // (c) 1996
@source:igs017.cpp
+cpoker2 // (c) 2000?
genius6 // (c) 1998
genius6a // (c) 1997
genius6b // (c) 1997
-happyskl // (c) 2001?
+happyskl // (c) 2000?
iqblocka // (c) 1996
iqblockf // (c) 1996
lhzb2 // (c) 1998
@@ -17312,13 +17317,12 @@ mgdh // (c) 1997
mgdha // (c) 1997
sdmg2 // (c) 1997
slqz2 // (c) 1998
-spkrform // (c) ????
+spkrform // (c) 2000?
starzan // (c) 2000?
tarzan // (c) 1999
tarzana // (c) 1999
tarzanc // (c) 1999
tjsb // (c) 1997
-unkigs // (c) 2001?
@source:igspc.cpp
eztouch // (c) 200?
@@ -32149,7 +32153,8 @@ nflclsfb // 2003.?? NFL Classic Football
pacmball // 2003.?? Pacman Ball
panikuru // 2002.03 Panicuru Panekuru
ptblank3 // 2000.12 Point Blank 3 (GNN2 Ver.A)
-sekaikh // 2004.04 Sekai Kaseki Hakken (Japan, SKH1 Ver.A)
+sekaikh // 2004.0? Sekai Kaseki Hakken (Japan, SKH1 Ver.B)
+sekaikha // 2004.04 Sekai Kaseki Hakken (Japan, SKH1 Ver.A)
startrgn // 2002.07 Star Trigon (STT1 Ver.A)
taiko6 // 2004.?? Taiko no Tatsujin 6 (Japan, TK61 Ver.A)
unks10md // 200?.?? unknown Namco System 10 medal game (MTL1 SPRB0)
@@ -37691,6 +37696,7 @@ scyclone // (c) 1980 Taito Corporation
croupier // (c) 1997 Playmark
croupiera // (c) 1997 Playmark
luckboom //
+magictch //
sderby // (c) 1996
sderbya // (c) 1996
shinygld //
@@ -38265,7 +38271,7 @@ titlefu // 1993.04 Title Fight (US)
@source:segasm1.cpp
tinkerbl // (c) 1990 Sega
-blicks // (c) 1991 Sega
+blicks // (c) 1991 Sega
unkm1 // (c) 1992 Sega
bingpty // (c) 1994 Sega
@@ -40487,7 +40493,8 @@ suprridr // (c) 1983 Venture Line + Taito license
suprslam // (c) 1995 Banpresto
@source:supstarf.cpp
-supstarf //
+supstarf // (c) 1986 Recreativos Franco
+supstarfa // (c) 1986 Recreativos Franco
@source:surpratk.cpp
suratk // GX911 (c) 1990 (World)
@@ -41947,6 +41954,7 @@ grindstma // TP-027 (c) 1993 Toaplan + Unite Trading licen
kbash // TP-023 (c) 1993 Toaplan
kbash2 // bootleg
kbashk // TP-023 (c) 1993 Toaplan
+kbashp // TP-023 (c) 1993 Toaplan
kingdmgp // (c) 1994 Raizing/8ing
mahoudai // (c) 1993 Raizing + Able license
nprobowl // (c) 1996 Zuck + Able license
diff --git a/src/mame/mess.cpp b/src/mame/mess.cpp
deleted file mode 100644
index ab1c26b59c5..00000000000
--- a/src/mame/mess.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/***************************************************************************
-
- mess.cpp
-
- Specific (per target) constants
-
-****************************************************************************/
-
-#include "emu.h"
-
-#define APPNAME "MESS"
-#define APPNAME_LOWER "mess"
-#define CONFIGNAME "mess"
-#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttps://mamedev.org"
-#define COPYRIGHT_INFO "Copyright Nicola Salmoria and the MAME team"
-
-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/src/mame/mess.flt b/src/mame/mess.flt
index 7686ad91358..316c6427b3e 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -257,6 +257,7 @@ dps1.cpp
dpsv55.cpp
dragon.cpp
drumsta.cpp
+ds90.cpp
dsb46.cpp
dual68.cpp
duet16.cpp
diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp
index 2e07c242f63..67acf4e8c0b 100644
--- a/src/mame/video/igs017_igs031.cpp
+++ b/src/mame/video/igs017_igs031.cpp
@@ -6,7 +6,7 @@ IGS017 / IGS031 video device
what's the difference between IGS017 and IGS031? encryption?
-all the known IGS017 / IGS031 games use same memory map, is the IGS017 / IGS031
+all the known IGS017 / IGS031 games use the same memory map, is the IGS017 / IGS031
providing the interface to the 8255, or is it coincidence?
*/
@@ -17,7 +17,6 @@ providing the interface to the 8255, or is it coincidence?
void igs017_igs031_device::map(address_map &map)
{
map(0x1000, 0x17ff).ram().share("spriteram");
-// map(0x1800, 0x1bff).ram() //.w("palette", FUNC(palette_device::write).share("palette");
map(0x1800, 0x1bff).ram().w(FUNC(igs017_igs031_device::palram_w)).share("palram");
map(0x1c00, 0x1fff).ram();
@@ -29,7 +28,6 @@ void igs017_igs031_device::map(address_map &map)
map(0x4000, 0x5fff).ram().w(FUNC(igs017_igs031_device::fg_w)).share("fg_videoram");
map(0x6000, 0x7fff).ram().w(FUNC(igs017_igs031_device::bg_w)).share("bg_videoram");
-
}
u8 igs017_igs031_device::i8255_r(offs_t offset)
@@ -260,7 +258,7 @@ void igs017_igs031_device::draw_sprite(bitmap_ind16 &bitmap, const rectangle &cl
if (addr + dimx * dimy >= m_sprites_gfx_size)
return;
- /* Start drawing */
+ // Start drawing
const u16 pal = 0x100 + (color << 5);
const u8 *source_base = &m_sprites_gfx[addr];
const u8 transparent_color = 0x1f;
@@ -389,7 +387,7 @@ int igs017_igs031_device::debug_viewer(bitmap_ind16 &bitmap,const rectangle &cli
popmessage("a: %08X w: %03X p: %02x-%02x-%02x",a,w,m_sprites_gfx[a/3*3+0],m_sprites_gfx[a/3*3+1],m_sprites_gfx[a/3*3+2]);
m_debug_addr = a;
m_debug_width = w;
- osd_sleep(osd_ticks_per_second() / 1000 * 200);
+ osd_sleep(osd_ticks_per_second() / 1000 * 200 / 4);
return 1;
}
#endif
diff --git a/src/mame/video/sderby.cpp b/src/mame/video/sderby.cpp
deleted file mode 100644
index 150cea7a7cf..00000000000
--- a/src/mame/video/sderby.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood, Roberto Fresca
-#include "emu.h"
-#include "includes/sderby.h"
-
-/* BG Layer */
-
-TILE_GET_INFO_MEMBER(sderby_state::get_sderby_tile_info)
-{
- int tileno,colour;
-
- tileno = m_videoram[tile_index*2];
- colour = m_videoram[tile_index*2+1] & 0x0f;
-
- tileinfo.set(1,tileno,colour,0);
-}
-
-void sderby_state::sderby_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&m_videoram[offset]);
- m_tilemap->mark_tile_dirty(offset/2);
-}
-
-/* MD Layer */
-
-TILE_GET_INFO_MEMBER(sderby_state::get_sderby_md_tile_info)
-{
- int tileno,colour;
-
- tileno = m_md_videoram[tile_index*2];
- colour = m_md_videoram[tile_index*2+1] & 0x0f;
-
- tileinfo.set(1,tileno,colour+16,0);
-}
-
-void sderby_state::sderby_md_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&m_md_videoram[offset]);
- m_md_tilemap->mark_tile_dirty(offset/2);
-}
-
-/* FG Layer */
-
-TILE_GET_INFO_MEMBER(sderby_state::get_sderby_fg_tile_info)
-{
- int tileno,colour;
-
- tileno = m_fg_videoram[tile_index*2];
- colour = m_fg_videoram[tile_index*2+1] & 0x0f;
-
- tileinfo.set(0,tileno,colour+32,0);
-}
-
-void sderby_state::sderby_fg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&m_fg_videoram[offset]);
- m_fg_tilemap->mark_tile_dirty(offset/2);
-}
-
-
-void sderby_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int codeshift)
-{
- uint16_t *spriteram16 = m_spriteram;
- int offs;
- int height = m_gfxdecode->gfx(0)->height();
- int colordiv = m_gfxdecode->gfx(0)->granularity() / 16;
-
- for (offs = 4;offs < m_spriteram.bytes()/2;offs += 4)
- {
- int sx,sy,code,color,flipx;
-
- sy = spriteram16[offs+3-4]; /* -4? what the... ??? */
- if (sy == 0x2000) return; /* end of list marker */
-
- flipx = sy & 0x4000;
- sx = (spriteram16[offs+1] & 0x01ff) - 16-7;
- sy = (256-8-height - sy) & 0xff;
- code = spriteram16[offs+2] >> codeshift;
- color = (spriteram16[offs+1] & 0x3e00) >> 9;
-
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
- code,
- color/colordiv+48,
- flipx,0,
- sx,sy,0);
- }
-}
-
-
-void sderby_state::video_start()
-{
- m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
- m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_md_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
-
- m_md_tilemap->set_transparent_pen(0);
-
- m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_fg_tilemap->set_transparent_pen(0);
-}
-
-uint32_t sderby_state::screen_update_sderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- m_tilemap->draw(screen, bitmap, cliprect, 0,0);
- draw_sprites(bitmap,cliprect,0);
- m_md_tilemap->draw(screen, bitmap, cliprect, 0,0);
- m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
- return 0;
-}
-
-uint32_t sderby_state::screen_update_pmroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- m_tilemap->draw(screen, bitmap, cliprect, 0,0);
- m_md_tilemap->draw(screen, bitmap, cliprect, 0,0);
- draw_sprites(bitmap,cliprect,0);
- m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
- return 0;
-}
-
-
-void sderby_state::sderby_scroll_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- data = COMBINE_DATA(&m_scroll[offset]);
-
- switch (offset)
- {
- case 0: m_fg_tilemap->set_scrollx(0,data+2);break;
- case 1: m_fg_tilemap->set_scrolly(0,data-8);break;
- case 2: m_md_tilemap->set_scrollx(0,data+4);break;
- case 3: m_md_tilemap->set_scrolly(0,data-8);break;
- case 4: m_tilemap->set_scrollx(0,data+6); break;
- case 5: m_tilemap->set_scrolly(0,data-8); break;
- }
-}
diff --git a/src/osd/modules/debugger/qt/deviceswindow.cpp b/src/osd/modules/debugger/qt/deviceswindow.cpp
index b1b0be2a507..0e7a94ceb97 100644
--- a/src/osd/modules/debugger/qt/deviceswindow.cpp
+++ b/src/osd/modules/debugger/qt/deviceswindow.cpp
@@ -31,7 +31,7 @@ QVariant DevicesWindowModel::data(const QModelIndex &index, int role) const
Qt::ItemFlags DevicesWindowModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
- return 0;
+ return Qt::NoItemFlags;
return QAbstractItemModel::flags(index);
}