MAME/0.78

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

Version 0.78 "Xmas tree"

Released: 2003-12-25

General Source Changes

  • Various System 24 Improvements, Fixing Priorities, Clipping issues etc. [Olivier Galibert]
src/drivers/system24.c
src/vidhrdw/system24.c
src/vidhrdw/segaic24.c
src/vidhrdw/segaic24.h
  • Improved Lightgun Code / Reload Handling [Bryan McPhail]
'-lightgun' now enables the lightgun only - no button remapping is performed.
'-reload' (formally '-offscreen_reload') is now needed for 2nd button presses to map to offscreen shots.
'-dual' (formally '-dual_lightgun') adds support for the Actlabs Dual Lightgun setup, it may be used with and without '-reload' and it requires '-lightgun'. This mode attempts to automatically remap the player 1 & 2 buttons to suit the lightgun setup. If it doesn't work you probably need to delete the .cfg file for that game.
src/input.h
src/windows/input.c
src/windows/input.h
src/windows/window.c
  • Removed '(hack?) from descriptions of newly added raizing games, stickers on the boards seem to indicate they are genuine Korean release versions.
  • Improved ms32 sound a bit [Tomasz Slanina]
src/drivers/ms32.c
  • Removed 8.3 ROM Filename Limitation [Olivier Galibert]
src/mame.c
  • Removed neomame / cpmame
  • Various Seattle + Related Updates [Aaron Giles]
MIPS3 core:
  • fixed handling of condition codes so they are stored in CCR31 now
  • fixed handling of CCR31 so that rounding modes are set correctly (in the DRC only)
Seattle:
  • added support for Biofreaks
  • fixed remaining issues in California Speed
  • verified California Speed HDD dump (works in self test, not in boot ROM test)
  • fixed timer change that broke Blitz 2000
  • added proper PIC IDs for Wayne Gretzky and Mace
IDE controller:
  • fixed final sector handling for Gauntlet: Dark Legacy
Midway IC:
  • added sound auto acknowledgement option
  • added new PIC mapping for Gauntlet: Dark Legacy
  • fixed initial sound IRQ state
DCS:
  • fixed reporting of input full/output empty states
Voodoo:
  • added initial Voodoo 2 support
  • removed hack to toss what I thought were bogus triangles
  • improved W buffer handling
  • improved accuracy of depth buffer handling
  • PSX core Improvements [smf]
  • Fixed MVMVA disassembly
  • SWC bit in SR is ignored
  • Fixed MVMVA with LM bit set
  • Added SQR & CC opcodes
  • Added preliminary looped DMA detection
  • Improved root counter emulation
  • Improved SIO emulation
  • Preliminary SPU emulation
  • Preliminary screen flipping / blanking support
  • Added GPU packet 41, 52 & 77
  • Supports uploading 1024 pixel wide textures
  • Resetting GPU sets default texture window
src\cpu\mips\mipsdasm.c
src\cpu\mips\psx.c
src\machine\psx.c
src\includes\psx.h
src\sound\psx.c
src\sound\psx.h
src\vidhrdw\psx.c
  • GP-13 board layout [Brian A. Troha]
src\drivers\namcos11.c
  • NCR 53CF96-2 SCSI controller emulation [R.Belmont]
src\machine\am53cf96.c
src\machine\am53cf96.h
  • Added ADPCM and fixed jerky music in Pass [Tomasz Slanina]
src/drivers/pass.c
  • Fixed the colors in Hana Oriduru [Luca Elia]
  • ROM patch to fix sound cpu communication in Gundam Psycho Salamander [Tomasz Slanina]
still need a real fix ..
src/drivers/dcon.c
  • Improvements to Speed Attack Colours [Pierpaolo Prazzoli]
  • Misc Fixes / Tilemap conversions [Curt Coder]
(prehisle, psychic5, tunhunt + more)
  • More MS32 Sound Improvements [Tomasz Slanina]

New Games supported or promoted from GAME_NOT_WORKING status

  • Bonanza Bros [Olivier Galibert]
  • Quiz Rouka Ni Tattenasai [Olivier Galibert, David Haywood]
  • Dynamic Country Club [Olivier Galibert]
src/drivers/system24.c
  • Biofreaks (Prototype) [Aaron Giles]
  • California Speed [Aaron Giles]
src/drivers/seattle.c
  • Crypt Killer [R.Belmont, smf]
src/drivers/konamigq.c
  • Tekken 3 [smf]
  • Ehrgeiz
  • Fighting Layer
  • Mr Driller
  • Aquarush
src/drivers/namcos12.c
  • Super Tank [Norbert Kehrer]
src/drivers/supertnk.c
  • Ashita no Joe [David Haywood, Pierpaolo Prazzoli]
sound problems
src/drivers/ashnojoe.c
src/vidhrdw/ashnojoe.c
  • Mahjong Campus Hunting [Luca Elia]
  • 7jigen no Youseitachi [Luca Elia]
  • Mahjong Yarunara [Luca Elia]
  • Mahjong Angels [Luca Elia]
  • Quiz TV Gassyuukoku [Luca Elia]
src/drivers/dynax.c
src/vidhrdw/dynax.c
src/includes/dynax.h
  • Borderline (bootleg) [David Haywood]
no sound
src/drivers/vicdual.c
  • Cross Pang [Pierpaolo Prazzoli]
no sound, some sprite glitches, will try to clean up for u1
src/drivers/crospang.c
  • Funny Bubble [David Haywood]
sound banking problem, some sprite glitches, will try to clean up for u1
src/drivers/funybubl.c

New Clones supported or promoted from GAME_NOT_WORKING status

  • Lode Runner III - The Golden Labyrinth [Pierpaolo Prazzoli]
  • Fighting Hawk (World) [Fabrice Arzeno]
  • Chinese Hero (older) [Stefan Jokisch]
  • Delta Race (omega Race bootleg)
  • Vs. Atari R.B.I. Baseball (set 2) [Pierpaolo Prazzoli]
  • Premier Soccer (EAB) [Taucher]
  • Pairs V1.2 [Taucher]

New Non-Working games / clones supported

  • Scramble Spirits [Olivier Galibert]
  • Super Masters Golf [Olivier Galibert]
  • Quiz Syukudai wo Wasuremashita [Olivier Galibert]
  • Gain Ground [Olivier Galibert]
  • Crackdown [Olivier Galibert]
src/drivers/system24.c
all encrypted
  • Mr Driller 2 [smf]
src/drivers/namcos10.c
  • Star Gladiator [smf]
  • Battle Arena Toshinden 2 (USA)
  • Strider 2 (USA)
  • Strider 2 (ASIA)
  • Gallop Racer 2 (USA)
  • Brave Blade
  • Beastorizer
  • Primal Rage 2
  • NBA Jam Extreme
  • Judge Dredd (Rev C)
  • Judge Dredd (Rev B)
src/drivers/zn.c
  • Ace Driver [Guru]
src/drivers/namcos22.c
  • Champion Baseball Japan set 2 [Stefan Jokisch]
  • Target Balls [David Haywood]
not looked at it much yet, seems to be paradise.c


Version 0.78u1

Released: 2004-01-04

General Source Changes

  • Fixed OKI Sound (and a few other things) in the following [Quench]
Diverboy (diverboy.c)
Bakuretsu Breaker (kaneko16.c)
Aquarium (aquarium.c)
Funny Bubble (funybubl.c)
  • Full Sound and Music in Asura Blade [R.Belmont]
  • Discrete Sound in Video Pinball [Derrick Renaud]
  • DAC Sound in TrucoTron [Tomasz Slanina]
  • Fixed Graphics and Added Suond to Cross Pang [Pierpaolo Prazzoli]
  • Added additional unused PROMs to the following [Stefan Jokisch]
rallyx (rallyx.c)
acedrvrw (namcos22.c)
millpac (centiped.c)
sci (taito_z.c)
  • Various Updates to the Moon Patrol driver [Stefan Jokisch]
  • added the new PROM dump for the Williams set
  • changed the size of the PROM dump for the IREM set
  • renamed ROMs
  • converted the driver to the tilemap system
  • simplified background drawing by creating a 256x64 gfx layout
  • minor fixes to the video section based on schems
  • Mobile Suit Gundam EX Revue Fixes [Tomasz Slanina]
  • hooked up EEPROM (68301 parallel port) and added EEPROM initialisation
  • added missing language selection dipswitch
  • Improvements to ST-V Emulation [Mariusz Wojcieszek]
  • Changes to sprites color calculation. I fixed it using in color bank modes by using color offset register from VDP2. Now shienryu kludge is no longer needed and also sprite colors in Winter Heat and Virtua Fighter Kids are correct.
  • Changes for Princess Clara Daisakusen (prikura) so that game is playable now (as far I tested it).
  • Prikura tried to render distorted sprites with xsize = 0 or ysize = 0 and this caused crash. As these values are prohibited according to manual, I ignore distorted sprites with xsize = 0 or ysize = 0.
  • I found that missing MINIT for slave to run the sprites is done by using address 0x01406f40 instead of 0x01000000. I'm not sure if my change is a hack or real hardware behaves in that way, but in my opinion it is possible that whole range of addresses (0x01000000 - 0x017fffff) is used for MINIT. I added MINIT only for one address used by prikura.
  • Bad sprite colors were fixed in point 1.
  • Small change for vdp2: commented out a call to usrintf_showmessage().
  • Data East MLC Improvements [Bryan McPhail]
Many aspects of the Video Rendering have been improved, Avengers in Galactic storm is playable with some characters now, however there seems to be a CPU core bug affecting various aspects of the game, most notably the flipping of Captain America. Help tracking down and fixing this wwould be welcome. Several Non-Working sets were also added
  • Update to allow drivers to dynamically change the refresh rate during execution [Aaron Giles]
  • Namco 8080 Cleanup [Nicola Salmoria]
  • merged geebee.c and warpwarp.c since they are variations of the same hardware design. drivers/geebee.c, machine/geebee.c and vidhrdw/geebee.c are no longer needed.
  • renamed Navalone -> Navarone. I guess that's the correct name, as in "the guns of Navarone".
  • renamed kaitein -> kaitei and kaitei -> kaiteik; made the Namco set the main one. I don't recall if this was already discussed, but I believe kaiteik is a prototype developed by a third party and sold to Namco, where it was completely rewritten.
  • fixed inputs and dip switches in all games.
  • fixed "ball" size in sos and kaitein - the harpoon in kaitein no longer looks like a rock.
  • removed a hack in Warp Warp that didn't draw the ball in the bottom left corner. The flyer confirms that the ball is supposed to be there.
  • Misc Fixes [Nathan Woods]
src/chd.c:
  • Adds workaround for deficiency in Metrowerks compiler
src/x86drc.c:
src/x86drc.h:
  • Adds a few more instruction declarations
  • Adds a call to retrieve CPU feature flags from CPUID
src/windows/ticker.c:
  • Compiler specific assembler code for feature reading replaced by call added above
  • Removed final traces of TESTDRIVER code [Paul Priest]
  • BIOS Roms no longer need to be added to info.c [Paul Priest]
  • Final Lap 2 now loads the right object roms [Brian Troha]
  • Now using correct Black Dragon (bootleg) Roms [Stefan Jokisch]
  • Samples in space Firebird [Chris Hardy]
  • Removed a few IPF_CHEAT in toaplan drivers so mame doesn't hide the dipswitches [Mamesick]
  • Fixed Difficulty Dipswitch in ladyfrog [Nicola Salmoria]

New Games supported or promoted from GAME_NOT_WORKING status

  • Princess Clara Daisakusen [Mariusz Wojcieszek]
src/drivers/stv.c
  • Wild Pilot [Pierpaolo Prazzoli]
src/drivers/cischeat.c
various graphical problems, service buttons = start buttons
  • Target Balls [Luca Elia]
src/drivers/paradise.c
  • International Cup '94 / Hat Trick Hero '94 [David Haywood]
also changed the parent / clone relationships a bit on the football games
src/drivers/taito_f3.c

New Clones supported or promoted from GAME_NOT_WORKING status

  • A Few PGM Clones
  • Additional Run & Gun sets [Brian Troha]
  • Q*Bert (Us Set 2) [Smitdogg]

Games / Sets Removed

  • New Rally-X (vertical hack) [removed by Stefan Jokisch]
graphic hack (rotated tiles + display) not worth supporting

New Non-Working games / clones supported

  • Stadium Hero 96 [Bryan McPhail]
  • Skull Fang [Bryan McPhail]
src/drivers/deco_mlc.c
Encrypted (Deco 156)

Version 0.78u2

Released: 2004-01-09

  • The only change in u2 is the overhaul of the memory system mentioned below, no new drivers have been added

General Source Changes

  • Significant overhaul of the memory system. This is the first of several phases, but it lays the groundwork for future improvements. This first change will also be the most disruptive, touching every CPU core and every driver file [Aaron Giles]

Memory system changes

  • The biggest change is the introduction of the concept of address spaces. Each CPU can have up to 3 separate address spaces now, with the possibility of easily adding more in the future. Each address space has its own addressing semantics, including databus width, address bus width, address shift, and unmapped memory value.
  • The three existing address spaces are defined to be program, data, and I/O. The program address space is where code is assumed to live; it is also where all memory lives in standard von Neumann architecture CPUs. The data address space is for Harvard architecture CPUs, and will be used in the future to do proper program/data separation for the CCPU, PIC16C5x, ADSP210x, TMS32010, and TMS32025. The I/O address space is used for port accesses, such as those performed by the Z80 and x86 CPUs.
  • The read/write handlers used by CPUs to access memory have all been renamed in the shuffle, both in order to match the address space naming conventions (program/data/io) and in order to make it clearer what they do. In addition, they have been unified to a large degree. Instead of separate memory accessors based on both the address bus width and the data bus width, there is now just one shared set of memory accessors for each data bus width. Here are some examples of how older functions map to newer ones:
cpu_readmem16, cpu_readmem17, cpu_readmem20,
cpu_readmem21, cpu_readmem24
-> program_read_byte_8
cpu_writemem_16bew_word, cpu_writemem18bew_word,
cpu_writemem_24bew_word, cpu_writemem32bew_word
-> program_write_word_16be
cpu_readport -> io_read_byte_8
  • A common annoyance used to be that drivers would need to know which of these functions to call in order to read memory. A table of accessors is now included as part of the memory context switch, which allows the addition of generic functions that can be used by the drivers to access memory. For example, a driver trying to read a word from a 68000's address space used to have to call cpu_readmem24bew_word(). Now the driver can just call program_read_word(), and the memory system will do the right thing.
  • In addition, there is now a single change_pc() macro used by all CPU cores, regardless of the databus or address bus width.
  • Along with these changes, the macros for defining memory maps has changed for consistency as well, as follows:
MEMORY_READ_START -> PROGRAM_READ8_MAP_START
MEMORY_READ16_START -> PROGRAM_READ16_MAP_START
MEMORY_READ32_START -> PROGRAM_READ32_MAP_START
MEMORY_WRITE_START -> PROGRAM_WRITE8_MAP_START
MEMORY_WRITE16_START -> PROGRAM_WRITE16_MAP_START
MEMORY_WRITE32_START -> PROGRAM_WRITE32_MAP_START
MEMORY_END -> PROGRAM_MAP_END
PORT_READ_START -> IO_READ8_MAP_START
PORT_READ16_START -> IO_READ16_MAP_START
PORT_READ32_START -> IO_READ32_MAP_START
PORT_WRITE_START -> IO_WRITE8_MAP_START
PORT_WRITE16_START -> IO_WRITE16_MAP_START
PORT_WRITE32_START -> IO_WRITE32_MAP_START
PORT_END -> IO_MAP_END
  • Along the way, support has been also added for CPUs with a 64-bit data bus, so there are also macros for PROGRAM_READ64_MAP_START, etc.
  • One of the future goals of the memory system is to support not just ranges of memory, but also better support for mirrors and more complicated situations where addressing is repeated at regular intervals. In order to facilitate this, macros have been created that must be used when defining a memory map:
MEMORY_READ_START
{ 0x0000, 0xffff, MRA_RAM },
MEMORY_END
-> PROGRAM_READ8_MAP_START
READ_RANGE( 0x0000, 0xffff, MRA8_RAM )
PROGRAM_MAP_END
MEMORY_WRITE_START
{ 0x0000, 0x0fff, MRA_RAM },
{ 0x1000, 0x7fff, MRA_RAM, &foo },
{ 0x8000, 0xffff, MRA_RAM, &bar, &bar_size },
MEMORY_END
-> PROGRAM_WRITE8_MAP_START
WRITE_RANGE ( 0x0000, 0x0fff, MRA_RAM )
WRITE_RANGE_P ( 0x1000, 0x7fff, MRA_RAM, &foo )
WRITE_RANGE_PS( 0x8000, 0xffff, MRA_RAM, &bar, &bar_size )
PROGRAM_MAP_END
  • Since all the memory maps were changing anyway, static 8-bit handlers have been renamed for consistency. This means that MRA_NOP becomes MRA8_NOP, etc.
  • Prior versions of MAME allowed special entries in the read/write maps to control the number of effective address bits. This mechanism has changed so that you can supply an arbitrary combination of flags:
  MEMORY_ADDRESS_BITS(20) -> PROGRAM_MAP_FLAGS( MEMORY_ABITS(20) )

and it has been enhanced to also allow you to specify the unmapped memory value:

PROGRAM_MAP_FLAGS( MEMORY_UNMAPPED_0 ) /* unmapped reads return all 0's */
PROGRAM_MAP_FLAGS( MEMORY_UNMAPPED_1 ) /* unmapped reads return all 1's */
  • Because of this mechanism, the old function memory_set_unmap_value() has been deprecated. All drivers using this have been updated to use the new mechanism instead. Also note that the MRA_NOP handlers have been changed to return the unmapped value as well, instead of always returning 0.
  • Another "feature" that has changed is that unmapped reads and writes to address spaces of less than 20 bits no longer act like RAM. This may break some drivers, but it ends the special treatment of 8-bit address spaces.
  • In the machine driver macros, the address space is now explicitly specified:
MDRV_CPU_MEMORY(read,write) -> MDRV_CPU_PROGRAM_MAP(read,write)
/* not applicable */ -> MDRV_CPU_DATA_MAP(read,write)
MDRV_CPU_PORTS(read,write) -> MDRV_CPU_IO_MAP(read,write)

CPU Interface Changes

  • The other significant change in this release is the way CPUs are defined and referenced. Previously, the file cpuintrf.c contained a huge table with many pointers into each CPU, and a bunch of data about each CPU type. This was problematic to maintain, and left a bunch of data out of the CPU core to be defined by MAME instead.
The new release defines a new function that every CPU core must implement, of the form:
<cputype>_get_info(UINT32 state, union cpuinfo *info)
This is the only public function defined for each CPU core. The table in cpuintrf.c now simply consists of an enumerated index for the CPU type, followed by the pointer to the actual CPU's get_info function. The flexible get_info function is then responsible for providing pointers to all the remaining functions. In addition, the number of other functions has been greatly reduced:
void set_info(UINT32 state, union cpuinfo *info);
void get_context(void *context);
void set_context(void *context);
void init(void);
void reset(void *param);
void exit(void);
int execute(int cycles);
void burn(int cycles);
offs_t disassemble(char *buffer, offs_t pc);
The old functions get_reg, set_reg, set_irq_line, set_irq_callback, info, get_cycle_table, set_cycle_table have all been incorporated into get_info and set_info.
All the existing MAME CPU cores have been updated to work with this new system. Also, for most cores, all functions and the icount global variable have been made static apart from the get_info function. A number of selectors for get_info/set_info have been defined to return information about the CPU, including the address and data bus sizes for all address spaces, clock dividers, IRQ line size, context size, etc.
  • NOTE TO PORTERS: the cpuintrf[] array is now populated dynamically by the cpuintrf_init() function. This means that if you have informational code or other code that relies on the CPU information being present (i.e., if you call any of the cputype_* functions) before calling run_game(), you must manually call cpuintrf_init() first. Don't worry, it is safe to call cpuintrf_init() multiple times.

Version 0.78u3

Released: 2004-01-11

General Source Changes

  • The following bugs created by the changes in u2 have now been fixed
cpuintrf compile bug with DJGPP [smf]
CPU_M6809E typo in cpuintf.c [Aaron Giles]
HD63705 address bus width (namcos2 crash) [Aaron Giles]
namcos1 crash [Aaron Giles]
namcos21 crash [Aaron Giles]
mpatrol crash [Aaron Giles]
inability to compile with asm 68k [Aaron Giles]
boblbobl not working [David Haywood]
circusc 'Ram Bad' error [David Haywood]
crospang sound handler [Pierpaolo Prazzoli]
  • Please update to this version and continue to test and report any new bugs you find

New Games supported or promoted from GAME_NOT_WORKING status

  • Jong Tou Ki [Luca Elia]
src/drivers/dynax.c
  • Competition Golf [Pierpaolo Prazzoli, Bryan McPhail]
src/drivers/compgolf.c
src/vidhrdw/compgolf.c

New Clones supported or promoted from GAME_NOT_WORKING status

  • Golden Tee Golf (Trackball, v1.0) [Bryan Troha]
src/drivers/itech8.c
  • Yosaku To Donbei (set 2) [Stefan Jokisch]
src/drivers/8080bw.c
  • Miss Mister World '96 Nude [Taucher]
src/drivers/galpanic.
  • Space Thunderbird (clone of Moon Cresta) [Pierpaolo Prazzoli]
src/drivers/galaxian.c

Version 0.78u4

Released: 2004-01-13

Please continue testing, it is rather important during periods like this.

Phase 2 of Aaron's Updates [Aaron Giles]

Changes:

  • CPUs with an implicit address shift (e.g., the TMS34010 shifts addresses right 3 bits; the TMS32031 shifts addresses left 2 bits) now automatically get that shift applied to addresses in their memory maps and in calls to install_memory_read/write_handler(). This eliminates many ugly macros in the memory maps. Affected CPU cores are the ADSP210x, CCPU, PIC16C5x, TMS3201x, TMS3202x, TMS32031, and TMS340x0. Note that the CPU cores themselves still need to pass shifted values to the core read/write routines. All drivers using these cores have had their icky macros and bitshifts removed.
  • Harvard architecture CPUs now have data memory fully implemented now. Affected CPUs are the ADSP210x, TMS3201x, TMS3202x, PIC16C5x, and CCPU. All cores have been modified to fully split program and data memory. All drivers using these cores now specify explicit program and data memory maps. This also gets rid of a ton of ugly macros used in memory maps.
  • The memory_set_bankhandler calls are now officially history. There were fewer than a dozen drivers using them, and they all have been converted over to using install_mem_read_handler instead where appropriate. This eliminates the last 8-bit-specific hack in the memory system. As a result, RAM reads and writes out of banked memory should be slightly faster on 8-bit CPUs because they are handled inline.
  • New dynamic memory allocation scheme. The previous method relied on parsing the read/write handlers. The new method simply looks at the top-level memory map after it has been populated, and allocates memory for any mapped 16k chunk. This will likely cause more memory to be allocated than before, but the process is less error prone. Also, checks are now in to make sure that the memory_region for the program address space is the minimum necessary to support non-sparse address spaces.
  • Fully integrated save/restore memory blocks. Before, the save/restore system had its own memory map walking routines. That's gone now. Instead, memory blocks are registered as they are allocated by the dynamic memory allocator. Note that this will likely cause save states to be bigger than they were before (and certainly, they will not be compatible), but disk space is cheap, live with it.
  • Address spaces are now determined dynamically based on whether a given CPU returns a non-zero value for the address bus width for a given space.
  • Fixed incorrect address bus widths on the I8039 CPU core.
  • Added a TMS32026 entry and reworked the handling of internal RAM to work in the new system. This means the Taito Air system is now back to its former state.
  • Fixed the memory handlers in gottlieb.c to use address space masking instead of mapping extra mirrored areas.

General Source Changes

  • Some ST-V alpha blending [Mariusz Wojcieszek]
see bakubaku playfield, mausuke playfield, shienryu clouds etc.
  • Huge Namco Mappy Era Systems Update [Nicola Salmoria]
  • Most games merged into mappy.c, so the following files are no longer needed:
drivers/superpac.c vidhrdw/superpac.c machine/superpac.c
drivers/grobda.c vidhrdw/grobda.c machine/grobda.c
drivers/phozon.c vidhrdw/phozon.c machine/phozon.c
machine/mappy.c
  • one new file: machine/namcoio.c. This implements the 56XX and 58XX I/O custom chips used by all the games. The I/O chips are now accurately simulated, fixing subtle nuances during normal operation and not-so-subtle ones in test mode; e.g. you can now scroll the grid in Mappy's test mode.
  • fixed and verified inputs and dip switches for all games.
  • found and documented the Easter eggs in all games except Toy Pop.
  • fixed interrupt and sub cpu reset handling, which caused some games to report errors when entering test mode without resetting.
  • added detailed memory maps where schematics allowed.
  • all drivers converted to tilemaps
  • cocktail mode in Phozon, and non-hack implementation in Gaplus
  • fixed priorities in superpac. With the previos code, ghost eyes had priority over everything else, even other sprites, giving wrong results when two ghosts overlapped.
  • round advance dip switch in Gaplus available & working
  • fixed a missing sound effect in Phozon that nobody would have ever noticed.
  • MAME testers bugs fixed:
mappy37b4gre
mappy37b8gre
phozon37b8gre
motos054gre
  • I've also included a revised warpwarp.c, converted to tilemaps and with the Warp Warp Easter egg documented.
  • Some slight SH-2 speedups [Carlos Santillan]
  • Discrete Sound in Sky Diver [Derrick Renaud]
  • Attempted to Improve Birdie Try sprites [Pierpaolo Prazzoli]
  • Fixed last minute compgolf bug in u3 [Pierpaolo Prazzoli]
  • Dipswitch in cross Pang [Pierpaolo Prazzoli]

Version 0.78u5

Released: 2004-01-18

Some updates before Aaron changes things again :-)

General Source Changes

  • Fixed some bad colours in Shienryu [Mariusz Wojcieszek]
src/vidhrdw/stvvdp1.c
  • Discrete Sound SYstem Updates [Derrick Renaud]
Discrete Sound Changes
  • fixed/added more documentation of functions at top of discrete.h
  • DISCRETE_RCFILTER - fixed bug that allowed module to use nodes not available to it. Can't beleive it did not crash before.
New Discrete Modules Added
  • DISCRETE_CRFILTER - high pass R/C filter.
  • DISCRETE_COUNTER - Presettable up/down counter, external clock with selectable count edge.
  • DISCRETE_COUNTER_FIX - Presettable up/down counter with bult-in frequency generator.
  • DISCRETE_ONESHOT - Fixed it. Added selectable: edge trigger; re-trigger; output active state.
  • DISCRETE_ONESHOTR - Same as DISCRETE_ONESHOT but with reset.
Game Driver Changes
  • poolshrk - Discrete sound emulation added.
  • bsktball - changed bounce sound to use DISCRETE_CRFILTER.
  • Updates to the Gameplan driver [Nicola Salmoria]
  • rewritten using machine/6522via.c and machine/6532riot.c, which weren't available at the time it was created. This fixed the gfx problems and bad sound.
  • vidhrdw/gameplan.c is no longer needed.
  • machine/6532riot: added PA7 adge detect and irq callback
  • machine/6522via: fixed port writes so that pins set as input are pulled high. This is required by the gameplan games and is confirmed by the 65422 data sheet. Added support for CA2 pulse handshake.
  • System 21 updates [Phil Stroffolino]
  • hooked up preliminary support for System21's "depth bias" feature, used as a corrective factor when sorting polygons by representative z value. It's not perfect, but a step in the right direction.
  • improved polygon colors in CyberSled
  • better parsing of CyberSled's display list; title screen and ingame graphics now appear and are mostly correct
  • hooked up CyberSled input ports; they can be configured with the usual mechanism: hold the 'service' key while flipping the test dipswitch
  • added near-plane clipping for System21's flat-shaded polygons
  • hooked up the view transform, used in Starblade to tilt the screen when player is targeting the edges of the playfield
  • hooked up a private (placeholder) implementation of zdrawgfx() for C355 sprite rendering, adding sprite-tilemap orthogonality for all games using that chip. This fixes MAMEtesters bug ptblank056gre.
  • C355 sprite rendering no longer relies on game-specific hacks for XY placement or cropping
  • some rudimentary work has been done for "Winning Run '91"; this game runs on prototype System21 hardware, and as such is quite different from the other titles. It uses a 3rd 68k CPU to render graphics to a bitmap layer (there is no sprite chip), but still appears to rely on DSPs for 3d graphics.
  • updated System21 notes/comments.
  • Fixed the following bugs created / revealed by Aaron's updates
VSNes dual games not working [Pierpaolo Prazzoli]
warning messages on decocass.c, tnzs.c, cvs.c
raiga sound
gsword bad ram message
gberet bad ram message [Stefan Jokisch]
MX5000 / Flak Attack bad ram [R.Belmont]
  • Fixed DIPS
Indoor Soccer [Brian A. Troha]
Radical Radial [Stefan Jokisch]
  • SUpport USB Keyboard LEDs [smf]
-led_mode ps/2 is the default and uses DeviceIOControl
-led_mode usb uses keybd_event()
This only affects windows nt/2000/xp.
There might be a way of using DeviceIOControl to change the led's on usb keyboards, but I can't find it.
Using keybd_event() may have problems restoring on exit, but at least it does work.
  • Save state loading from command line [smf]
Adds -state to the windows version. The code was already in the core to handle it, all this patch does is allows you to set options.savegame
Not sure how reliable it is, it worked for galaxian.
  • Fixed Discrete sound system crash with -nosound [R.Belmont]
  • Added extra roms to alibaba [Pierpaolo Prazzoli]
  • Removed some 'smart' code from CHD filename handling [Olivier Galibert]

New Games supported or promoted from GAME_NOT_WORKING status

src/drivers/suna8.c
src/vidhrdw/suna8.c

New Clones supported or promoted from GAME_NOT_WORKING status

Version 0.78u6

Released: 2004-01-20

General Source Changes

  • Another big memory change. [Aaron Giles]
The biggest change is the way address maps are declared in the drivers. Rather than having separate read and write address maps, there is now support for a single, merged map. In order to minimize the amount of code churn, there is currently still support for two separate address maps per address space, but they are combined into one internally early on in the memory initialization and setup.
Because of this change, the 'start' macro for address maps has changed. The old set of macros:
PROGRAM_READ*_MAP_START(name)
DATA_READ*_MAP_START(name)
IO_READ*_MAP_START(name)
has been replaced by a single macro:
ADDRESS_MAP_START(name, address_space, bits)
and all drivers have been updated to use this new mechanism. In addition, all the PROGRAM_*, DATA_*, and IO_* synonyms are now merged into a single ADDRESS_* macro. For example, PROGRAM_MAP_FLAGS is now just ADDRESS_MAP_FLAGS.
The next big change is that the address maps, in addition to being unified, are no longer static arrays. Rather, they are constructed in much the same way the machine drivers are constructed. Through a series of macros, the address maps are built up in code and type-checked along the way. All existing MAME drivers have been updated to the new macros.
In addition, there are many new options available to support extra features like mirroring, automatic pointer assignment, and shared memory pointers. As of this version, only seattle.c and system24.c have been updated to support the new constructs. Use these as examples of what can be done. Also, see the top of memory.c for an explanation of all the new macros.
Once again, the way memory is automatically allocated has changed. It is now done based on the memory maps, like it used to be, but with the added support for shared pointers and hard-coded pointers into memory regions.
Save states should now work, but once again, they are saving more data than is strictly necessary.
Internally, the way address map lookup tables has changed, so that subtables can be reused. This is important if a small memory region is mirrored across a large address space; the old code didn't coalesce identical subtables, which would have blown up in a big way with tricky mirrors.
Renamed a bunch of internal memory state, including OP_ROM, OP_RAM, and several others.
  • Added save state support for 64-bit data types. [Olivier Galibert]

Other Versions


Personal tools