Trait spectrusty::video::VideoFrame
source · pub trait VideoFrame: Copy + Debug {
type BorderHtsIter: Iterator<Item = i16>;
const HTS_RANGE: Range<i16>;
const VSL_BORDER_TOP: i16;
const VSL_PIXELS: Range<i16>;
const VSL_BORDER_BOT: i16;
const VSL_COUNT: i16;
const HTS_COUNT: i16 = Self::HTS_RANGE.end - Self::HTS_RANGE.start;
const FRAME_TSTATES_COUNT: i32 = Self::HTS_COUNT as FTs * Self::VSL_COUNT as FTs;
Show 14 methods
fn border_whole_line_hts_iter(
border_size: BorderSize
) -> Self::BorderHtsIter;
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter;
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter;
fn contention(hc: i16) -> i16;
fn border_size_pixels(border_size: BorderSize) -> u32 { ... }
fn screen_size_pixels(border_size: BorderSize) -> (u32, u32) { ... }
fn border_top_vsl_iter(border_size: BorderSize) -> Range<i16> { ... }
fn border_bot_vsl_iter(border_size: BorderSize) -> Range<i16> { ... }
fn floating_bus_offset(_hc: i16) -> Option<u16> { ... }
fn floating_bus_screen_address(_: VideoTs) -> Option<u16> { ... }
fn snow_interference_coords(_ts: VideoTs) -> Option<CellCoords> { ... }
fn is_contended_line_mreq(vsl: i16) -> bool { ... }
fn is_contended_line_no_mreq(vsl: i16) -> bool { ... }
fn vc_hc_to_tstates(vc: i16, hc: i16) -> i32 { ... }
}
Expand description
A collection of static methods and constants related to video parameters.
- 0
+-------------------------+ VSL_BORDER_TOP
| |
| +-------------------+ | -
| | | | |
| | | |
| | | | VSL_PIXELS
| | | |
| | | | |
| +-------------------+ | -
| |
+-------------------------+ VSL_BORDER_BOT
- VSL_COUNT
|----- 0 -- HTS_RANGE ---------|
| HTS_COUNT |
Required Associated Types§
sourcetype BorderHtsIter: Iterator<Item = i16>
type BorderHtsIter: Iterator<Item = i16>
An iterator for rendering borders.
Required Associated Constants§
sourceconst HTS_RANGE: Range<i16>
const HTS_RANGE: Range<i16>
A range of horizontal T-states, 0 should be where the frame starts.
sourceconst VSL_BORDER_TOP: i16
const VSL_BORDER_TOP: i16
The first visible video scan line index of the top border.
sourceconst VSL_PIXELS: Range<i16>
const VSL_PIXELS: Range<i16>
A range of video scan line indexes where pixel data is being drawn.
sourceconst VSL_BORDER_BOT: i16
const VSL_BORDER_BOT: i16
The last visible video scan line index of the bottom border.
Provided Associated Constants§
sourceconst HTS_COUNT: i16 = Self::HTS_RANGE.end - Self::HTS_RANGE.start
const HTS_COUNT: i16 = Self::HTS_RANGE.end - Self::HTS_RANGE.start
The number of horizontal T-states.
sourceconst FRAME_TSTATES_COUNT: i32 = Self::HTS_COUNT as FTs * Self::VSL_COUNT as FTs
const FRAME_TSTATES_COUNT: i32 = Self::HTS_COUNT as FTs * Self::VSL_COUNT as FTs
The total number of T-states per frame.
Required Methods§
sourcefn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of border latch horizontal T-states.
sourcefn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of left border latch horizontal T-states.
sourcefn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of right border latch horizontal T-states.
sourcefn contention(hc: i16) -> i16
fn contention(hc: i16) -> i16
Returns a horizontal T-state counter after adding an additional T-states required for emulating a memory contention, while rendering lines that require reading video memory.
Provided Methods§
sourcefn border_size_pixels(border_size: BorderSize) -> u32
fn border_size_pixels(border_size: BorderSize) -> u32
A rendered screen border size in pixels depending on the border size selection.
NOTE: The upper and lower border size may be lower than the value returned here e.g. in the NTSC video frame.
sourcefn screen_size_pixels(border_size: BorderSize) -> (u32, u32)
fn screen_size_pixels(border_size: BorderSize) -> (u32, u32)
Returns output screen pixel size (horizontal, vertical), including the border area, measured in low-resolution pixels.
The size depends on the given border_size
.
sourcefn border_top_vsl_iter(border_size: BorderSize) -> Range<i16>
fn border_top_vsl_iter(border_size: BorderSize) -> Range<i16>
Returns an iterator of the top border low-resolution scan line indexes.
sourcefn border_bot_vsl_iter(border_size: BorderSize) -> Range<i16>
fn border_bot_vsl_iter(border_size: BorderSize) -> Range<i16>
Returns an iterator of the bottom border low-resolution scan line indexes.
sourcefn floating_bus_offset(_hc: i16) -> Option<u16>
fn floating_bus_offset(_hc: i16) -> Option<u16>
Returns an optional floating bus horizontal offset for the given horizontal timestamp.
sourcefn floating_bus_screen_address(_: VideoTs) -> Option<u16>
fn floating_bus_screen_address(_: VideoTs) -> Option<u16>
Returns an optional floating bus screen address (in the screen address space) for the given timestamp.
The returned screen address range is: [0x0000, 0x1B00).
sourcefn snow_interference_coords(_ts: VideoTs) -> Option<CellCoords>
fn snow_interference_coords(_ts: VideoTs) -> Option<CellCoords>
Returns an optional cell coordinates of a “snow effect” interference.
sourcefn is_contended_line_mreq(vsl: i16) -> bool
fn is_contended_line_mreq(vsl: i16) -> bool
Returns true
if the given scan line index is contended for MREQ (memory request) access.
This indicates if the contention should be applied during the indicated video scan line.
sourcefn is_contended_line_no_mreq(vsl: i16) -> bool
fn is_contended_line_no_mreq(vsl: i16) -> bool
Returns true
if the given scan line index is contended for other than MREQ (memory request) access.
This indicates if the contention should be applied during the indicated video scan line. Other accesses include IORQ and instruction cycles not requiring memory access.
sourcefn vc_hc_to_tstates(vc: i16, hc: i16) -> i32
fn vc_hc_to_tstates(vc: i16, hc: i16) -> i32
Converts video scan line and horizontal T-state counters to the frame T-state count without any normalization.