[−][src]Trait spectrusty::video::VideoFrame
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 |
Associated Types
type BorderHtsIter: Iterator
An iterator for rendering borders.
Associated Constants
const HTS_RANGE: Range<i16>
A range of horizontal T-states, 0 should be where the frame starts.
const HTS_COUNT: i16
The number of horizontal T-states.
const VSL_BORDER_TOP: i16
The first visible video scan line index of the top border.
const VSL_PIXELS: Range<i16>
A range of video scan line indexes where pixel data is being drawn.
const VSL_BORDER_BOT: i16
The last visible video scan line index of the bottom border.
const VSL_COUNT: i16
The total number of video scan lines including the beam retrace.
const FRAME_TSTATES_COUNT: i32
The total number of T-states per frame.
Required methods
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of border latch horizontal T-states.
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of left border latch horizontal T-states.
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
Returns an iterator of right border latch horizontal T-states.
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
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.
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
.
fn border_top_vsl_iter(border_size: BorderSize) -> Range<i16>
Returns an iterator of the top border low-resolution scan line indexes.
fn border_bot_vsl_iter(border_size: BorderSize) -> Range<i16>
Returns an iterator of the bottom border low-resolution scan line indexes.
fn floating_bus_offset(_hc: i16) -> Option<u16>
Returns an optional floating bus horizontal offset for the given horizontal timestamp.
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).
fn snow_interference_coords(_ts: VideoTs) -> Option<CellCoords>
Returns an optional cell coordinates of a "snow effect" interference.
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.
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.
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.
Implementors
impl VideoFrame for Ula3VidFrame
[src]
const HTS_RANGE: Range<Ts>
[src]
A range of horizontal T-states, 0 should be where the frame starts.
const VSL_BORDER_TOP: Ts
[src]
The first video scan line index of the top border.
const VSL_PIXELS: Range<Ts>
[src]
A range of video scan line indexes for the pixel area.
const VSL_BORDER_BOT: Ts
[src]
The last video scan line index of the bottom border.
const VSL_COUNT: Ts
[src]
A total number of video scan lines.
type BorderHtsIter = StepBy<Range<Ts>>
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn is_contended_line_no_mreq(_vsl: Ts) -> bool
[src]
fn contention(hc: Ts) -> Ts
[src]
impl VideoFrame for Ula128VidFrame
[src]
const HTS_RANGE: Range<Ts>
[src]
A range of horizontal T-states, 0 should be where the frame starts.
const VSL_BORDER_TOP: Ts
[src]
The first video scan line index of the top border.
const VSL_PIXELS: Range<Ts>
[src]
A range of video scan line indexes for the pixel area.
const VSL_BORDER_BOT: Ts
[src]
The last video scan line index of the bottom border.
const VSL_COUNT: Ts
[src]
A total number of video scan lines.
type BorderHtsIter = StepBy<Range<Ts>>
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn contention(hc: Ts) -> Ts
[src]
fn floating_bus_offset(hc: Ts) -> Option<u16>
[src]
fn snow_interference_coords(
VideoTs { vc: vc, hc: hc }: VideoTs
) -> Option<CellCoords>
[src]
VideoTs { vc: vc, hc: hc }: VideoTs
) -> Option<CellCoords>
impl VideoFrame for UlaNTSCVidFrame
[src]
const HTS_RANGE: Range<Ts>
[src]
A range of horizontal T-states, 0 should be when the frame starts.
const VSL_BORDER_TOP: Ts
[src]
The first video scan line index of the top border.
const VSL_PIXELS: Range<Ts>
[src]
A range of video scan line indexes for the pixel area.
const VSL_BORDER_BOT: Ts
[src]
The last video scan line index of the bottom border.
const VSL_COUNT: Ts
[src]
A total number of video scan lines.
type BorderHtsIter = StepBy<Range<Ts>>
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn contention(hc: Ts) -> Ts
[src]
fn floating_bus_offset(hc: Ts) -> Option<u16>
[src]
fn snow_interference_coords(vts: VideoTs) -> Option<CellCoords>
[src]
impl VideoFrame for UlaVideoFrame
[src]
const HTS_RANGE: Range<Ts>
[src]
A range of horizontal T-states, 0 should be when the frame starts.
const VSL_BORDER_TOP: Ts
[src]
The first video scan line index of the top border.
const VSL_PIXELS: Range<Ts>
[src]
A range of video scan line indexes for the pixel area.
const VSL_BORDER_BOT: Ts
[src]
The last video scan line index of the bottom border.
const VSL_COUNT: Ts
[src]
A total number of video scan lines.
type BorderHtsIter = StepBy<Range<Ts>>
fn border_whole_line_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_left_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn border_right_hts_iter(border_size: BorderSize) -> Self::BorderHtsIter
[src]
fn contention(hc: Ts) -> Ts
[src]
fn floating_bus_offset(hc: Ts) -> Option<u16>
[src]
fn snow_interference_coords(
VideoTs { vc: vc, hc: hc }: VideoTs
) -> Option<CellCoords>
[src]
VideoTs { vc: vc, hc: hc }: VideoTs
) -> Option<CellCoords>