devices. Debugger now creates one for each device. C++-ified most
debugger operations to hang off the debugging class, and updated
most callers. This still needs a little cleanup, but it fixes most
issues introduced when the CPUs were moved to their own devices.
Got rid of cpu_count, cpu_first, cpu_next, etc. as they were badly
broken. Also removed cpu_is_executing, cpu_is_suspended,
cpu_get_local_time, and cpu_abort_timeslice.
Some minor name changes:
state_value() -> state()
state_set_value() -> set_state()
Exerizer (Japan) [N. Francfort, blib, Smitdogg, The Dumping Union]
roms are a mixup of Sky Fox and the bootleg, but they've been dumped from an original board (and label are correct)
- Software list xml files are now read in full such that information for clone and parent sets is available.
- Added validity check to check for existence of parent sets.
------------
Model Racing Shooting Game (unknown title) [Luigi, Volker Hahn, Team Europe]
Out Run 2 (Rev. A) [GDX-0004A] [Team Europe, The Dumping Union, Alex]
DECLARE_LEGACY_CPU_DEVICE and DEFINE_LEGACY_CPU_DEVICE. Changed CPUs
to be their own device types, rather than all of type CPU with a
special internal subtype. Note that as part of this process I removed
the CPU_ prefix from the ALL-CAPS device name, so CPU_Z80 is just
plain old Z80 now. This required changing a couple of names like
8080 to I8080 so that there was an alphabetic first character.
Added memory interfaces to the list of fast-access interfaces. To do
this properly I had to add a separate method to devices which is
called immediately after construction, when it is possible to perform
dynamic_casts on fully-constructed objects. (This is just internal,
no changes necessary to the devices themselves.)
Some additional notes:
* SH2 and SH4 had typedefs that conflicted with their CPU_-less names
so I bulk renamed to structures to sh2_state and sh4_state; RB, feel
free to choose alternate names if you don't like 'em
* SCSP was caught doing something to the 3rd indexed CPU. Since several
systems that use SCSP don't even have 3 CPUs, I had no idea what
this was supposed to do, so I changed to it reference "audiocpu"
assuming that stv was the assumed target. This is really gross and
should be a configuration parameter, not a hard-coded assumption.
* created dynamic_bind<> template class to handle dynamically binding to
optionally-supported functions
* wrapped stack walking code in a class
* wrapped symbol lookup code in a class
* added support for parsing objdump-produced symbol dumps which include
non-global functions for much better stack dumps and profiling in gcc builds
Also: modified makefile for win32 targets to automatically run objdump and
produce a .sym file if SYMBOLS is enabled.
New games marked as GAME_NOT_WORKING
------------------------------------
Raiden DX (Great Britain) [arcaderelics]
change to:
New clones added
----------------
Raiden DX (UK) [Irongiant]
out of whatsnew: the code is maybe not the ideal solution, but dipswitches were neither, imho. test mode shows no change in functionalities compared to the old code, but the new implementation makes a lot easier the actual use of shifter in-game
cpu_get_total_cycles() == cpudevice->total_cycles()
cpu_clocks_to_attotime() == cpudevice->cycles_to_attotime()
cpu_attotime_to_clocks() == cpudevice->attotime_to_cycles()
In some cases, I updated existing code that fetched and cached
devices to fetch them as cpu_device so that these can be called
without casting.
In other cases, I did the quick & dirty thing which was to downcast
a generic device to a cpu_device and then call the function.
Note that cpu_clocks_to_attotime() and cpu_attotime_to_clocks()
were previously mapping to the device-level functions
clocks_to_attotime() and attotime_to_clocks(). This was different
behavior than before the big devices change, so with this update
I have fixed it to match the previous behavior (i.e., map cycles
not clocks).
This may impact timing of drivers that used these functions on
CPUs that have clock dividers or multipliers.
cpu_get_total_cycles() which is now slow. Better to use the legacy_cpu_device
directly and call device->total_cycles() which avoids the dynamic_cast to find
the execute interface from a generic device.
Also added cycles_to_attotime() and attotime_to_cycles() which is more often
what is requested. (Clocks are the raw input clock, while cycles are internal
clock after dividers/multipliers.)
- always available now, just specify -profile <n> to enable it
- supports stack walking to uniquely identify call chains; the <n> parameter
to the -profile option specifies how deep to go
- automatically turns off throttling and multithreading, and sets the number of
processors available to 1 (since we only sample the main thread)
- output now uses the common symbol lookup, which actually uses the PDB for
MSVC builds and gives excellent results (may eventually figure out how to
extract gcc symbols someday)
- the top 30 unique call chains are output