MAME/0.37 Part 2

From GamerWiki

Jump to: navigation, search

A warts and all look through the history of MAME as described by the MAME Dev team themselves through their releases.

Contents

MAME 0.37b9 "Sega C2 / Taito systems / Cavelon"

Released: 2000-11-06

A handful of drivers haven't been converted to the new memory API yet, and therefore don't work. On startup, they will give the error cpu # uses wrong data width memory handlers! and refuse to start.

These drivers have improved GRAPHICS

  • Fixed last two levels in Act Fancer. [Bryan McPhail]

Source

  • Major rewrite of the memory interface.
The interface to the system is nearly identical, but the core has been rewritten. Input ports are now handled just like memory accesses. Input ports are also the same width as memory for a given CPU. For example, a 16-bit CPU now needs both 16-bit memory handlers and 16-bit port handlers. Interfaces for 16-bit and 32-bit port handlers have been added.
New macros exist now for generating and declaring a set of memory handlers.
This makes it very easy to add a new address space. The "voodoo constants" ABITS1_xx, ABITS2_xx and ABITSMIN_xx are no longer necessary.
The number of supported banks has been expanded to 24. The memory_set_bankhandler_* functions now take an additional parameter which serves as an additional offset into the memory space. The namcos1 driver has been modified to take advantage of these features.
It is now possible to manually limit the number of active address bits by using a special MEMPORT_SET_BITS() macro in the read or write memory definitions. See the rpunch driver for an example (Rabio Lepus only maps the low 20 bits of the 68000's 24-bit address space.)
A new function cpu_get_pc_byte returns the byte offset of the current CPU's PC, adjusted for Harvard architecture CPUs and CPUs which track the PC at the bit or word level.
Several functions and macros have been renamed. All drivers have been updated accordingly:
cpu_setbankhandler_* -> memory_set_bankhandler_*
cpu_setOPbaseoverride -> memory_set_opbase_handler
memoryswapcontext -> memory_set_context
cpu_readport -> cpu_readport16
cpu_writeport -> cpu_writeport16
change_pc -> changepc_16
[Aaron Giles]
  • Major rewrite of the ROM loading interface.
The previous ROM loading system was showing its limitations, and was often the source of confusion about byte ordering. The new system attempts to address these concerns. All drivers have been converted to use the new system exclusively; the old macros are deprecated immediately.
The ROM_REGION macro now takes a third parameter, which holds the various flags for the region. These flags have been expanded to describe the data width and endianness of the region (except for CPU regions, which obtain their width and endianness from the associated CPU). This information is used after the region has been loaded in order to appropriately byte-swap the data for the native endianness of the target platform.
Additional region flags are now provided: ROMREGION_INVERT performs a logical NOT on all data in the region. And ROMREGION_ERASE can be used to clear the region to a specific byte value before loading ROMs.
For ROM loading, the old collection of ROM_LOAD_XXX_EVEN/ODD macros is gone. To load a ROM into every other byte in a region, use the new macro ROM_LOAD16_BYTE. All data should now be loaded in the natural alignment and endianness of the region. Only after the ROMs are loaded will the data be modified to correspond to what the CPU needs.
If you are loading data for a CPU into a non-CPU region (for example, you are loading 68000 code into REGION_USER1), you need to make sure to tag the region the same as the CPU. For a user region containing 68000 code, you should use the ROM_REGION16_BE() macro to declare the region. This isn't necessary for REGION_CPUxx because the ROM loader automatically determines the information it needs from the CPU interface.
If you have old drivers to convert, these conversions cover 99% of all cases (the (0) or (1) indicates that the offset field should be an even (0) or an odd (1) address):
ROM_LOAD_EVEN -> ROM_LOAD16_BYTE(0)
ROM_LOAD_ODD -> ROM_LOAD16_BYTE(1)
ROM_LOAD_WIDE -> ROM_LOAD16_WORD
ROM_LOAD_WIDE_SWAP -> ROM_LOAD16_WORD_SWAP
ROM_LOAD_GFX_EVEN -> ROM_LOAD16_BYTE(0)
ROM_LOAD_GFX_ODD -> ROM_LOAD16_BYTE(1)
ROM_LOAD_GFX_SWAP -> ROM_LOAD16_WORD_SWAP
ROM_LOAD_V20_EVEN -> ROM_LOAD16_BYTE(1)
ROM_LOAD_V20_ODD -> ROM_LOAD16_BYTE(0)
ROM_LOAD_V20_WIDE -> ROM_LOAD16_WORD
These new macros are built upon a more flexible collection of ROM-loading operations. ROM data is now loaded in "groups" of 1-16 bytes, with 0-15 bytes of empty space left between each group. The data in each group can be loaded in standard order, or in reversed order. And each byte of data loaded can be masked and shifted to blend with other data that has been previously loaded.
Furthermore, since almost every ROM_RELOAD and ROM_CONTINUE was used to load the ROM with the exact same parameters, these macros now inherit the behavior of the previous operation. This eliminates the need for ROM_RELOAD_GFX_EVEN and all the other macros that cluttered up the old system. For example, if you use ROM_LOAD16_BYTE to load some data, and follow it with a ROM_CONTINUE to load additional data at a separate offset, the ROM loader will continue loading every other byte.
Finally, there are two new entries that can be used to help fill in unused or duplicated ROM data:
ROM_FILL( offset, length, byteval)
ROM_COPY( source_region, source_offset, offset, length )
ROM_FILL simply clears blocks of a region to a specific byte value.
ROM_COPY can be used to copy previously-loaded data from the same or another region.
[Aaron Giles]
  • The 68EC020 core now uses 32-bit memory handlers. The Psikyo driver has been updated to use the new interface. Unfortunately, this support has yet to make it into the x86 asm 68000 core, so it is once again disabled for this build. [Aaron Giles]
  • The CCPU and TMS32C010 cores are now full 16-bit cores. Appropriate changes to the drivers that use them have already been made. This fixes the input ports on the Cinematronics games, and gameplay in several Toaplan games. [Aaron Giles]

New games supported

New clones supported

MAME 0.37b10 "CVS / Incredible 8-bit Technologies"

Released: 2000-12-05

These drivers have improved GRAPHICS

  • Improved colors in Mr. Do!. [Nicola Salmoria]
  • Fixes to Xexex. [Olivier Galibert]

These drivers have improved SOUND

  • Fixed a YMZ280B bug that caused bad sound in the Cave games. [Bernd Wiebelt]

Other drivers changes

  • Improved C-chip simulation in Rainbow Island, fixing secret rooms. [Stefan Jokisch]

Changes to the main program

  • Paddles now map linearly to the analog joystick.

Source

  • New functions draw_scanline8() and draw_scanline16() to help bitmap based games in supporting display rotation and 16-bit video modes. Converted a number of drivers to this new system. [Aaron Giles]

New games supported

New clones supported

MAME 0.37b11 "This is the mysterious IT (32) / VS NES / Taito F3 with sound"

Released: 2001-01-17

These drivers have improved GRAPHICS

  • Fixed sprite zooming in the Cave games. [Shiriru]

Other drivers changes

  • Some fixes to YMZ280B emulation. [Shiriru]
  • Better fixes to Rainbow cchip, the secret rooms now work and display the correct secret codes. [Stefan Jokisch]

Source

  • Some support for discrete component sound emulation. [Keith Wilkins]
  • ES5505/6 emulation. [Aaron Giles]

New games supported

New clones supported

MAME 0.37b12 "Looping CPS-2 Mahjong"

Released: 2001-02-15

These drivers have improved GRAPHICS

  • Fixed colors in Wiz. [Nicola Salmoria]
  • Fixed auto animation speed in the NeoGeo games. [Ralf Willenbacher]
  • Fixed raster effects in mosyougi (title screen) and viewpoint (Sammy logo). [Nicola Salmoria]
  • Accurate emulation of sprite multiplexing in Gyruss (also emulating the slave 6809) and Time Pilot. [Nicola Salmoria]
  • Some fixes to the Cave games. [Shiriru]
  • Fixed colors and music tempo in Battle Lane. [Nicola Salmoria]

These drivers have improved SOUND

Source

  • All new set of functions for alpha blending support, used in Xexex.
Porters: you have to support direct mapped 15 and 32 bits video modes. Remember to update osd_alloc_bitmap() too! See osdepend.h for the changes in osd_create_display() and osd_allocate_colors(). [Olivier Galibert]
  • draw_crosshair(). [Nicola Salmoria]
  • GAME_IMPERFECT_GRAPHICS flag for game drivers.
  • Standalone YM2413 emulator, giving much better sound in e.g. Pang. [Mitsutaka Okazaki, Sean Young]
  • [DOS] Now compiled with Allegro WIP 3.9.34, this fixes problems with the Sidewinder gamepad. GNU Binutils 2.9.5.1 might also be needed to compile.
  • New filtering code for the audio mixer. It is applied to audio streams generated at a sampling rate different from the sound card's one, improving quality. Some examples with a very audible difference are: fantasy, polyplay, galaxian (the background effect when playing), nibbler, vanguard and all the Seta games.
[DOS] The "resamplefilter" option can be used to turn the filtering off.
[Andrea Mazzoleni]

New games supported

New clones supported

MAME 0.37b12_fix

Released: 2001-0?-??. No documented changes.

MAME 0.37b13 "DECO Cassette System"

Released: 2001-03-10

These drivers have improved GRAPHICS

  • Fixed raster-style effects in Metal Black. [Bryan McPhail, David Graves]

These drivers have improved SOUND

Other drivers changes

Changes to the main program

  • [DOS] Added a workaround for the slow PC keyboard interface. This makes it easier to accomplish special moves that require two or three keys pressed at the same time, but delays response by at least one frame.
The change doesn't affect josyticks and keypads connected through the game or USB ports. [Nicola Salmoria]

Source

  • 16-bit and 32-bit read memory handlers now have the additional mem_mask argument, like write handlers.
  • Removed TRANSPARENCY_THROUGH mode for drawgfx().
  • NEC UPD7810 CPU emulation. [Juergen Buchmueller]

New games supported

New clones supported

Removed

MAME 0.37b14 "Various"

Released: 2001-04-07

These drivers have improved GRAPHICS

  • Fixed sprite priorities in Hachoo. [Nicola Salmoria]

These drivers have improved SOUND

  • Sound in Looping. [Mathis Rosenhauer]
  • Improved subwoofer sounds in ninjaw and darius2d. [Andrea Mazzoleni]

Changes to the main program

  • [DOS] The keyboard special handling introduced in the previous beta, which makes it easier to register two- or three-button presses, is now optional.
By default it's off; to turn it on, use -steadykey. [Mike Coates]
  • Changed 4-way emulation on a 8-way joystick to "sticky" mode. This makes Lady Bug and other 4-way games more playable.
Explanation here: http://www.rentrondesign.homestead.com/JoyPrimer.html [Jeoff Krontz]

Source

  • MB87078 emulation, used by some Taito B games. [Jarek Burczynski]
  • New helper macros BITSWAP8(), BITSWAP16() and BITSWAP24().

New games supported

New clones supported

MAME 0.37b15 "Conquering Windows"

Released: 2001-05-24

These drivers have improved GRAPHICS

  • Improved special effects and fixed pixel layer colors in the Taito F3 games. [Bryan McPhail]

These drivers have improved SOUND

Other drivers changes

  • Fixed Arkanoid "instant death in final round" bug. [Frotz]
  • Fixed the NEC cpu bug that caused slowdowns in Raiden. [Bryan McPhail]

Changes to the main program

  • Fixed 68020 emulation bugs that prevented many Taito F3 games from working. [Bryan McPhail]
  • Rewritten the cheat engine. [Ian Patterson]

Source

  • The main binary distribution of MAME is now a completely new win32 console port. Some of the benefits are: support for full screen hardware stretching (if you have a decent video card), and a much better command line / options file parsing (ported from xmame).
To create the mame.ini configuration file on startup, use the -createconfig option. -showusage lists all available options. [Aaron Giles, Bernd Wiebelt]

New games supported

New clones supported

MAME 0.37b16 "Blitter effects"

Released: 2001-07-02

These drivers have improved GRAPHICS

  • Fixed colors and other things in Arabian. [Aaron Giles]
  • Fixed colors and other stuff in ninjakun. [Uki]
  • Fixed sprite priorities in CPS2 games. [Shiriru]

These drivers have improved SOUND

  • Fixed incomplete first credit sound in MetalB and other F2 games, and bonzeadv player shoot sound. [Stefan Jokisch]

Other drivers changes

  • Partial protection simulation in Avengers. [Phil Stroffolino]
  • Fixed Toki original versions. [David Graves, Bryan McPhail]
  • Fixed Cabal original version. [Nicola Salmoria]
  • Fixed some protection issues in Wiz. [Stefan Jokish]

Changes to the main program

  • [Windows] New command line parameter: -effect <string>
-effect none: no blitting effects
-effect scan25: 25% scanlines
-effect scan50: 50% scanlines
-effect scan75: 75% scanlines
-effect rgb3
-effect rgb4
-effect rgb6
-effect rgb16
-effect rgbtiny
-effect rgb4v
-effect scan75v
[Aaron Giles]

Source

  • New subdirectory "includes" for driver-specific header files.
  • Added new flags for the tilemap subsystem: TILE_SWAXY and TILE_4BPP. Also added tile_info.skip. SET_TILE_INFO() now has a third parameter (flags), tilemap_set_transmask() sets independently the transparency masks for the front and back layer, and tilemap_draw() can be called with a NULL tilemap (in that case, only the priority bitmap is updated). [Phil Stroffolino]
  • Support for GFX_RAW in GfxLayout (see drawgfx.h). [Nicola Salmoria]

New games supported

New clones supported

Other Versions


Personal tools