Comment: note, could still do with andreas seeing if he can find a relationship between the encryption tables we've derived from studying the
protection (used to decrypt the various blocks in the protection data
rom) and the final block in the protection data rom..
* Split segas16.h header into separate headers for each system
* Fully modernize segas16a
* Convert multiply, divide, and compare/timer chips into
modern devices
* Fix bug causing tturfu and wrestwar to hang at startup
baseboard there (most of these ones actually run quite well apart from
some moaning about reels) This board used the AY8913, the mod4 board
didn't have that, so it's a logical split point. Also some more identification / tagging etc. of other sets. From Haze (nw)
* Converted FD1089/FD1094 into proper devices, derived
from m68000. They now handle their own decryption and
memory management, so we can remove all the calls for
initialization/reset/etc. The key now lives as a 'key'
subdevice under the CPU, and the FD1089/1094 are now
specified just like any other CPU.
* Removed the horrible s16fd and s24fd files. Good riddance.
* Created a helper class for managing fd1094 decryption
caches.
* Converted the memory mapper into a new modern device
and updated the segas16b, segaorun, and segas18 drivers
to use it. Fixed ROM memory mapping so that the source
ROMs can be loaded contiguously, removing a bunch of
hacks.
* Untangled the joined segas1x_state and split the states
for each system into their own classes. Cleaned up some
implementations.
* Added support for member functions to be called as
DRIVER_INIT functions. To do this, #define
MODERN_DRIVER_INIT prior to #including "emu.h" and you
will be required to specify a class and member function
for your driver init.
* Fully modernized the segas16b and segas18 drivers.
New working games added
-----------------------
GP Rider (Japan) [ShouTime, Charles MacDonald, Aaron Giles]
Last Survivor [ShouTime, Charles MacDonald, Aaron Giles, 9ofzeven, TrevEB,
Dr. Spankenstein, ghoolster, Surgeville, Tormod, Tjaberg, Waremonger]
(Note: A couple games are still busted, but most are working. Will
follow up with more updates.)
(mpu4dealem.c) because it's a unique expansion, no point in having all
that stuff in the main state. The standard video board it's own state class too, and moved specifics to that, plus converted the scn2674 video chip to be a device (new files there too) again reducing the amount of junk in the base mpu4 state. From Haze (nw)
- Based on timeslot modelling, the implementation models gate delays in logic chips.
- Design ready to be split into a generic and a MAME implementation part.
- Design prepared to merge in discrete components from discrete.*
- Supports code based as well as external net list parsing.
Ultimately, net lists and discrete emulation should share one code base. The class design was set up to accomplish this. There is no point in having multiple 555, 7474 implementations around.
Most of the code will be moved to lib/netlist going forward to allow usage in other projects.
------------------------------------
Beach Head 2000 Install - 05/27/03 [Smitdogg, The Dumping Union]
Beach Head 2000 Install - 09/16/01 [Smitdogg, The Dumping Union]
Beach Head 2002 Install - 05/27/03 [Smitdogg, The Dumping Union]
Beach Head 2003 Desert War Install - 05/27/03 [Smitdogg, The Dumping Union]
Global VR XP OS Install - 09/30/01 [Smitdogg, The Dumping Union]
Global VR XP OS Update/Install - 06/11/02 [Smitdogg, The Dumping Union]
Hyper V2 (Global VR) Install - 09/30/0l [Smitdogg, The Dumping Union]
Hyper V2 (Global VR) Install - 06/12/02 [Smitdogg, The Dumping Union]
Need For Speed: Underground Install (2 Discs) (v1.1) [Smitdogg, The Dumping Union]
-----------------------------------
Skins Game (1.08) [Mr. CAST, M. Ponweiser, Mojo2000, Smitdogg, The Dumping Union, R. Belmont]
Skins Game (unknown alt. version) [Guru, R. Belmont]
------------------------------------
Pong (Rev E) [Couriersud]
Work in progress. The games is playable and has sound, however I suspect some minor bugs due to the order of expression evaluation.
I commit this mainly for documentation purposes. The modelling of the TTL circuits will change to a device/connection class infrastructure updating inputs immediately if they changed going forward.
and wait state generation. Previous implementation has been renamed to
*l.{c,h} and drivers point to the old implementation until they are
adapted to the new version. [Michael Zapf]
* Inputs from the scratch.
* Completely demuxed the output lines.
* Added lamps support.
* Added a nice button-lamps layout.
* Found and added the FEVER! lamp.
* Fixed the Oki6295 and CRTC 6845 clocks.
* Corrected the refresh rate to 52.786 Hz (similar to Major Poker).
* Hooked the vblank input line.
* Figured out the following DIP switches:
Auto Max Bet, Flip Screen, Maximum Bet,
Auto Hold, Double-Up Type, Remote Credits,
Bet Limit, and Coinage Multiplier.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Chance Thirty Two [Roberto Fresca]
* Identified the slots game as Super Stars.
* Changed am_uslot to suprstar.
* Reworked inputs from the scratch.
* Added support for outputs: lamps & counters.
* Added a button-lamps layout.
* Promoted the game to working state.
* Added technical notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Super Stars [Roberto Fresca, Angelo Salese, Andreas Naive]
* Reworked Inputs for all games.
* Added button-lamps support.
* Created internal control layout for all games.
* Added mech counters support.
* Promoted all games to working state.
* Renamed the mdrawpkra ROMs based on PCB picture.
* Renamed the driver to meyc8080.c
* Added technical and game notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Draw Poker - Joker's Wild (Standard) [hap, Roberto Fresca]
Draw Poker - Joker's Wild (02-11) [hap, Roberto Fresca]
- This game has mechanical parts so it's not exactly playable, but it is possible try it until the end giving the expected inputs.
- Imported the i8279 device from MESS and updated to support sensor
mode and mask nibble.
- Made a simple layout and the defined input ports.
New clones marked as GAME_NOT_WORKING
------------------------------------
Zeke's Peak [Sandro Ronco]
Renamed driver overrides to MCFG_MACHINE/SOUND/VIDEO_START_OVERRIDE to
explicitly indicate they are overriding the default behavior.
Put liberatr back the way it used to be.
Normalized soundlatch helper function names.
Created delegates for machine/sound/video_start/reset callbacks and
added necessary infrastructure to use them going forward.
- General update which fleshes out some of the 68307 code (not 100% correct hookups, just improved logging and enough to get us somewhere).
- Added various devices to the SC4 emulation, added a default layout showing the VFD, to which most of the earlier games will now write 'Initializing'. Timers and other devices still need to be implemented properly before they actually initialize.
- Put the actual SC4 hardware emulation in drivers/bfm_sc4h.c so that it doesn't get lost in the swamp of sets (scrolling through a file is quite hard when it's almost entirely set definitions)
and the insane 16 graphics banks scheme. Improved the Wild Witch and
Jolli Witch inputs, and switched them to the extended hardware. Got
accurate colors for all the extended sets. Worked inputs and lamps
from the scratch. Added technical notes. [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Witch Up & Down (Export, 6T/12T ver 0.99) [Roberto Fresca, Team Europe, Marcus Jendroska, Video Klein]
Witch Up & Down (Export, 6T/12T ver 1.02) [Roberto Fresca, Team Europe, Marcus Jendroska, Video Klein]
Wild Witch (Export, 6T/12T ver 1.74A) [Roberto Fresca]
Z80 + CTC + DAC systems with artwork and lamps + LEDs, running
the well-known game "Rock-Paper-Scissors". Also added a complex
internal artwork layout. [Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Janken Man (Pretty Carnival) [Roberto Fresca, anonyMous donator]
spriteram. Removed core support for legacy buffered spriteram, and
updated all drivers to use the new devices instead. [Aaron Giles]
Removed required/optional_shared_size helpers. Instead the existing
required/optional_shared_ptr helpers now have a bytes() method that
can be used to query the size of the shared region. [Aaron Giles]
New games marked as GAME_NOT_WORKING
------------------------------------
World Soccer Winning Eleven Arcade Game Style [Team Japump, Guru]
World Soccer Winning Eleven Arcade Game 2003 [Team Japump, Guru]
- enforced short names for slot card devices
- updated validation, romverify and listxml output accordingly
- slotoptions now also contain shortnames so it's possible to link
slot option and device
similar to Ludo, derivated from the indian game Parchisi. Coin-op
machine for 1-4 players. No screen, just artwork and lamps.
[Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Mann, oh-Mann [Roberto Fresca, Team Europe]
from 4 to 5. This means any diff CHDs will no longer work. If you
absolutely need to keep the data for any existing ones you have,
find both the diff CHD and the original CHD for the game in question
and upgrade using these commands:
rename diff\game.dif diff\game-old.dif
chdman copy -i diff\game-old.dif -ip roms\game.chd -o diff\game.dif -op roms\game.chd -c none
Specifics regarding this change:
Defined a new CHD version 5. New features/behaviors of this version:
- support for up to 4 codecs; each block can use 1 of the 4
- new LZMA codec, which tends to do better than zlib overall
- new FLAC codec, primarily used for CDs (but can be applied anywhere)
- upgraded AVHuff codec now uses FLAC for encoding audio
- new Huffman codec, used to catch more nearly-uncompressable blocks
- compressed CHDs now use a compressed map for significant savings
- CHDs now are aware of a "unit" size; each hunk holds 1 or more units
(in general units map to sectors for hard disks/CDs)
- diff'ing against a parent now diffs at the unit level, greatly
improving compression
Rewrote and modernized chd.c. CHD versions prior to 3 are unsupported,
and version 3/4 CHDs are only supported for reading. Creating a new
CHD now leaves the file open. Added methods to read and write at the
unit and byte level, removing the need to handle this manually. Added
metadata access methods that pass astrings and dynamic_buffers to
simplify the interfaces. A companion class chd_compressor now
implements full multithreaded compression, analyzing and compressing
multiple hunks independently in parallel. Split the codec
implementations out into a separate file chdcodec.*
Updated harddisk.c and cdrom.c to rely on the caching/byte-level read/
write capabilities of the chd_file class. cdrom.c (and chdman) now also
pad CDs to 4-frame boundaries instead of hunk boundaries, ensuring that
the same SHA1 hashes are produced regardless of the hunk size.
Rewrote chdman.exe entirely, switching from positional parameters to
proper options. Use "chdman help" to get a list of commands, and
"chdman help <command>" to get help for any particular command. Many
redundant commands were removed now that additional flexibility is
available. Some basic mappings:
Old: chdman -createblankhd <out.chd> <cyls> <heads> <secs>
New: chdman createhd -o <out.chd> -chs <cyls>,<heads>,<secs>
Old: chdman -createuncomphd <in.raw> <out.chd> ....
New: chdman createhd -i <in.raw> -o <out.chd> -c none ....
Old: chdman -verifyfix <in.chd>
New: chdman verify -i <in.chd> -f
Old: chdman -merge <parent.chd> <diff.chd> <out.chd>
New: chdman copy -i <diff.chd> -ip <parent.chd> -o <out.chd>
Old: chdman -diff <parent.chd> <compare.chd> <diff.chd>
New: chdman copy -i <compare.chd> -o <diff.chd> -op <parent.chd>
Old: chdman -update <in.chd> <out.chd>
New: chdman copy -i <in.chd> -o <out.chd>
Added new core file coretmpl.h to hold core template classes. For now
just one class, dynamic_array<> is defined, which acts like an array
of a given object but which can be appended to and/or resized. Also
defines dynamic_buffer as dynamic_array<UINT8> for holding an
arbitrary buffer of bytes. Expect to see these used a lot.
Added new core helper hashing.c/.h which defines classes for each of
the common hashing methods and creator classes to wrap the
computation of these hashes. A future work item is to reimplement
the core emulator hashing code using these.
Split bit buffer helpers out into C++ classes and into their own
public header in bitstream.h.
Updated huffman.c/.h to C++, and changed the interface to make it
more flexible to use in nonstandard ways. Also added huffman compression
of the static tree for slightly better compression rates.
Created flac.c/.h as simplified C++ wrappers around the FLAC interface.
A future work item is to convert the samples sound device to a modern
device and leverage this for reading FLAC files.
Renamed avcomp.* to avhuff.*, updated to C++, and added support for
FLAC as the audio encoding mechanism. The old huffman audio is still
supported for decode only.
Added a variant of core_fload that loads to a dynamic_buffer.
Tweaked winwork.c a bit to not limit the maximum number of processors
unless the work queue was created with the WORK_QUEUE_FLAG_HIGH_FREQ
option. Further adjustments here are likely going to be necessary.
Fixed bug in aviio.c which caused errors when reading some AVI files.
- The SDL team has moved from 1.3 to 2.0. At the same time, changes were made to allow SDL1.2 and SDL2.0 to coexist. All SDL2.0 include files are now in /usr/include/SDL2.
- Added sdlinc.h to avoid having tons of #ifdef .. #include in the code.
- Scalemode is no longer a per-window setting
- Fixed a bug in YUV rendering.
- Use SDL_GetClipboard (SDL2.0)
- Updated README_SDL20.txt
Currently, SDL 2.0 is only supported on *nix. Volunteers welcome.
(nw) If anyone has any suggestions on how better to sync per-scanline state than what I'm currently doing, I'd be all ears. The renderer is now pretty darn fast, but every little bit counts.
new not working:
---------------
Unknown BMC Poker Game,
Gone Fishing 2
Chess Challenge 2
EZ Touch
Sega Shooting Zone
new clones
---------
Warriors of Fate ('sgyxz' bootleg) (not working)
and paths consistently for devices, I/O ports, memory
regions, memory banks, and memory shares. [Aaron Giles]
NOTE: there are likely regressions lurking here, mostly
due to devices not being properly found. I have temporarily
added more logging to -verbose to help understand what's
going on. Please let me know ASAP if anything that is being
actively worked on got broken.
As before, the driver device is the root device and all
other devices are owned by it. Previously all devices
were kept in a single master list, and the hierarchy was
purely logical. With this change, each device owns its
own list of subdevices, and the hierarchy is explicitly
manifest. This means when a device is removed, all of its
subdevices are automatically removed as well.
A side effect of this is that walking the device list is
no longer simple. To address this, a new set of iterator
classes is provided, which walks the device tree in a depth
first manner. There is a general device_iterator class for
walking all devices, plus templates for a device_type_iterator
and a device_interface_iterator which are used to build
iterators for identifying only devices of a given type or
with a given interface. Typedefs for commonly-used cases
(e.g., screen_device_iterator, memory_interface_iterator)
are provided. Iterators can also provide counts, and can
perform indexed lookups.
All device name lookups are now done relative to another
device. The maching_config and running_machine classes now
have a root_device() method to get the root of the hierarchy.
The existing machine->device("name") is now equivalent to
machine->root_device().subdevice("name").
A proper and normalized device path structure is now
supported. Device names that start with a colon are
treated as absolute paths from the root device. Device
names can also use a caret (^) to refer to the owning
device. Querying the device's tag() returns the device's
full path from the root. A new method basetag() returns
just the final tag.
The new pathing system is built on top of the
device_t::subtag() method, so anyone using that will
automatically support the new pathing rules. Each device
has its own internal map to cache successful lookups so
that subsequent lookups should be very fast.
Updated every place I could find that referenced devices,
memory regions, I/O ports, memory banks and memory shares
to leverage subtag/subdevice (or siblingtag/siblingdevice
which are built on top).
Removed the device_list class, as it doesn't apply any
more. Moved some of its methods into running_machine
instead.
Simplified the device callback system since the new
pathing can describe all of the special-case devices that
were previously handled manually.
Changed the core output function callbacks to be delegates.
Completely rewrote the validity checking mechanism. The
validity checker is now a proper C++ class, and temporarily
takes over the error and warning outputs. All errors and
warnings are collected during a session, and then output in
a consistent manner, with an explicit driver and source file
listed for each one, as well as additional device and/or
I/O port contexts where appropriate. Validity checkers
should no longer explicitly output this information, just
the error, assuming that the context is provided.
Rewrote the software_list_device as a modern device, getting
rid of the software_list_config abstraction and simplifying
things.
Changed the way FLAC compiles so that it works like other
external libraries, and also compiles successfully for MSVC
builds.
test driver that (ab)uses the core to single step a CPU executing
arbitrary instructions and capturing before/after state and
tracking memory. Currently this driver is always compiled, but is
not referenced in mame.lst.
Also updated and modernized the dummy empty driver.
almost certainly some regressions lurking. Let me know if
something seems busted.
Bitmaps are now strongly typed based on format. bitmap_t still
exists as an abstract base class, but it is almost never used.
Instead, format-specific bitmap classes are provided:
bitmap_ind8 == 8bpp indexed
bitmap_ind16 == 16bpp indexed
bitmap_ind32 == 32bpp indexed
bitmap_ind64 == 64bpp indexed
bitmap_rgb32 == 32bpp RGB
bitmap_argb32 == 32bpp ARGB
bitmap_yuy16 == 16bpp YUY
For each format, a generic pix() method is provided which
references pixels of the correct type. The old pix8/pix16/pix32/
pix64 methods still exist in the short term, but the only one
available is the one that matches the bitmap's pixel size. Note
also that the old RGB15 format bitmaps are no longer supported
at all.
Converted model1, megadriv, and stv drivers away from the RGB15
format bitmaps.
New auto_bitmap_<type>_alloc() macros are provided for allocating
the appropriate type of bitmap.
Screen update functions now must specify the correct bitmap type
as their input parameters. For static update functions the
SCREEN_UPDATE macro is now replaced with SCREEN_UPDATE_RGB32 and
SCREEN_UPDATE_IND16 macros. All existing drivers have been
updated to use the correct macros.
Screen update functions are now required for all screens; there
is no longer any default behavior of copying a "default" bitmap
to the screen (in fact the default bitmap has been deprecated).
Use one of the following to specify your screen_update callback:
MCFG_SCREEN_UPDATE_STATIC(name) - static functions
MCFG_SCREEN_UPDATE_DRIVER(class, func) - driver members
MCFG_SCREEN_UPDATE_DEVICE(tag, class, func) - device members
Because the target bitmap format can now be deduced from the
screen update function itself, the MCFG_SCREEN_FORMAT macro is
no longer necessary, and has been removed. If you specify a
screen update callback that takes a bitmap_ind16, then the screen
will be configured to use a 16bpp indexed bitmap, and if you
specify a callback that takes a bitmap_rgb32, then a 32bpp RGB
bitmap will be provided.
Extended the bitmap classes to support wrapping a subregion of
another bitmap, and cleaner allocation/resetting. The preferred
use of bitmaps now is to define them directly in drivers/devices
and use allocate() or wrap() to set them up, rather than
allocating them via auto_bitmap_*_alloc().
Several common devices needed overhauls or changes as a result
of the above changes:
* Reorganized the laserdisc base driver and all the laserdisc
drivers as modern C++ devices, cleaning the code up
considerably. Merged ldsound device into the laserdsc
device since modern devices are flexible enough to handle
it.
* Reorganized the v9938 device as a modern C++ device. Removed
v9938mod.c in favor of template functions in v9938.c directly.
* Added independent ind16 and rgb32 callbacks for TMS340x0 devices.
* All video devices are now hard-coded to either ind16 or rgb32
bitmaps. The most notable is the mc6845 which is rgb32, and
required changes to a number of consumers.
* Added screen_update methods to most video devices so they can be
directly called via MCFG_SCREEN_UPDATE_DEVICE instead of creating
tons of stub functions.
out of log:
This way it is possible to link two or more separated executables with different
copyright/xml out/name/... in one compilation, just one step closer...
multislot support [David Haywood]
Please note: launching convention for Neo-Geo games is now the same as
MESS software lists "mame neogeo gamename" or "mame neogeo -cart
gamename".
------------------------------------
Arcana Heart Full [Tormod, Smitdogg, The Dumping Union]
Comments from Haze: Note, I haven't marked this as a bootleg, but 75% of the rom is actually MAME ROM zips, they've clearly recycled flash chips from one of the MAME multi-boots, so I have a feeling that this might have been a 3rd party upgrade. I doubt they shipped like this from the factory, so I've added a comment to that effect because it should definitely be verified against other copies of the game at some point.
(not-for-whatsnew section)
Note: extremely preliminary. No music, just sfx. No per-voice volume/panning. No attempts to optimize. Lots of hardcoding for how the CV1000 uses the chip. I will fix all of these later, but I gotta get to sleep now ;-)
A kind of MSX2 hardware on steroids...
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Kasino '89 [Roberto Fresca, Rob Ragon, Tomasz Slanina]
Data/address lines are scrambled. Main program is selectable through banks.
New games marked as GAME_NOT_WORKING
------------------------------------
Unknown TMS9980 Poker Game [Roberto Fresca, Team Europe]
Comment: This is mostly konami stuff.. if anybody knows the cpu on konendev please hook it up.. i think the sets are all incomplete, but unless it's missing a bios it should be possible to run the code at least.
Added missing inputs, fixing structure. Added button-
lamps support and layout to saiyukip, coin counters
and complete documented outputs to both games.
Also reworked the DIP switches structure to match
what the test mode shows, with their respective DIP
locations [Roberto Fresca]
and GFX offsets. Both sets are working properly. [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Bingo (set 1) [Roberto Fresca, EMMA Italian Dumping Team]
Bingo (set 2) [Roberto Fresca, The Dumping Union]
- It is used by MESS side i8251 and 6551 are using it now
- Also created simple serial source devices (used by some cassette interface)
This will be optimized and rechecked after new chips are converted to use it
No whatsnew for now, but there will be info for the release.
- adds some additional skeletons BGT, Stella
- adds even more MPS sets, and basic support for what looks like something which was an earlier unknown system similar to MPS/System 80, but with different mappings etc. by Haze (no whatsnew)
- Removed LOADBYNAME, since it is deprecated by using per device rom load_software_part_region
- Created makedev tool to generate array of devices, and created lst file according to current devices usage.
- Changed listxml command to output device roms too
using one cothread for each executable device. This functionality is
strictly internal and should result in no changes in scheduling
behavior. However, it now becomes possible to exit out of a device's
execution in the midst of an instruction by calling
machine().scheduler().make_active(). Note that this is somewhat dangerous
for cores that have logic at the start of their execute loop to check for
interrupts or other conditions, as those checks will be skipped upon
resume, so consider this sort of early exiting to be highly experimental
for now. [Aaron Giles, Miodrag Milanovic, byuu]
- Added the ability to render screenshots at arbitrary resolutions.
- Added the ability to record AVI videos (albeit with no audio) at arbitrary resolutions.
- Added a 43-tap-wide FIR-based NTSC filter with tunable Y, I and Q frequency response.
- Updated scanlines to have a user-tunable pixel-height ratio in addition to the current screen-height ratio.
- Fixed a VRAM leak that was causing many dynamic-resolution drivers to run out of memory mid-run.
Low-level input upgrade. Classes now exist for input_codes, input_items,
input_devices, and input_seqs. Also created an input_manager class to
hold machine-global state and made it accessible via machine.input().
Expanded the device index range (0-255, up from 0-16), and the OSD can
now specify the device index explicitly if they can better keep the
indexes from varying run-to-run. [Aaron Giles]
Note that I've built and run SDL on Windows, but not all the code paths
were exercised. If you use mice/joysticks extensively double-check them
to be sure it all still works as expected.
This is mainly an OSD and core change. The only thing impacting drivers
is if they query for specific keys for debugging. The following S&Rs
took care of most of that:
S: input_code_pressed( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed\1\(\2
S: input_code_pressed_once( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed_once\1\(\2
- The defocus pass is now switched off when defocus_x and defocus_y are zero, allowing finer-grained performance tuning.
- Removed YIQ convolution from the main color-convolution shader and replaced it with a full composite encode/decode pass. This is slower, but looks amazing(ly like a terrible TV) and can be turned off.
- More authentic NTSC dot crawl and bandwidth limiting.
- Potential fix for some crashing reported by John IV
- Split color convolution and deconvergence into separate shaders for potential GPU savings down the line
- Added light and heavy variants of the color convolution shader, the former with YIQ colorspace removed
- Re-worked defocus to occur prior to shadow mask application, as it would be on a real monitor.
- Removed Edge Detection, as it was just for fun and can easily be added in by users if desired.
- Split "pincushion" into "Pincushion" and "Screen Curvature", the former affecting the only the displayed image and the latter only affecting the shadow mask.
Part II: Artwork.
aperture.png: Based on Aaron's aperture_4x6 mask but with more prominent notching to bring out the "brick" pattern that was used on many period colour monitors, including the Commodore 1702 - which was, admittedly, not an arcade monitor, but it looks believable and can be changed.
white.png: Default 8x8 255,255,255,255 texture.
Focus: 8-sample blur that averages 7 samples around a center sample.
Phosphor: Not currently used, treated as a pass-through by drawd3d.c, but could be used to implement additional convolutions in a second pass.
Pincushion: Used (when commented in in drawd3d.c) to pincushion an entire full-screen texture but not otherwise apply any convolutions.
Post: The meat and potatoes. It does scanlines, it does aperture masking, it does dot crawl, it does chroma subsampling, it does YIQ colorspace convolution, it does RGB colorspace convolution, it does pincushioning, it walks, it talks, it does the dishes, it'll screw your wife for you, and if you don't have a wife it will find one for you, get you married to her, and screw her for you, IT IS THAT GOOD, LADIES AND GENTLEMEN.
Primary: Simple passthrough for UI and artwork.
Remove the old tokenizing helpers. Add basic classes for ports, fields,
settings, and dip locations as a first step. These will be fully cleaned
up later. Added machine() method to field to hide all the necessary
indirection. Changed custom/changed handlers into generic read/write
handlers, and added wrappers to convert them to device read/write
lines. [Aaron Giles]
MDEC is now an internal device of the PlayStation CPU [smf]
PlayStation DMA uses delegates so devices can be hooked up.
device_t::siblingdevice() uses device list on mconfig() so it can work before the machine is constructed.
moved unused console code back to mess.
Note that msm8251 would be nice to have on emu section but it depends of serial.c which needs to be rewritten in order to be useful. Also upd765 is used only by MESS and it's pain to keep it in emu since it is not yet bug free.
Converted PlayStation DMA to an internal device to the CPU core. DMA to external devices can be set in the machine config, the old calls are still there until the rest of the code is converted. [smf]
The following MAME core changes have been required to allow internal devices to be configurable by the main machine config & to work with internal memory maps.
device.machine_config_additions() are now processed as soon as the device is added, so sub devices can be configured straight away.
replacing or removing a device removes any devices owned by the device being removed, as now they are added straight away.
device_t::subdevice() uses the machine config device list instead of the machine to find the device as the machine is not created until after all the devices have been created.
devices in an internal address map are assumed to be owned by the CPU, while devices in a standard address maps are assumed to be siblings of the CPU.
A code review and regression test would be a good idea.
mpu4.c: Documented MOD 4 OKI program card ROM banking and improved the BwB characteriser emulation. [James Wallace]
New games added as GAME_NOT_WORKING:
------------------------------------
MPU3 Unit Test (Program 5)
Hyper Viper
loader rewrite, which is still in progress....)
Replaced mamedriv.c with a new driver list mechanism that is generated
by the build tools. The emulator core now expects the presence of a
file called src/$(TARGET)/$(SUBTARGET).lst which is just a raw list of
driver names, one per line. C and C++ comments are still permitted.
This file is parsed by a new build tool makelist which extracts the
driver names, sorts them, and generates a file called drivlist.c, which
is consumed by the core. [Aaron Giles]
Added new osdcore function osd_malloc_array() which is identical to
osd_malloc() but obviously hints that the underlying allocation is for
an array. Updated all callers to use the appropriate form. Modified the
Windows allocator to only use guard pages for array-style allocations,
allowing us to enable them once again in debug builds. [Aaron Giles]
Created new static class driver_list to wrap accesses to the list of
available drivers. Improved speed of driver lookups by relying on the
presorting done by makelist. [Aaron Giles]
Created helper class driver_enumerator as a helper for iterating through
the list of drivers. This class supports basic filtering and iteration,
and also serves as a temporary cache of machine_configs. [Aaron Giles]
Created cli_frontend object to wrap all the CLI handling code in
clifront.c. Updated/simplified all the code to take advantage of the
driver_enumerator. [Aaron Giles]
Created media_auditor object to wrap all the auditing functions in
audit.c. Updated all users to the new interface. Note that the new
auditing mechanism is slightly out of sync with the romload code in
terms of finding ROMs owned by devices, so it may mis-report some
issues until the new ROM loading code is in. [Aaron Giles]
Added concept of a per-device searchpath. For most devices, their
searchpath is just the short name of the device. For driver_devices, the
searchpath is driver[;parent[;bios]]. This searchpath will eventually be
used by the rom loader to find ROMs. For now it is used by the media
auditor only. [Aaron Giles]
Created info_xml_creator object to wrap all the info generation functions
in info.c. Converted the file to C++ and cleaned up the input processing
code. [Aaron Giles]
(not for whatsnew ... Known issues: auditing of CHDs appears busted, and
debug builds report unfreed memory if you use the built-in game picker)
-------------------------------
Home Run Classic [Mariusz Wojcieszek]
Country Club Classic [Mariusz Wojcieszek]
Trap Shoot Classic [Mariusz Wojcieszek]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Water-Nymph (Ver. 1.4) [Team Europe, Luca Elia]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Major Poker (v2.0) [Roberto Fresca, Tomasz Slanina, Rob Ragon]
conversion efforts: [Atari Ace]
* taito_f3 is disentangled from a number of other drivers by using
an AM_SHARE tag instead of a common variable.
* Several drivers are made into explicit subclasses of other drivers:
8080bw from mw8080bw, missb2 from bublbobl, quasar from cvs, taito_x
from seta.
* arcadecl is separated from rampart by duplicating the bitmap
rendering code.
* jaleco decryption code is moved to jalcrpt.c.
* cischeat is separated from megasys1 by duplicating some video code.
* mcr3 is partly separated from mcr.
* machine/midwunit.c is split into wunit and xunit files with some
code duplication.
* midtunit gfx_rom variables are made distinct from midyunit
variables, making midyunit independent of midtunit.
* contants in namconb1 are duplicated/renamed in namcofl.
* namcos2 uses of namcos21 are eliminated by introducing
namcos2_kickstart.
* toypop is separated from mappy by duplicating some video code.
- Some sets reparented and renamed as well as a cleanup of source comments:
grindstm (parent), vfive (clone)
kingdmgp (parent), shippumd (clone)
The set formerly known as "sstrikera" is now "sstriker" and is now the parent of mahoudai (clone).
Reverted batrid to batrider and bkraid to bbakraid.
- Put common init code into MACHINE_START, leaving DRIVER_INITs only for games that actually need unique initialization.
- Dead code cleanup: Removed old hacks and some no-longer-used used member variables from the driver class.
- ROM banking cleanup: Added a device address map for the OKI in fixeightbl. Stopped misusing the bank system for memory that isn't actually bankswitched (fixeightbl again) Simplified the Z80 ROM banking (and loading) in the Raizing games.
- Address map cleanup: Unified 8-bit shared RAM handling between the Z80-based and the V25-based games. Replaced lots of pointless READ_HANDLERs with AM_RAM_WRITE. Moved fixeight EEPROM handling into the input ports instead of using READ/WRITE_HANDLERs. Incidentally, this makes toaplan2.c the very first MAME driver to use the AM_READWRITE_PORT macro.
- Removed IPT_VBLANK input ports (no longer used since the video rewrite)
- Removed Truxton 2 player 2 "button 4" (after confirming that the game never reads it) and changed player 1 "button 4" to an IPT_OTHER not bound to any key by default, since it's clearly some kind of test/debug input not meant to be hooked up in a regular cabinet (for one thing, it works whether you're actually playing or in attract mode)
- Added button 3 to Batsugun Special Version. It's a full auto fire button like Cave games have. The service mode input test doesn't show it, presumably because Toaplan didn't bother to update the service mode code from the original version of the game.
- Fixed region jumpers and dipswitches in many sets, based on analysis of the program code and strings in the ROMs.
- Added a #define to optionally make Truxton 2 stereo (commented out by default). See the comments at the top of the driver and in the MACHINE_CONFIG.
- Corrected kbash ROM names, thanks to information from Charles MacDonald. Also fixed inconsistent ROM naming between some of the batrider clones.
- Loaded bbakraid default EEPROM as a ROM rather than hardcoding the contents into the driver.
- Completely removed audio/toaplan2.c, which isn't needed any more now that all the V25s are decrypted and hooked up.
memory map, and complete multiplexed inputs/outputs for
Lucky Roulette type games. Also added NVRAM and inverted
blitter [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Lucky Roulette (6-players, Spanish) [Roberto Fresca, Rob Ragon]
New games marked as GAME_NOT_WORKING
------------------------------------
Winners Circle (81) [Roberto Fresca, Rob Ragon]
Winners Circle (82) [Roberto Fresca, Rob Ragon]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Ruleta RE-800 (earlier) [Roberto Fresca]
Ruleta RE-800 (v1.0) [Roberto Fresca]
Ruleta RE-800 (v3.0) [Roberto Fresca, Grull Osgo]
- Removed unneeded #include lines (gal3.c galaxold.c asic65.c)
- Split part of the driver include into a separate multi-driver
include file (audio/exidy.h audio/exidy440.h audio/wiping.h
machine/segag80.h)
- Moved code to a new file/include to be referenced in multiple
drivers (ms32crpt.[ch] opwolf.c rainbow.c)
- Duplicated some code (palette related) between drivers (mainsnk
rollrace sslam)
- Moved a driver specific routine to a generic device file (atarimo)
- Cleaned up a few include files (cubocd32 cidelsa metalmx seicross
thoop2).
[out of whatsnew]
It sounds ~60% correct, and appears to play the right stuff, but there is still much to do.
I'm not respecting the volume command.
I'm not taking sample rate into account.
I'm not doing anything with stereo yet (though funcube doesn't tickle that functionality).
The ADPCM(2?) decoding clearly isn't perfect (I've made a local copy of the oki_adpcm class to mess around with).
The way i set the clock in the seta2 driver should show I don't know what I'm doing :).
None of the channel flags are being interpreted yet.
I haven't hooked up Luca's sigma98 games yet.
--------------------
Dream Fruit [Yohji, Smitdogg, The Dumping Union]
(being very busy lately, so if somebody wants to do this be my guest, shouldn't be too hard as the basics are inside Taito L driver ...)
No-whatsnew explanation: this takes OPTIMIZE=3 compile time for this core from
over 1 hour down to about 2 minutes on PS3 Linux. (Yes, the tms57002 itself
took over an hour to compile before - the thing has 256 MB of RAM and
a very slow HDD so when it hits swap, swap hits back).
- Rewritten some checks to be runtime instead of compile dependent
- Added winmenu.c and "menu" option in windows build
- winmenu.c provide just dummy implementation, and makes linking with actual menu implementation easier.
* New inputs from the scratch for Music Sort.
* Complete DIP Switches and DIP locations for Music Sort.
* Added a new button-lamps layout for Music Sort.
* Created a default NVRAM that allow Music Sort work properly.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Music Sort (ver 2.02, English) [Roberto Fresca, Team Europe]
- Implemented reel layer
- Fixed rogue tiles in xplan
- Hopper emulation in bishjan
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Express Card / Top Card [Smitdogg, The Dumping Union, Luca Elia]
Magic Train [Grull Osgo, Roberto Fresca, David Haywood, Luca Elia]
X-Train [Smitdogg, The Dumping Union, Luca Elia]
into one file, and separated the speaker device into its own file.
Generalized the concept of dynamically assigned inputs and re-wired the
speaker to work this way, so it is now treated just like any other
sound device. Added methods to the device_sound_interface for controlling
output gain and mapping device inputs/outputs to stream inputs/outputs.
Also made the sound_stream_update() method pure virtual, so all modern
sound devices must use the new mechanism for stream updates.
Primary changes outside of the core are:
stream_update(stream) == stream->update()
stream_create(device,...) == machine->sound().stream_alloc(*device,...)
sound_global_enable(machine,enable) == machine->sound().system_enable(enable)
Beyond this, the patterns are relatively obvious for the remaining calls.
- SoftList is incompelte, I hate working with the XML, if somebody wants to add the remaining titles, be my guest
- SMS games have issues, the CPU isn't being properly reset (or something) when moving between games, so stick to only a single SMS game for now or the z80 will crash.
It used to work, but the code has been out of use for a while.
- syntax is MAME megatech -cart1 mt_beast -cart2 mt_soni2 -cart8 mt_shar2
Notes out of whatsnew.txt
* This uses modern devices, but has not been tested in a driver yet, so I may
have done something wrong. I will fix it when the time comes.
* 60% of the disassembler is complete. I will finish it over the next few days.
* There are many similarities in execution to the dsp32, and the existing 32 code
will come in handy when it's time to write the execution engine.
* This thing is a pleasure compared to the dsp56k.
- Now supports uPD7725 and uPD96050
- Hooked up SNES common code to use uPD96050 for ST-010/011
- Removed ST-010 HLE simulation
Non-whatsnew: ST-010 is also found in some ssv.c games so this will be
hooked up there soon.
* machine/megadriv.c + md_pcb.c (originally from MESS) -> machine/md_cart.c [since they only contained code to handle cart loading]
* first half of drivers/megadriv.c (the code shared by mtech/mplay/c2 with MESS) -> machine/megadriv.c [since these are the 'machine' functions shared by arcade and console systems]
* second half of drivers/megadriv.c (the part recently imported from MESS) -> it remains where it was [since it is 'driver'-specific, even if in this case it is a MESS driver]
* drivers/segamsys.c (SMS part of the code used for mtech/mplay) -> machine/segamsys.c [again, these are 'machine' functions]
among other things, this new setup makes the MESS-specific parts (machine/md_cart.c & drivers/megadriv.c) independent from the MAME files, i.e. if we ever decide to change the tree structure, it will be much easier to move these files in any other location of the tree without affecting MAME (or MESS) compile process
This is a proof-of-concept commit. It works but is far from stable. Synchronization between two mame processes is *somehow* (trying to avoid hacked) in. However, this is not HLE. Shared memory is used to share the serial interface lines.
If the shared memory code is not enable, stub functions are used. If you set the link mode to master or slave, "not linked" will be shown in the game. That's better than the previous hang.
Please, no whatsnew.
Yes, it is intentional that the x86/x64 backends compile everywhere.
Backends are now derived from drcbe_interface and implement several
required overrides.
x86emit.h now uses namespaces so that the x86/x64 emitters can co-exist.
New file uml.h/uml.c actually describes the UML language, separating
out several concepts from drcuml.c.
Lots of other changes/fixes.
- Also fixes bzone regression.
- Contexts have disappeared now. All modules use class level private variables now.
- Reorganized code and added more include files.
- This is still work in progress. It is working though.
- all nodes are now class based
- removed all support for "legacy", i.e. procedural node functions.
- nodes are created using a class factory whose instances
are set up in discrete blocks. There is no separation of
node vs. module any longer.
- Custom modules are now just implemented like "normal" nodes.
- Converted all custom modules.
- Context variables can now be migrated to be private class members.
[Couriersud]
- Implemented dynamic tile sizes
- Generalized video routines to support more layers
- Moved mtrain in from subsino.c
New games added or promoted from NOT_WORKING status
---------------------------------------------------
X-Plan [Bicycle Repair Man, Luca Elia]
---------
X-Plan [Bicycle Repairman]
vram is weird to say the least but run out of time, if somebody (Haze, Arbee, Dox?) wants to look at it be my guest.
* Note: This patch simply adds the ROM to MAME. Much work still needs to be done to
hook it up to gaplus and document the chip itself.
Please note the MCU is currently disabled because the device has a
MCFG_DEVICE_DISABLE() in namco62.c.
- Added GAME_MECHANICAL flag to mark games having mechanical interface (such as pinball,redemption, bowling games ...)
- Imported games from PinMAME as skeletons
New games marked as GAME_NOT_WORKING
------------------------------------
Bank Robbery (Ver. 2.00) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Bank Robbery (Ver. 3.32) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Deuces Wild 2 - American Heritage (Ver. 2.02F) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Maxi Double Poker (Ver. 1.10) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Mega Double Poker (Ver. 1.63 Espagnol) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Mega Double Poker Jackpot (Ver. 1.26) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Poker 52 (Ver. 1.2) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
The Hermit (Ver. 1.14) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
---------------------------------------------------
Dai San Wakusei Meteor - Hau, Chack'n
Comments:
This is the initial check-in of the driver which was posted (plus some driver notes based on some quick tests). If anyone has work they need to add (discrete audio, dip/input improvements), please work with this as a base.
Date: Sun, Nov 7, 2010 at 3:43 PM
Subject: [patch] Split entangled drivers
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch takes some driver_device classes that cover multiple
drivers and splits them so that each driver gets their own
driver_device class. In most cases, these drivers got entangled
because of audio/mcu code that was shared between multiple drivers.
The first patch breaks that dependency by making a separate base class
for the common code and having each driver_device derive from that.
That solution isn't really the typical MAME approach, so the second
incremental patch changes them into proper devices.
espial/marineb/zodiak
- common code duplicated
m52/m57/m58/m62/travrusa
- common code in audio/irem.c
junofrst/pooyan/rallyx/rocnrope/timeplt/tutankm
- common code in audio/timeplt.c
hyperspt/sbasketb/trackfld/yiear
- common code in audio/trackfld and audio/hyprolyb.c
40love/bking/buggychl/msisaac
- common code in machine/buggychl.c
module osdepend.c with default empty implementations. Changed
mame_execute() and cli_execute() to accept a reference to an
osd_interface which is provided by the caller.
Updated SDL and Windows OSD to create an osd_interface-derived
class and moved their OSD callbacks to be members.
This needs an unfortunate hack with a dummy driver added to seed references to
the devices that are only otherwise referenced by libemu.a.
Also removed SOUNDS += CUSTOM since such a sound device no longer exists.
* Almost accurate memory map.
* Decoded graphics.
* Decoded the bipolar PROM.
* Detected a CRTC (MC6845 type) reversing the code.
* Guessed the CRTC clock to get proper values.
* Hooked the AY-3-8910.
* Added games notes.
* Added technical notes.
New games marked as GAME_NOT_WORKING
------------------------------------
Symbols (ver 1.4) [Roberto Fresca, Dave Ormiston]
Symbols (ver 2.5) [Roberto Fresca, Dave Ormiston]
Arrow Bingo [Roberto Fresca, Dave Ormiston]
NFL (ver 109) [Roberto Fresca, Dave Ormiston]