is now separate from runtime device state. I have larger plans
for devices, so there is some temporary scaffolding to hold
everything together, but this first step does separate things
out.
There is a new class 'running_device' which represents the
state of a live device. A list of these running_devices sits
in machine->devicelist and is created when a running_machine
is instantiated.
To access the configuration state, use device->baseconfig()
which returns a reference to the configuration.
The list of running_devices in machine->devicelist has a 1:1
correspondance with the list of device configurations in
machine->config->devicelist, and most navigation options work
equally on either (scanning by class, type, etc.)
For the most part, drivers will now deal with running_device
objects instead of const device_config objects. In fact, in
order to do this patch, I did the following global search &
replace:
const device_config -> running_device
device->static_config -> device->baseconfig().static_config
device->inline_config -> device->baseconfig().inline_config
and then fixed up the compiler errors that fell out.
Some specifics:
Removed device_get_info_* functions and replaced them with
methods called get_config_*.
Added methods for get_runtime_* to access runtime state from
the running_device.
DEVICE_GET_INFO callbacks are only passed a device_config *.
This means they have no access to the token or runtime state
at all. For most cases this is fine.
Added new DEVICE_GET_RUNTIME_INFO callback that is passed
the running_device for accessing data that is live at runtime.
In the future this will go away to make room for a cleaner
mechanism.
Cleaned up the handoff of memory regions from the memory
subsystem to the devices.
(It looks like my half-res UVs are a pixel or two off and the palette's wrong for most of these objects.
There must be a bit somewhere that says what size of the polygon's palette.
I believe the reason roadedge still has the wrong colors is due to not having found this bit yet.)
Per-line effects now respect per-line alpha, priority and bank. As a result daraku text works without any hacks.
Added various optimisations to get back all games to a playable speed.
Fixed missing soldivid effect on final boss that was broken due to above daraku hack. [PsikyoFan]
--------------------------------------------
F-15 Strike Eagle (2 sets) [Phil Bennett]
Battle of the Solar System (rev. 1.1) [Phil Bennett]
Tank Battle (prototype rev. 4/21/92) [Phil Bennett]
Added Am29000 CPU core [Phil Bennett]
along with a tagmap. Changed memory regions, input ports, and devices
to use this class. For devices, converted typenext and classnext
fields into methods which dynamically search for the next item.
Changed a number of macros to use the features of the class, removing
the need for a bunch of helper functions.
(general):
- Lowered CPU clock to 1.5 MHz.
- Reworked former inputs.
- Added specific game and technical notes.
- Added lamps support.
- Cleaned-up a bit the driver.
Victor 5:
- Mapped the M6295 but commented out due to missing sample roms.
- Added keyin, keyout, payout, stats and settings inputs.
- Added coin/keyin/keyout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game and double-up rates DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added attract music DIP switch.
- Added button-lamps layout.
Victor 21:
- Mapped the M6295 but commented out due to missing sample roms.
- Added bet x10, keyin, keyout, stats and settings inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game rate DIP switches.
- Added minimum bet DIP switches.
- Added attract music DIP switch.
- Added button-lamps layout.
Poker Carnival (crsbingo):
- Added change card, keyin, keyout, stats and settings inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added double-up rate DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added cards graphics DIP switches.
- Added double-up type DIP switches.
- Added button-lamps layout.
Super Rider, Super Moto:
- Added stats and settings inputs.
- Added coin counters.
- Added main game and double-up rates DIP switches.
- Added double-up and control type DIP switches.
- Added coinage and demo sounds DIP switches.
- Added button-lamps layout.
Shark Party:
- Added stats and settings inputs.
- Added coin counters.
- Added main game and double-up rates DIP switches.
- Added double-up, coinage and demo sounds DIP switches.
- Added button-lamps layout.
extension).
Improved stack walking on crash in Windows. Now using StackWalk64 to
do the stack walk, resulting in cleaner logs. Also will try to use
system function to look up symbol and source/line information if
present. End results:
- 32-bit gcc: parses symbol info from map file as before (this would
work better if we could coax gcc into outputting static functions in
the map)
- 64-bit gcc: has runtime issue that causes the exception handler to
not be invoked. Will work with mingw folks on it.
- 32/64-bit MSVC: nice stack dumps with symbol and source/line info,
if the PDB file is present. If not, falls back to the MAP file.
- TARGETOS=freebsd may now be given on make invocation
- modular approach, separate sections for opengl, x11, debugger
- most target specific settings parametrized.
This can be seen on:
* s1945ii level 7 intro, level 8 boss. (Hold PL1 Button 1 which hitting F2 for stage select).
* s1945iii level 7 intro, level 7 main, level 8 intro, level 8 boss (Enter "8-1-6-5-0" as code in test mode for stage select).
Note that this is slow. Suggestions for speeding it up are welcome.
Rendering each tilemap to an ARGB bitmap, including applying the per-pen or fixed alpha.
Extracting an entire scanline from the bitmap, transforming it and then blending the ARGB scanline.
Obvious optimisations for transparency and fixed alpha in place.
Alternative is to just try and draw with drawgfx directly and fiddle with cliprects, but zooming makes that impossible to get nice without fudging the scaling/positioning slightly and unlikely to be faster.
Hack for daraku is still there, working to get rid of it. Aside from above and MT03663 games are now believed to be pixel-perfect.