0.37 BETA 9


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:
--------------------

Cavelon [Paul Swan]
M660 [Paul Swan]
The FairyLand Story []
Balloon Brothers [Yochizo]
Gigandes [Yochizo]
Daisenpu [Yochizo]
Battle Garegga [Yochizo]
Armed Police Batrider [Yochizo]
After Burner [Phil Stroffolino, Dave]
After Burner II [Phil Stroffolino, Dave]
Bloxeed [David Haywood, Aaron Giles]
Columns [David Haywood, Aaron Giles]
Columns II - The Voyage Through Time [David Haywood, Aaron Giles]
Borench [David Haywood, Aaron Giles]
ThunderForce AC [David Haywood, Aaron Giles]
Tant-R (Puzzle & Action) [David Haywood, Aaron Giles]
Puyo Puyo [David Haywood, Aaron Giles]
Stack Columns [David Haywood, Aaron Giles]
Poto Poto [David Haywood, Aaron Giles]
Zunzunkyou No Yabou [David Haywood, Aaron Giles]
Hard Drivin' [Aaron Giles, Ernesto Corvi]
Saboten Bombers [Mirko Buffoni]
Scud Hammer [Luca Elia]
Thunder & Lightning [Luca Elia]
Rezon [Luca Elia]
Athena no Hatena [Luca Elia]
Oishii Puzzle Ha Irimasenka [Luca Elia]
Eight Forces [Luca Elia]
Pro Mahjong Kiwame [Luca Elia]
Krazy Bowl [Luca Elia]
Battle K-Road [Luca Elia]
Naname de Magic! [Nicola Salmoria]
Asuka & Asuka [David Graves, Brian Troha]
Maze of Flott [David Graves, Brian Troha]
Galmedes [David Graves, Brian Troha]
Earth Joker [David Graves, Brian Troha]
Kokontouzai Eto Monogatari [David Graves, Brian Troha]
Cadash [David Graves]


New clones supported:
---------------------

The King of Dragons (US)
Street Smart (World version 1)
Two Tigers (dedicated)
Manhattan 24 Bunsyo (= Jail Break)


==========================================================================


0.37 BETA 8


These drivers have improved GRAPHICS:
-------------------------------------

- Fixed scrolling in Major Title and priority in Hammerin' Harry.
  [Nicola Salmoria]


These drivers have improved SOUND:
----------------------------------

- Preliminary sound in Blade Master, Gunforce, UUCops and Lethal Thunder.
  [Bryan McPhail]


Source:
-------

- Major changes to the memory interface.
  Drivers must use the new MEMORY_READ_START etc. macros, and for 16-bit CPUs
  the API is completely changed: the new READ16_HANDLER, WRITE16_HANDLER
  function types must be used for memory handlers. The macros READ_WORD(),
  WRITE_WORD() etc. are obsolete: handlers must directly access 16-bit wide
  arrays (use data16_t * instead of the old unsigned char *); always use the
  new macro COMBINE_DATA() to store data in the arrays correctlyhandling 8-bit
  wide memory accesses. Use ACCESSING_MSB and ACCESSING_LSB to know if the
  specified byte is being accessed (necessary for 8-bit wide external hardware).
  You no longer have to use MRA_BANKx for sparse RAM areas, you can use MRA_RAM
  just like with the 8-bit games.

  A handful of drivers haven't beenconverted to the new 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.

  The cheat system might be broken for 16-bit CPUs (untested).
  [Juergen Buchmueller]

- Changes to the tilemap API:
  - tilemap_render() is obsolete
  - struct tilemap is private - can't be accessed directly
  - tilemap_set_transparent_pen() and tilemap_set_transmask() replace direct
    poking in the tilemap
  - tilemap_mark_all_pixels_dirty() is obsolete (replaced by
    tilemap_dirty_palette() which is automatically called by palette_recalc())
  - additional parameter to tilemap_draw() to specify the priority mask to be
    stored in the priority buffer
  [Phil Stroffolino]

- Removed palette_transparent_color which is no longer needed by any driver.
  [Nicola Salmoria]

- Removed the "ui" parameter from osd_mark_dirty(). [Nicola Salmoria]

- Removed osd_clearbitmap(). The correct way to black the screen in drivers
  is, and has always been, fillbitmap(). osd_alloc_bitmap() no longer has to
  clear the bitmap (it isn't necessary since it's cleared by the drivers
  anyway).
  extern int need_to_clear_bitmap removed as well; use schedule_full_refresh()
  instead (clearing the bitmap is not necessary because drivers are required to
  redraw the whole screen when full_refresh is 1). [Nicola Salmoria]

- Rewritten the Nec CPU core, with correct timing and support for encryption.
  [Bryan McPhail]

- Preliminary Irem GA20 sound emulation. [Bryan McPhail]

- The profiler also watches memory read and write handlers. They were
  previously cumulated with the CPU emulation.
  Also, the profiler is now disabled in non-debug builds because the
  performance hit is quite noticeable. [Nicola Salmoria]

- The x86 asm 68000 core now has limited 68020 support and runs the Psikyo
  games, so is reenabled by default. [Darren Olafson]


New games supported:
--------------------

dozens of Nichibutsu mahjong and quiz games [Takahiro Nogi]
Super Dodge Ball [Paul Hampson, Nicola Salmoria]
Macross [Mirko Buffoni]
Macross II [Nicola Salmoria]
Nouryoku Koujou Iinkai [Nicola Salmoria]
Strahl [Bryan McPhail]
Pushman [Bryan McPhail]
Bomberman [Bryan McPhail]
Bomberman World [Bryan McPhail]
Donpachi [Luca Elia]
Blaze On [Luca Elia]
Beezer [Mathis Rosenhauer]
Sel Feena [Jarek Burczynski]
Libble Rabble [Edgardo E. Contini Salvan]
STUN Runner [Aaron Giles]


New clones supported:
---------------------

Hissatsu Buraiken (= Avengers)
Sky Adventure (Japan)
Gunforce (Japan)
Daiku no Gensan (Japan, M72)
Warriors of Fate (US)
Street Fighter II (US revision I)


==========================================================================


0.37 BETA 7

-- FIRST, A WORD FROM OUR SPONSOR --

Some time ago I (Nicola) mistakenly removed Lotto Fun because I thought it was
a gambling machine. After some more careful evaluation, it is evident that
this is a game of skill, therefore it is now supported again. This was my
mistake and I apologize for that.

As a reminder, the exclusion of gambling machines is purely technical, not
moral or legal. Gambling machines are not video games, and just like MAME
doesn't support mechanical pinballs (but it supports software pinballs), it
also doesn't support gambling machines (but it supports games with a gambling
theme). Both mechanical pinballs and gambling machines can be found in the
same places where video games are; this doesn't make them all the same thing.
The distinction between gambling machines and video games is not arbitrary:
gambling machines usually require more money to play than a video game (e.g.
10 tokens to start), and they have settings that allow the operator to decide
how much of the money that comes in should come out. No amount of skill can
improve a player's chances of winning: this is entirely predetermined by the
machine.

-- WE NOW RETURN YOU TO YOUR USUAL PROGRAMMING --


These drivers have improved GRAPHICS:
-------------------------------------

- Stars in Strider and Forgotten Worlds. [Nicola Salmoria, Tim Lindquist]

- Fixed sprite/tile priority in Black Tiger. [Nicola Salmoria]

- Fixed startup garbage in Vastar. [Zsolt Vasvari]


Other drivers changes:
----------------------

- Fixed the Pokey emulation so that the Tempest reset bug is fixed, this time
  for real and forever. [Juergen Buchmueller]


Source:
-------

- Important for porters: changes to the dirty marking system. The blitting
  code was previously required to support two types of dirty marking: a
  "correct" one, used for vector games, where only the screen portions marked
  dirty during the current frame should be copied to the video card; and a
  "wrong" one, relying on a hack, where the blitter was also required to
  remember the dirty regions from *previous* frame, and copy those as well.
  Only the "correct" one is left, which should somewhat simplify dirty
  handling in the OS dependant code. Moreover, the code must not check for
  VIDEO_TYPE_VECTOR to know whether to use dirty marking: it must check only
  VIDEO_SUPPORTS_DIRTY, which is set for vector games.

- Important for porters: the HAS_XXX constants for cpu and sound emulation are
  no longer #defined in cpuintrf.h if they were not already defined. They are
  set by the makefile (rules.mak). If you are not using that in your port,
  you'll have to make sure that all constants are initialized somewhere.

- Removed osd_led_w(); instead, an additional leds_status parameter is passed
  to osd_update_video_and_audio(). Drivers now have to use set_led_status().

- [DOS] The makefile now uses GNUs mkdir instead of the built-in one. If you
  don't have mkdir you  can find it here:
  http://www.simtel.net/pub/simtelnet/gnu/gnuish/gnufut21.zip

- Added VIDEO_PIXEL_ASPECT_RATIO_2_1, this should be honored by the OS
  dependant code just like VIDEO_PIXEL_ASPECT_RATIO_1_2.

- Backdrops are handled by the core like overlays, specific support in the
  drivers is no longer necessary. [Mathis Rosenhauer]


New games supported:
--------------------

dozens of PlayChoice-10 games [Ernesto Corvi]
Mahou Daisakusen [Yochizo]
Shippu Mahou Daisakusen [Yochizo]
Hot Pinball [Nicola Salmoria]
Fantasia [Nicola Salmoria]
New Fantasia [Nicola Salmoria]
Miss World '96 Nude [Nicola Salmoria]
Big Twin [Nicola Salmoria]
World Beach Volley [Nicola Salmoria]
Xexex [Olivier Galibert]
Mag Max [Takahiro Nogi, Jarek Burczynski]
Thief [Phil Stroffolino]
NATO Defense [Phil Stroffolino]
Super Invader Attack [Mike Coates]
Buggy Challenge (preliminary, feedback needed) [Ernesto Corvi, Nicola Salmoria]
Knuckle Joe [Ernesto Corvi]


New clones supported:
---------------------

Winter Bobble (= Snow Bros) [David Haywood]


==========================================================================


0.37 BETA 6


Other drivers changes:
----------------------

- Several fixes and improvements to the Taito L games (sound, priorities,
  speed). [Nicola Salmoria, Jarek Burczynski]

- I hope you didn't throw away unused PROMs from your archives.


Changes to the main program:
----------------------------

- [DOS] Instead of the internal game name, you can use on the command line
  the .zip file name, it can also include path, so for example
  MAME G:\MyBoards\pacman.zip
  will be equivalent to
  MAME pacman -rompath G:\MyBoards
  [David Widel]


Source:
-------

- [DOS] The makefile now uses rm instead of deltree. If you don't have rm you
  can find it here: http://www.simtel.net/pub/simtelnet/gnu/gnuish/gnufut21.zip

- TMS5110 emulator, used by Bagman. [Jarek Burczynski]

- Several changes to have the debugger run in the game screen under DOS.
  The debugger display is now entirely rendered in the core using a standard
  bitmap, instead of relying on the OS dependant code to simulate a character
  mapped display.
  Changes affecting porters are:
  osd_set_display() removed
  osd_set_screen_size() removed
  osd_screen_update() removed
  osd_wait_keypress() removed
  osd_debugger_focus() added
  osd_dbg.h removed
  osd_update_video_and_audio() has extra debug_bitmap argument
  osd_allocate_colors() has parameters for the debugger palette
  mamedbg.c no longer requires clock_t and clock()
  It's entirely up to the OS dependant code what to do with the game and debug
  bitmaps. They can be shown one at a time (giving the user a means to switch
  between them), or in two separate windows. osd_debugger_focus() is used to
  request that one of the two bitmaps be made visible to the user.
  Under DOS, you can switch at any time between the game and debugger display
  by pressing F5.
  [Juergen Buchmueller]

- Removed osd_poll_joysticks(). Ports requiring polling of the joystick can do
  so in osd_update_video_and_audio().

- True HD6309 emulation (instead of using the M6809). [Tim Lindner].


New games supported:
--------------------

Mega Blast [Brad Oliver]
Metal Black [David Graves]
Big Karnak [Manuel Abadia]
Biomechanical Toy [Manuel Abadia]
Back Street Soccer [Luca Elia]
Sky Fox / Exerizer [Luca Elia]
Space Beam [Peter Trauner]
Kuri Kinton [Nicola Salmoria]
Play Girls [Nicola Salmoria]
Play Girls 2 [Nicola Salmoria]
Karian Cross [Nicola Salmoria]
Logic Pro [Nicola Salmoria]
Logic Pro 2 [Nicola Salmoria]
The Last Day [Nicola Salmoria]
Pollux [Nicola Salmoria]
Blue Hawk [Nicola Salmoria]
Primella [Nicola Salmoria]
R-Shark [Nicola Salmoria]
Gals Pinball [Nicola Salmoria]
Video Pinball [Sebastien Monassa]
Truxton II / Tatsujin II / Tatsujin Oh [Yochizo]


New clones supported:
---------------------

Knights of the Round (US)
Slam Masters (US)
Batsugun (Special version)
Pipi & Bibis (bootleg?)


==========================================================================


0.37 BETA 5


These drivers have improved GRAPHICS:
-------------------------------------

- Fixed black blobs in Carrier Air Wing. [Nicola Salmoria]

- Fixed multiple beer trucks in Cops 'n Robbers [Colin Douglas Howell]


Other drivers changes:
----------------------

- Complete rewrite of the 34010 drivers. [Aaron Giles]

- Fixed protection in Slam Masters. [Nicola Salmoria]

- Lots of improvements to the Taito F2 driver. [David Graves]

- Fixed Terminator 2 crashes. [Ernesto Corvi]


Source:
-------

- New video flag VIDEO_NEEDS_6BITS_PER_GUN to indicate to the OS dependant
  layer that a 16-bit display is not enough to reproduce the whole game's
  palette and a 24-bit display is preferred.

- Support for compressed PCM playback in the C140 emulator. [CAB]

- YMZ280B sound emulation, used by the Cave games. [Aaron Giles]

- ADSP2105 cpu emulation, used by Mortal Kombat 2 sound. [Ernesto Corvi]

- New functions in cpuintrf.c: cpu_get/set_cycle_table(),
  cpu_set_irq_callback(). [Juergen Buchmueller]

- New cpu cores and fixes to old ones. [Juergen Buchmueller]

- New graphic primitive copyrozbitmap(). This replaces copybitmapzoom() which
  was a special case.
  A side effect is that, thanks to the better precision, the boxer on the
  Punch Out hall of fame looks much better. [Nicola Salmoria]

- Abstracted Taito F2 gfx chip emulation to vidhrdw/taitoic.c (there's also
  some non-gfx chips in there). There are many other Taito games using these
  chips. [Nicola Salmoria]


New games supported:
--------------------

Final StarForce [E. Watanabe]
Ganbare Ginkun [E. Watanabe]
Dodonpachi [Luca Elia]
Sengoku Ace [Luca Elia]
Gun Bird [Luca Elia]
Caliber 50 [Luca Elia]
Dragon Unit [Luca Elia]
Blandia [Luca Elia]
Shanghai 3 [Nicola Salmoria]
Hebereke no Popoon [Nicola Salmoria]
Blocken [Nicola Salmoria]
LSA Squad [Nicola Salmoria]
Oli-Boo-Chu [Nicola Salmoria]
TT Mahjong [Takahiro Nogi, PongKang]
Royal Mahjong [Zsolt Vasvari]
Gun Frontier [David Graves, Nicola Salmoria]
Ah Eikou no Koshien [David Graves, Nicola Salmoria]
Thunder Fox [David Graves, Nicola Salmoria]
Ninja Kids [David Graves, Nicola Salmoria]
Solitary Fighter [David Graves, Nicola Salmoria]
Dino Rex [David Graves, Nicola Salmoria]
Quiz Chikyu Bouei Gun [David Graves, Nicola Salmoria]
Quiz Torimonochou [David Graves, Nicola Salmoria]
Quiz HQ [David Graves, Nicola Salmoria]
Yuuyu no Quiz de GO!GO! [David Graves, Nicola Salmoria]
Mahjong Quest [David Graves, Nicola Salmoria]
Quiz Quest - Hime to Yuusha no Monogatari [David Graves, Nicola Salmoria]
Don Doko Don [David Graves, Nicola Salmoria]
PuLiRuLa [David Graves, Nicola Salmoria]
Dead Connection [David Graves, Nicola Salmoria]
Football Champ [David Graves, Nicola Salmoria]
Final Blow [David Graves, Nicola Salmoria]
Drift Out [David Graves, Nicola Salmoria]
Camel Try [David Graves, Nicola Salmoria]
Yes/No Sinri Tokimeki Chart [David Graves, Nicola Salmoria]
Quiz Jinsei Gekijoh [David Graves, Nicola Salmoria]
Quiz Crayon Shinchan [David Graves, Nicola Salmoria]
Quiz Crayon Shinchan Orato Asobo [David Graves, Nicola Salmoria]
Rambo III - Release 2 [Jarek Burczynski]
Space Invaders DX [Jarek Burczynski]
Violence Fight [Jarek Burczynski]
Master of Weapon [Jarek Burczynski]
Silent Dragon [Jarek Burczynski]
Toypop [Edgardo E. Contini Salvan]
Mortal Kombat 3 [Aaron Giles]
Ultimate Mortal Kombat 3 [Aaron Giles]
WWF: Wrestlemania [Aaron Giles]
2 On 2 Open Ice Challenge [Aaron Giles]
NBA Maximum Hangtime [Aaron Giles]
Rampage: World Tour [Aaron Giles]
Brute Force [Aaron Giles]


New clones supported:
---------------------

Blasteroids (with heads)
Cyberball (version 2)
Rack' em Up (= The Hustler)
Super Formula (= Tail to Nose)
Tokusyu Butai UAG (= Thundercade)
Double Dragon (original)
Tournament Arkanoid
TMNT (Oceania)
Legend of Kage (2 new bootlegs)
Sonic Wings (= Aero Fighters)


==========================================================================


0.37 BETA 4

PORTERS: THERE ARE A FEW API CHANGES, READ CAREFULLY THE SOURCE SECTION.


These drivers have improved GRAPHICS:
-------------------------------------

- Background smoothing in Return of the Jedi. [Nicola Salmoria]

- Greatly improved Star Fire / Fire One. [Aaron Giles]

- Fixed final fireworks in Ajax. [Nicola Salmoria]


These drivers have improved SOUND:
----------------------------------

- Fixed sound in the Exidy games. [Aaron Giles]

- Improved YM2413 emulation. [Paul Leaman]


Source:
-------

- [DOS] The SEAL patch was bugged on mono sound cards, a new one is included.

- Fixed save_screen_snapshot() to save VIDEO_PIXEL_ASPECT_RATIO_1_2 games with
  the correct aspect ratio. Also introduced save_screen_snapshot_as(). Porters
  are STRONGLY ADVISED to use one of these functions to save screen shots,
  instead of providing their own. Note that osd_save_snapshot() now takes a
  bitmap argument, so it must not be hardwired to save Machine->scrbitmap
  (overlays wouldn't be saved otherwise). [nathan]

- A few changes were made to allow run time changes to the visible area, and
  to simplify the OS dependant code by moving some functionality to the core.
  - Added visible_area to struct RunningMachine. Drivers must now use
    Machine->visible_area instead of Machine->drv->visible_area. The field in
    struct MachineDriver has been renamed default_visible_area and it should
    normally be used by the core only.
  - New function set_visible_area() that can be used by drivers to change the
    active display area at run time.
  - New function osd_set_visible_area() used to tell the OS dependant code the
    portion of the bitmap that has to be drawn on screen. It is passed
    coordinates relative to the actual bitmap, so no further processing is
    required for rotated games. The OS dependant code is allowed to display a
    smaller portion of the bitmap if necessary, but it must not draw a larger
    portion (which might contain garbage).
    The function must call set_ui_visarea() to tell the core the portion of
    the bitmap which is actually visible (which might be smaller than
    requested), so the user interface can be drawn accordingly.
  - osd_update_video_and_audio() takes a bitmap parameter so must not be
    hardwired to draw Machine->scrbitmap.
  - New fields vector_width and vector_height in struct GameOptions. The OS
    dependant code must initialize them to force different resolutions for
    vector games. If left at 0, the default 640x480 is used.
  - osd_create_display() must no longer create the screen bitmap, this is done
    by the core. It must only create the display screen / window, and return 0
    on success.
    Note that the width and height parameters passed are now the dimensions of
    the visible area, not of the bitmap as they were before; therefore the
    function only has to create a screen / window of the requested size, without
    further processing, and without peeking into the drv->visible_area field.
    This applies to osd_set_display() as well.
  - Changed osd_new_bitmap() and renamed it osd_alloc_bitmap() to avoid
    confusion with old drivers. The function is the same as before but it must
    not swap width and height for vertical games - this is done by the core.
    osd_new_bitmap() and osd_free_bitmap() must not be called by drivers, they
    are reserved to the core. Drivers must call the equivalent bitmap_alloc()
    and bitmap_free() which take care of rotation for vertical games.
  [Nicola Salmoria]

- The meaning of the full_refresh parameter to vh_screenrefresh() has been
  slightly extend. It usually means "don't make incremental updates to the
  screen bitmap, redraw it completely", however if the driver wants it can also
  mean "redraw all temporary bitmaps". This happens when using the functions
  below. This way, drivers doing lots of memset(dirtybuffer,1) can be
  simplified and schedule it just at the beginning of vh_screenrefresh.
- Added some functions that make flip screen handling a little more eloquent:
  flip_screen_x_w(), flip_screen_y_w(), flip_screen_w() to set the flip_screen
  bits, and 3 variables flip_screen_x, flip_screen_y, flip_screen to read them
  back. If the flipscreen changes, the funtions automatically set full_refresh
  to true for the next call of vh_screenrefresh.
  The functions also call tilemap_set_flip(ALL_TILEMAPS), so no further
  operations are required when using TileMaps.
  Finally, the functions also adjust the visible area, mirroring it, in case
  it is asymmetrical. For example, rockola.c relies on this.
- Also added 2 helper functions:
  - void set_vh_global_attribute( data_t *addr, data_t data )    This takes a
  pointer to any variable and a value, and sets the variable to the value.  In
  addition, if the value has changed, it sets full_refresh to true by calling
  the next function.
  - void schedule_full_refresh(void)   This just sets full_refresh to true for
  the next screenrefresh.  See vidhrdw/galaxian.c for examples on this and
  set_vh_global_attribute.
  [Zsolt Vasvari]


New games supported:
--------------------

Victory [Aaron Giles]
Hana Awase [Zsolt Vasvari]
Hit the Ice [Jarek Burczynski]
Rambo III [Jarek Burczynski]
Quiz Sekai wa SHOW by shobai [Jarek Burczynski]


New clones supported:
---------------------

Rescue Raider (Stand-Alone)
Pang 3 (Euro)
Sangokushi II (= Warriors of Fate)
Ashura Blaster (US)
Exodus (= Defend the Terra Attack on the Red UFO)


==========================================================================


0.37 BETA 3


These drivers have improved GRAPHICS:
-------------------------------------

- Fixed colors in Joyful Road. [Phil Stroffolino]


These drivers have improved SOUND:
----------------------------------

- Sound in Jumping. [Jarek Burczynski]


Other drivers changes:
----------------------

- Lots of fixes to the 8080bw games. [Zsolt Vasvari]

- Fixed dipswitches in many games. [Gerardo Oporto]

- Alternate control system in Assault, only available when cheats are enabled.
  [Maurizio Zanello]


Source:
-------

- Lots of changes to some CPU cores (mostly i86). I186 support. [Peter Trauner,
  Juergen Buchmueller, Aaron Giles]

- Preliminary MIPS CPU emulation. [smf]

- New makefile, easier to port, split into multiple files. [Juergen Buchmueller]

- New modes for drawgfx(): TRANSPARENCY_NONE_RAW, TRANSPARENCY_PEN_RAW,
  TRANSPARENCY_PENS_RAW, TRANSPARENCY_THROUGH_RAW. The purpose of these is to
  allow you to work in "raw" colorspace (that is, unremapped pens) and then
  perform the palette lookup at the end. This is useful for a number of games
  that do collision detection or foreground/background blends (e.g., the palette
  index is ((fgpen << 4) | bgpen)).
  When you use these modes, the "color" parameter doesn't refer to the palette
  any longer. Instead, it is just a value that is added to the raw pen value
  of the graphics you are drawing. That way, if your background layer uses
  pens 0-63 and your foreground layer uses pens 64-127, you can pass in a
  color of 0 when drawing the background layer and 64 when drawing the
  foreground.
  Also added copybitmap_remap() and copyscrollbitmap_remap(). These take the
  same parameters as the originals, but don't make the assumption that
  TRANSPARENCY_NONE means TRANSPARENCY_NONE_RAW (which, if you think about it,
  is the way they work).
  This means that you can do all your work with raw palette indexes until the
  very end, and then do a copybitmap_remap(TRANSPARENCY_NONE) to copy the
  result and do the remap step in the end.
  Finally, there's a new pair of modes that are only supported in
  copybitmap(): TRANSPARENCY_BLEND and TRANSPARENCY_BLEND_RAW. For these
  modes, the source bitmap is shifted left by the "color" parameter and then
  ORed into the destination bitmap. This lets you compute the palette indexes
  (and optionally do the lookup) for games that look up the palette by
  combining forground and background pen indices. [Aaron Giles]

- Moved logerror() from mame.c to the OS dependant code, and removed errorlog
  from the GameOptions structure.

- Major redesign of the artwork support. All the drivers need to do is call
  overlay_create() or overlay_load() and the rest is handled by the core.
  Opacity/translucency support in 16-bit mode.  Check out Space Invaders for
  example, the colored strips that make up the overlay is faintly visible
  under the black areas. [Mathis Rosenhauer, Zsolt Vasvari]

- Fixed YM2608 adpcm support. [Aaron Giles]


New games supported:
--------------------

Oh My God! [Nicola Salmoria]
Power Instinct [Luca Elia]
Magix [Luca Elia]
Hatris [Aaron Giles]
Cerberus [Aaron Giles, Paul Leaman]
Mayhem 2002 [Aaron Giles, Paul Leaman]
World Series: The Season [Aaron Giles, Paul Leaman]
Alley Master [Aaron Giles, Paul Leaman]
Danger Zone [Aaron Giles, Paul Leaman]
Baseball The Season II [Aaron Giles, Paul Leaman]
Super Baseball Double Play Home Run Derby [Aaron Giles, Paul Leaman]
Strike Zone [Aaron Giles, Paul Leaman]
Redline Racer (2 players) [Aaron Giles, Paul Leaman]
Quarterback [Aaron Giles, Paul Leaman]
Viper [Aaron Giles, Paul Leaman]
John Elway's Team Quarterback [Aaron Giles, Paul Leaman]
All American Football (rev E) [Aaron Giles, Paul Leaman]
Ironman Stewart's Super Off-Road [Aaron Giles, Paul Leaman]
Ironman Stewart's Super Off-Road Track Pack [Aaron Giles, Paul Leaman]
Pigout [Aaron Giles, Paul Leaman]
Ataxx [Aaron Giles, Paul Leaman]
World Soccer Finals [Aaron Giles, Paul Leaman]
Danny Sullivan's Indy Heat [Aaron Giles, Paul Leaman]
Nastar / Rastan Saga 2 [Jarek Burczynski]
Crime City [Jarek Burczynski]
Ashura Blaster [Jarek Burczynski]
Safari Rally [Zsolt Vasvari]


New clones supported:
---------------------

Pac & Pal (older)
Tetris (B-System)


==========================================================================


0.37 BETA 2

These drivers have improved GRAPHICS:
-------------------------------------

- Accurate sprite drawing in MCR 1 & 2 games (see Satan's Hollow) [Aaron Giles]

- Fixed sprite / tile priority in Mad Gear and Garyo Retsuden. [Bryan McPhail]

- Fixed rowscroll in Ghostbusters. [Bryan McPhail]

- Correct colors in Lasso. [Phil Stroffolino]

- Fixed colors in Reactor. [Fabrice Frances]


These drivers have improved SOUND:
----------------------------------

- Fixed adpcm decoding in the K053260, this improves several Konami games.
  [Ernesto Corvi]

- Sound in Demon. [Zsolt Vasvari]

- Samples in Warrior. [Mathis Rosenhauer]

- Sound in Lasso. [Phil Stroffolino]


Other drivers changes:
----------------------

- Fixed Gang Wars original version, Super Baseball, Battlefield,
  Time Solders rev 1. [Bryan McPhail]


Changes to the main program:
----------------------------

- Massive rewrite of the cheat system user interface. This is still a work
  in progress. [Brad Oliver]

- First pass for multi language support with external translation files.
  [Brad Oliver]

- Extended the internal font to support characters 128-255 (ISO Latin-1).
  [Juergen Buchmueller]

- Fixed Hu6280 emulation bugs which caused missing levels in Trio the Punch.
  [Bryan McPhail]


Source:
-------

- Replaced instances of "if (errorlog) fprintf(errorlog," with a call to the
  new function logerror().

- New filetypes that must be supported by the OS dependant code:
  FILETYPE_HIGHSCORE_DB
  FILETYPE_HISTORY
  FILETYPE_CHEAT
  FILETYPE_LANGUAGE

  new functions:
  osd_readkey_unicode
  osd_fgetc
  osd_ungetc
  osd_fgets
  osd_feof
  osd_ftell

  new filed in struct Gameoptions: language_file. The OS dependant code must
  initialize it if it wants to use a translation file.
  [Brad Oliver]

- I added a new parameter to the end of the EEPROM interface to enable multiple
  reads to occur after a single read command. Added an EEPROM_set_data()
  routine that can be used to explicitly initialize the contents of the EEPROM
  if the NVRAM file isn't found. [Aaron Giles]


New games supported:
--------------------

Pipe Dreams [Bryan McPhail, Aaron Giles]
Tail to Nose [Nicola Salmoria]
Poly-Play [Martin Buchholz]
Kyros [Bryan McPhail]
Super Stingray [Bryan McPhail]
Battle Rangers / Bloody Wolf [Bryan McPhail]
Dangun Feveron [Luca Elia]
Esprade [Luca Elia]
Uo Poko [Luca Elia]
Insector (prototype) [Fabrice Frances]
Screw Loose (prototype) [Fabrice Frances]
Mermaid [Zsolt Vasvari]


New clones supported:
---------------------

Psycho-Nics Oscar (2 Japanese sets)
Astro Blaster (version 3)
Grind Stormer (= V-Five)
Sheriff (= Bandido)
Super Burger Time (World)
Vapor Trail (World)
In The Hunt (US)
Space Chaser (CV)
Space Attack (older)
800 Fathoms (= Mariner)
Spinal Breakers (US)
Bosconian (older)
Juno First (Gottlieb)


==========================================================================


0.37 BETA 1

These drivers have improved GRAPHICS:
-------------------------------------

- Background in Exerion. [Aaron Giles]

- Artwork support in Space Encounters. [Zsolt Vasvari]

- Fixed sprite colors in the MCR2 games, however overlapping sprites are still
  wrong. [Aaron Giles]

- Fixed colors and stars in the Astrocade games (Gorf, Wizard of Wor, etc.).
  [Nicola Salmoria]

- Fixed front layer in Turbo Force. [Nicola Salmoria]

- Fixed colors in Lupin III. [Zsolt Vasvari]


These drivers have improved SOUND:
----------------------------------

- Emulated saucer sound in Space Invaders - sample no longer used (the other
  samples are still required). [Zsolt Vasvari]

- Completed sound in Splash. [Manuel Abadia]

- Samples support in Got-Ya. [Zsolt Vasvari]

- Sound in Berlin Wall. [Luca Elia]


Changes to the main program:
----------------------------

- Support for 24-bit artwork. [Mathis Rosenhauer]


Source:
-------

- Support for a priority buffer, updated by tilemap.c, which can be used to
  draw sprites using the new function pdrawgfx(). This allowed to fix many
  tile/sprite priority bugs e.g. in Ajax, Lightning Thunder, Simpsons,
  Vendetta, Punk Shot, Gradius III and others.
  [Phil Stroffolino, Nicola Salmoria]

- Change the API for tilemap_mark_tile_dirty() and the get_tile_info hooks,
  now a single parameter tile_index is used instead of (col,row). A function
  passed to tilemap_create() does the (col,row)->tile_index mapping, two
  standard functions are provided for the common cases.
  All drivers have been converted to the new API except for namcos2.c, which
  is therefore broken at the moment. [Phil Stroffolino]

- New GAME_UNEMULATED_PROTECTION flag.

- 6803/63701 external port writes no longer set to 1 the bits that are set as
  inputs in the DDR register. Instead, they are set to the value returned by a
  read from the port. [Tatsuyuki Satoh]

- Updated all memory handlers to the new READ_HANDLER()/WRITE_HANDLER() macro
  declarations. The old "function(int offset,int data)" style must not be used
  anymore.


New games supported:
--------------------

Air Duel [Nicola Salmoria]
Pound for Pound [Nicola Salmoria]
Rabio Lepus / Rabbit Punch [Aaron Giles]
Super Volleyball [Aaron Giles]
Funky Fish [Zsolt Vasvari]
Mr. Jong / Crazy Blocks [Takahiro Nogi]
Karate Blazers [Nicola Salmoria]
Spinal Breakers [Nicola Salmoria]
Thundercade [Luca Elia]
Twin Eagle [Luca Elia]
DownTown [Luca Elia]
U.S. Classic [Luca Elia]
Arbalester [Luca Elia]
Meta Fox [Luca Elia]
Zing Zing Zip [Luca Elia]
War of Aero [Luca Elia]


New clones supported:
---------------------

Ninja Ryukenden (= Ninja Gaiden)
Spy Hunter 2 (revision 2)
R-Type (Japan)
Dyger (set 2)
