{"id":16524,"date":"2008-12-22T09:26:21","date_gmt":"2008-12-22T09:26:21","guid":{"rendered":"http:\/\/127.0.0.1\/ef\/?p=16524"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=16524","title":{"rendered":"[Arcade] Mame v0.128u7"},"content":{"rendered":"<p>Nouvelle update.<\/p>\n<p><code><br \/>\nNOTE: As of this release, we have two more major changes. These should<br \/>\nbe the last \"huge\" changes of this dev cycle. <\/p>\n<p>The most major change is the final retirement of the global Machine<br \/>\npointer, which has been part of MAME for many years. Frankly, I never<br \/>\nthought we'd hit this point so quickly, so my hats off to Atari Ace<br \/>\nwho helped push through the final round of changes needed to make this<br \/>\nhappen finally. As a result of this change, it should be possible in<br \/>\nthe coming year to finally write a driver that runs two full machines<br \/>\nsimultaneously.<\/p>\n<p>The second big change is that the CPUs are now full-fledged devices,<br \/>\nand participate like all other devices in the system configuration.<br \/>\nThis is mainly an internal structural change, but in the end removes<br \/>\nsome redundant code and behavior. In a future dev cycle, a similar<br \/>\nthing will happen with the sound cores.<\/p>\n<p>Starting now, the focus for MAME will be to iron out remaining issues<br \/>\nand release a 0.129 sometime around the 1st of the year. Please keep<br \/>\nreporting bugs to MAMETesters as you find things.<\/p>\n<p>MAMETesters Bugs Fixed<br \/>\n----------------------<br \/>\n- 02745: [Crash\/Freeze] all sets using autosave: Games using autosave<br \/>\n         segfault on startup (Aaron Giles)<br \/>\n- 02750: [Sound] All Sets in equites.c: no background music<br \/>\n         (Aaron Giles)<br \/>\n- 02757: [Documentation] sengoku3: manufacturer should be \"Noise<br \/>\n         Factory \/ SNK\" (Phil Bennett)<br \/>\n- 02753: [Crash\/Freeze] gradius4: hardware error -1 (Aaron Giles)<br \/>\n- 02755: [Crash\/Freeze] All Sets in metro.c: Crash with access<br \/>\n         violation. (Aaron Giles)<br \/>\n- 02756: [Crash\/Freeze] hyprduel, hyprdelj: Colors on the title screen<br \/>\n         wrong, games crash mame with ACCESS VIOLATION (Mamesick)<\/p>\n<p>Source Changes<br \/>\n--------------<br \/>\nRemoved old cherrym driver (meant to be removed last time, oops).<br \/>\n[Aaron Giles]<\/p>\n<p>Funworld.c improvements [Roberto Fresca]<br \/>\n - Added new set: Jolly Card (italian, encrypted bootleg).<br \/>\n   No coins... Only remote credits. After nvram init, set the Payout<br \/>\n   DIP to 'manual' to allow the remote credits mode to work.<br \/>\n - Created inputs from the scratch for jolycdib.<br \/>\n - Updated technical notes.<\/p>\n<p>Made CPUs into proper devices. CPUs are now added in the machine<br \/>\nconfiguration just as any other device, and the standard CPU<br \/>\nconfiguration is performed via the inline configuration macros.<br \/>\n[Aaron Giles]<\/p>\n<p>Changed cpu_type from an enumeration into a pointer to the CPU's<br \/>\nget_info function, very similar to device behavior. Updated all<br \/>\ndrivers to #include the necessary header files for the CPU's they<br \/>\nreference. [Aaron Giles, Atari Ace]<\/p>\n<p>Added function cpu_get_type() to return the CPU type. [Aaron Giles]<\/p>\n<p>Changed several cpu_* functions over to the device_* equivalents,<br \/>\nspecifically for get\/set info and for reset. [Aaron Giles]<\/p>\n<p>The device system now maintains a parallel list of devices based on<br \/>\ntype and class, for faster iteration through all devices of a given<br \/>\ntype or class. [Aaron Giles]<\/p>\n<p>Cleaned up code that looped over CPUs via the machine->cpu array to<br \/>\nnow loop using the type-based device list. [Aaron Giles]<\/p>\n<p>Removed start\/stop\/reset\/nvram functions from the device_config in<br \/>\nfavor of grabbing them as needed. [Aaron Giles]<\/p>\n<p>Cleaned up the generic interrupt_enable code to work with CPU devices<br \/>\ninstead of numbers. [Aaron Giles]<\/p>\n<p>Mapped the devtag_* functions to device_* functions via macros instead<br \/>\nof parallel implementations. [Aaron Giles]<\/p>\n<p>Removed cpuintrf_init() which is no longer necessary. [Aaron Giles]<\/p>\n<p>Changed a number of APIs in the system to accept running_machine,<br \/>\naddress_space, or device_config types, in order to remove the use of<br \/>\nthe global Machine variable. Removed the global Machine variable now<br \/>\nthat it is no longer directly references. [Atari Ace, Aaron Giles]<\/p>\n<p>Added the concept of device \"owner\", for devices owned by other<br \/>\ndevices. [Aaron Giles]<\/p>\n<p>Modified laserdisc players to walk back to their global device state<br \/>\nvia the owner, rather than brute-force searching for the first<br \/>\ninstance and hoping that is the right one. [Aaron Giles]<\/p>\n<p>Finalizer update [poUzVdb90]<br \/>\n - converted to tilemap<br \/>\n - added flipscreen<br \/>\n - changed sound chip name from SN76496 to SN76489A<\/p>\n<p>Made the concept of a \"clock\" native to devices. The clock is now<br \/>\nspecified when the device is added, and the clock is available in<br \/>\nthe device_config directly via device->clock. Updated all devices<br \/>\nthat have a clock to specify it when adding the device, rather than<br \/>\nas part of their configuration. As part of this work, also created<br \/>\ndevice-specific _ADD and _REMOVE macros to simplify configuration.<br \/>\n[Aaron Giles]<\/p>\n<p>Defined a generic device execute function callback, though it<br \/>\nis not used yet. The long term plan is that any device with an<br \/>\nexecute callback will be scheduled along with the CPUs. Now that<br \/>\nCPUs are devices, their scheduling will be moved over to this<br \/>\nlogic eventually. [Aaron Giles]<\/p>\n<p>Changed various NVRAM devices to fetch their default memory region<br \/>\nfrom the device->region rather than specifying it in the<br \/>\nconfiguration. [Aaron Giles]<\/p>\n<p>Moved device startup to *before* the DRIVER_INIT is called. This<br \/>\nis to allow the DRIVER_INIT to configure devices that have been<br \/>\nproperly allocated. So far I don't see any negative effects, but<br \/>\nbe on the lookout if something weird shows up. [Aaron Giles]<\/p>\n<p>Rewrote the device iteration logic to make use of the typenext<br \/>\nfield and the newly-introduced classnext field for iterating more<br \/>\nefficiently through devices of a given type or class. [Aaron Giles]<\/p>\n<p>Modified the parameters of the stream_update_func callback. As part of<br \/>\nthis work, macro-ized all the callbacks to STREAM_UPDATE, and added<br \/>\nthe sound device as a parameter. [Atari Ace]<\/p>\n<p>Cleaned up i86\/i286\/i386\/nec\/v30mz headers: [Aaron Giles]<br \/>\n * renamed i86.h -> i86priv.h<br \/>\n * renamed i86intrf.h -> i86.h<br \/>\n * consolidated i88intrf.h, i186intf.h, i188intf.h, etc into i86.h<\/p>\n<p>Cleaned up many other CPU headers to move memory read\/write macros<br \/>\nout of them, since they are inappropriate and should be prive to the<br \/>\nCPU core. [Aaron Giles]<\/p>\n<p>Removed index and clock parameters from CPU_INIT function.<br \/>\n[Aaron Giles]<\/p>\n<p>Some PIC8259 updates: [Wilbert Pol]<br \/>\n - Fixed operation of edge-triggered interrupts<br \/>\n - INT output line is now cleared when an IRQ is acknowledged<br \/>\n - Implemented basic OCW3 features<\/p>\n<p>Fixed proms in boobhack. [robiza]<\/p>\n<p>Decoded some graphics and setup some RAM in the Virtual Combat driver.<br \/>\n[Andrew Gardner]<\/p>\n<p>Cleaned up device and sound interfaces to match the CPU interfaces<br \/>\nwhen handling strings. Namely, the generic get_info functions<br \/>\nallocate a temporary string and the device in question copies its<br \/>\nstring to the target, instead of assigning a const char *. Updated<br \/>\nall device and sound cores to operate this way. [Aaron Giles]<\/p>\n<p>Added the concept of a cpu_state_table, which is supplied by the CPU<br \/>\ncores and which describes all the register state accessible to the<br \/>\ndebugger and other subsystems. The format of the table is such that<br \/>\nmost data can be simply fetched from memory without the further<br \/>\ninvolvement of the CPU core, including the display of common formats.<br \/>\nExtensibility points are available for custom display and for<br \/>\nimporting\/exporting the data to intermediate variables for more<br \/>\ncomplicated scenarios. Updated the ADSP21xx, TMS340x0, i86, Z80, Z180,<br \/>\nand 8085 cores to use this. [Aaron Giles]<\/p>\n<p>Removed the old debugger register list, which was never used. Replaced<br \/>\nit with using ordering from the cpu_state_table. [Aaron Giles]<\/p>\n<p>Renamed REG_PC -> REG_GENPC, REG_SP -> REG_GENSP, and<br \/>\nREG_PREVIOUSPC -> REG_GENPCBASE. Updated a few spots that were using<br \/>\nthese directly. Moved these definitions into the end of the register<br \/>\narea rather than leaving them outside which put them in a weird range.<br \/>\n[Aaron Giles]<\/p>\n<p>More cleanup. Added address-space-specific constants for the various<br \/>\nbus width and shift CPU interface constants. Changed all the cores<br \/>\nto use them. [Aaron Giles]<\/p>\n<p>Changed ADSP21xx cores to accept a configuration struct instead of<br \/>\nusing set_info to specify serial port callbacks. Simplified the<br \/>\nADSP21xx get\/set info significantly. Removed support for only<br \/>\nincluding certain variants of the chips; they are now either all<br \/>\nsupported or all unsupported. [Aaron Giles]<\/p>\n<p>Memory view fixes: [Aaron Giles]<br \/>\n * Fixed bug that computed the wrong total size if the address<br \/>\n   space was a full 32 bits<br \/>\n * Improved display to show unmapped memory with *s<br \/>\n * Disabled enumeration of disk and 0-length regions<\/p>\n<p>Added PAL to arkgcbl. [robiza]<\/p>\n<p>Added Country Girl to the Jangou driver,working with sound<br \/>\n[David Haywood, Angelo Salese]<br \/>\n - Fixed transparency pens in the Jangou driver (so removed the<br \/>\n    GAME_IMPERFECT_GRAPHICS flag); [Angelo Salese]<br \/>\n - Added a kludge for Jangou Lady RNG,will be worked on in the future;<br \/>\n    [Angelo Salese]<\/p>\n<p>Added running_machine callbacks for the Amiga code. [Nathan Woods]<\/p>\n<p>Updated sscope2 to use newly-dumped roms. [robiza]<\/p>\n<p>Added running_machine parameters to the f3853 callbacks. [Wilbert Pol]<\/p>\n<p>Added running_machine parameter to the callback in the sid interface.<br \/>\n[Wilbert Pol]<\/p>\n<p>Removed MDRV_INTERLEAVE(x), which specified the minimum scheduling<br \/>\nquantum in terms of \"frames\" (a dubious concept now with multiple<br \/>\nscreens and changing refresh rates). Replaced it with a new<br \/>\nMDRV_QUANTUM_TIME(x) which specifies the minimum scheduling quantum<br \/>\nas a time value. Time can be specified as HZ(x), NSEC(x), USEC(x),<br \/>\netc. Updated all drivers to use this, assuming 60 was the frame<br \/>\nrate (this is not perfect but should work for almost all cases).<br \/>\n[Aaron Giles]<\/p>\n<p>Changed MDRV_WATCHDOG_INIT_TIME(x) to automatically prepend<br \/>\nUINT64_ATTOTIME_IN_ to the parameter, ensuring there is no improper<br \/>\nuse of this macro and bringing it in line with the MDRV_QUANTUM_TIME()<br \/>\nmacro. Updated all callers. [Aaron Giles]<\/p>\n<p>Added new MDRV_QUANTUM_PERFECT_CPU(x) to specify that the minimum<br \/>\nquantum should be enough to ensure that the specified CPU tag only<br \/>\never executes a single instruction at a time. This can be used to<br \/>\nexplicitly require \"perfect\" synchronization for drivers that have<br \/>\nmultiple CPUs with shared memory. Turned this on for the arknoid2<br \/>\ndriver for now as a test (the interleave on that driver was already<br \/>\nvery close to perfect anyway). [Aaron Giles]<\/p>\n<p>Fixed some color issues in the goldstar.c driver [David Haywood]<\/p>\n<p>Merged goldstar and lucky8 drivers. [David Haywood]<\/p>\n<p>Improvements to ddragon3\/shadfrce\/wwfsstar\/wwfwfest: [Mamesick]<br \/>\n - converted driver to be fully scanlines based using timers<br \/>\n - updated driver to new video screen raw parameters<br \/>\n - hooked up interrupts (ddragon3, wwfwfest)<\/p>\n<p>Fixed Agress' title screen. [David VanVoorhis]<\/p>\n<p>Fixed update_handler for the dsp56k and polygonet. [Andrew Gardner]<\/p>\n<p>Improvements to the dmndrby.c driver. [Mike Green]<\/p>\n<p>Continued rewrite of the Motorola DSP56k CPU core. [Andrew Gardner]<br \/>\n * Fixed flag calculation and sign extension for numerous ops.<br \/>\n * Added rnd, mpysuuu, and dmac ops.<br \/>\n * Fixed do loop behavior to skip empty loops.<br \/>\n * Added stack underflow exception handling.<\/p>\n<p>Improvements to the skylncr.c driver: [Roberto Fresca, David Haywood]<br \/>\n - Complete reel support from the scratch.<br \/>\n - Full inputs, outputs & DIP switches from the scratch.<br \/>\n - Added new games.<br \/>\n - Updated technical and game notes.<\/p>\n<p>Rewrote 8080\/8085 interrupt handling so that it makes sense. Changed<br \/>\ncallbacks to be specified in a config structure. Converted core to<br \/>\ncpu_state_table. Changed to a single HAS_808X define for both cores.<br \/>\nFixed several drivers that used 8080\/8085 interrupts in odd ways.<br \/>\n[Aaron Giles]<\/p>\n<p>Converted warpwarp driver to raw video parameters. [Aaron Giles]<\/p>\n<p>Fixe 'run to cursor' and 'toggle breakpoint' operations in the<br \/>\ndebugger when dealing with CPUs that have shifted address spaces.<br \/>\n[Andrew Gardner]<\/p>\n<p>Improvements to goldstar.c driver. [Roberto Fresca]<br \/>\n - Hooked the 3x PPI 8255 devices to chryigld and ncb3.<br \/>\n - Reworked the chryigld and ncb3 inputs based on PPI 8255 connections.<br \/>\n - Added the unmapped PSG sound to chryigld and ncb3.<br \/>\n - Some works on their machine driver.<br \/>\n - Some cleanups.<\/p>\n<p>New games added or promoted from NOT_WORKING status<br \/>\n---------------------------------------------------<br \/>\nCountry Girl [David Haywood, Angelo Salese]<br \/>\n4nin-uchi Mahjong Jantotsu [David Haywood, Angelo Salese]<br \/>\nThree Ds - Three Dealers Casino House [David Haywood, Angelo Salese]<br \/>\nSky Lancer (Bordun, ver.U450C) [Roberto Fresca, David Haywood]<br \/>\nButterfly Video Game (ver.U350C) [Roberto Fresca, David Haywood]<br \/>\nMad Zoo (ver.U450C) [Roberto Fresca, David Haywood]<br \/>\nCasino Winner [Chris Hardy, Angelo Salese]<br \/>\nCherry I Gold (bootleg of Golden Star) [Roberto Fresca]<\/p>\n<p>New clones added<br \/>\n----------------<br \/>\nJolly Card (italian, encrypted bootleg) [Roberto Fresca]<br \/>\nDouble Dragon 3 - The Rosetta Stone (prototype) [Guru]<\/p>\n<p>New games marked as GAME_NOT_WORKING<br \/>\n------------------------------------<br \/>\nGrand Prix 98 [David Haywood]<br \/>\nLeader [Roberto Fresca, David Haywood]<br \/>\nParent Jack [David Haywood]<br \/>\nJanshi [David Haywood]<br \/>\nCherry Master I (v1.01) [Roberto Fresca, David Haywood]<br \/>\n[\/CODE]<br \/>\n<\/p>\n<p class=\"p_site_officiel\"><a href=\"http:\/\/mamedev.org\/updates.html\" class=\"site_officiel\" target=\"_blank\">Site Officiel<\/a><\/p>\n<p class=\"p_en_savoir_plus\"><a href=\"https:\/\/www.emu-france.com\/emulateurs\/6-arcades\/88-mame-wip\/\" class=\"en_savoir_plus\">En savoir plus...<\/a><\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=16524\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Nouvelle update. NOTE: As of this release, we have two more major changes. These should be the last \u00ab\u00a0huge\u00a0\u00bb changes of this dev cycle. The most major change is the final retirement of the global Machine pointer, which has been &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[],"tags":[],"class_list":["post-16524","post","type-post","status-publish","format-standard","hentry","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/sKi2R-","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/16524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16524"}],"version-history":[{"count":0,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/16524\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}