Crash when loading an autosave save state.
Removed excessive dirty tracking. This creates a bit more
work on each update, but gets rid of some dodgy logic.
Added typedefs for 'struct xxxx' to simply 'xxxx'.
refresh information from the device's inline_config, since this is
done before the screen devices are start. Fixes 01491: switchres
causes Exception at EIP=009413BF: ACCESS VIOLATION.
Also, fixed render_target_get_minimum_size() to return nominal values
if no screens are found.
Added DEVINFO_INT_TOKEN_BYTES, which is queried before device
startup. It should return the size of the structure that will
be hung off of device->token. It must not return 0.
Changed the core device interface to allocate and zero a block
of memory the size of DEVINFO_INT_TOKEN_BYTES before calling
device_start. The pointer to this memory is already attached
to device->token at the time device_start is called.
The primary motivation for this is to allow the device_start
function to make internal calls and pass the device_config *
around as if the object were fully constructed. Since the token
is used to indicate whether or not a device is live, this makes
the device "live" at the time device_start is called rather
than after it completes.
I applied the same fix to verifyroms. Now a status message is printed for every sample/ROM set regardless if an individual or all the sets are audited.
My fix is a bit heavy handed. The real access violation happens in update_digital_joysticks() after the comment "read all the associated ports" and before the next comment
01517: all atarigt.c drivers: Assertion
01516: all atarigx2.c drivers: Assertion
01515: all atarig42.c drivers: Assertion
01514: all cyberbal.c drivers: Assertion
Converted Centipede, as an example.
To define a scanline timer, use something like this:
MDRV_TIMER_ADD("32V", SCANLINE, generate_interrupt)
MDRV_TIMER_SCANLINE("main", 0, 16)
The first number is the first scanline the timer will fire on, the 2nd number is the increment.
So in this case, the timer will fire on 0, 16, 32, ..., 224, 240, then wrap around
because the screen is defined as 256 lines high.
The current scanline is passed to the callback in its 'param' argument
This driver is creating bitmaps in DRIVER_INIT, which is not the best practice, and in fact, it broke as machine->primary_bitmap is not initalized yet.