Changed input ports to register a frame callback, which is
called immediately after throttling and updating. This is the
proper "sync point" between emulated time and real time. Moved
all analog and digital port processing into a central place
here. Added tracking of time since the previous frame update
and use that as an estimate for the time of the current frame.
This is used to scale analog ports without the use of
cpu_scalebyfcount(). This is not perfect in the case where
frame rates are dynamic (vector games), but works well for
other cases.
Further cleanup of memory header and code.
- Added video_screen_auto_bitmap_alloc(screen) -- it is just a shorthand for
auto_bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen))
which is a common operation
- The Dynax/Don Den Lover games now do their updating in VIDEO_UPDATE instead of VIDEO_EOF. This semmed to
have fixed the palette problems
- Went through some of these drivers and changed Machine to machine
Made address versus byte offsets explicit throughout.
Removed some unused parameters.
Consolidated initialization process.
Removed maximum memory block count.
Centralized bank management.
Added masked handlers and change_pc to the accessors.
Added memory_get_accessors() to return a pointer to the accessors
for a given address space/databus width/endian configuration.
More to come.
MRA*_BANK*/MRA*_BANK* -> SMH_BANK*
MRA*_RAM/MRA*_ROM -> SMH_RAM
MRA*_ROM/MWA*_ROM -> SMH_ROM
MRA*_NOP/MWA*_NOP -> SMH_NOP
MRA*_UNMAP/MWA*_UNMAP -> SMH_UNMAP
This removes the silly need for a bunch of redundant constants
with faux type definitions that didn't buy anything.
Moved some memory system constants into memory.c.
Converted address maps to tokens. Changed the address_map structure
to house global map-wide information and hung a list of entries off
of it corresponding to each address range. Introduced new functions
address_map_alloc() and address_map_free() to build/destroy these
structures. Updated all code as necessary.
Fixed several instances of porttagtohandler*() in the address maps.
Drivers should use AM_READ_PORT() macros instead.
ADDRESS_MAP_EXTERN() now is required to specify the number of
databits, just like ADDRESS_MAP_START.
Removed ADDRESS_MAP_FLAGS() grossness. There are now three new macros
which replace its former usage. ADDRESS_MAP_GLOBAL_MASK(mask)
specifies a global address-space-wide mask on all addresses. Useful
for cases where one or more address lines simply are not used at
all. And ADDRESS_MAP_UNMAP_LOW/HIGH specifies the behavior of
unmapped reads (do they come back as 0 or ~0).
Changed internal memory mapping behavior to keep only a single
address map and store the byte-adjusted values next in the address
map entries rather than maintaining two separate maps. Many other
small internal changes/cleanups.
All callers that used 0 for the screen number now use machine->primary_screen
As a gap meassure, Where necessary, create a parallel set of video_screen_*_scrnum functions that take scrnum
All callers that specified a specific screen number now call the *_scrnum versions
Changed game info screen and overlay UI to display the screen tag instead of screen number
- Private state screen information now hangs off the public one, instead of the other way around
- Combines video_global and video_private into a single structure
The following shook out from this that are applicable to other devices as well:
- running_machine is no longer taken, passed or stored
- mc6845_t is now private
- since passing device_config's is not device type safe, I added a
get_safe_token() to mc6845.c to check the device passed in for the valid type.
I think something like this should be added to the core.
- As a side note, I really don't think that device_config is a good name,
naming it simply device_t or something like that might be better.
than tokens and individual bits to the device callbacks. Updated
all existing devices accordingly.
Removed machine from the parameters of some of the device_get_info
and device_set_info calls because that information is stored
with the device now.