lzsgodmax |
2010-01-16 17:41 |
http://mamedev.org/
0.136u1 -------
IMPORTANT NOTE: As of this release of MAME, several important things about the system have changed. Please read the following items before attempting to compile this new version.
1. A new tool chain for Windows, based off of gcc 4.4.3 prerelease, is now REQUIRED. Go to http://mamedev.org/tools to get the new tools. The updated included with 0.136u1 WILL NOT BUILD with the old tools. The new tool chain has support for building 64-bit MAME builds with gcc, as well as built-in DirectX headers, and C++ support, which was missing from the old tools.
2. Non-Unicode builds of Windows MAME are no longer supported. The options to turn this off in the makefile have been removed, and future changes are likely to solidify this requirement. If you are still (God forbid) running on Win9x, you will need the unicows.dll library to run MAME. Download unicows from Microsoft.
3. All code in MAME is now compiled as C++, plus there have been a few small changes that take advantage of the C++ language. For the most part, there is no effect on how drivers are written, except for some nicer accessors to devices and address spaces. Future improvements to take advantage of the C++ syntax will evolve slowly, and will be done internally. We are not interest in outside attempts to do this work for now.
4. The SDL OSD for MAME is now shipped as part of the main source package. SDL builds for Windows are now regularly built as part of the validation sequence for a new release. Thanks to R. Belmont, couriersud, and Olivier Galibert for their work on the SDL port over the years.
MAMETesters Bugs Fixed ---------------------- - 00660: [DIP/Input] zoar: The cabinet UPRIGHT dipswitch is not working. (stephh) - 03233: [Multisession] All sets in crystal.c: Multisession Crash - 00111: [Crash/Freeze] gunbird2: crashes during the 4th level boss fight (North Pole) when using Vampiro. (PsikyoFan) - 03649: [Crash/Freeze] gekisha: Unknown DIP 4-2 toggles Auto Tsumo after Reach. If it is enabled and declare Reach, MAME crashes. (Angelo Salese) - 02154: [DIP/Input] ckongg: Coinage settings are wrong. (stephh) - 02157: [DIP/Input] ckongg: Coinage settings shown on screen don't correspond to actual settings (stephh) - 03653: [Graphics] crzrally, crzrallya, crzrallyg: Default high scores are incorrect (Pierpaolo Prazzoli) - 03651: [Graphics] matmania: Graphical corruption (M.A.S.H.) - 03620: [Speed] quasar: Massive slowdown (Quench) - 03623: [Speed] laserbat, catnmous: Massive slowdown (Quench) - 03621: [Interface] Hitting F6 without -cheat trigger causes crash (smf) - 03626: [Graphics] raiders, spacefrt: Background star field is missing (Fabio Priuli) - 03637: [Core] dino, punisher, wof and clones: NVRAM saves correctly, but doesn't reload any changes made (Fabio Priuli) - 03415: [Compiling] unidasm fails to link when ldplayer is the specified target (Aaron Giles) - 03485: [Graphics] mikie, mikiej, mikiehs: Possible priority issue on game completion (robiza) - 00266: [Graphics] daraku: Graphic Issues at region warning and during super move. (PsikyoFan) - 00892: [Misc.] s1945iii: At the very last boss, MAME popup a message (PsikyoFan) - 03632: [Crash/Freeze] kinst, kinst2: Game hangs at black screen with 32-bit build (Aaron Giles) - 03630: [Core] Any EEPROM with an 8-bit data bus is not being saved correctly (Aaron Giles) - 03622: [Graphics] solomon, solomonj: Graphics Bugs (Pierpaolo Prazzoli)
Source Changes -------------- hng64 improvments [Andrew Gardner] - bbust2 now has 3d geometry. - fixed improperly loaded ROMs in sams64* games. - hacked 3d acknowledge in a slightly different manner. Sams64 games now show 3d. - found the 'explicit palette' word in bbust2. Colors are now correct Implemented what looks like a 'dynamic palette' bit. Fixes the colors in sams64 games, but not roadedge or buriki.
RSP DRC changes: [Aaron Giles] - fixed misaligned 32-bit accesses - disabled DRC_SQV implementation as it breaks music in mtetrisc
Converted RSP callbacks into device callbacks. Removed a ton of tag- based queries in favor of using the device passed. [Aaron Giles]
Added profiler_mark() calls around rdp_process_list() so that the RDP time is separated from the RSP time. [Aaron Giles]
Added more decrypted opcodes to cb2001. [robiza]
Added driver data struct to cave.c. [Fabio Priuli]
Changed inline_config to be allocated separately to avoid alignment issues. [Aaron Giles]
uPD7801 core changes: [Wilbert Pol] - Fixed incorrect disassembly of some instructions. - Updated the handling of interrupts to match the documentation. - Implemented uPD7801 timers. - Configured port A on the uPD7801 to an output port.
Removed the various HAS_xxxx for sound cores. To select sound cores, just choose them in the make system. Further granularity is not necessary. This also means that the samples core is always required. [Aaron Giles]
Base tilemap hook-up for cb2001. [Angelo Salese]
Fixed the gfx rom loading for Race Drivin' Panorama [David Haywood]
Vs. Net Soccer improvements: - Emulated DMA protection for startup-checks [Olivier Galibert] - Fixed Data ROM loading, game now boots [David Haywood] - Marked Sprite + Sound ROMs as BAD_DUMP [David Haywood]
Converted the goldstar, liberate, sidearms and sidepckt drivers to use driver_data [Atari Ace]
Makefile changes: [Aaron Giles] - Removed CPP_COMPILE flag; all code is now compiled as C++ except for zlib and expat - Mapped INLINE to "static inline" since C++ has real inlining - Added new 'default' make target which just builds the emulator. Use 'make tools' to build the tools, or 'make all' to build the whole thing. - 64-bit builds now get a '64' suffix on them. - Removed UNICODE flag from Windows; UNICODE is always enabled now. - If OSD is not defined, we look for the built-in Windows environment variable 'OS' and if it is set to 'Windows_NT', we assume OSD=windows; otherwise we assume OSD=sdl. - If TARGETOS is not defined, we look for the same variable and set TARGETOS=win32 if it is set to 'Windows_NT'. - Windows SDL builds have an 'sdl' prefix on the executable so they can live side-by-side. - Added cheesy auto-detection of 64-bit Windows builds (based on the PATH including 'mingw64-w64') Removed hacks surrounding unicode handling in main(). They are no longer necessary with the new tools. [Aaron Giles]
Fixed typo in 8-bit eeprom case that broke operation in some games. [Aaron Giles]
Fixed x86 DRC backend codegen bug that broke kinst. [Aaron Giles]
Got rid of setjmp/longjmp for error handling in favor of exceptions. Fatalerror now maps to throwing an exception. [Aaron Giles]
[PIT8253] Update PIT counter even if there was no elapsed cycles (this only affects fast drivers like at586 in MESS). [Miodrag Milanovic]
Fixed a bunch of minor quirks, and fixed gfxs in the dwarfd driver. [Angelo Salese]
Changed berlwall, arkanoid, bakubrkr, mgcrystl to use YM2149. [Corrado Tomaselli]
Verified and corrected clocks in halleys and exctsccr. [Corrado Tomaselli]
Add support for Mahjong panel for mjgtaste. Makes this the default input and alters the default eeprom accordingly to match factory default. Note that you need to change both the game and the controller setting from the driver configuration when switching input sources since the two are mutually exclusive. [PsikyoFan]
Fix zeroize protection simulation in lieu of proper dongle dump. [Bryan McPhail]
Adds missing sample rom to Gals Panic 4 (Korea) [Brian Troha, Dumping Union]
misc Konami wip: [Fabio Priuli] * moved a few routines (used for sorting graphics layers) to konicdev.c since they are shared by several drivers * added driver data struct to ajax.c and aliens.c * added driver data struct + save states to: asterix.c, bishi.c, blockhl.c, bottom9.c, chqflag.c, crimfght.c, dbz.c, gbusters.c, gijoe.c, lethal.c, mainevt.c, moo.c, overdriv.c, parodius.c, rollerg.c, rungun.c, simpsons.c, spy.c, surpratk.c, tail2nos.c, thunderx.c, tmnt.c, ultraman.c, vendetta.c, xexex.c and xmen.c * updated some Konami drivers above to separately allocate palette/ extra/work RAM instead of appending them to maincpu ROM; also, reduced maincpu rom regions where appropriate * replaced memory_set_bankptr with memory_set_bank where necessary * added driver data struct & save states to gradius3.c
Converted taitosnd (aka tc0140syt) to be a device and updated the related drivers to use the new code. [Fabio Priuli]
Replaced all occurrences of cputag_get_cpu with devtag_get_device: the former function was just an alias and now cpus are no different from other devices. Also removed cputag_get_cpu and cputag_reset (another alias, not even used in the source) from cpuexec.h. [Fabio Priuli]
Fixed knights rom labels [Dlfrsilver]
Metal Maniax improvements [Phil Bennett/luigi30] * Fixed frame buffer display * Started to add the other CPUs * Added PCB layouts for layers 1 and 2 * Hooked up TMS34020 * Started to implement the ADSP-2105 network CPU and the CAGE audio system [Phil Bennett]
Added some missing header declarations and static qualifiers. Added validity.h to the core for consistency as well as an explicit foo.h in each foo.c. [Atari Ace]
Added driver data struct to taitoair.c and taito_b.c. [Fabio Priuli]
VIA6522: Refactored interface to use READ/WRITE_LINE. [Curt Coder]
Cyber Tank improvements: [Angelo Salese] * Fixed bitplane order * Decoded sprite gfx format * Hooked up the two bg tilemaps * Wrote bare-bones video emulation for the Cyber Tank sprite chip / blitter * Added video boundary checks for the blitter
The starting value for an output port is now the default value, which is based on whether it is active high or low. So the device will be called the first time the line becomes active. Changed the eeprom device to assume that the reset and clock are cleared until it's told otherwise. [smf]
Added driver data struct to taito_l.c & opwolf.c. [Fabio Priuli]
Added driver data struct + save states to asuka.c (cadash was not supporting saves), rainbow.c, rastan.c, taito_f2.c, taito_h.c, taito_o.c, taito_z.c, topspeed.c & volfied.c. [Fabio Priuli]
Renamed mamecore.h -> emucore.h. [Aaron Giles]
New C++-aware memory manager: [Aaron Giles]
This is a simple manager that allows you to add any type of object to a resource pool. Most commonly, allocated objects are added, and so a set of allocation macros is provided to allow you to manage objects in a particular pool:
pool_alloc(p, t) = allocate object of type 't' and add to pool 'p' pool_alloc_clear(p, t) = same as above, but clear the memory first pool_alloc_array(p, t, c) = allocate an array of 'c' objects of type 't' and add to pool 'p' pool_alloc_array_clear(p, t, c) = same, but with clearing pool_free(p, v) = free object 'v' and remove it from the pool
Note that pool_alloc[_clear] is roughly equivalent to "new t" and pool_alloc_array[_clear] is roughly equivalent to "new t[c]". Also note that pool_free works for single objects and arrays.
There is a single global_resource_pool defined which should be used for any global allocations. It has equivalent macros to the pool_* macros above that automatically target the global pool.
In addition, the memory module defines global new/delete overrides that access file and line number parameters so that allocations can be tracked. Currently this tracking is only done if MAME_DEBUG is enabled. In debug builds, any unfreed memory will be printed at the end of the session.
emualloc.h also has #defines to disable malloc/free/realloc/calloc. Since emualloc.h is included by emucore.h, this means pretty much all code within the emulator is forced to use the new allocators. Although straight new/delete do work, their use is discouraged, as any allocations made with them will not be tracked.
Changed the familar auto_alloc_* macros to map to the resource pool model described above. The running_machine is now a class and contains a resource pool which is automatically destructed upon deletion. If you are a driver writer, all your allocations should be done with auto_alloc_*.
Changed all drivers and files in the core using malloc/realloc or the old alloc_*_or_die macros to use (preferably) the auto_alloc_* macros instead, or the global_alloc_* macros if necessary.
Added simple C++ wrappers for astring and bitmap_t, as these need proper constructors/destructors to be used for auto_alloc_astring and auto_alloc_bitmap.
Removed references to the winalloc prefix file. Most of its functionality has moved into the core, save for the guard page allocations, which are now implemented in osd_alloc and osd_free.
Added driver data struct + save states to darius.c & othunder.c. [Fabio Priuli]
Added driver data struct to ninjaw.c, slapshot.c, warriorb.c, wgp.c. [Fabio Priuli]
Extended the astring class wrapper into something useful, and useable as a stack object. Also designed the interfaces to allow for chaining operations. And added a casting operator to const char * for seamless use in most functions that take plain old C strings. [Aaron Giles]
Changed all uses of astring to use the object directly on the stack or embedded in objects instead of explicitly allocating and deallocating it. Removed a lot of annoying memory management code as a result. [Aaron Giles]
Changed interfaces that accepted/returned an astring * to use an astring & instead. [Aaron Giles]
Removed auto_alloc_astring(machine). Use auto_alloc(machine, astring) instead. [Aaron Giles]
Major header file cleanup: [Aaron Giles] - Created new central header "emu.h"; this should be included by pretty much any driver or device as the first include. This file in turn includes pretty much everything a driver or device will need, minus any other devices it references. Note that emu.h should *never* be included by another header file. - Updated all files in the core (src/emu) to use emu.h. - Removed a ton of redundant and poorly-tracked header includes from within other header files. - Temporarily changed driver.h to map to emu.h until we update files outside of the core.
Added class wrapper around tagmap so it can be directly included and accessed within objects that need it. Updated all users to embed tagmap objects and changed them to call through the class. [Aaron Giles]
Added nicer functions for finding devices, ports, and regions in a machine: [Aaron Giles]
machine->device("tag") -- return the named device, or NULL machine->port("tag") -- return the named port, or NULL machine->region("tag") -- return the named region
(Note that machine->region() returns a pointer to a region_info class which describes a region, not a pointer to the region's memory.)
Made the device tag an astring. This required touching a lot of code that printed the device to explicitly fetch the C-string from it. (Thank you gcc for flagging that issue!) [Aaron Giles]
Added a PCM sample end/loop callback to the RF5C68 core [Barry Rodewald]
galaxold update: [stephh] - Renamed set kkgalax to ckongmc - Changed descriptions for ckongg and ckongmc - Fixed dip switches and inputs for ckongg and ckongmc - Updated ckongmc memory map
Added the mameconfig version to the -listxml output [Oliver Stoneberg]
Implemented inputs and sound in Gunpey [Luca Elia]
Added new member function space() to the device_config, along with shorter constants to be used (AS_PROGRAM, AS_DATA, AS_IO). With no parameters, space() returns the first address space, which is commonly the only space present. Updated a few devices that referenced the old space[] array to call the new function instead. [Aaron Giles]
Implemented basic blitter support in Gunpey [Tomasz Slanina]
Converted Gunpey to use RGB pens instead of hardcoded palette table [Angelo Salese]
Enforce that numbers are all the same exact width when loading fonts. [Aaron Giles]
Fixed a bogus protection check in Victor 21 [Angelo Salese]
Fix assert for prmrsocr + clones - no whatsnew needed [Fabio Priuli]
Redumped program and sprite roms in Cyber Tank [Antonio Gonzalez Jr.]
Added a mostly-complete SunPlus u'nSP core based on the one in Segher's "Unununium". [Harmony]
Add lots of comments relating to 56-pin Mahjong interface and Psikyo SK-G001 interface pcb based on discussion with alien_mame and documents from other Mahjong PCBs. [PsikyoFan]
Verified clocks on Poker Ladies and changed Z80 clock of Mahjong Gakuen from 6Mhz to 8MHz to match the other Mitchell hardware games [Corrado Tomaselli]
i386: Improved accuracy of the various emulated models, makes CPU detection programs detect the correct CPU (in MESS). [Dirk Best] - eflags mask added - Initial values for the EAX and EDX registers fixed - cpuid values improved - feature flags improved - initial value for the cr0 register improved - changed 486 to not support the cpuid instruction by default - take a trap on invalid instructions instead of throwing a fatalerror - emulated the undefined flag behavior for the DIV/IDIV instructions on Intel CPUs
SDLMAME: improved OS X and SDL 1.3 SVN support, try to autodetect SDLMAME targets [Couriersud]
SDLMAME: add BGRA support to -video soft [couriersud]
Fixed period for both sn76489 and sn76489A periodic noise; fixes pitch in 'smooth criminal' demo for colecovision and fixes pitch (but not the waveform, which will require more work) of music in dorunrun; More work is required before the code will be bit accurate due to the way the real LFSR and periodic generator work. [Lord Nightmare, Kold666, PlgDavid]
SDLMAME makefile improvements: [couriersud] - Fix TARGETOS detection on OS X. - Do not try to check TARGETOS when cross-compiling - For non-windows targets, try to auto-detect PTR64 - testkeys now builds again - for unix targets, added a depend rule to sdl.mak which builds a .depend file.
Fixed a number of compiler bugs found by PowerPC MacOS X. [R. Belmont]
Added casting operators to the region_info class so you can assign a region to a generic type pointer and have it automatically convert. Also added a bytes() method which is safe if the region is NULL (useful for saying machine->region("foo")->bytes() and not crashing if foo doesn't exist). [Aaron Giles]
Changed the region field in the device_config to be a region_info *, and removed the regionbytes field. Updated all users of these fields to use the new casting operators and bytes() methods instead. [Aaron Giles]
Added subdevice and subregion methods to the device_config class, so you can easily query for devices and regions that are device-specific. The device prefix ("devicename:") is automatically prepended. [Aaron Giles]
YM2612: More accurate LFO implementation and channel clipping [Eke-Eke, Nemesis, R. Belmont]
New games added or promoted from NOT_WORKING status --------------------------------------------------- Second Chance [Siftware] Multi Game (Tung Sheng Electronics) [Mariusz Wojcieszek]
New clones added ---------------- Exciting Soccer (Japan set 2) [Corrado Tomaselli] Super Bar [Brian Troha, David Haywood, Dumping Union] Mega Blast (US) [D. Beneke, hap, Smitdogg, Dumping Union]
New games marked as GAME_NOT_WORKING ------------------------------------ Fun Station Spielekoffer 9 Spiele [Tomasz Slanina] Vega [David Haywood] Monza GP [Tomasz Slanina] Quarter Horse [Ruben Panossian, Angelo Salese] Vortex [tormod, Team Europe, Smitdogg, The Dumping Union] Bega's Battle [Angelo Salese] Computer Quiz Atama no Taisou [Chack'n, Team Japump] Track & Field (NZ Bootleg?) [Siftware, Tafoid]
从这个版本开始,mame全部代码改用C++编译 |
|