|
pico9918-core 1.3.0
TMS9918A / F18A video display processor emulation in C99
|
the host's per-call display parameters, as the scanline sees them More...
#include <pico9918_frame.h>
Data Fields | |
| uint16_t | hVirtualPixels |
| full scanline width, guard pixels excluded | |
| uint16_t | vVirtualPixels |
| virtual lines per field | |
| bool | interlaced |
| the host's mode is interlaced | |
| uint8_t | interlacedFieldOrder |
| 0 or 1: XOR'd with the field number | |
the host's per-call display parameters, as the scanline sees them
Per-call rather than stored, because that is the shape the host already had: the VGA layer hands its parameter block to every scanline callback, so the values are in registers at the call. A setter would add a store per mode change and a load per scanline to buy nothing.
WIDTHS MIRROR THE HOST'S OWN DECLARATIONS - see the same note on pico9918_frame_display_t. hVirtualPixels feeds the border-fill count and the half-border offset; vVirtualPixels reaches the splash geometry; the interlace pair selects the field mapping.
GEOMETRY THE SCANLINE PATH REQUIRES. Not checked per line - this is the video-rate path and a host's geometry is fixed at a mode change, so the cost belongs where the mode is chosen. Break one and the failure is silent:
hVirtualPixels >= TMS9918_PIXELS_X * 2 the two half-borders are (hVirtualPixels - 512) / 4 words each, computed unsigned, so a narrower line underflows into a fill of ~1G words hVirtualPixels a multiple of 4 the halves have to tile the line exactly; a remainder leaves the right edge unwritten and disagrees with the border path's own hVirtualPixels / 2 count pixels 4-byte aligned the fills and the palette expansion both address the buffer as uint32_t
Definition at line 213 of file pico9918_frame.h.
| uint16_t pico9918_scanline_params_t::hVirtualPixels |
full scanline width, guard pixels excluded
Definition at line 215 of file pico9918_frame.h.
Referenced by pico9918_frame_output_line().
| uint16_t pico9918_scanline_params_t::vVirtualPixels |
virtual lines per field
Definition at line 216 of file pico9918_frame.h.
Referenced by pico9918_frame_output_line().
| bool pico9918_scanline_params_t::interlaced |
the host's mode is interlaced
Definition at line 217 of file pico9918_frame.h.
| uint8_t pico9918_scanline_params_t::interlacedFieldOrder |
0 or 1: XOR'd with the field number
Definition at line 218 of file pico9918_frame.h.