summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/neogeo.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename *.c -> *.cpp in our source (nw) Miodrag Milanovic2015-11-081-278/+0
|
* We cannot relicense files for which we have not yet received responses (nw) balr0g2015-05-281-1/+1
|
* Sync other dirs with main driver license for MAME (nw) Miodrag Milanovic2015-05-131-2/+2
|
* Added dummy license headers for MAME part (nw) Miodrag Milanovic2015-05-071-0/+2
|
* Replace dynamic_array with std::vector [O. Galibert] Olivier Galibert2015-04-141-1/+2
|
* Cleanups and version bump Miodrag Milanovic2014-07-221-5/+2
|
* neogeo: use real palette_device (nw) Alex W. Jackson2014-05-281-115/+37
|
* xexex.c: small cleanup to audiocpu banking; start removal of ↵ Alex W. Jackson2014-05-281-0/+46
| | | | KONAMI_ROM_DEINTERLEAVE crap (nw)
* short whatsnew: fixed some gfx bugs in midas.c "livequiz" David Haywood2014-05-151-621/+33
| | | | | | | | | | long wn: started converting neogeo video / sprite system to a device_reset created base device + number of derived classes NEOGEO_SPRITE_REGULAR is an reference implementation, drawing direct from NEOGEO_SPRITE_OPTIMZIED is a version with predecoded gfx (as we use now) this is the default used by the driver NEOGEO_SPRITE_MIDAS is a version supporting the changes needed by the MIDAS games (mainly 8bpp instead of 4bpp)
* add note Michaël Banaan Ananas2014-03-141-3/+2
|
* Switched rgb_t to a class, replacing macros with methods. Mappings are Aaron Giles2014-02-191-1/+1
| | | | | | | | | | | | | | | | | | | as follows: MAKE_RGB(r,g,b) == rgb_t(r,g,b) MAKE_ARGB(a,r,g,b) == rgb_t(a,r,g,b) RGB_ALPHA(data) == data.a() RGB_RED(data) == data.r() RGB_GREEN(data) == data.g() RGB_BLUE(data) == data.b() RGB_BLACK == rgb_t::black RGB_WHITE == rgb_t::white Implicit conversions to/from UINT32 are built in as well as simple addition, subtraction, and scaling (with clamping). As a result of being a class, some stricter typing was needed in a few places but overall not too much.
* Fixed MT04726 Alex W. Jackson2014-01-201-2/+2
|
* Unchanged crap code of two years ago is still crap code (nw) Olivier Galibert2013-11-251-8/+9
|
* resurrect some old MVS multi-slot code David Haywood2013-11-251-9/+8
| | | | | | | | | | | | | | | | | | this is mostly functional but about 2 years old now, and badly needs some modernizations. It's a bit ugly in places because I've had to make sure the legacy methods work too, although in other places simply because it's old code I never quite got around to cleaning up. basically the inits have been split into ones that need calling once on startup (decryptions etc.) and ones that need calling when a new slot is activated (custom banking / protection handlers) mame64 neogeo -cart1 kof98 -cart2 kof99 -cart3 kof2000 -cart4 kof2001 -cart5 kof2002 -cart6 kof2003 works, assuming you have the RAM. certain combinations / orders don't work, maybe the real system is like that, maybe there are flaws in the implementation. once loaded as multi-game the neogeo will run through the attracts of each game in order, if you insert a coin then you can select next / previous game with the '3' and '4' (which are mapped to those buttons on the system) just like real hardware. if you're low on memory try mame64 neogeo -cart1 lbowling -cart2 samsho -cart3 mutnat -cart4 pbobblen -cart5 neomrdo -cart6 turfmast instead if you want an example of where it fails right now then put -cart1 roboarmy in slot 1 instead, it hangs after cycling through the games (or moving through them with 3) it's possible something isn't reset properly. This might become clearer as I clean things up a bit. I've verified eas and neocdz work as before
* NeoGeo improvements: [Alex Jackson] Alex W. Jackson2013-11-051-30/+21
| | | | | | | | | | | | | | | | | * Cleaned up large amounts of duplicated code between the MAME and MESS (AES/NeoCD) drivers * Removed MVS-only ROMs and devices (SM1 ROM, SFIX ROM, upd4990a RTC, etc.) from AES/NeoCD * Replaced legacy NVRAM in MVS and NeoCD with NVRAM devices * Correctly hooked up SM1 ROM bankswitching; the BIOS sound test works now * Corrected VRAM size * Sorted the Universe BIOS versions and unified them between MAME and MESS * Fixed kf10thep ROM loading and decryption which was a horrible hack (and not endian safe) * Replaced svcplus protection hack ROM patch with a less invasive one, based on FBA * Started marking code and data that should be moved out into devices * Various other code and comment cleanups New clones added ---------------- Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version [Alex Jackson]
* neogeo.c: fix memory leak, clean up inputs a bit [Alex Jackson] Alex W. Jackson2013-08-071-15/+19
|
* Bulk removal of machine().primary_screen references from MAME drivers, in Aaron Giles2013-08-051-6/+6
| | | | | | | | | | | | favor of using the common m_screen. This is 98% reliable except for cases where there were multiple screens or where the screens were not named 'screen' like everywhere else. Those cases will need to be revisited but should reveal themselves in the next round of regression tests. Eventual plan is primary_screen will go away. Devices that need to know the screen should have a device_video_interface. Drivers should find the screen device like any other, or use the pre-found m_screen for the common single-screen case.
* Modernization of drivers part 13 (no whatsnew) Miodrag Milanovic2013-02-121-108/+89
|
* neogeo.c: removed some more tagmap lookups. (nw) Wilbert Pol2013-02-101-24/+21
|
* neogeo.c/ng_aes.c: Reduce tagmap lookups (nw) Wilbert Pol2013-02-101-9/+9
|
* modernized some pre/postload calls (no whatsnew) Miodrag Milanovic2013-01-311-6/+5
|
* output of new srcclean changes that are relatively small [smf] smf-2013-01-111-2/+0
|
* Cleanups and version bumpmame0148 Miodrag Milanovic2013-01-111-58/+58
|
* Also reset the YM2610 when resetting the Z80, seems to avoid some lost ↵ David Haywood2012-12-071-2/+2
| | | | sounds in neocdz crsword2 + misc cleanups (nw)
* Introducing TIMER_CALLBACK_MEMBER and modernization part 1 (no whatsnew) Miodrag Milanovic2012-09-241-14/+12
|
* changed most of screen.machine() to machine() (no whatsnew) Miodrag Milanovic2012-09-181-2/+2
|
* Modernized screen update calls (no whatsnew) Miodrag Milanovic2012-09-171-3/+2
|
* Memory handler normalization, part 2. Change legacy Aaron Giles2012-09-171-2/+2
| | | | | | | read/write handlers to take an address_space & instead of an address_space *. Also update pretty much all other functions to take a reference where appropriate. [Aaron Giles]
* Massive change, MACHINE_START\RESET, VIDEO_START\RESET and PALETTE_INIT ↵ Miodrag Milanovic2012-09-131-40/+39
| | | | changed to be members of state classes (no whatsnew)
* ioport.c C++ conversion. Mostly internal changes, with no Aaron Giles2012-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | intended differences from previous behavior. For drivers, the main change is that input_port_read() no longer exists. Instead, the port must be fetched from the appropriate device, and then read() is called. For member functions, this is actually simpler/cleaner: value = ioport("tag")->read() For legacy functions which have a driver_data state, it goes: value = state->ioport("tag")->read() For other legacy functions, they need to fetch the root device: value = machine.root_device().ioport("tag")->read() The other big change for drivers is that IPT_VBLANK is gone. Instead, it has been replaced by a device line callback on the screen device. There's a new macro PORT_VBLANK("tag") which automatically points things to the right spot. Here's a set of imperfect search & replace strings to convert the input_port_read calls and fix up IPT_VBLANK: input_port_read( *\( *)(machine\(\)) *, *([^)]+ *\)) ioport\1\3->read\(\) input_port_read( *\( *)(.*machine[()]*) *, *([^)]+ *\)) \2\.root_device\(\)\.ioport\1\3->read\(\) (state = .*driver_data[^}]+)space->machine\(\)\.root_device\(\)\. \1state-> (state = .*driver_data[^}]+)device->machine\(\)\.root_device\(\)\. \1state-> input_port_read_safe( *\( *)(machine\(\)) *, *([^,]+), *([^)]+\)) ioport\1\3->read_safe\(\4\) IPT_VBLANK( *\)) IPT_CUSTOM\1 PORT_VBLANK("screen")
* Changed device->subregion to device->memregion. Moved Aaron Giles2012-04-201-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | memory_region management into the memory manager instead of directly in the machine. Hid the global region method; now all regions must be looked up relative to a device. If you're a member function, you can just use memregion("tag") directly. If you're a global function or a device referencing global regions, use machine().root_device().memregion("tag") to look up regions relative to the root. S&R to convert all references: machine([()]*)\.region machine\1\.root_device\(\).subregion Then remove redundant machine().root_device() within src/mame: ([ \t])machine\(\)\.root_device\(\)\. \1 And use state->memregion() if we have a state variable present: (state *= *[^;]+driver_data[^}]+)([^ \t]*)machine[()]*\.root_device\(\)\. \1state-> Finally some cleanup: screen.state-> state-> device->state-> state-> space->state-> state-> And a few hand-tweaks.
* MAME going modern part 7 (no whatsnew) Miodrag Milanovic2012-04-061-21/+18
|
* MAME going modern part 6 (no whatsnew) Miodrag Milanovic2012-04-051-1/+2
|
* Major bitmap-related changes throughout the system. There are Aaron Giles2012-01-121-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | almost certainly some regressions lurking. Let me know if something seems busted. Bitmaps are now strongly typed based on format. bitmap_t still exists as an abstract base class, but it is almost never used. Instead, format-specific bitmap classes are provided: bitmap_ind8 == 8bpp indexed bitmap_ind16 == 16bpp indexed bitmap_ind32 == 32bpp indexed bitmap_ind64 == 64bpp indexed bitmap_rgb32 == 32bpp RGB bitmap_argb32 == 32bpp ARGB bitmap_yuy16 == 16bpp YUY For each format, a generic pix() method is provided which references pixels of the correct type. The old pix8/pix16/pix32/ pix64 methods still exist in the short term, but the only one available is the one that matches the bitmap's pixel size. Note also that the old RGB15 format bitmaps are no longer supported at all. Converted model1, megadriv, and stv drivers away from the RGB15 format bitmaps. New auto_bitmap_<type>_alloc() macros are provided for allocating the appropriate type of bitmap. Screen update functions now must specify the correct bitmap type as their input parameters. For static update functions the SCREEN_UPDATE macro is now replaced with SCREEN_UPDATE_RGB32 and SCREEN_UPDATE_IND16 macros. All existing drivers have been updated to use the correct macros. Screen update functions are now required for all screens; there is no longer any default behavior of copying a "default" bitmap to the screen (in fact the default bitmap has been deprecated). Use one of the following to specify your screen_update callback: MCFG_SCREEN_UPDATE_STATIC(name) - static functions MCFG_SCREEN_UPDATE_DRIVER(class, func) - driver members MCFG_SCREEN_UPDATE_DEVICE(tag, class, func) - device members Because the target bitmap format can now be deduced from the screen update function itself, the MCFG_SCREEN_FORMAT macro is no longer necessary, and has been removed. If you specify a screen update callback that takes a bitmap_ind16, then the screen will be configured to use a 16bpp indexed bitmap, and if you specify a callback that takes a bitmap_rgb32, then a 32bpp RGB bitmap will be provided. Extended the bitmap classes to support wrapping a subregion of another bitmap, and cleaner allocation/resetting. The preferred use of bitmaps now is to define them directly in drivers/devices and use allocate() or wrap() to set them up, rather than allocating them via auto_bitmap_*_alloc(). Several common devices needed overhauls or changes as a result of the above changes: * Reorganized the laserdisc base driver and all the laserdisc drivers as modern C++ devices, cleaning the code up considerably. Merged ldsound device into the laserdsc device since modern devices are flexible enough to handle it. * Reorganized the v9938 device as a modern C++ device. Removed v9938mod.c in favor of template functions in v9938.c directly. * Added independent ind16 and rgb32 callbacks for TMS340x0 devices. * All video devices are now hard-coded to either ind16 or rgb32 bitmaps. The most notable is the mc6845 which is rgb32, and required changes to a number of consumers. * Added screen_update methods to most video devices so they can be directly called via MCFG_SCREEN_UPDATE_DEVICE instead of creating tons of stub functions.
* Bulk conversion of bitmap_t * to bitmap_t & . With this change the Aaron Giles2012-01-021-6/+6
| | | | | | | | parameters for the global SCREEN_UPDATE callback match the parameters for the driver_device version. Added allocate() and deallocate() methods to bitmap_t to permit cleaner handling of bitmaps in drivers and modern devices. [Aaron Giles]
* Bulk converted cliprect * to cliprect & across the system. This makes Aaron Giles2011-12-311-3/+3
| | | | | | | | | | cliprects mandatory everywhere. In general, cliprects were being correctly passed through the video side of most drivers already, so it is mostly a semantic change. Note that with my previous change, bitmaps have cliprects, so if you just want to clip to the bitmap's boundaries, pass bitmap->cliprect() instead of NULL (which is no longer permitted). [Aaron Giles]
* Converted bitmap_t and rectangle into proper classes. Replaced BITMAP_ADDR* Aaron Giles2011-12-311-4/+4
| | | | | | | | macros with bitmap->pix* functions, and moved bitmap_fill() to bitmap->fill() among other similar changes. Bitmap fields now only available via accessors. Replaced sect_rect with &= and union_rect with |= operators for rectangle classes. Some general cleanup as a result of these changes. [Aaron Giles]
* Change 'screen' parameter in SCREEN_UPDATE and SCREEN_EOF callbacks to a Aaron Giles2011-12-291-3/+3
| | | | | | | | | reference. Remove redundant machine parameter from SCREEN_EOF. Remove old vestiges of driver_device video_eof override since it wasn't being used. Update all multi-screen games to use separate functions for each screen (calling into common code where appropriate). [Aaron Giles] (nw: equivalent MESS changes are ready, will send along shortly)
* Converted presave/postload functions to delegates. In a lot of Aaron Giles2011-04-301-4/+4
| | | | | | cases, we can get rid of the postload function entirely and just call directly to the target function. Drivers eventually should just override device_postload() instead of registering for callbacks.
* Rename state_manager -> save_manager since the term "state" is overloaded. Aaron Giles2011-04-201-1/+1
|
* Final bulk rename for 0.142: ensure that all members of Aaron Giles2011-04-011-99/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | driver_device classes have an m_ prefix on them. When we eventually move functions using these into member functions, we will be able to remove the state-> pointers, and having the member variables prefixed will allow them to be distinguished from local variables. Some regex'es used (plus manually fixing the remaining stuff): In src/mame/... state->([a-zA-Z_][^_][a-zA-Z0-9_]*) state->m_\1 state->([^m]_[a-zA-Z0-9_]*) state->m_\1 state->m_save_item state->save_item state->m_save_pointer state->save_pointer (AM_BASE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_]) \1m_\2 (AM_BASE_SIZE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_][a-zA-Z0-9_]* *, *)([a-zA-Z_][^_]) \1m_\2m_\3 (AM_SIZE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_]) \1m_\2 m__ m_ In src/mame/includes/... (\t[a-zA-Z0-9_<>]+[ \t]+[&*]*[ \t]*)([a-zA-Z_][^_][][a-zA-Z0-9_]*;)$ \1m_\2 (\t[a-zA-Z0-9_<>]+[ \t]*[&*]*[ \t]+)([a-zA-Z_][^_][][a-zA-Z0-9_]*;)$ \1m_\2
* BIG update. Aaron Giles2011-03-291-78/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove redundant machine items from address_space and device_t. Neither machine nor m_machine are directly accessible anymore. Instead a new getter machine() is available which returns a machine reference. So: space->machine->xxx ==> space->machine().xxx device->machine->yyy ==> device->machine().yyy Globally changed all running_machine pointers to running_machine references. Any function/method that takes a running_machine takes it as a required parameter (1 or 2 exceptions). Being consistent here gets rid of a lot of odd &machine or *machine, but it does mean a very large bulk change across the project. Structs which have a running_machine * now have that variable renamed to m_machine, and now have a shiny new machine() method that works like the space and device methods above. Since most of these are things that should eventually be devices anyway, consider this a step in that direction. 98% of the update was done with regex searches. The changes are architected such that the compiler will catch the remaining errors: // find things that use an embedded machine directly and replace // with a machine() getter call S: ->machine-> R: ->machine\(\)\. // do the same if via a reference S: \.machine-> R: \.machine\(\)\. // convert function parameters to running_machine & S: running_machine \*machine([^;]) R: running_machine \&machine\1 // replace machine-> with machine. S: machine-> R: machine\. // replace &machine() with machine() S: \&([()->a-z0-9_]+machine\(\)) R: \1 // sanity check: look for this used as a cast (running_machine &) // and change to this: *(running_machine *)
* Modified video update system. [Miodrag Milanovic] Miodrag Milanovic2011-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | Screen update function is now per screen device (it was before but was attached to machine driver) MCFG_VIDEO_UPDATE -> MCFG_SCREEN_UPDATE MCFG_VIDEO_EOF -> MCFG_SCREEN_EOF EOF is now executed for all screens, so for all existing it is defined just for one screen. This part will be updated in future. Note that there are now screen_update and screen_eof virtual functions for "modern" drivers which are called same as they did before. All drivers are updated and in places where update function was separated per screen I did name separate function. This change will enable us to put screen definition fully into device.
* Take advantage of the driver_device to clean up state saving for Aaron Giles2011-02-081-13/+13
| | | | | | | | | | | | | | | | | | | | many drivers. Also move some allocated memory into arrays in the state structure where appropriate (this is still in progress). Regex'es used (in src/mame only): state_save_register_global( *)\(( *)([^,]+), *state->([^ )]+)( *)\) state->save_item\1\(\2NAME\(state->\4\)\5\) state_save_register_global_array( *)\(( *)([^,]+), *state->([^ )]+)( *)\) state->save_item\1\(\2NAME\(state->\4\)\5\) state_save_register_global_bitmap( *)\(( *)([^,]+), *state->([^ )]+)( *)\) state->save_item\1\(\2NAME\(*state->\4\)\5\) state_save_register_global_pointer( *)\(( *)([^,]+), *state->([^,]+), state->save_pointer\1\(\2NAME\(state->\4\)\5,
* Moved the state saving system to C++. For now the registration macros Aaron Giles2011-02-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | are still intact. The new state_manager class has templatized methods for saving the various types, and through template specialization can save more complex system types cleanly (like bitmaps and attotimes). Added new mechanism to detect proper state save types. This is much more strict and there will likely be some games/devices that fatalerror at startup until they are remedied. Spot checking has caught the more common situations. The new state_manager is embedded directly in the running_machine, allowing objects to register state saving in their constructors now. Added NAME() macro which is a generalization of FUNC() and can be used to wrap variables that are registered when directly using the new methods as opposed to the previous macros. For example: machine->state().save_item(NAME(global_item)) Added methods in the device_t class that implicitly register state against the current device, making for a cleaner interface. Just a couple of required regexes for now: state_save_register_postload( *)\(( *)([^,;]+), * \3->state().register_postload\1\(\2 state_save_register_presave( *)\(( *)([^,;]+), * \3->state().register_presave\1\(\2
* As promised, the bulk update of timer calls: Aaron Giles2011-02-061-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timer_adjust_oneshot(t,...) => t->adjust(...) timer_adjust_periodic(t,...) => t->adjust(...) timer_reset(t,...) => t->reset(...) timer_enable(t,...) => t->enable(...) timer_enabled(t) => t->enabled() timer_get_param(t) => t->param() timer_get_ptr(t) => t->ptr() timer_set_param(t,...) => t->set_param(...) timer_set_ptr(t) => t->set_ptr(...) timer_timeelapsed(t) => t->elapsed() timer_timeleft(t) => t->remaining() timer_starttime(t) => t->start() timer_firetime(t) => t->expire() Also remove some stray legacy cpuexec* macros that were lurking in schedule.h): cpuexec_describe_context(m) => m->describe_context() cpuexec_boost_interleave(m,...) => m->scheduler().boot_interleave(...) cpuexec_trigger(m,...) => m->scheduler().trigger(...) cpuexec_triggertime(m,...) => m->scheduler().trigger(...) Specific regex'es used: timer_adjust_oneshot( *)\(( *)([^,;]+), * \3->adjust\1\(\2 timer_adjust_periodic( *)\(( *)([^,;]+), * \3->adjust\1\(\2 (->adjust.*), *0( *)\) \1\2\) timer_reset( *)\(( *)([^,;]+), * \3->reset\1\(\2 (->reset *\(.*)attotime::never \1 timer_enable( *)\(( *)([^,;]+), * \3->enable\1\(\2 timer_enabled( *)\(( *)([^,;)]+)\) \3->enabled\1\(\2\) timer_get_param( *)\(( *)([^,;)]+)\) \3->param\1\(\2\) timer_get_ptr( *)\(( *)([^,;)]+)\) \3->ptr\1\(\2\) timer_timeelapsed( *)\(( *)([^,;)]+)\) \3->elapsed\1\(\2\) timer_timeleft( *)\(( *)([^,;)]+)\) \3->remaining\1\(\2\) timer_starttime( *)\(( *)([^,;)]+)\) \3->start\1\(\2\) timer_firetime( *)\(( *)([^,;)]+)\) \3->expire\1\(\2\) timer_set_param( *)\(( *)([^,;]+), * \3->set_param\1\(\2 timer_set_ptr( *)\(( *)([^,;]+), * \3->set_ptr\1\(\2 cpuexec_describe_context( *)\(( *)([^,;)]+)\) \3->describe_context\1\(\2\) \&m_machine->describe_context m_machine.describe_context cpuexec_boost_interleave( *)\(( *)([^,;]+), * \3->scheduler().boost_interleave\1\(\2 cpuexec_trigger( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2 cpuexec_triggertime( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2
* Convert emu_timers to objects. Move implementation and management of Aaron Giles2011-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timers into the scheduler. Retain TIMER devices as a separate wrapper in timer.c/.h. Inline wrappers are currently provided for all timer operations; a future update will bulk clean these up. Rather than using macros which hide generation of a string-ified name for callback functions, the new methods require passing both a function pointer plus a name string. A new macro FUNC() can be used to output both, and another macro MFUNC() can be used to output a stub-wrapped class member as a callback. Also added a time() method on the machine, so that machine->time() gives the current emulated time. A wrapper for timer_get_time is currently provided but will be bulk replaced in the future. For this update, convert all classic timer_alloc, timer_set, timer_pulse, and timer_call_after_resynch calls into method calls on the scheduler. For new device timers, added methods to the device_t class that make creating and managing these much simpler. Modern devices were updated to use these. Here are the regexes used; some manual cleanup (compiler-caught) will be needed since regex doesn't handle nested parentheses cleanly 1. Convert timer_call_after_resynch calls timer_call_after_resynch( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().synchronize\1\(\2FUNC(\6), \5, \4\) 2. Clean up trailing 0, NULL parameters (synchronize[^;]+), 0, NULL\) \1) 3. Clean up trailing NULL parameters (synchronize[^;]+), NULL\) \1) 4. Clean up completely empty parameter lists synchronize\(FUNC\(NULL\)\) synchronize() 5. Convert timer_set calls timer_set( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_set\1\(\2\4, FUNC(\7), \6, \5\) 6. Clean up trailing 0, NULL parameters (timer_set[^;]+), 0, NULL\) \1) 7. Clean up trailing NULL parameters (timer_set[^;]+), NULL\) \1) 8. Convert timer_set calls timer_pulse( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_pulse\1\(\2\4, FUNC(\7), \6, \5\) 9. Clean up trailing 0, NULL parameters (timer_pulse[^;]+), 0, NULL\) \1) 10. Clean up trailing NULL parameters (timer_pulse[^;]+), NULL\) \1) 11. Convert timer_alloc calls timer_alloc( *)\(( *)([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_alloc\1\(\2FUNC(\4), \5\) 12. Clean up trailing NULL parameters (timer_alloc[^;]+), NULL\) \1) 13. Clean up trailing 0 parameters (timer_alloc[^;]+), 0\) \1) 14. Fix oddities introduced \&m_machine->scheduler() m_machine.scheduler()
* Ok, last major rename for this round: Aaron Giles2011-01-011-5/+5
| | | | | | | | | | | | | | | | memory_region() == machine->region()->base() memory_region_length() == machine->region()->bytes() region_info -> memory_region Regex searches: S: memory_region( *)\(( *)([^,&]+), *([^)]+)\) R: \3->region\1\(\2\4\)->base\(\) S: memory_region_length( *)\(( *)([^,&]+), *([^)]+)\) R: \3->region\1\(\2\4\)->bytes\(\)
* video/neogeo.c: Call optimize_sprite_data() at VIDEO_RESET (for the ↵ Phil Bennett2010-10-121-0/+1
| | | | | | | | | | | | | | | | | | | | convenience of Neo Geo CD) [Barry Rodewald] From Barry Rodewald <bsr@xnet.co.nz> To submit@mamedev.org Date Wed, Sep 29, 2010 at 6:30 AM Subject A couple of fixes... Hi, Here are a couple more small fixes, one is an i386 fix, the other for Neo Geo. The first one is a fix for unaligned word and doubleword I/O reading and writing. It makes 16 and 32-bit I/O accesses become effectively a set of 8-bit accesses, preventing accesses from being re-aligned to an incorrect I/O port. This fixes issues in the FM-Towns where programs would set the palette by using MOV DX,FD92; OUT DX,EAX; (or similar) which would cause it to write to I/O ports 0xfd90-93, instead of 0xfd92-95 as it should. The second is not so much of a fix, but as a convenience for the Neo Geo CD, by calling optimize_sprite_data() at VIDEO_RESET(), which will re-convert sprite data after it has been copied into RAM. Otherwise, sprites will always be wrong. Thanks, Barry Rodewald mailto:bsr@xnet.co.nz
* (Wow, I had no idea quite so many drivers were using driver_data!) Aaron Giles2010-08-041-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Defined new class driver_data_t, which all driver_data classes must derive from. Updated all class definitions to inherit from the new class, and to call it in the constructor. Also changed the alloc() signature to return a driver_data_t pointer instead of a void *. Renamed and hid machine->driver_data as machine->m_driver_data. Added a new templatized method machine->driver_data<class> which returns a properly downcast'ed version of the driver data. Updated all code which looked like this: mydriver_state *state = (mydriver_state *)machine->driver_data; to this: mydriver_state *state = machine->driver_data<mydriver_state>(); The new function does a downcast<> which in debug builds dynamically verifies that you're actually casting to the right type. Changed atarigen_state to be a base class from which all the related Atari drivers derive their state from. For MESS: this was mostly a bulk search/replace, in 4 steps in src/mame: 1. Add ": public driver_data_t" to each driver state class definition: Search: (class [a-z0-9_]+_state)$ Replace: \1 : public driver_data_t 2. Change the static alloc function to return a driver_data_t *: Search: static void \*alloc\( Replace: static driver_data_t \*alloc\( 3. Change the constructor to initialize driver_data_t: Search: ([a-z0-9_]+_state\(running_machine \&machine\)) { } Replace: \1\r\n\t\t: driver_data_t(machine) { } 4. Replace the state fetchers to use the new templatized function: Search: \(([a-z0-9_]+_state) \*\)(.*)machine->driver_data Replace: \2machine->driver_data<\1>()