MAME 0.78u4 was released on 13 January 2004.
The known contributors for this version are, in alphabetical order:
The known contributions for this version are, in the order specified in the whatsnew:
- Aaron Giles committed phase 2 of memory system updates:
- 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 thememory 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.
- Mariusz Wojcieszek added Some ST-V alpha blending, see bakubaku playfield, mausuke playfield, shienryu clouds etc.
- Nicola Salmoria made a huge Namco Mappy Era systems update:
- 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.
- Quench improved the sound in Miss Bubble 2 and Power Instinct (bootleg set 2)