MAME 0.119u3 was released on 5 October 2007.
The known contributors for this version are, in alphabetical order:
The known contributions for this version are, in the order specified in the whatsnew:
- David Haywood fixed the Cabal (joystick) submission from the previous release.
- David Haywood made a few improvements to dealem (well you can see the game now..)
- R. Belmont fixed the broken SCSP from the last update.
- Nathan Woods changed parameters to read/write handlers from "address" to an unmodified "original_address" parameter (having the passed parameter being unmodified makes it easier to determine the original value while debugging).
- Philip Bennett tweaked the handling of x86 WAIT instruction, and changed the following x86 instructions to read/write an entire word rather than two separate bytes:
- stosw (8086 only)
- rep stosw (8086 only)
- robiza made several more opcode fixes for Risky Challenge.
- Atari Ace cleaned up the include file usage in the code:
- Removed dead prototypes
- Added missing self-#includes
- Added missing source comments in mame/includes
- Migrated the few #include "driver.h" lines from driver header files to source files (which is the common idiom).
- Eliminated #include "mame.h", "osdcore.h" et cetera from driver files where #include "driver.h" would suffice.
- Removed unused srmp6.h and 9900stat.h
- David Haywood added the rom loading for the various 5*XX roms, which are dumped but not yet hooked up.
- Pierpaolo Prazzoli updated the gstream driver:
- Changed to use a default nvram handler
- Checked the inputs
- Aligned the sprites
- Added some comments about oki banking
- Ernesto Corvi completed a major Sega Model 2 rewrite:
- Decoupled the geometry engine code from the hardware rasterizer. At this point, we could add emulation of the geometry DSPs for the 2B and 2C models, and hook them directly to the rasterizer. For the original and 2A models, an HLE geometry engine is provided (currently in use for all models).
- Full Geometry Engine simulation, including support for specular, multiple centers and dual polygon RAM.
- Support for all textured/transparent/checkered rendering modes.
- Improved texel/luma modulation
- Improved viewport clipping
- Improved z clipping
- Extensive notes and documentation.
- Greatly improved near Z-Clipping, still not perfect though.
- Improved perspective-correct texturing for large textures.
- Improved Z-Sorting
- Atari Ace changed Machine to machine in several places where feasible.
- Aaron Giles changed the OSD layer so it is now required to supply to additional synchronization primitives: osd_compare_exchange32() and osd_compare_exchange64(). These primitives should implement an atomic compare and exchange of 32-bit and 64-bit values, respectively. Added implementations of these functions to the Windows OSD layer.
- Aaron Giles defined two new inline functions that are built on the new OSD primitives: osd_compare_exchange_ptr(), which performs an atomic compare/exchange on a pointer of the appropriate size, and osd_sync_add() which atomically adds a value to a location in memory.
- Aaron Giles changed the implementation of OSD work queues that are created with the WORK_QUEUE_FLAG_MULTI hint. Such queues now create n-1 threads, where n in the number of logical processors in the system. This allows the main thread to continue accomplishing things while other threads process the work. If the main thread subsequently calls osd_work_queue_wait(), it will then dynamically "jump in" and help the other threads complete all the work items.
- Aaron Giles added a new work item flag WORK_ITEM_FLAG_SHARED. When specified on a work item that is queued to a work queue created with the WORK_QUEUE_FLAG_MULTI hint, it means that all threads will be dispatched to process the one work item, instead of the first thread removing it. These "shared" work items are only considered complete when all processing threads have returned.
- Aaron Giles added support for controlling multithreading behavior through an environment variable OSDPROCESSORS. To override the default behavior, set OSDPROCESSORS equal to the number of logical processors you wish the OSD layer to pretend you have.
- Aaron Giles changed the 3dfx Voodoo emulation code to take advantage of the new threading mechanisms above. It now creates a work queue with the WORK_QUEUE_FLAG_MULTI flag set, and uses shared work items to spread rasterization work across multiple processors. Note that this support should be considered experimental; under some circumstances it is known to deadlock. If you encounter problems, set OSDPROCESSORS to 1 to effectively produce the previous behavior.
- Aaron Giles added "top 20" dedicated rasterizers for all the Seattle games and Gauntlet Legends/Dark Legacy. These improve rasterization performance by another 10-20%.
- Aaron Giles fixed several more bugs in the 64-bit MIPS recompiler. It is now capable of running the Seattle games and the 3D Gauntlets.
New games added or promoted from NOT_WORKING status
New clones added
New games marked as GAME_NOT_WORKING