- ROM was dumped from a Philips VG-5000µ and compared to
the "alternate" (CRC 57983260) version to find it was the same.
- Analyze of the (CRC a6998ff8) and why it is faulty and useless to keep:
- Address $1000: correct instruction is DI ($F3) at start of boot;
in faulty ROM, the instruction is INC BC ($03), which makes
no sense here.
- Address $2000: this is the start of the table pointing to BASIC
instructions. It is matched with the table at $209e
containing the keywords. The first keyword (END) will
cause the first address to be decoded (at $2519 to $2525)
and executed. Correct address is $2f3a, address found
in the faulty ROM is $2f00, thus preventing END instruction
to work.
- Address $3000: this part is the code for the NEXT instruction, starting
at $2fe4. The faulty ROM at $3000 causes a CALL $CE02,
which is out of the memory range and leads to reboot with
no RAM extension. With RAM extension, as the ROM is copied
during the memory test at boot, it causes a Syntax Error.
The correct byte at $3000 is $03, leading to a
CALL $0302, which is correct.
- Replace fake XTAL values with actual ones
- Correct SAM and GIME clocks
- Make sam6883_friend_device a subclass of device_interface
- Remove legacy 6809E device from MAME
This shader uses the equation described by R. Keys in the paper 'Cubic Convolution Interpolation for Digital Image Processing' which is, in this case, the same as a Catmull-Rom spline. This produces a sharper upscaled image than bilinear filtering.
The new shader is selected by setting gl_glsl_filter to 2. Consequently, gl_glsl_filter is now treated as an int rather than a boolean.
Also fixed a variable name problem in the code guarded by GLSL_SOURCE_ON_DISK.
1. Off-by-one pixel coordinates
2. Sampling of wrong pixels at some non-integer stretch factors
First was noticed while comparing screenshots of the software and opengl w/glsl renderers (opengl output was shifted up and to the right). Fixed by subtracting a 1/2 pixel from the texture coordinates when calculating the bottom left pixel to use for interpolation.
Second was apparent when running pac-man fullscreen on a 1920x1080 screen and allowing non-integer stretching. Manifested as irregular horizontal 'steps' in the output. Fixed by sampling from the center of all pixels which should avoid any funny business in regards to pixel coordinate rounding.