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§

An iterator for rendering borders.

Required Associated Constants§

A range of horizontal T-states, 0 should be where the frame starts.

The first visible video scan line index of the top border.

A range of video scan line indexes where pixel data is being drawn.

The last visible video scan line index of the bottom border.

The total number of video scan lines including the beam retrace.

Provided Associated Constants§

The number of horizontal T-states.

The total number of T-states per frame.

Required Methods§

Returns an iterator of border latch horizontal T-states.

Returns an iterator of left border latch horizontal T-states.

Returns an iterator of right border latch horizontal T-states.

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§

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.

Returns output screen pixel size (horizontal, vertical), including the border area, measured in low-resolution pixels.

The size depends on the given border_size.

Returns an iterator of the top border low-resolution scan line indexes.

Returns an iterator of the bottom border low-resolution scan line indexes.

Returns an optional floating bus horizontal offset for the given horizontal timestamp.

Returns an optional floating bus screen address (in the screen address space) for the given timestamp.

The returned screen address range is: [0x0000, 0x1B00).

Returns an optional cell coordinates of a “snow effect” interference.

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.

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.

Converts video scan line and horizontal T-state counters to the frame T-state count without any normalization.

Implementors§