[][src]Trait spectrusty::video::VideoFrame

pub trait VideoFrame: Copy + Debug where
    <Self::BorderHtsIter as Iterator>::Item == i16
{ type BorderHtsIter: Iterator; const HTS_RANGE: Range<i16>; const HTS_COUNT: i16; const VSL_BORDER_TOP: i16; const VSL_PIXELS: Range<i16>; const VSL_BORDER_BOT: i16; const VSL_COUNT: i16; const FRAME_TSTATES_COUNT: i32; 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 { ... } }

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.

Loading content...

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.

Loading content...

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.

Loading content...

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.

Loading content...

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>>

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>>

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>>

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>>

Loading content...