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
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Animal Catch [Luca Elia, Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
Itazura Monkey [Luca Elia, Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
New games marked as GAME_NOT_WORKING
------------------------------------
Pye-nage Taikai [Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
Hae Hae Ka Ka Ka [Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
Taihou de Doboon [Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
---
Out of whatsnew: please leave the non-working games to me, I'll look at them next.
No-whatsnew explanation: this takes OPTIMIZE=3 compile time for this core from
over 1 hour down to about 2 minutes on PS3 Linux. (Yes, the tms57002 itself
took over an hour to compile before - the thing has 256 MB of RAM and
a very slow HDD so when it hits swap, swap hits back).
Comment: Even though you can play the games, there are so many other issues with unknown errors and graphic problems - might be worth putting in as NOT_WORKING?
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()
Various MPU4 changes [AGEMAME]:
* Revised timing/input system to stop flickering
* Tidied up the LED drawing code to remove flicker
* Support for all known extenders and reel multiplex boards used in MPU4 H/W
* Partial support for OKI sampled sound card, need for some titles
* Fixed Old Timer characteriser
* Some general tidying up to allow better study of the BwB titles
New games added as GAME_NOT_WORKING:
------------------------------------
Reno Reels (20p/10GBP Cash, release A) [AGEMAME]
BwB Tetris v 2.2 [AGEMAME]
Red Hot Poker (20p/10GBP Cash, release 3) [AGEMAME]
- Rewritten some checks to be runtime instead of compile dependent
- Added winmenu.c and "menu" option in windows build
- winmenu.c provide just dummy implementation, and makes linking with actual menu implementation easier.
Date: Wed, Jan 26, 2011 at 6:19 AM
Subject: cave.c savestate support + alpha
To: submit@mamedev.org
This patch contains the following changes to cave.c and toaplan2.c:
- Added savestate support to all games in cave.c. Most of the work was
already done by someone else; the blocker was a perpetually-running
anonymous timer, which I converted to an allocated timer.
- Changed OKI sample banking to use device address maps instead of
memcpy() in all cave.c games except the nmk112-based games. If someone
wants to try to convert nmk112.c to use device address maps and bank
pointers, be my guest--you'll need 8 banks of varying sizes per OKI chip...
- Fixed description of the Japanese Air Gallet set--the game's Japanese
title is "Akuu Gallet".
- Made machine/nmk112.c actually restore its state properly. Also
refactored it a little (if you can talk about refactoring a source
file that almost fits on one screen)
- Fixed bgaregga's nmk112 interface to work with the refactored nmk112.c.
- Removed excessive CPU interleaving from batsugun, left over from when
I was initially hooking up the V25.
- Removed a useless printf and some obsolete comments, more leftovers
from the process of hooking up the V25.
--AWJ--
- merged MESS CDi driver file with the MAME CDi driver file (used for Quizard)
- the cdimono1 system is now the parent / bios of Quizard, the Quizard games run on a retail CDi unit with Jamma adapter / dongle for protection so this is a logical step.