depopulate_unused is essentially the garbage collector for
bottom-level handlers. The previous code was working around not
having it implemented yet by reusing handlers with the same start
address, end address and address mask. The problem with that trick is
that it is slightly incorrect. If you have a memory map with:
AM_RANGE(0x0000, 0x0fff) AM_READ(up_r)
AM_RANGE(0x0000, 0x0fff) AM_READ(down_r) AM_MIRROR(0x8000)
then the range 8000..8fff would have called up_r instead of down_r due
to the handler reuse. The mirror value is not saved, hence not
compared. New code doesn't use the trick, so doesn't call the wrong
handler, but OTOH eats handlers for breakfast.
It's important to note that such a memory map is so highly improbable
hardware-wise that it wasn't worth worrying about. But it's a
behaviour change it is interesting to keep in mind. In particular
since the up_r range can be added through an install_read_handler
instead of a static map.
Attempting to fix the HLSL 'blurriness' reported by a few people. Now HLSL will auto-prescale to the nearest texture size that is greater than the target screen size on both axes and is also an even multiple of the raw bitmap's size.
- Added the ability to render screenshots at arbitrary resolutions.
- Added the ability to record AVI videos (albeit with no audio) at arbitrary resolutions.
- Added a 43-tap-wide FIR-based NTSC filter with tunable Y, I and Q frequency response.
- Updated scanlines to have a user-tunable pixel-height ratio in addition to the current screen-height ratio.
- Fixed a VRAM leak that was causing many dynamic-resolution drivers to run out of memory mid-run.
Low-level input upgrade. Classes now exist for input_codes, input_items,
input_devices, and input_seqs. Also created an input_manager class to
hold machine-global state and made it accessible via machine.input().
Expanded the device index range (0-255, up from 0-16), and the OSD can
now specify the device index explicitly if they can better keep the
indexes from varying run-to-run. [Aaron Giles]
Note that I've built and run SDL on Windows, but not all the code paths
were exercised. If you use mice/joysticks extensively double-check them
to be sure it all still works as expected.
This is mainly an OSD and core change. The only thing impacting drivers
is if they query for specific keys for debugging. The following S&Rs
took care of most of that:
S: input_code_pressed( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed\1\(\2
S: input_code_pressed_once( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed_once\1\(\2