MAME 0.27: Difference between revisions

From MAMEDEV Wiki
(Initial version.)
 
m (formatting)
Line 147: Line 147:
* [[Nicola Salmoria]] exchanged the infamous two sprite banks in Moon Cresta.
* [[Nicola Salmoria]] exchanged the infamous two sprite banks in Moon Cresta.


* [[Nicola Salmoria]] changed osd_obtain_pen() so it doesn't return pens sequentially. This ensures that MSDOS driver writes are aware of the existence of Machine->pens* [[]] and use it appropriately. Drivers which don't do this will have wrong colors.
* [[Nicola Salmoria]] changed osd_obtain_pen() so it doesn't return pens sequentially. This ensures that MSDOS driver writes are aware of the existence of Machine->pens[] and use it appropriately. Drivers which don't do this will have wrong colors.


* [[Nicola Salmoria]] modified readinputport() to scan the keyboard only once per frame, and handle everything more efficiently. It is now MUCH faster than before - useful with games which continuously poll a port for VBlank.
* [[Nicola Salmoria]] modified readinputport() to scan the keyboard only once per frame, and handle everything more efficiently. It is now MUCH faster than before - useful with games which continuously poll a port for VBlank.
Line 153: Line 153:
* [[Nicola Salmoria]] changed generic_vh_start() to check that videoram_size has been initialized and fails otherwise.
* [[Nicola Salmoria]] changed generic_vh_start() to check that videoram_size has been initialized and fails otherwise.


* [[Nicola Salmoria]] changed MAME so When using TRANSPARENCY_COLOR and TRANSPARENCY_THROUGH with drawgfx(), the argument must now be the pen code instead of the remapped pen number, e.g. instead of Machine->background_pen (= machine->pens* [[0]]) you just specify 0. I also removed the background_pen field from Machine: use Machine->pens* [[0]] instead.
* [[Nicola Salmoria]] changed MAME so When using TRANSPARENCY_COLOR and TRANSPARENCY_THROUGH with drawgfx(), the argument must now be the pen code instead of the remapped pen number, e.g. instead of Machine->background_pen (= machine->pens[0]) you just specify 0. I also removed the background_pen field from Machine: use Machine->pens[0] instead.


* [[Nicola Salmoria]] changed the ROM_LOAD() macro so it requires four parameters, the last one being the checksum. To quickly upgrade from previous sources you can be used (temporarily) ROM_OBSOLETELOAD(), however adding the checksum is easy (just do a cut & paste from the warning message) so it's better to put them in as soon as possible.
* [[Nicola Salmoria]] changed the ROM_LOAD() macro so it requires four parameters, the last one being the checksum. To quickly upgrade from previous sources you can be used (temporarily) ROM_OBSOLETELOAD(), however adding the checksum is easy (just do a cut & paste from the warning message) so it's better to put them in as soon as possible.

Revision as of 09:16, 30 May 2007

Release Date

MAME 0.27 was released on 10 August 1997.


Contributors

The known contributors for this version are, in alphabetical order:


Specific Contributions

The known contributions for this version are, in the order specified in the whatsnew:

  • The Energy shields in Vanguard now work. Nibbler, Vanguard and Fantasy now run at half their previous speed. Is this the correct one?
  • Support for a GnG version with different graphics (cross instead of shield)
  • Eric Smith, Hedley Rainnie and Sean Trowbridge provided information about the Pokey random number generator to allow problems with Centipede (start with 18 credits) and Tempest (hang after level 13) to be fixed.
  • Jarek Burczynski provided better colors for Bagman and also added support for Super Bagman.
  • Andrea Fregoli added a scroll routine used when the keyboard/joystick settings menu doesn't fit on the screen.
  • Andrew Scott and Robert Anschuetz improved sound support in Galaxian and clones. The background noise is now emulated, while the shoot noise still requires a sample. These changes also affect other games using the same sound routines.
  • Mike Coates improved again the Gorf driver. It's now (sort of) playable.
  • Aaron Giles did a major rewrite of his Super Pac man and Mappy drivers:
    • support for Dig Dug 2 and Pac & Pal
    • High score save in all games
    • 100% colors and sound samples (in Super Pac man the siren clicks a bit, but neither I nor jrok can figure it out; the sample data is correct)
    • better sound playback frequency (was missing some high bits!)
    • arcade accurate frequency calculation (thanks to jrok!)
    • removed all palette hacks; everything is clean
    • added loop optimizations for speed
    • video now properly displayed, including high priority characters
  • Bernd Wiebelt implemented a new option for vector games: "-vg". This adapts the Vector games to a given screen resolution (default 800x600).
  • Brad Oliver and Bernd Wiebelt did a lot of work on the Atari Vector games
    • Quite a few bugs hunted down.
    • Thanks to Aaron Giles, the Atari vector games do correct scaling now and we can do cycle counting on the vector CPU. Aaron also fixed the scaling in the Sega vektor games.
    • Tempest does no longer crash after level 13, has better colors (colorram emulation) and is overall a bit faster.
    • Highscore saving for all games except Black Widow and Starwars
    • Trackball support for Tempest and Red Baron. Red Baron tries to calibrate its analog joystick at the start, so you'll have to move the "joystick" a bit before you can fly in all four directions. Thanks to baloo@kaiwan.com for his suggestions.
    • Mauro Minenna made Battlezone playable with one joystick.
    • Changes to game resolutions. On MSDOS, they now use tweaked VGA modes.
    • REMEMBER TO DELETE EVERY *.CFG AND .HI FILE FOR VECTOR GAMES, OTHERWISE THE GAMES MIGHT NOT WORK CORRECTLY.
  • Mike Coates added partial sound support (thru samples) to the Carnival driver.
  • Mike Coates tidied up the wow drivers, added definable keys to most games, and joystick & 2 player support to Seawolf II.
  • Lee Taylor added support for Mr'Do vs Unicorns (earlier version of Do's Castle).
  • Sound support in Tutankham.
  • Elevator action sound is perfect now.
  • Jarek Burczynski changed showcharset() in usrintrf.c. Now you can use PGUP and PGDN to scroll through a charset which doesn't fit in the screen.
  • Brad Oliver wrote the new sndhrdw/pokyintf.c file. It handles most of the pokey interface to pokey.c. Rather than call milliped_sh_start() or whatever, call pokeyx_sh_start(), where x is the number of pokeys. It will keep track of the pokey count and use the appropriate clipping. I'm not sure 3 pokeys is a possible combination so there is no such pokey3_sh_start() routine.
  • Christopher Kirmse ported MAME to Win32. It compiles from the same source tree as the DOS version; to compile using visual c++ 5, just do nmake -fmakefile.w32 To build mame32.exe, you also need the SEAL audio library for win32.
  • Tatsuyuki Satoh changed the SN76496 emulation (added SN76496UpdateB function to emulate 2 chips on 8 channel PCM sound cards), added Z80PIO and Z80CTC emulator, in COMMON.C, 'TRANSPARENCY_PEN' and 'TRANSPARENCY_COLOR' mode were speeded up (for X/Y dual scroll games).
  • Added generic EAROM routines for the Atari Vector games, they are in src/machine/atari.c and src/machine/atari.h
  • Bernd Wiebelt fixed the BCD-emulation in the 6502 emulation. At least the authentic Tempest feeling (broken X/Y monitor) is gone, since the game now starts without pressing Fire.
  • Nicola Salmoria fixed the colors and added high score saving support to Crystal Castles.
  • Nicola Salmoria added functionality to turn off speed throttling (F10) even on games which use audio streaming (i.e. all the ones with 8910 or Pokey sound chips)
  • Nicola Salmoria fixed the audio code which should fix crashes on some games and compatibility problems with GUS and AWE 32. However let me stress once again that if you have an AWE 32 you should use the plain SoundBlaster driver. The AWE32 driver sounds NOTHING like the original (and is slower).
  • Nicola Salmoria changed the Galaga driver so the star scroll speed in levels > 32 should be correct now.
  • Nicola Salmoria made pressing ESC in all menus return to pthe previous menu instead of quitting.
  • Nicola Salmoria changed the 8910 sound chip emulation interface to allow updates more frequent than 60 per second. I also increased the sampling frequency to 44.1kHz. These changes provide dramatic improvements in sound quality, which you can appreciate in e.g. Gyruss and Pooyan. The price to pay is slower execution. To make things worse, I had to (hopefully temporarily) remove some optimizations, so the above games will probably not run as well as before on slower systems.
  • Nicola Salmoria fixed the colors in Donkey Kong. Are they entirely accurate?
  • Nicola Salmoria increased the maximum number of digital audio channels from 8 to 16, so there are no more missing voices in the Mr. Do! games (Castle, Unicorns, Wild Ride, Run Run, and Kick Rider).
  • Nicola Salmoria made Elevator Action, Jungle King and Wild Western use the same video hardware driver (taito.c)
  • Nicola Salmoria changed MAME to verify the checksum of the ROMs before starting the emulation. If the checksum doesn't match, a warning message is printed on the screen (along with the expected checksums). Execution resumes after pressing Return. Not all drivers use this feature yet!
  • Nicola Salmoria changed osd_obtain_pen() so it doesn't return pens sequentially. This ensures that MSDOS driver writes are aware of the existence of Machine->pens[] and use it appropriately. Drivers which don't do this will have wrong colors.
  • Nicola Salmoria modified readinputport() to scan the keyboard only once per frame, and handle everything more efficiently. It is now MUCH faster than before - useful with games which continuously poll a port for VBlank.
  • Nicola Salmoria changed generic_vh_start() to check that videoram_size has been initialized and fails otherwise.
  • Nicola Salmoria changed MAME so When using TRANSPARENCY_COLOR and TRANSPARENCY_THROUGH with drawgfx(), the argument must now be the pen code instead of the remapped pen number, e.g. instead of Machine->background_pen (= machine->pens[0]) you just specify 0. I also removed the background_pen field from Machine: use Machine->pens[0] instead.
  • Nicola Salmoria changed the ROM_LOAD() macro so it requires four parameters, the last one being the checksum. To quickly upgrade from previous sources you can be used (temporarily) ROM_OBSOLETELOAD(), however adding the checksum is easy (just do a cut & paste from the warning message) so it's better to put them in as soon as possible.
  • Nicola Salmoria added a new macro ROM_RELOAD(), meaning to reload the previous ROM at a different address (useful with 6502 games which need reset/irq vectors at FFFx).
  • Nicola Salmoria added a new new function printromlist() to common.c, used by loadroms() and mame.c (-listroms).
  • Nicola Salmoria changed MAME so that drivers are now allowed to modify the RAM and ROM pointers to implement bank switching. Bubble Bobble uses this. Be careful: when using this feature, you cannot use the standard MRA_RAM and MWA_RAM memory hooks to access RAM.
  • Nicola Salmoria made InputPorts automatically handle VBlank bits. No more need to write custom code. Lady Bug, Carnival, Mysterious Stones, Naughty Boy and Phoenix use this feature. Many other drivers need to be updated to use it. MAKE SURE TO DELETE LADYBUG\LADYBUG.DSW AND LADYBUG\LADYBUG.CFG, OTHERWISE THE GAME WILL NOT WORK CORRECTLY.
  • Nicola Salmoria added new support functions in cpuintrf.c:
    • cpu_getfcount(), which returns the number of CPU cycles till the end of the current video frame (as opposed to cpu_geticount(), which returns the number of CPU cycles till the next call of the interrupt handler)
    • cpu_getiloops(), which returns the number of times the interrupt handler will be called before the end of the video frame (useful in interrupt handlers).
    • cpu_gettotalcycles(), which returns the total number of CPU cycles passed since the CPU was reset.
    • ignore_interrupt(), companion to interrupt() and nmi_interrupt(). These allow interrupt handlers to be cpu-independant, avoiding use of CPU-specific interrupt indetifiers.


Game Support

New Games added or promoted from GAME_NOT_WORKING status