SYMBOL INDEX (2241 symbols across 98 files) FILE: tetanes-core/benches/clock_frame.rs function main (line 11) | fn main() { FILE: tetanes-core/src/action.rs type Action (line 22) | pub enum Action { FILE: tetanes-core/src/apu.rs type ParseChannelError (line 37) | pub struct ParseChannelError; type Channel (line 42) | pub enum Channel { type Error (line 52) | type Error = ParseChannelError; method try_from (line 54) | fn try_from(value: usize) -> Result { type Apu (line 72) | pub struct Apu { constant DEFAULT_SAMPLE_RATE (line 105) | pub const DEFAULT_SAMPLE_RATE: f32 = 44_100.0; constant MAX_CHANNEL_COUNT (line 107) | pub const MAX_CHANNEL_COUNT: usize = 6; constant CYCLE_SIZE (line 108) | pub const CYCLE_SIZE: u32 = 10_000; method new (line 111) | pub fn new(region: NesRegion) -> Self { method default_channel_outputs (line 140) | pub fn default_channel_outputs() -> Box<[f32]> { method add_mapper_output (line 145) | pub fn add_mapper_output(&mut self, output: f32) { method process_outputs (line 153) | pub fn process_outputs(&mut self) { method set_sample_rate (line 183) | pub fn set_sample_rate(&mut self, sample_rate: f32) { method set_frame_speed (line 192) | pub fn set_frame_speed(&mut self, speed: f32) { method channel_enabled (line 202) | pub const fn channel_enabled(&self, channel: Channel) -> bool { method set_channel_enabled (line 214) | pub const fn set_channel_enabled(&mut self, channel: Channel, enabled:... method toggle_channel (line 226) | pub const fn toggle_channel(&mut self, channel: Channel) { method clock_lazy (line 237) | pub fn clock_lazy(&mut self) { method clock_sync (line 250) | pub fn clock_sync(&mut self) { method should_clock (line 266) | fn should_clock(&mut self) -> bool { method channel_clock_to (line 277) | fn channel_clock_to(&mut self, channel: Channel, cycle: u32) { method clock_to (line 301) | fn clock_to(&mut self, cycle: u32) { method write_ctrl (line 344) | pub fn write_ctrl(&mut self, channel: Channel, val: u8) { method write_sweep (line 365) | pub fn write_sweep(&mut self, channel: Channel, val: u8) { method write_timer_lo (line 381) | pub fn write_timer_lo(&mut self, channel: Channel, val: u8) { method write_timer_hi (line 409) | pub fn write_timer_hi(&mut self, channel: Channel, val: u8) { method write_linear_counter (line 432) | pub fn write_linear_counter(&mut self, val: u8) { method write_length (line 440) | pub fn write_length(&mut self, channel: Channel, val: u8) { method write_dmc_output (line 454) | pub fn write_dmc_output(&mut self, val: u8) { method write_dmc_addr (line 466) | pub fn write_dmc_addr(&mut self, val: u8) { method read_status (line 475) | pub fn read_status(&mut self) -> u8 { method peek_status (line 489) | pub fn peek_status(&self) -> u8 { method write_status (line 519) | pub fn write_status(&mut self, val: u8) { method write_frame_counter (line 531) | pub fn write_frame_counter(&mut self, val: u8) { method irq_pending (line 539) | pub const fn irq_pending(&self) -> bool { method dma_pending (line 545) | pub const fn dma_pending(&self) -> bool { method clear_dma_pending (line 551) | pub const fn clear_dma_pending(&mut self) { method fmt (line 590) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<... method default (line 99) | fn default() -> Self { method region (line 557) | fn region(&self) -> NesRegion { method set_region (line 561) | fn set_region(&mut self, region: NesRegion) { method reset (line 575) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/apu/dmc.rs type Dmc (line 17) | pub struct Dmc { constant PERIOD_TABLE_NTSC (line 46) | const PERIOD_TABLE_NTSC: [u16; 16] = [ constant PERIOD_TABLE_PAL (line 49) | const PERIOD_TABLE_PAL: [u16; 16] = [ method new (line 53) | pub const fn new(region: NesRegion) -> Self { method silent (line 78) | pub const fn silent(&self) -> bool { method set_silent (line 82) | pub const fn set_silent(&mut self, silent: bool) { method irq_pending_in (line 88) | pub fn irq_pending_in(&self, cycles_to_run: u32) -> bool { method dma_addr (line 99) | pub const fn dma_addr(&self) -> u16 { method init_sample (line 103) | fn init_sample(&mut self) { method load_buffer (line 114) | pub fn load_buffer(&mut self, val: u8) { method period (line 136) | const fn period(region: NesRegion, val: u8) -> u16 { method write_timer (line 147) | pub const fn write_timer(&mut self, val: u8) { method write_output (line 157) | pub const fn write_output(&mut self, val: u8) { method write_addr (line 162) | pub fn write_addr(&mut self, val: u8) { method write_length (line 167) | pub fn write_length(&mut self, val: u8) { method set_enabled (line 172) | pub fn set_enabled(&mut self, enabled: bool, cycle: u32) { method should_clock (line 184) | pub fn should_clock(&mut self) -> bool { method default (line 40) | fn default() -> Self { method output (line 197) | fn output(&self) -> f32 { method cycle (line 207) | fn cycle(&self) -> u32 { method clock (line 217) | fn clock(&mut self) { method region (line 253) | fn region(&self) -> NesRegion { method set_region (line 257) | fn set_region(&mut self, region: NesRegion) { method reset (line 264) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/apu/envelope.rs type Envelope (line 13) | pub struct Envelope { method new (line 23) | pub const fn new() -> Self { method volume (line 36) | pub const fn volume(&self) -> u8 { method restart (line 45) | pub const fn restart(&mut self) { method write_ctrl (line 51) | pub const fn write_ctrl(&mut self, val: u8) { method clock (line 59) | fn clock(&mut self) { method reset (line 78) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/apu/filter.rs type Consume (line 13) | pub trait Consume { method consume (line 14) | fn consume(&mut self, sample: f32); method consume (line 76) | fn consume(&mut self, sample: f32) { method consume (line 115) | fn consume(&mut self, sample: f32) { method consume (line 188) | fn consume(&mut self, sample: f32) { method consume (line 294) | fn consume(&mut self, sample: f32) { type FilterKind (line 20) | pub enum FilterKind { type Iir (line 29) | pub struct Iir { method identity (line 38) | pub const fn identity() -> Self { method high_pass (line 48) | pub fn high_pass(sample_rate: f32, cutoff: f32) -> Self { method low_pass (line 61) | pub fn low_pass(sample_rate: f32, cutoff: f32) -> Self { method output (line 84) | fn output(&self) -> f32 { type Fir (line 96) | pub struct Fir { method low_pass (line 104) | pub fn low_pass(sample_rate: f32, cutoff: f32, window_size: usize) -> ... method output (line 125) | fn output(&self) -> f32 { function windowed_sinc_kernel (line 148) | pub fn windowed_sinc_kernel(sample_rate: f32, cutoff: f32, window_size: ... type Filter (line 182) | pub enum Filter { method from (line 206) | fn from(filter: Iir) -> Self { method from (line 212) | fn from(filter: Fir) -> Self { method output (line 197) | fn output(&self) -> f32 { type SampledFilter (line 220) | pub struct SampledFilter { method new (line 227) | pub fn new(filter: impl Into, sample_rate: f32) -> Self { type FilterChain (line 238) | pub struct FilterChain { method new (line 245) | pub fn new(region: NesRegion, output_rate: f32) -> Self { method output (line 311) | fn output(&self) -> f32 { FILE: tetanes-core/src/apu/frame_counter.rs type FrameCounter (line 13) | pub struct FrameCounter { constant STEP4_CYCLES_NTSC (line 36) | const STEP4_CYCLES_NTSC: [u32; 6] = [7457, 14913, 22371, 29828, 29829,... constant STEP5_CYCLES_NTSC (line 37) | const STEP5_CYCLES_NTSC: [u32; 6] = [7457, 14913, 22371, 29829, 37281,... constant STEP4_CYCLES_PAL (line 38) | const STEP4_CYCLES_PAL: [u32; 6] = [8313, 16627, 24939, 33252, 33253, ... constant STEP5_CYCLES_PAL (line 39) | const STEP5_CYCLES_PAL: [u32; 6] = [8313, 16627, 24939, 33253, 41565, ... constant FRAME_TYPE (line 41) | const FRAME_TYPE: [FrameType; 6] = [ method new (line 50) | pub const fn new(region: NesRegion) -> Self { method set_region (line 67) | pub const fn set_region(&mut self, region: NesRegion) { method step_cycles (line 72) | const fn step_cycles(mode: u8, region: NesRegion) -> [u32; 6] { method write (line 82) | pub fn write(&mut self, val: u8, cycle: u32) { method should_clock (line 95) | pub const fn should_clock(&mut self, cycles: u32) -> bool { method clock_with (line 112) | pub fn clock_with(&mut self, cycles: u32, mut on_clock: impl FnMut(Fra... type FrameType (line 28) | pub enum FrameType { method reset (line 177) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/apu/length_counter.rs type LengthCounter (line 16) | pub struct LengthCounter { constant LENGTH_TABLE (line 27) | const LENGTH_TABLE: [u8; 32] = [ method new (line 32) | pub const fn new(channel: Channel) -> Self { method write (line 45) | pub const fn write(&mut self, val: u8) { method set_enabled (line 53) | pub const fn set_enabled(&mut self, enabled: bool) { method reload (line 61) | pub const fn reload(&mut self) { method write_ctrl (line 72) | pub const fn write_ctrl(&mut self, halt: bool) { method clock (line 78) | fn clock(&mut self) { method reset (line 86) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/apu/noise.rs type ShiftMode (line 18) | pub enum ShiftMode { type Noise (line 30) | pub struct Noise { constant PERIOD_TABLE_NTSC (line 47) | const PERIOD_TABLE_NTSC: [u16; 16] = [ constant PERIOD_TABLE_PAL (line 50) | const PERIOD_TABLE_PAL: [u16; 16] = [ method new (line 54) | pub const fn new(region: NesRegion) -> Self { method is_muted (line 67) | pub const fn is_muted(&self) -> bool { method silent (line 72) | pub const fn silent(&self) -> bool { method set_silent (line 76) | pub const fn set_silent(&mut self, silent: bool) { method period (line 80) | const fn period(region: NesRegion, val: u8) -> u16 { method clock_quarter_frame (line 90) | pub fn clock_quarter_frame(&mut self) { method clock_half_frame (line 94) | pub fn clock_half_frame(&mut self) { method write_ctrl (line 100) | pub const fn write_ctrl(&mut self, val: u8) { method write_timer (line 106) | pub const fn write_timer(&mut self, val: u8) { method write_length (line 116) | pub const fn write_length(&mut self, val: u8) { method set_enabled (line 121) | pub const fn set_enabled(&mut self, enabled: bool) { method volume (line 125) | pub const fn volume(&self) -> u8 { method default (line 41) | fn default() -> Self { method output (line 135) | fn output(&self) -> f32 { method cycle (line 145) | fn cycle(&self) -> u32 { method clock (line 155) | fn clock(&mut self) { method region (line 170) | fn region(&self) -> NesRegion { method set_region (line 174) | fn set_region(&mut self, region: NesRegion) { method reset (line 180) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/apu/pulse.rs type OutputFreq (line 18) | pub enum OutputFreq { type PulseChannel (line 25) | pub enum PulseChannel { type Pulse (line 35) | pub struct Pulse { constant DUTY_TABLE (line 55) | const DUTY_TABLE: [[u8; 8]; 4] = [ method new (line 62) | pub const fn new(channel: PulseChannel, output_freq: OutputFreq) -> Se... method is_muted (line 81) | pub fn is_muted(&self) -> bool { method silent (line 89) | pub const fn silent(&self) -> bool { method set_silent (line 93) | pub const fn set_silent(&mut self, silent: bool) { method update_target_period (line 97) | const fn update_target_period(&mut self) { method set_period (line 109) | const fn set_period(&mut self, period: u16) { method clock_sweep (line 115) | const fn clock_sweep(&mut self) { method clock_quarter_frame (line 134) | pub fn clock_quarter_frame(&mut self) { method clock_half_frame (line 138) | pub fn clock_half_frame(&mut self) { method write_ctrl (line 145) | pub const fn write_ctrl(&mut self, val: u8) { method write_sweep (line 152) | pub const fn write_sweep(&mut self, val: u8) { method write_timer_lo (line 162) | pub fn write_timer_lo(&mut self, val: u8) { method write_timer_hi (line 167) | pub fn write_timer_hi(&mut self, val: u8) { method set_enabled (line 174) | pub const fn set_enabled(&mut self, enabled: bool) { method volume (line 178) | pub const fn volume(&self) -> u8 { method default (line 49) | fn default() -> Self { method output (line 188) | fn output(&self) -> f32 { method cycle (line 200) | fn cycle(&self) -> u32 { method clock (line 215) | fn clock(&mut self) { method reset (line 223) | fn reset(&mut self, kind: ResetKind) { type Sweep (line 238) | pub struct Sweep { method new (line 251) | pub const fn new(channel: PulseChannel) -> Self { method reset (line 267) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/apu/timer.rs type TimerCycle (line 7) | pub trait TimerCycle { method cycle (line 8) | fn cycle(&self) -> u32; type Timer (line 15) | pub struct Timer { method new (line 22) | pub const fn new(period: u16) -> Self { method preload (line 30) | pub const fn preload(period: u16) -> Self { method reload (line 36) | pub const fn reload(&mut self) { method tick (line 40) | pub const fn tick(&mut self) -> bool { method reset (line 52) | fn reset(&mut self, _kind: ResetKind) { function timer (line 64) | fn timer() { FILE: tetanes-core/src/apu/triangle.rs type Triangle (line 20) | pub struct Triangle { constant SEQUENCE (line 35) | const SEQUENCE: [u8; 32] = [ method new (line 40) | pub const fn new() -> Self { method silent (line 51) | pub const fn silent(&self) -> bool { method set_silent (line 55) | pub const fn set_silent(&mut self, silent: bool) { method clock_quarter_frame (line 59) | pub fn clock_quarter_frame(&mut self) { method clock_half_frame (line 63) | pub fn clock_half_frame(&mut self) { method write_linear_counter (line 69) | pub const fn write_linear_counter(&mut self, val: u8) { method write_timer_lo (line 76) | pub fn write_timer_lo(&mut self, val: u8) { method write_timer_hi (line 81) | pub fn write_timer_hi(&mut self, val: u8) { method set_enabled (line 87) | pub const fn set_enabled(&mut self, enabled: bool) { method default (line 29) | fn default() -> Self { method output (line 93) | fn output(&self) -> f32 { method cycle (line 107) | fn cycle(&self) -> u32 { method clock (line 117) | fn clock(&mut self) { method reset (line 125) | fn reset(&mut self, kind: ResetKind) { type LinearCounter (line 137) | pub struct LinearCounter { method new (line 145) | pub const fn new() -> Self { method write (line 154) | pub const fn write(&mut self, val: u8) { method clock (line 160) | fn clock(&mut self) { method reset (line 173) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/bus.rs type Bus (line 51) | pub struct Bus { method new (line 83) | pub fn new(region: NesRegion, ram_state: RamState) -> Self { method load_cart (line 96) | pub fn load_cart(&mut self, cart: Cart) { method unload_cart (line 100) | pub fn unload_cart(&mut self) { method wram (line 107) | pub fn wram(&self) -> &[u8; size::WRAM] { method add_genie_code (line 116) | pub fn add_genie_code(&mut self, genie_code: GenieCode) { method remove_genie_code (line 122) | pub fn remove_genie_code(&mut self, code: &str) { method clear_genie_codes (line 127) | pub fn clear_genie_codes(&mut self) { method genie_read (line 131) | fn genie_read(&self, addr: u16, val: u8) -> u8 { method audio_samples (line 139) | pub fn audio_samples(&self) -> &[f32] { method clear_audio_samples (line 144) | pub fn clear_audio_samples(&mut self) { method cpu_clock (line 149) | pub fn cpu_clock(&mut self) { method default (line 72) | fn default() -> Self { constant WRAM (line 79) | pub const WRAM: usize = 0x800; method read (line 159) | fn read(&mut self, addr: u16) -> u8 { method peek (line 183) | fn peek(&self, addr: u16) -> u8 { method write (line 208) | fn write(&mut self, addr: u16, val: u8) { method region (line 254) | fn region(&self) -> NesRegion { method set_region (line 258) | fn set_region(&mut self, region: NesRegion) { method reset (line 267) | fn reset(&mut self, kind: ResetKind) { method save (line 277) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 281) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { function load_cart_values (line 295) | fn load_cart_values() { function load_cart_chr_rom (line 322) | fn load_cart_chr_rom() { function load_cart_chr_ram (line 352) | fn load_cart_chr_ram() { function genie_codes (line 388) | fn genie_codes() { function clock (line 412) | fn clock() { function read_write_ram (line 422) | fn read_write_ram() { function read_write_ppu (line 445) | fn read_write_ppu() { function read_write_apu (line 454) | fn read_write_apu() { function write_apu_pulse (line 462) | fn write_apu_pulse() { function write_apu_triangle (line 470) | fn write_apu_triangle() { function write_apu_noise (line 477) | fn write_apu_noise() { function write_dmc (line 484) | fn write_dmc() { function read_write_input (line 491) | fn read_write_input() { function read_write_mapper (line 497) | fn read_write_mapper() { function reset (line 503) | fn reset() { FILE: tetanes-core/src/cart.rs constant PRG_ROM_BANK_SIZE (line 23) | const PRG_ROM_BANK_SIZE: usize = 0x4000; constant CHR_ROM_BANK_SIZE (line 24) | const CHR_ROM_BANK_SIZE: usize = 0x2000; type Result (line 26) | pub type Result = std::result::Result; type Error (line 30) | pub enum Error { method io (line 47) | pub fn io(source: std::io::Error, context: impl Into) -> Self { type Cart (line 58) | pub struct Cart { method empty (line 80) | pub fn empty() -> Self { method from_path (line 103) | pub fn from_path>(path: P, ram_state: RamState) -> Resu... method from_rom (line 118) | pub fn from_rom(name: S, mut rom_data: &mut F, ram_state: RamSta... method name (line 245) | pub fn name(&self) -> &str { method is_ines (line 250) | pub const fn is_ines(&self) -> bool { method is_nes2 (line 258) | pub const fn is_nes2(&self) -> bool { method battery_backed (line 264) | pub const fn battery_backed(&self) -> bool { method ram_state (line 269) | pub const fn ram_state(&self) -> RamState { method mirroring (line 274) | pub fn mirroring(&self) -> Mirroring { method mapper_num (line 288) | pub fn mapper_num(&self) -> u16 { method submapper_num (line 297) | pub fn submapper_num(&self) -> u8 { method mapper_board (line 306) | pub fn mapper_board(&self) -> &'static str { method chr_size (line 310) | pub fn chr_size(&self) -> usize { method chr_rom_or_ram (line 337) | pub(crate) fn chr_rom_or_ram( method prg_ram_or_default (line 360) | pub(crate) fn prg_ram_or_default(&self, size: usize) -> Memory Result { method lookup_info (line 385) | fn lookup_info(prg_rom: &[u8], chr: &[u8]) -> Option { method fmt (line 425) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<... method default (line 74) | fn default() -> Self { method region (line 415) | fn region(&self) -> NesRegion { method set_region (line 419) | fn set_region(&mut self, region: NesRegion) { type GameInfo (line 443) | pub struct GameInfo { type NesVariant (line 452) | pub enum NesVariant { type NesHeader (line 467) | pub struct NesHeader { method from_path (line 487) | pub fn from_path>(path: P) -> Result { method load (line 501) | pub fn load(rom_data: &mut F) -> Result { method mapper_board (line 634) | pub const fn mapper_board(mapper_num: u16) -> &'static str { method fmt (line 898) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<... FILE: tetanes-core/src/common.rs constant SAVE_DIR (line 8) | pub const SAVE_DIR: &str = "save"; constant SRAM_DIR (line 10) | pub const SRAM_DIR: &str = "sram"; type ParseNesRegionError (line 15) | pub struct ParseNesRegionError; type NesRegion (line 19) | pub enum NesRegion { method as_slice (line 32) | pub const fn as_slice() -> &'static [Self] { method is_auto (line 42) | pub const fn is_auto(&self) -> bool { method is_ntsc (line 47) | pub const fn is_ntsc(&self) -> bool { method is_pal (line 52) | pub const fn is_pal(&self) -> bool { method is_dendy (line 57) | pub const fn is_dendy(&self) -> bool { method aspect_ratio (line 62) | pub fn aspect_ratio(&self) -> f32 { method as_str (line 71) | pub const fn as_str(&self) -> &'static str { method fmt (line 82) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method as_ref (line 94) | fn as_ref(&self) -> &str { type Error (line 100) | type Error = ParseNesRegionError; method try_from (line 102) | fn try_from(value: &str) -> Result { type Error (line 114) | type Error = ParseNesRegionError; method try_from (line 116) | fn try_from(value: usize) -> Result { type Regional (line 129) | pub trait Regional { method region (line 131) | fn region(&self) -> NesRegion { method set_region (line 136) | fn set_region(&mut self, _region: NesRegion) {} type ResetKind (line 142) | pub enum ResetKind { type Reset (line 150) | pub trait Reset { method reset (line 152) | fn reset(&mut self, _kind: ResetKind) {} type Clock (line 156) | pub trait Clock { method clock (line 158) | fn clock(&mut self) {} type Sample (line 162) | pub trait Sample { method output (line 164) | fn output(&self) -> f32 { type Sram (line 170) | pub trait Sram { method save (line 172) | fn save(&self, _path: impl AsRef) -> crate::fs::Result<()> { method load (line 177) | fn load(&mut self, _path: impl AsRef) -> crate::fs::Result<()> { function hexdump (line 184) | pub fn hexdump(data: &[u8], addr_offset: usize) -> Vec { constant RESULT_DIR (line 263) | pub(crate) const RESULT_DIR: &str = "test_results"; type TestFrame (line 290) | struct TestFrame { type RomTest (line 304) | struct RomTest { function get_rom_tests (line 311) | fn get_rom_tests(directory: &str) -> anyhow::Result<(PathBuf, Vec>(path: P) -> ControlDeck { function on_frame_action (line 337) | fn on_frame_action(test_frame: &TestFrame, deck: &mut ControlDeck) { function on_snapshot (line 362) | fn on_snapshot( function test_rom (line 428) | pub(crate) fn test_rom(directory: &str, test_name: &str) -> anyhow::Resu... FILE: tetanes-core/src/control_deck.rs type Result (line 28) | pub type Result = std::result::Result; type Error (line 33) | pub enum Error { method io (line 73) | pub fn io(source: std::io::Error, context: impl Into) -> Self { type MapperRevisionsConfig (line 96) | pub struct MapperRevisionsConfig { method set (line 105) | pub const fn set(&mut self, rev: MapperRevision) { type Config (line 117) | pub struct Config { constant BASE_DIR (line 149) | pub const BASE_DIR: &'static str = "tetanes"; constant SRAM_DIR (line 151) | pub const SRAM_DIR: &'static str = "sram"; constant SRAM_EXTENSION (line 153) | pub const SRAM_EXTENSION: &'static str = "sram"; method default_data_dir (line 158) | pub fn default_data_dir() -> PathBuf { method sram_dir (line 165) | pub fn sram_dir(&self) -> PathBuf { method default (line 171) | fn default() -> Self { type LoadedRom (line 191) | pub struct LoadedRom { type ControlDeck (line 203) | pub struct ControlDeck { method new (line 236) | pub fn new() -> Self { method with_config (line 241) | pub fn with_config(cfg: Config) -> Self { method sram_path (line 282) | pub fn sram_path(&self, name: &str) -> PathBuf { method load_rom (line 293) | pub fn load_rom(&mut self, name: S, rom: &mut F)... method load_rom_path (line 324) | pub fn load_rom_path(&mut self, path: impl AsRef) -> ... method unload_rom (line 340) | pub fn unload_rom(&mut self) -> Result<()> { method load_cpu (line 355) | pub fn load_cpu(&mut self, cpu: Cpu) { method set_mapper_revision (line 361) | pub const fn set_mapper_revision(&mut self, rev: MapperRevision) { method set_mapper_revisions (line 369) | pub const fn set_mapper_revisions(&mut self, revs: MapperRevisionsConf... method update_mapper_revisions (line 376) | const fn update_mapper_revisions(&mut self) { method set_concurrent_dpad (line 409) | pub fn set_concurrent_dpad(&mut self, enabled: bool) { method set_ram_state (line 415) | pub const fn set_ram_state(&mut self, ram_state: RamState) { method set_headless_mode (line 422) | pub const fn set_headless_mode(&mut self, mode: HeadlessMode) { method set_emulate_ppu_warmup (line 432) | pub const fn set_emulate_ppu_warmup(&mut self, enabled: bool) { method add_debugger (line 438) | pub fn add_debugger(&mut self, debugger: Debugger) { method remove_debugger (line 445) | pub fn remove_debugger(&mut self, debugger: Debugger) { method loaded_rom (line 454) | pub const fn loaded_rom(&self) -> Option<&LoadedRom> { method cart_region (line 462) | pub fn cart_region(&self) -> Option { method cart_battery_backed (line 469) | pub fn cart_battery_backed(&self) -> Option { method wram (line 476) | pub fn wram(&self) -> &[u8] { method save_sram (line 485) | pub fn save_sram(&self, path: impl AsRef) -> Result<()> { method load_sram (line 506) | pub fn load_sram(&mut self, path: impl AsRef) -> Result<()> { method save_state (line 528) | pub fn save_state(&mut self, path: impl AsRef) -> Result<()> { method load_state (line 541) | pub fn load_state(&mut self, path: impl AsRef) -> Result<()> { method frame_buffer_raw (line 560) | pub fn frame_buffer_raw(&mut self) -> &[u16] { method frame_buffer (line 566) | pub fn frame_buffer(&mut self) -> &[u8] { method frame_buffer_into (line 580) | pub fn frame_buffer_into(&self, buffer: &mut [u8]) { method frame_number (line 591) | pub const fn frame_number(&self) -> u32 { method audio_samples (line 598) | pub fn audio_samples(&self) -> &[f32] { method clear_audio_samples (line 604) | pub fn clear_audio_samples(&mut self) { method clock_rate (line 611) | pub const fn clock_rate(&self) -> f32 { method clock_instr (line 620) | pub fn clock_instr(&mut self) -> Result<()> { method clock_seconds (line 634) | pub fn clock_seconds(&mut self, seconds: f32) -> Result { method clock_seconds_output (line 653) | pub fn clock_seconds_output( method clock_frame (line 679) | pub fn clock_frame(&mut self) -> Result<()> { method clock_frame_output (line 712) | pub fn clock_frame_output( method clock_frame_into (line 733) | pub fn clock_frame_into( method clock_frame_ahead (line 755) | pub fn clock_frame_ahead( method clock_frame_ahead_into (line 797) | pub fn clock_frame_ahead_into( method clock_scanline (line 838) | pub fn clock_scanline(&mut self) -> Result<()> { method cpu_corrupted (line 855) | pub const fn cpu_corrupted(&self) -> bool { method cpu (line 861) | pub const fn cpu(&self) -> &Cpu { method cpu_mut (line 867) | pub const fn cpu_mut(&mut self) -> &mut Cpu { method ppu (line 873) | pub const fn ppu(&self) -> &Ppu { method ppu_mut (line 879) | pub const fn ppu_mut(&mut self) -> &mut Ppu { method bus (line 885) | pub const fn bus(&self) -> &Bus { method bus_mut (line 891) | pub const fn bus_mut(&mut self) -> &mut Bus { method apu (line 897) | pub const fn apu(&self) -> &Apu { method apu_mut (line 903) | pub const fn apu_mut(&mut self) -> &Apu { method mapper (line 909) | pub const fn mapper(&self) -> &Mapper { method mapper_mut (line 915) | pub const fn mapper_mut(&mut self) -> &mut Mapper { method four_player (line 921) | pub const fn four_player(&self) -> FourPlayer { method set_four_player (line 927) | pub fn set_four_player(&mut self, four_player: FourPlayer) { method joypad (line 933) | pub const fn joypad(&mut self, slot: Player) -> &Joypad { method joypad_mut (line 939) | pub const fn joypad_mut(&mut self, slot: Player) -> &mut Joypad { method zapper_connected (line 945) | pub const fn zapper_connected(&self) -> bool { method connect_zapper (line 951) | pub const fn connect_zapper(&mut self, enabled: bool) { method zapper_pos (line 958) | pub const fn zapper_pos(&self) -> (u16, u16) { method trigger_zapper (line 965) | pub fn trigger_zapper(&mut self) { method aim_zapper (line 971) | pub const fn aim_zapper(&mut self, x: u16, y: u16) { method set_filter (line 977) | pub const fn set_filter(&mut self, filter: VideoFilter) { method set_sample_rate (line 983) | pub fn set_sample_rate(&mut self, sample_rate: f32) { method set_frame_speed (line 989) | pub fn set_frame_speed(&mut self, speed: f32) { method add_genie_code (line 1000) | pub fn add_genie_code(&mut self, genie_code: String) -> Result<()> { method remove_genie_code (line 1007) | pub fn remove_genie_code(&mut self, genie_code: &str) { method clear_genie_codes (line 1013) | pub fn clear_genie_codes(&mut self) { method channel_enabled (line 1020) | pub const fn channel_enabled(&self, channel: Channel) -> bool { method set_apu_channel_enabled (line 1026) | pub const fn set_apu_channel_enabled(&mut self, channel: Channel, enab... method toggle_apu_channel (line 1032) | pub const fn toggle_apu_channel(&mut self, channel: Channel) { method is_running (line 1039) | pub const fn is_running(&self) -> bool { method default (line 229) | fn default() -> Self { method clock (line 1047) | fn clock(&mut self) { method region (line 1054) | fn region(&self) -> NesRegion { method set_region (line 1059) | fn set_region(&mut self, region: NesRegion) { method reset (line 1071) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/cpu.rs type Cpu (line 73) | pub struct Cpu { constant NTSC_MASTER_CLOCK_RATE (line 97) | const NTSC_MASTER_CLOCK_RATE: f32 = 21_477_272.0; constant NTSC_CPU_CLOCK_RATE (line 98) | const NTSC_CPU_CLOCK_RATE: f32 = Self::NTSC_MASTER_CLOCK_RATE / 12.0; constant PAL_MASTER_CLOCK_RATE (line 99) | const PAL_MASTER_CLOCK_RATE: f32 = 26_601_712.0; constant PAL_CPU_CLOCK_RATE (line 100) | const PAL_CPU_CLOCK_RATE: f32 = Self::PAL_MASTER_CLOCK_RATE / 16.0; constant DENDY_CPU_CLOCK_RATE (line 101) | const DENDY_CPU_CLOCK_RATE: f32 = Self::PAL_MASTER_CLOCK_RATE / 15.0; constant PPU_OFFSET (line 106) | const PPU_OFFSET: u32 = 1; constant NMI_VECTOR (line 108) | const NMI_VECTOR: u16 = 0xFFFA; constant IRQ_VECTOR (line 109) | const IRQ_VECTOR: u16 = 0xFFFE; constant RESET_VECTOR (line 110) | const RESET_VECTOR: u16 = 0xFFFC; constant POWER_ON_STATUS (line 111) | const POWER_ON_STATUS: Status = Status::U.union(Status::I); constant POWER_ON_SP (line 112) | const POWER_ON_SP: u8 = 0xFD; constant SP_BASE (line 113) | const SP_BASE: u16 = 0x0100; method new (line 116) | pub fn new(bus: Bus) -> Self { method load (line 141) | pub fn load(&mut self, mut cpu: Self) { method region_clock_rate (line 150) | pub const fn region_clock_rate(region: NesRegion) -> f32 { method clock_rate (line 161) | pub const fn clock_rate(&self) -> f32 { method next_instr (line 167) | pub fn next_instr(&self) -> InstrRef { method start_oam_dma (line 174) | pub fn start_oam_dma(&mut self, addr: u16) { method irq (line 193) | pub fn irq(&mut self) { method handle_interrupts (line 232) | fn handle_interrupts(&mut self) { method start_cycle (line 286) | fn start_cycle(&mut self, increment: u8) { method end_cycle (line 295) | fn end_cycle(&mut self, increment: u8) { method start_dma_cycle (line 304) | fn start_dma_cycle(&mut self) { method handle_dma (line 317) | fn handle_dma(&mut self, addr: u16) { method clear_irq_flags (line 398) | fn clear_irq_flags(&mut self, flags: IrqFlags) { method irq_flags (line 404) | fn irq_flags(&self, flags: IrqFlags) -> bool { method set_status (line 412) | fn set_status(&mut self, status: Status) { method status_bit (line 418) | const fn status_bit(&self, reg: Status) -> u8 { method set_acc (line 424) | fn set_acc(&mut self, val: u8) { method set_x (line 431) | fn set_x(&mut self, val: u8) { method set_y (line 438) | fn set_y(&mut self, val: u8) { method set_sp (line 445) | const fn set_sp(&mut self, val: u8) { method set_zn_status (line 451) | fn set_zn_status(&mut self, val: u8) { method push_byte (line 460) | fn push_byte(&mut self, val: u8) { method pop_byte (line 468) | fn pop_byte(&mut self) -> u8 { method peek_stack (line 476) | pub fn peek_stack(&self) -> u8 { method peek_stack_u16 (line 483) | pub fn peek_stack_u16(&self) -> u16 { method push_word (line 491) | fn push_word(&mut self, val: u16) { method pop_word (line 499) | fn pop_word(&mut self) -> u16 { method fetch_byte (line 510) | fn fetch_byte(&mut self) -> u8 { method fetch_operand (line 519) | fn fetch_operand(&mut self) -> u16 { method fetch_word (line 541) | fn fetch_word(&mut self) -> u16 { method read_operand (line 550) | fn read_operand(&mut self) -> u8 { method read_word (line 564) | pub fn read_word(&mut self, addr: u16) -> u16 { method peek_word (line 573) | pub fn peek_word(&self, addr: u16) -> u16 { method disassemble (line 580) | pub fn disassemble(&mut self, pc: &mut u16) -> &str { method trace_instr (line 739) | pub fn trace_instr(&mut self) { method pages_differ (line 768) | const fn pages_differ(addr1: u16, addr2: u16) -> bool { method page_crossed (line 775) | const fn page_crossed(addr: u16, offset: i16) -> bool { method clock_sync (line 781) | pub fn clock_sync(&mut self) { method fmt (line 909) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::result::Result<(), f... method clock (line 792) | fn clock(&mut self) { method read (line 813) | fn read(&mut self, addr: u16) -> u8 { method peek (line 824) | fn peek(&self, addr: u16) -> u8 { method write (line 831) | fn write(&mut self, addr: u16, val: u8) { method region (line 844) | fn region(&self) -> NesRegion { method set_region (line 848) | fn set_region(&mut self, region: NesRegion) { method reset (line 867) | fn reset(&mut self, kind: ResetKind) { function cycle_timing (line 929) | fn cycle_timing() { FILE: tetanes-core/src/cpu/instr.rs type Instr (line 19) | pub enum Instr { type AddrMode (line 33) | pub enum AddrMode { type Op (line 51) | pub struct Op { method run (line 58) | pub fn run(&self, cpu: &mut Cpu) { method addr_mode (line 63) | pub const fn addr_mode(&self) -> AddrMode { type InstrRef (line 80) | pub struct InstrRef { method fmt (line 88) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<... constant OPS (line 136) | pub const OPS: [Op; 256] = [ constant INSTR_REF (line 158) | pub const INSTR_REF: [InstrRef; 256] = [ method acc_imp (line 203) | pub fn acc_imp(&mut self) -> u16 { method imm_rel_zp (line 294) | pub fn imm_rel_zp(&mut self) -> u16 { method zpx (line 353) | pub fn zpx(&mut self) -> u16 { method zpy (line 396) | pub fn zpy(&mut self) -> u16 { method abs (line 449) | pub fn abs(&mut self) -> u16 { method abx (line 525) | pub fn abx(&mut self, dummy_read: bool) -> u16 { method aby (line 607) | pub fn aby(&mut self, dummy_read: bool) -> u16 { method ind (line 641) | pub fn ind(&mut self) -> u16 { method idx (line 707) | pub fn idx(&mut self) -> u16 { method idy (line 792) | pub fn idy(&mut self, dummy_read: bool) -> u16 { method lda (line 815) | pub fn lda(&mut self) { method ldx (line 821) | pub fn ldx(&mut self) { method ldy (line 827) | pub fn ldy(&mut self) { method sta (line 834) | pub fn sta(&mut self) { method stx (line 839) | pub fn stx(&mut self) { method sty (line 844) | pub fn sty(&mut self) { method tax (line 850) | pub fn tax(&mut self) { method tay (line 855) | pub fn tay(&mut self) { method tsx (line 860) | pub fn tsx(&mut self) { method txa (line 865) | pub fn txa(&mut self) { method txs (line 870) | pub const fn txs(&mut self) { method tya (line 875) | pub fn tya(&mut self) { method adc (line 883) | pub fn adc(&mut self) { method sbc (line 889) | pub fn sbc(&mut self) { method add (line 895) | fn add(&mut self, val: u8) { method inc (line 909) | pub fn inc(&mut self) { method dec (line 919) | pub fn dec(&mut self) { method inx (line 930) | pub fn inx(&mut self) { method iny (line 935) | pub fn iny(&mut self) { method dex (line 941) | pub fn dex(&mut self) { method dey (line 947) | pub fn dey(&mut self) { method and (line 955) | pub fn and(&mut self) { method eor (line 961) | pub fn eor(&mut self) { method ora (line 967) | pub fn ora(&mut self) { method asla (line 974) | fn asla(&mut self) { method aslm (line 980) | fn aslm(&mut self) { method asl (line 989) | fn asl(&mut self, val: u8) -> u8 { method lsra (line 998) | pub fn lsra(&mut self) { method lsrm (line 1004) | pub fn lsrm(&mut self) { method lsr (line 1013) | fn lsr(&mut self, val: u8) -> u8 { method rola (line 1022) | pub fn rola(&mut self) { method rolm (line 1028) | pub fn rolm(&mut self) { method rol (line 1037) | pub fn rol(&mut self, val: u8) -> u8 { method rora (line 1047) | pub fn rora(&mut self) { method rorm (line 1053) | pub fn rorm(&mut self) { method ror (line 1062) | fn ror(&mut self, val: u8) -> u8 { method bit (line 1072) | pub fn bit(&mut self) { method bcc (line 1083) | pub fn bcc(&mut self) { method bcs (line 1088) | pub fn bcs(&mut self) { method beq (line 1093) | pub fn beq(&mut self) { method bmi (line 1098) | pub fn bmi(&mut self) { method bne (line 1103) | pub fn bne(&mut self) { method bpl (line 1108) | pub fn bpl(&mut self) { method bvc (line 1113) | pub fn bvc(&mut self) { method bvs (line 1118) | pub fn bvs(&mut self) { method branch (line 1123) | fn branch(&mut self, branch: bool) { method jmpa (line 1156) | pub const fn jmpa(&mut self) { method jmpi (line 1173) | pub fn jmpi(&mut self) { method jsr (line 1197) | pub fn jsr(&mut self) { method rti (line 1219) | pub fn rti(&mut self) { method rts (line 1239) | pub fn rts(&mut self) { method clc (line 1250) | pub fn clc(&mut self) { method sec (line 1255) | pub fn sec(&mut self) { method cld (line 1260) | pub fn cld(&mut self) { method sed (line 1265) | pub fn sed(&mut self) { method cli (line 1270) | pub fn cli(&mut self) { method sei (line 1275) | pub fn sei(&mut self) { method clv (line 1280) | pub fn clv(&mut self) { method cpa (line 1288) | pub fn cpa(&mut self) { method cpx (line 1294) | pub fn cpx(&mut self) { method cpy (line 1300) | pub fn cpy(&mut self) { method cmp (line 1306) | fn cmp(&mut self, reg: u8, val: u8) { method php (line 1324) | pub fn php(&mut self) { method plp (line 1340) | pub fn plp(&mut self) { method pha (line 1356) | pub fn pha(&mut self) { method pla (line 1371) | pub fn pla(&mut self) { method brk (line 1394) | pub fn brk(&mut self) { method nop (line 1439) | pub fn nop(&mut self) { method hlt (line 1447) | pub fn hlt(&mut self) { method isb (line 1465) | pub fn isb(&mut self) { method dcp (line 1478) | pub fn dcp(&mut self) { method atx (line 1491) | pub fn atx(&mut self) { method axs (line 1499) | pub fn axs(&mut self) { method las (line 1509) | pub fn las(&mut self) { method lax (line 1518) | pub fn lax(&mut self) { method sya (line 1528) | pub fn sya(&mut self) { method sxa (line 1535) | pub fn sxa(&mut self) { method shaa (line 1542) | pub fn shaa(&mut self) { method shaz (line 1549) | pub fn shaz(&mut self) { method sya_sxa_axa (line 1559) | fn sya_sxa_axa(&mut self, base_addr: u16, index_reg: u8, val_reg: u8) { method sax (line 1586) | pub fn sax(&mut self) { method xaa (line 1592) | pub fn xaa(&mut self) { method rra (line 1599) | pub fn rra(&mut self) { method tas (line 1612) | pub fn tas(&mut self) { method arr (line 1621) | pub fn arr(&mut self) { method sre (line 1634) | pub fn sre(&mut self) { method alr (line 1647) | pub fn alr(&mut self) { method rla (line 1656) | pub fn rla(&mut self) { method anc (line 1669) | pub fn anc(&mut self) { method slo (line 1677) | pub fn slo(&mut self) { FILE: tetanes-core/src/debug.rs type Debugger (line 6) | pub enum Debugger { method from (line 11) | fn from(debugger: PpuDebugger) -> Self { type PpuDebugger (line 18) | pub struct PpuDebugger { method fmt (line 41) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method default (line 25) | fn default() -> Self { method eq (line 35) | fn eq(&self, other: &Self) -> bool { FILE: tetanes-core/src/error.rs type Result (line 6) | pub type Result = std::result::Result; type Error (line 10) | pub enum Error { method io (line 30) | pub fn io(source: std::io::Error, context: impl Into) -> Self { FILE: tetanes-core/src/fs.rs constant SAVE_FILE_MAGIC_LEN (line 13) | const SAVE_FILE_MAGIC_LEN: usize = 8; constant SAVE_FILE_MAGIC (line 14) | const SAVE_FILE_MAGIC: [u8; SAVE_FILE_MAGIC_LEN] = *b"TETANES\x1a"; constant SAVE_VERSION (line 16) | const SAVE_VERSION: &str = "1"; type Result (line 18) | pub type Result = std::result::Result; type Error (line 22) | pub enum Error { method io (line 47) | pub fn io(source: std::io::Error, context: impl Into) -> Self { method custom (line 54) | pub fn custom(error: impl Into) -> Self { function write_header (line 64) | pub(crate) fn write_header(f: &mut impl Write) -> std::io::Result<()> { function validate_header (line 74) | pub(crate) fn validate_header(f: &mut impl Read) -> Result<()> { function encode (line 96) | pub fn encode(mut writer: &mut impl Write, data: &[u8]) -> std::io::Resu... function decode (line 103) | pub fn decode(data: impl Read) -> std::io::Result> { function save (line 110) | pub fn save(path: impl AsRef, value: &T) -> Result<()> function save_raw (line 126) | pub fn save_raw(path: impl AsRef, value: &[u8]) -> Result<()> { function load (line 137) | pub fn load(path: impl AsRef) -> Result function load_bytes (line 150) | pub fn load_bytes(bytes: &[u8]) -> Result function load_raw (line 163) | pub fn load_raw(path: impl AsRef) -> Result> { function clear_dir (line 172) | pub fn clear_dir(path: impl AsRef) -> Result<()> { function exists (line 176) | pub fn exists(path: &Path) -> bool { function filename (line 180) | pub fn filename(path: &Path) -> &str { function compute_crc32 (line 189) | pub fn compute_crc32(data: &[u8]) -> u32 { function compute_combine_crc32 (line 193) | pub fn compute_combine_crc32(crc32: u32, data: &[u8]) -> u32 { function compute_crc32_buffer (line 198) | fn compute_crc32_buffer(crc32: u32, buffer: &[u8]) -> u32 { constant CRC_TABLE (line 204) | const CRC_TABLE: [u32; 256] = [ function save_header (line 244) | fn save_header() { function crc32 (line 254) | fn crc32() { FILE: tetanes-core/src/genie.rs type Result (line 9) | pub type Result = std::result::Result; type Error (line 13) | pub struct Error { method new (line 19) | fn new(code: impl Into, kind: ErrorKind) -> Self { method kind (line 26) | pub const fn kind(&self) -> ErrorKind { type ErrorKind (line 33) | pub enum ErrorKind { type GenieCode (line 42) | pub struct GenieCode { method new (line 55) | pub fn new(code: String) -> Result { method from_raw (line 62) | pub fn from_raw(code: String, hex: &[u8]) -> Self { method generate_genie_map (line 89) | fn generate_genie_map() -> HashMap { method parse (line 111) | pub fn parse(code: &str) -> Result> { method code (line 131) | pub fn code(&self) -> &str { method addr (line 136) | pub const fn addr(&self) -> u16 { method read (line 141) | pub const fn read(&self, val: u8) -> u8 { method fmt (line 151) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: tetanes-core/src/input.rs type ParsePlayerError (line 17) | pub struct ParsePlayerError; type Player (line 21) | pub enum Player { method fmt (line 30) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method as_ref (line 42) | fn as_ref(&self) -> &str { type Error (line 53) | type Error = ParsePlayerError; method try_from (line 55) | fn try_from(value: usize) -> Result { type InputRegisters (line 66) | pub trait InputRegisters { method read (line 67) | fn read(&mut self, player: Player, ppu: &Ppu) -> u8; method peek (line 68) | fn peek(&self, player: Player, ppu: &Ppu) -> u8; method write (line 69) | fn write(&mut self, val: u8); method read (line 187) | fn read(&mut self, player: Player, ppu: &Ppu) -> u8 { method peek (line 220) | fn peek(&self, player: Player, ppu: &Ppu) -> u8 { method write (line 253) | fn write(&mut self, val: u8) { type FourPlayer (line 74) | pub enum FourPlayer { method as_slice (line 82) | pub const fn as_slice() -> &'static [Self] { method as_str (line 86) | pub const fn as_str(&self) -> &'static str { method as_ref (line 96) | fn as_ref(&self) -> &str { method fmt (line 102) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Err (line 113) | type Err = &'static str; method from_str (line 114) | fn from_str(s: &str) -> Result { type Input (line 128) | pub struct Input { method new (line 137) | pub fn new(region: NesRegion) -> Self { method joypad (line 151) | pub const fn joypad(&self, player: Player) -> &Joypad { method joypad_mut (line 155) | pub const fn joypad_mut(&mut self, player: Player) -> &mut Joypad { method set_region (line 159) | pub fn set_region(&mut self, region: NesRegion) { method set_concurrent_dpad (line 163) | pub fn set_concurrent_dpad(&mut self, enabled: bool) { method connect_zapper (line 169) | pub const fn connect_zapper(&mut self, connected: bool) { method set_four_player (line 173) | pub fn set_four_player(&mut self, four_player: FourPlayer) { method clear (line 178) | pub fn clear(&mut self) { method clock (line 264) | fn clock(&mut self) { method reset (line 287) | fn reset(&mut self, kind: ResetKind) { type JoypadBtn (line 298) | pub enum JoypadBtn { method as_ref (line 322) | fn as_ref(&self) -> &str { method from (line 356) | fn from(button: JoypadBtn) -> Self { type Joypad (line 374) | pub struct Joypad { method new (line 382) | pub const fn new() -> Self { method button (line 392) | pub const fn button(&self, button: JoypadBtnState) -> bool { method set_button (line 396) | pub fn set_button(&mut self, button: impl Into, presse... method from_bytes (line 413) | pub const fn from_bytes(val: u16) -> Self { method read (line 423) | pub const fn read(&mut self) -> u8 { method peek (line 432) | pub const fn peek(&self) -> u8 { method write (line 440) | pub const fn write(&mut self, val: u8) { method index (line 449) | pub const fn index(&self) -> u8 { method clear (line 453) | pub const fn clear(&mut self) { method reset (line 459) | fn reset(&mut self, _kind: ResetKind) { type Zapper (line 468) | pub struct Zapper { method x (line 483) | pub const fn x(&self) -> u16 { method y (line 489) | pub const fn y(&self) -> u16 { method trigger (line 494) | pub fn trigger(&mut self) { method aim (line 501) | pub const fn aim(&mut self, x: u16, y: u16) { method clear (line 506) | pub const fn clear(&mut self) { method new (line 512) | fn new(region: NesRegion) -> Self { method read (line 525) | fn read(&self, ppu: &Ppu) -> u8 { method triggered (line 533) | fn triggered(&self) -> u8 { method light_sense (line 537) | fn light_sense(&self, ppu: &Ppu) -> u8 { method clock (line 562) | fn clock(&mut self) { method reset (line 570) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/lib.rs function print_layouts (line 105) | fn print_layouts() { FILE: tetanes-core/src/mapper.rs type Error (line 59) | pub enum Error { type MapperRevision (line 68) | pub enum MapperRevision { method fmt (line 77) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Mapper (line 97) | pub enum Mapper { method none (line 343) | pub const fn none() -> Self { method is_none (line 348) | pub const fn is_none(&self) -> bool { method output (line 291) | fn output(&self) -> f32 { method reset (line 304) | fn reset(&mut self, kind: ResetKind) { method clock (line 312) | fn clock(&mut self) { method region (line 319) | fn region(&self) -> NesRegion { method set_region (line 324) | fn set_region(&mut self, region: NesRegion) { method save (line 331) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 336) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { method default (line 354) | fn default() -> Self { type Map (line 360) | pub trait Map: Clock + Regional + Reset + Sram { method chr_read (line 222) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 228) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_read (line 234) | fn prg_read(&mut self, addr: u16) -> u8 { method prg_peek (line 240) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 246) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 252) | fn prg_write(&mut self, addr: u16, val: u8) { method ppu_read (line 257) | fn ppu_read(&mut self, addr: u16) { method ppu_write (line 262) | fn ppu_write(&mut self, addr: u16, val: u8) { method irq_pending (line 267) | fn irq_pending(&self) -> bool { method dma_pending (line 272) | fn dma_pending(&self) -> bool { method clear_dma_pending (line 277) | fn clear_dma_pending(&mut self) { method mirroring (line 283) | fn mirroring(&self) -> Mirroring { method chr_read (line 363) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 369) | fn chr_peek(&self, _addr: u16, _ciram: &CIRam) -> u8; method prg_read (line 375) | fn prg_read(&mut self, addr: u16) -> u8 { method prg_peek (line 381) | fn prg_peek(&self, _addr: u16) -> u8; method chr_write (line 386) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 393) | fn prg_write(&mut self, _addr: u16, _val: u8) {} method ppu_read (line 396) | fn ppu_read(&mut self, _addr: u16) {} method ppu_write (line 399) | fn ppu_write(&mut self, _addr: u16, _val: u8) {} method irq_pending (line 402) | fn irq_pending(&self) -> bool { method clear_dma_pending (line 407) | fn clear_dma_pending(&mut self) {} method dma_pending (line 410) | fn dma_pending(&self) -> bool { method mirroring (line 416) | fn mirroring(&self) -> Mirroring; method chr_peek (line 420) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 427) | fn prg_peek(&self, _addr: u16) -> u8 { method mirroring (line 431) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/bandai_fcg.rs type Regs (line 19) | pub struct Regs { type MemoryOp (line 34) | pub enum MemoryOp { type BandaiFCG (line 45) | pub struct BandaiFCG { constant PRG_WINDOW (line 64) | const PRG_WINDOW: usize = 16 * 1024; constant PRG_RAM_SIZE (line 65) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_ROM_WINDOW (line 66) | const CHR_ROM_WINDOW: usize = 1024; constant CHR_RAM_SIZE (line 67) | const CHR_RAM_SIZE: usize = 8 * 1024; method load (line 69) | pub fn load( method write_chr_bank (line 161) | fn write_chr_bank(&mut self, addr: u16, val: u8) { method write_prg_bank (line 184) | fn write_prg_bank(&mut self, val: u8) { method write_mirroring (line 190) | const fn write_mirroring(&mut self, val: u8) { method write_irq_ctrl (line 199) | const fn write_irq_ctrl(&mut self, val: u8) { method write_irq_latch (line 213) | fn write_irq_latch(&mut self, addr: u16, val: u8) { method write_eeprom_ctrl (line 231) | fn write_eeprom_ctrl(&mut self, val: u8) { method prg_ram_enabled (line 243) | pub const fn prg_ram_enabled(&self) -> bool { method chr_peek (line 290) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_read (line 300) | fn prg_read(&mut self, addr: u16) -> u8 { method prg_peek (line 326) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 336) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 346) | fn prg_write(&mut self, addr: u16, val: u8) { method irq_pending (line 371) | fn irq_pending(&self) -> bool { method mirroring (line 377) | fn mirroring(&self) -> Mirroring { method clock (line 383) | fn clock(&mut self) { method save (line 400) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 410) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { type BarcodeReader (line 426) | pub struct BarcodeReader { method new (line 435) | pub fn new() -> Self { method read (line 445) | pub const fn read(&self) -> u8 { method input (line 455) | pub const fn input(&mut self, barcode: u64, digit_count: u32) { method barcode (line 460) | pub fn barcode(&self) -> String { method init (line 468) | pub fn init(&mut self) { method clock (line 592) | fn clock(&mut self) { type EepromModel (line 599) | pub enum EepromModel { type EepromMode (line 606) | pub enum EepromMode { type Eeprom (line 619) | pub struct Eeprom { method new (line 634) | pub fn new(model: EepromModel) -> Self { method read (line 654) | pub const fn read(&self) -> u8 { method write (line 658) | pub fn write(&mut self, scl: u8, sda: u8) { method write_scl (line 849) | pub fn write_scl(&mut self, scl: u8) { method write_sda (line 853) | pub fn write_sda(&mut self, sda: u8) { method write_bit (line 857) | pub const fn write_bit(&mut self, dest: u8, val: u8) -> Option { method read_bit (line 868) | pub const fn read_bit(&mut self) { method sram_extension (line 879) | pub const fn sram_extension(&self) -> &str { method save (line 888) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 893) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { function bandai_fcg_barcode_formatting (line 904) | fn bandai_fcg_barcode_formatting() { function bandai_fcg_ean13_checksum (line 915) | fn bandai_fcg_ean13_checksum() { function bandai_fcg_ean13_structure (line 931) | fn bandai_fcg_ean13_structure() { function bandai_fcg_ean8_structure (line 951) | fn bandai_fcg_ean8_structure() { FILE: tetanes-core/src/mapper/m000_nrom.rs type Nrom (line 17) | pub struct Nrom { constant PRG_RAM_SIZE (line 28) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_RAM_SIZE (line 29) | const CHR_RAM_SIZE: usize = 8 * 1024; method load (line 32) | pub fn load( method chr_peek (line 62) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 72) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 86) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 96) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 104) | fn mirroring(&self) -> Mirroring { method reset (line 110) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/mapper/m001_sxrom.rs type Revision (line 20) | pub enum Revision { type Regs (line 31) | pub struct Regs { method fmt (line 403) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Sxrom (line 48) | pub struct Sxrom { constant PRG_RAM_WINDOW (line 64) | const PRG_RAM_WINDOW: usize = 8 * 1024; constant PRG_ROM_WINDOW (line 65) | const PRG_ROM_WINDOW: usize = 16 * 1024; constant CHR_WINDOW (line 66) | const CHR_WINDOW: usize = 4 * 1024; constant PRG_RAM_SIZE (line 67) | const PRG_RAM_SIZE: usize = 32 * 1024; constant CHR_RAM_SIZE (line 68) | const CHR_RAM_SIZE: usize = 8 * 1024; constant SHIFT_REG_RESET (line 70) | const SHIFT_REG_RESET: u8 = 0x80; constant MIRRORING_MASK (line 71) | const MIRRORING_MASK: u8 = 0x03; constant SLOT_SELECT_MASK (line 72) | const SLOT_SELECT_MASK: u8 = 0x04; constant PRG_MODE_MASK (line 73) | const PRG_MODE_MASK: u8 = 0x08; constant CHR_MODE_MASK (line 74) | const CHR_MODE_MASK: u8 = 0x10; constant DEFAULT_PRG_MODE (line 76) | const DEFAULT_PRG_MODE: u8 = 0x0C; constant CHR_BANK_MASK (line 77) | const CHR_BANK_MASK: u8 = 0x1F; constant PRG_BANK_MASK (line 78) | const PRG_BANK_MASK: u8 = 0x0F; constant PRG_RAM_DISABLED (line 79) | const PRG_RAM_DISABLED: u8 = 0x10; method load (line 82) | pub fn load( method reset_buffer (line 136) | const fn reset_buffer(&mut self) { method process_register_write (line 142) | const fn process_register_write(&mut self, addr: u16, val: u8) { method update_state (line 172) | pub fn update_state(&mut self) { method prg_ram_enabled (line 213) | pub fn prg_ram_enabled(&self) -> bool { method set_revision (line 217) | pub const fn set_revision(&mut self, revision: Revision) { method fmt (line 387) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method chr_peek (line 230) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 240) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 252) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 262) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 346) | fn mirroring(&self) -> Mirroring { method reset (line 352) | fn reset(&mut self, kind: ResetKind) { method clock (line 365) | fn clock(&mut self) { method save (line 374) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 379) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { FILE: tetanes-core/src/mapper/m002_uxrom.rs type Uxrom (line 17) | pub struct Uxrom { constant PRG_ROM_WINDOW (line 26) | const PRG_ROM_WINDOW: usize = 16 * 1024; constant CHR_RAM_SIZE (line 27) | const CHR_RAM_SIZE: usize = 8 * 1024; method load (line 30) | pub fn load( method chr_peek (line 56) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 66) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 75) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 85) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 93) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m003_cnrom.rs type Cnrom (line 18) | pub struct Cnrom { constant CHR_ROM_WINDOW (line 27) | const CHR_ROM_WINDOW: usize = 8 * 1024; method load (line 30) | pub fn load( method chr_peek (line 55) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 65) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 78) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 86) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m004_txrom.rs type Revision (line 37) | pub enum Revision { type Regs (line 50) | pub struct Regs { type Txrom (line 65) | pub struct Txrom { constant PRG_WINDOW (line 82) | const PRG_WINDOW: usize = 8 * 1024; constant CHR_WINDOW (line 83) | const CHR_WINDOW: usize = 1024; constant CHR_WINDOW_76 (line 84) | const CHR_WINDOW_76: usize = 2048; constant FOUR_SCREEN_RAM_SIZE (line 86) | const FOUR_SCREEN_RAM_SIZE: usize = 4 * 1024; constant PRG_RAM_SIZE (line 87) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_RAM_SIZE (line 88) | const CHR_RAM_SIZE: usize = 8 * 1024; constant PRG_MODE_MASK (line 90) | const PRG_MODE_MASK: u8 = 0x40; constant CHR_INVERSION_MASK (line 91) | const CHR_INVERSION_MASK: u8 = 0x80; method new (line 94) | pub fn new( method load (line 131) | pub fn load( method bank_register (line 149) | pub const fn bank_register(&self, index: usize) -> u8 { method set_revision (line 153) | pub const fn set_revision(&mut self, rev: Revision) { method apply_prg_write_masks (line 158) | const fn apply_prg_write_masks(&self, addr: &mut u16, val: &mut u8) { method update_prg_banks (line 171) | pub fn update_prg_banks(&mut self) { method set_chr_banks (line 187) | pub fn set_chr_banks(&mut self, f: impl Fn(&mut Banks, &mut [u8])) { method update_chr_banks (line 191) | pub fn update_chr_banks(&mut self) { method update_banks (line 235) | pub fn update_banks(&mut self) { method is_a12_rising_edge (line 240) | const fn is_a12_rising_edge(&mut self, addr: u16) -> bool { method chr_read (line 273) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 280) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 296) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 306) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 321) | fn prg_write(&mut self, mut addr: u16, mut val: u8) { method ppu_read (line 410) | fn ppu_read(&mut self, addr: u16) { method irq_pending (line 434) | fn irq_pending(&self) -> bool { method mirroring (line 440) | fn mirroring(&self) -> Mirroring { method reset (line 446) | fn reset(&mut self, _kind: ResetKind) { method clock (line 454) | fn clock(&mut self) { method save (line 461) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 466) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { FILE: tetanes-core/src/mapper/m005_exrom.rs type PrgMode (line 28) | pub enum PrgMode { type ChrMode (line 38) | pub enum ChrMode { type ChrBank (line 48) | pub enum ChrBank { type ExRamMode (line 66) | pub struct ExRamMode { method new (line 80) | pub const fn new() -> Self { method set (line 89) | pub const fn set(&mut self, val: u8) { method default (line 74) | fn default() -> Self { type Nametable (line 105) | pub enum Nametable { type NametableMapping (line 115) | pub struct NametableMapping { method new (line 127) | pub const fn new() -> Self { method set (line 134) | pub fn set(&mut self, val: u8) { method default (line 121) | fn default() -> Self { type Fill (line 154) | pub struct Fill { method new (line 166) | pub const fn new() -> Self { method default (line 160) | fn default() -> Self { type Side (line 177) | pub enum Side { type VSplit (line 185) | pub struct VSplit { method new (line 202) | pub const fn new() -> Self { method default (line 196) | fn default() -> Self { type Regs (line 218) | pub struct Regs { method new (line 244) | pub const fn new() -> Self { method default (line 238) | fn default() -> Self { type IrqState (line 269) | pub struct IrqState { type PpuStatus (line 279) | pub struct PpuStatus { type Exrom (line 291) | pub struct Exrom { constant PRG_WINDOW (line 315) | const PRG_WINDOW: usize = 0x2000; constant PRG_RAM_SIZE (line 316) | const PRG_RAM_SIZE: usize = 0x10000; constant EXRAM_SIZE (line 317) | const EXRAM_SIZE: usize = 0x0400; constant CHR_WINDOW (line 318) | const CHR_WINDOW: usize = 0x0400; constant ROM_SELECT_MASK (line 320) | const ROM_SELECT_MASK: usize = 0x80; constant BANK_MASK (line 321) | const BANK_MASK: usize = 0x7F; constant SPR_FETCH_START (line 323) | const SPR_FETCH_START: u32 = 64; constant SPR_FETCH_END (line 324) | const SPR_FETCH_END: u32 = 81; constant ATTR_MIRROR (line 328) | const ATTR_MIRROR: [u8; 4] = [0x00, 0x55, 0xAA, 0xFF]; method load (line 360) | pub fn load( method update_prg_banks (line 418) | pub fn update_prg_banks(&mut self) { method set_prg_bank_range (line 445) | pub fn set_prg_bank_range(&mut self, start: usize, end: usize, bank: u... method rom_select (line 455) | pub fn rom_select(&self, addr: u16) -> bool { method update_chr_banks (line 504) | pub fn update_chr_banks(&mut self, chr_bank: ChrBank) { method read_ex_ram (line 536) | pub fn read_ex_ram(&self, addr: u16) -> u8 { method write_ex_ram (line 540) | pub fn write_ex_ram(&mut self, addr: u16, val: u8) { method inc_fetch_count (line 544) | pub const fn inc_fetch_count(&mut self) { method fetch_count (line 548) | pub const fn fetch_count(&self) -> u32 { method sprite8x16 (line 552) | pub const fn sprite8x16(&self) -> bool { method spr_fetch (line 556) | pub fn spr_fetch(&self) -> bool { method nametable_select (line 560) | pub const fn nametable_select(&self, addr: u16) -> Nametable { method fmt (line 1129) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method chr_read (line 614) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 676) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_read (line 734) | fn prg_read(&mut self, addr: u16) -> u8 { method prg_peek (line 758) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 819) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 835) | fn prg_write(&mut self, addr: u16, val: u8) { method ppu_write (line 1021) | fn ppu_write(&mut self, addr: u16, val: u8) { method irq_pending (line 1036) | fn irq_pending(&self) -> bool { method dma_pending (line 1041) | fn dma_pending(&self) -> bool { method clear_dma_pending (line 1046) | fn clear_dma_pending(&mut self) { method mirroring (line 1052) | fn mirroring(&self) -> Mirroring { method reset (line 1058) | fn reset(&mut self, _kind: ResetKind) { method clock (line 1065) | fn clock(&mut self) { method region (line 1097) | fn region(&self) -> NesRegion { method set_region (line 1101) | fn set_region(&mut self, region: NesRegion) { method save (line 1108) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 1113) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { method output (line 1119) | fn output(&self) -> f32 { FILE: tetanes-core/src/mapper/m007_axrom.rs type Axrom (line 17) | pub struct Axrom { constant PRG_ROM_WINDOW (line 26) | const PRG_ROM_WINDOW: usize = 32 * 1024; constant CHR_RAM_SIZE (line 27) | const CHR_RAM_SIZE: usize = 8 * 1024; constant SINGLE_SCREEN_B (line 28) | const SINGLE_SCREEN_B: u8 = 0b10000; method load (line 31) | pub fn load( method chr_peek (line 55) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 65) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 74) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 84) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 97) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m009_pxrom.rs type Pxrom (line 17) | pub struct Pxrom { constant PRG_WINDOW (line 39) | const PRG_WINDOW: usize = 8 * 1024; constant CHR_ROM_WINDOW (line 40) | const CHR_ROM_WINDOW: usize = 4 * 1024; constant PRG_RAM_SIZE (line 41) | const PRG_RAM_SIZE: usize = 8 * 1024; constant MIRRORING_MASK (line 43) | const MIRRORING_MASK: u8 = 0x01; method load (line 46) | pub fn load( method update_banks (line 71) | pub fn update_banks(&mut self) { method chr_read (line 88) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 104) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 114) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 124) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 144) | fn mirroring(&self) -> Mirroring { method reset (line 150) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/mapper/m010_fxrom.rs type Fxrom (line 19) | pub struct Fxrom { constant PRG_WINDOW (line 41) | const PRG_WINDOW: usize = 16 * 1024; constant CHR_ROM_WINDOW (line 42) | const CHR_ROM_WINDOW: usize = 4 * 1024; constant PRG_RAM_SIZE (line 43) | const PRG_RAM_SIZE: usize = 8 * 1024; constant MIRRORING_MASK (line 45) | const MIRRORING_MASK: u8 = 0x01; method load (line 48) | pub fn load( method update_banks (line 70) | pub fn update_banks(&mut self) { method chr_read (line 87) | fn chr_read(&mut self, addr: u16, ciram: &CIRam) -> u8 { method chr_peek (line 103) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 113) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 123) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 145) | fn mirroring(&self) -> Mirroring { method reset (line 151) | fn reset(&mut self, _kind: ResetKind) { method save (line 160) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 165) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { FILE: tetanes-core/src/mapper/m011_color_dreams.rs type ColorDreams (line 17) | pub struct ColorDreams { constant PRG_WINDOW (line 27) | const PRG_WINDOW: usize = 32 * 1024; constant CHR_ROM_WINDOW (line 28) | const CHR_ROM_WINDOW: usize = 8 * 1024; constant CHR_BANK_MASK (line 30) | const CHR_BANK_MASK: u8 = 0b1111_0000; constant PRG_BANK_MASK (line 31) | const PRG_BANK_MASK: u8 = 0b0000_0011; method load (line 34) | pub fn load( method chr_peek (line 59) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 69) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 78) | fn prg_write(&mut self, addr: u16, mut val: u8) { method mirroring (line 95) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m018_jalecoss88006.rs type PageBit (line 17) | enum PageBit { method page (line 23) | const fn page(&self, page: usize, val: u8) -> usize { method from (line 33) | fn from(addr: u16) -> Self { type Regs (line 45) | pub struct Regs { type JalecoSs88006 (line 55) | pub struct JalecoSs88006 { constant PRG_WINDOW (line 68) | const PRG_WINDOW: usize = 8 * 1024; constant PRG_RAM_SIZE (line 69) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_WINDOW (line 70) | const CHR_WINDOW: usize = 1024; constant IRQ_MASKS (line 72) | const IRQ_MASKS: [u16; 4] = [0xFFFF, 0x0FFF, 0x00FF, 0x000F]; method load (line 75) | pub fn load( method update_prg_bank (line 101) | fn update_prg_bank(&mut self, bank: usize, val: u8, bits: PageBit) { method update_chr_bank (line 106) | fn update_chr_bank(&mut self, bank: usize, val: u8, bits: PageBit) { method chr_peek (line 130) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 140) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 151) | fn prg_write(&mut self, addr: u16, val: u8) { method irq_pending (line 220) | fn irq_pending(&self) -> bool { method mirroring (line 226) | fn mirroring(&self) -> Mirroring { method reset (line 232) | fn reset(&mut self, kind: ResetKind) { method clock (line 241) | fn clock(&mut self) { FILE: tetanes-core/src/mapper/m019_namco163.rs type Board (line 18) | pub enum Board { type Regs (line 29) | pub struct Regs { type Namco163 (line 40) | pub struct Namco163 { constant PRG_WINDOW (line 59) | const PRG_WINDOW: usize = 8 * 1024; constant PRG_RAM_SIZE (line 60) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_WINDOW (line 61) | const CHR_WINDOW: usize = 1024; method load (line 64) | pub fn load( method update_prg_ram_access (line 115) | fn update_prg_ram_access(&mut self) { method maybe_set_board (line 142) | fn maybe_set_board(&mut self, board: Board) { method chr_peek (line 187) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_read (line 204) | fn prg_read(&mut self, addr: u16) -> u8 { method prg_peek (line 213) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 234) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 245) | fn prg_write(&mut self, addr: u16, val: u8) { method irq_pending (line 338) | fn irq_pending(&self) -> bool { method mirroring (line 344) | fn mirroring(&self) -> Mirroring { method reset (line 350) | fn reset(&mut self, kind: ResetKind) { method clock (line 366) | fn clock(&mut self) { method save (line 382) | fn save(&self, path: impl AsRef) -> fs::Result<()> { method load (line 386) | fn load(&mut self, path: impl AsRef) -> fs::Result<()> { method output (line 397) | fn output(&self) -> f32 { type Audio (line 404) | pub struct Audio { constant CHANNEL_COUNT (line 424) | const CHANNEL_COUNT: usize = 8; constant REG_FREQ_LOW (line 426) | const REG_FREQ_LOW: usize = 0x00; constant REG_FREQ_MID (line 427) | const REG_FREQ_MID: usize = 0x02; constant REG_FREQ_HIGH (line 428) | const REG_FREQ_HIGH: usize = 0x04; constant REG_WAVE_LEN (line 429) | const REG_WAVE_LEN: usize = 0x04; constant REG_WAVE_ADDR (line 430) | const REG_WAVE_ADDR: usize = 0x06; constant REG_VOLUME (line 431) | const REG_VOLUME: usize = 0x07; method new (line 433) | pub fn new() -> Self { method read_register (line 448) | pub fn read_register(&mut self, addr: u16) -> u8 { method peek_register (line 458) | pub fn peek_register(&self, addr: u16) -> u8 { method write_register (line 466) | pub fn write_register(&mut self, addr: u16, val: u8) { method output (line 485) | pub const fn output(&self) -> f32 { method update_output (line 493) | fn update_output(&mut self) { method base_addr (line 505) | const fn base_addr(&self) -> usize { method phase (line 511) | const fn phase(&self) -> u32 { method wave_length (line 517) | fn wave_length(&self) -> u32 { method wave_address (line 524) | fn wave_address(&self) -> u32 { method volume (line 532) | fn volume(&self) -> u8 { method set_phase (line 538) | const fn set_phase(&mut self, phase: u32) { method frequency (line 544) | fn frequency(&self) -> u32 { method update_channel (line 553) | fn update_channel(&mut self) { method channel_count (line 576) | fn channel_count(&self) -> u8 { method default (line 418) | fn default() -> Self { method clock (line 582) | fn clock(&mut self) { FILE: tetanes-core/src/mapper/m024_m026_vrc6.rs type Revision (line 18) | pub enum Revision { type Regs (line 29) | pub struct Regs { type Vrc6 (line 38) | pub struct Vrc6 { constant PRG_RAM_SIZE (line 54) | const PRG_RAM_SIZE: usize = 8 * 1024; constant PRG_WINDOW (line 55) | const PRG_WINDOW: usize = 8 * 1024; constant CHR_WINDOW (line 56) | const CHR_WINDOW: usize = 1024; method load (line 59) | pub fn load( method prg_ram_enabled (line 89) | pub const fn prg_ram_enabled(&self) -> bool { method set_nametables (line 93) | pub fn set_nametables(&mut self, nametables: &[usize]) { method set_mirroring (line 99) | pub fn set_mirroring(&mut self, mirroring: Mirroring) { method set_nametable_page (line 110) | pub const fn set_nametable_page(&mut self, bank: usize, page: usize) { method update_chr_banks (line 114) | pub fn update_chr_banks(&mut self) { method chr_peek (line 256) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 275) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 286) | fn prg_write(&mut self, mut addr: u16, val: u8) { method irq_pending (line 346) | fn irq_pending(&self) -> bool { method mirroring (line 352) | fn mirroring(&self) -> Mirroring { method reset (line 358) | fn reset(&mut self, kind: ResetKind) { method clock (line 365) | fn clock(&mut self) { method output (line 375) | fn output(&self) -> f32 { type Audio (line 382) | pub struct Audio { method new (line 397) | const fn new() -> Self { method output (line 408) | fn output(&self) -> f32 { method write_register (line 413) | fn write_register(&mut self, addr: u16, val: u8) { method default (line 391) | fn default() -> Self { method clock (line 438) | fn clock(&mut self) { method reset (line 450) | fn reset(&mut self, _kind: ResetKind) { type Pulse (line 457) | pub struct Pulse { method new (line 475) | const fn new() -> Self { method write_register (line 488) | fn write_register(&mut self, addr: u16, val: u8) { method set_freq_shift (line 507) | const fn set_freq_shift(&mut self, val: u8) { method volume (line 511) | fn volume(&self) -> f32 { method default (line 469) | fn default() -> Self { method clock (line 521) | fn clock(&mut self) { type Saw (line 534) | pub struct Saw { method new (line 551) | const fn new() -> Self { method write_register (line 563) | fn write_register(&mut self, addr: u16, val: u8) { method set_freq_shift (line 581) | const fn set_freq_shift(&mut self, val: u8) { method volume (line 585) | fn volume(&self) -> f32 { method default (line 545) | fn default() -> Self { method clock (line 595) | fn clock(&mut self) { FILE: tetanes-core/src/mapper/m034_bnrom.rs type Bnrom (line 17) | pub struct Bnrom { constant PRG_ROM_WINDOW (line 26) | const PRG_ROM_WINDOW: usize = 32 * 1024; constant CHR_RAM_SIZE (line 27) | const CHR_RAM_SIZE: usize = 8 * 1024; method load (line 30) | pub fn load( method chr_peek (line 54) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 64) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 73) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 83) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 91) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m034_nina001.rs type Nina001 (line 17) | pub struct Nina001 { constant PRG_ROM_WINDOW (line 27) | const PRG_ROM_WINDOW: usize = 32 * 1024; constant PRG_RAM_SIZE (line 28) | const PRG_RAM_SIZE: usize = 8 * 1024; constant CHR_ROM_WINDOW (line 29) | const CHR_ROM_WINDOW: usize = 4 * 1024; method load (line 31) | pub fn load( method chr_peek (line 59) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 69) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 79) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 89) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 103) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m066_gxrom.rs type Gxrom (line 17) | pub struct Gxrom { constant PRG_ROM_WINDOW (line 26) | const PRG_ROM_WINDOW: usize = 32 * 1024; constant CHR_WINDOW (line 27) | const CHR_WINDOW: usize = 8 * 1024; constant CHR_BANK_MASK (line 29) | const CHR_BANK_MASK: u8 = 0x0F; constant PRG_BANK_MASK (line 30) | const PRG_BANK_MASK: u8 = 0x30; method load (line 32) | pub fn load( method chr_peek (line 56) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 66) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 75) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 85) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m069_sunsoft_fme7.rs type Regs (line 18) | pub struct Regs { type SunsoftFme7 (line 31) | pub struct SunsoftFme7 { constant PRG_WINDOW (line 44) | const PRG_WINDOW: usize = 8 * 1024; constant PRG_RAM_SIZE (line 45) | const PRG_RAM_SIZE: usize = 32 * 1024; constant CHR_WINDOW (line 46) | const CHR_WINDOW: usize = 1024; method load (line 48) | pub fn load( method chr_peek (line 93) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 103) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 118) | fn prg_write(&mut self, addr: u16, val: u8) { method irq_pending (line 160) | fn irq_pending(&self) -> bool { method mirroring (line 166) | fn mirroring(&self) -> Mirroring { method clock (line 174) | fn clock(&mut self) { method output (line 189) | fn output(&self) -> f32 { type Audio (line 196) | pub struct Audio { method new (line 213) | pub fn new() -> Self { method output (line 235) | pub fn output(&self) -> f32 { method period (line 242) | pub fn period(&self, channel: usize) -> u16 { method envelope_period (line 249) | pub fn envelope_period(&self) -> u16 { method noise_period (line 255) | pub const fn noise_period(&self) -> u8 { method volume (line 261) | pub const fn volume(&self, channel: usize) -> u8 { method envelope_enabled (line 267) | pub const fn envelope_enabled(&self, channel: usize) -> bool { method square_enabled (line 273) | pub const fn square_enabled(&self, channel: usize) -> bool { method noise_enabled (line 279) | pub const fn noise_enabled(&self, channel: usize) -> bool { method write_register (line 283) | const fn write_register(&mut self, addr: u16, val: u8) { method default (line 207) | fn default() -> Self { method clock (line 295) | fn clock(&mut self) { FILE: tetanes-core/src/mapper/m071_bf909x.rs type Revision (line 17) | pub enum Revision { type Bf909x (line 26) | pub struct Bf909x { constant PRG_ROM_WINDOW (line 36) | const PRG_ROM_WINDOW: usize = 16 * 1024; constant CHR_RAM_SIZE (line 37) | const CHR_RAM_SIZE: usize = 8 * 1024; constant SINGLE_SCREEN_A (line 39) | const SINGLE_SCREEN_A: u8 = 0x10; method load (line 41) | pub fn load( method set_revision (line 64) | pub const fn set_revision(&mut self, rev: Revision) { method chr_peek (line 76) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 86) | fn prg_peek(&self, addr: u16) -> u8 { method chr_write (line 95) | fn chr_write(&mut self, addr: u16, val: u8, ciram: &mut CIRam) { method prg_write (line 105) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 125) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/m079_nina003_006.rs type Nina003006 (line 17) | pub struct Nina003006 { constant PRG_ROM_WINDOW (line 27) | const PRG_ROM_WINDOW: usize = 32 * 1024; constant CHR_ROM_WINDOW (line 28) | const CHR_ROM_WINDOW: usize = 8 * 1024; method load (line 30) | pub fn load( method chr_peek (line 55) | fn chr_peek(&self, addr: u16, ciram: &CIRam) -> u8 { method prg_peek (line 65) | fn prg_peek(&self, addr: u16) -> u8 { method prg_write (line 74) | fn prg_write(&mut self, addr: u16, val: u8) { method mirroring (line 94) | fn mirroring(&self) -> Mirroring { FILE: tetanes-core/src/mapper/vrc_irq.rs type VrcIrq (line 10) | pub struct VrcIrq { method write_reload (line 21) | pub const fn write_reload(&mut self, val: u8) { method write_control (line 25) | pub const fn write_control(&mut self, val: u8) { method acknowledge (line 38) | pub const fn acknowledge(&mut self) { method clock (line 46) | fn clock(&mut self) { method reset (line 63) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/mem.rs type Memory (line 21) | pub struct Memory { function empty (line 27) | pub fn empty() -> Self { function new (line 34) | pub fn new(mut size: usize) -> Self { function with_ram_state (line 44) | pub fn with_ram_state(size: usize, state: RamState) -> Self { function truncate (line 51) | pub fn truncate(&mut self, size: usize) { function new_const (line 60) | pub fn new_const() -> Self function with_ram_state_const (line 70) | pub fn with_ram_state_const(state: RamState) -> Self { function fmt (line 78) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { function fmt (line 86) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type Target (line 94) | type Target = D; method deref (line 95) | fn deref(&self) -> &Self::Target { method deref_mut (line 101) | fn deref_mut(&mut self) -> &mut Self::Target { function as_ref (line 107) | fn as_ref(&self) -> &[T] { function as_mut (line 113) | fn as_mut(&mut self) -> &mut [T] { type Output (line 119) | type Output = T; function index (line 122) | fn index(&self, index: usize) -> &Self::Output { function index_mut (line 129) | fn index_mut(&mut self, index: usize) -> &mut Self::Output { type Output (line 135) | type Output = [T]; function index (line 138) | fn index(&self, range: Range) -> &Self::Output { function index_mut (line 146) | fn index_mut(&mut self, range: Range) -> &mut Self::Output { type Output (line 153) | type Output = [T]; function index (line 156) | fn index(&self, range: RangeInclusive) -> &Self::Output { function index_mut (line 165) | fn index_mut(&mut self, range: RangeInclusive) -> &mut Self::Outp... type ConstArray (line 174) | pub struct ConstArray { function new (line 180) | pub fn new() -> Self function filled (line 188) | pub const fn filled(val: T) -> Self function fmt (line 197) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method default (line 205) | fn default() -> Self { function from (line 213) | fn from(data: [T; N]) -> Self { type Target (line 219) | type Target = [T; N]; method deref (line 222) | fn deref(&self) -> &Self::Target { method deref_mut (line 229) | fn deref_mut(&mut self) -> &mut Self::Target { function as_ref (line 236) | fn as_ref(&self) -> &[T] { function as_mut (line 243) | fn as_mut(&mut self) -> &mut [T] { type Output (line 249) | type Output = T; function index (line 252) | fn index(&self, index: usize) -> &Self::Output { function index_mut (line 259) | fn index_mut(&mut self, index: usize) -> &mut Self::Output { type Output (line 265) | type Output = [T]; function index (line 268) | fn index(&self, range: Range) -> &Self::Output { function index_mut (line 275) | fn index_mut(&mut self, range: Range) -> &mut Self::Output { type Output (line 281) | type Output = [T]; function index (line 284) | fn index(&self, range: RangeInclusive) -> &Self::Output { function index_mut (line 292) | fn index_mut(&mut self, range: RangeInclusive) -> &mut Self::Outp... method serialize (line 299) | fn serialize(&self, serializer: S) -> Result function deserialize (line 315) | fn deserialize(deserializer: D) -> Result type Read (line 354) | pub trait Read { method read (line 357) | fn read(&mut self, addr: u16) -> u8 { method peek (line 362) | fn peek(&self, addr: u16) -> u8; type Write (line 366) | pub trait Write { method write (line 368) | fn write(&mut self, addr: u16, val: u8); type RamState (line 374) | pub enum RamState { method as_slice (line 383) | pub const fn as_slice() -> &'static [Self] { method as_str (line 389) | pub const fn as_str(&self) -> &'static str { method fill (line 398) | pub fn fill(&self, data: &mut [u8]) { method from (line 410) | fn from(value: usize) -> Self { method as_ref (line 420) | fn as_ref(&self) -> &str { method fmt (line 426) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Err (line 437) | type Err = &'static str; method from_str (line 438) | fn from_str(s: &str) -> Result { type BankAccess (line 451) | pub enum BankAccess { type Banks (line 460) | pub struct Banks { method new (line 483) | pub fn new( method set (line 521) | pub fn set(&mut self, bank: usize, page: usize) { method set_range (line 533) | pub fn set_range(&mut self, start: usize, end: usize, page: usize) { method set_access (line 553) | pub fn set_access(&mut self, bank: usize, access: BankAccess) { method set_access_range (line 558) | pub fn set_access_range(&mut self, start: usize, end: usize, access: B... method readable (line 565) | pub const fn readable(&self, addr: u16) -> bool { method writable (line 573) | pub const fn writable(&self, addr: u16) -> bool { method last (line 582) | pub const fn last(&self) -> usize { method banks_len (line 588) | pub const fn banks_len(&self) -> usize { method get (line 594) | pub const fn get(&self, addr: u16) -> usize { method translate (line 600) | pub const fn translate(&self, addr: u16) -> usize { method page (line 606) | pub const fn page(&self, bank: usize) -> usize { method page_offset (line 612) | pub const fn page_offset(&self, bank: usize) -> usize { method page_count (line 618) | pub const fn page_count(&self) -> usize { method fmt (line 624) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<... type Error (line 473) | pub enum Error { function get_bank (line 641) | fn get_bank() { function bank_translate (line 660) | fn bank_translate() { FILE: tetanes-core/src/ppu.rs type Mirroring (line 34) | pub enum Mirroring { type PaletteRam (line 47) | pub struct PaletteRam(ConstArray); method mirror (line 52) | const fn mirror(addr: u16) -> usize { method peek (line 63) | fn peek(&self, addr: u16) -> u8 { method write (line 70) | fn write(&mut self, addr: u16, val: u8) { type CIRam (line 79) | pub struct CIRam(Box>); method mirror (line 100) | pub const fn mirror(addr: u16, mirroring: Mirroring) -> usize { method read (line 106) | pub fn read(&mut self, addr: u16, mirroring: Mirroring) -> u8 { method peek (line 111) | pub fn peek(&self, addr: u16, mirroring: Mirroring) -> u8 { method write (line 116) | pub fn write(&mut self, addr: u16, val: u8, mirroring: Mirroring) { type Output (line 122) | type Output = u8; method index (line 125) | fn index(&self, index: usize) -> &Self::Output { method index_mut (line 132) | fn index_mut(&mut self, index: usize) -> &mut Self::Output { type PpuAddr (line 137) | pub trait PpuAddr { method is_attr (line 139) | fn is_attr(&self) -> bool; method is_palette (line 141) | fn is_palette(&self) -> bool; method is_attr (line 146) | fn is_attr(&self) -> bool { method is_palette (line 151) | fn is_palette(&self) -> bool { type Ppu (line 162) | pub struct Ppu { constant NTSC_PALETTE (line 385) | pub const NTSC_PALETTE: &'static [u8] = include_bytes!("../ntscpalette... constant SYSTEM_PALETTE (line 390) | pub const SYSTEM_PALETTE: [(u8,u8,u8); 64] = [ method new (line 414) | pub fn new(region: NesRegion) -> Self { method chr_read (line 487) | fn chr_read(&mut self, addr: u16) -> u8 { method chr_peek (line 493) | fn chr_peek(&self, addr: u16) -> u8 { method chr_write (line 499) | fn chr_write(&mut self, addr: u16, val: u8) { method bus_read (line 505) | fn bus_read(&mut self, addr: u16) -> u8 { method bus_peek (line 518) | fn bus_peek(&self, addr: u16) -> u8 { method bus_write (line 531) | fn bus_write(&mut self, addr: u16, val: u8) { method frame_buffer (line 543) | pub fn frame_buffer(&self) -> &[u16] { method frame_number (line 550) | pub const fn frame_number(&self) -> u32 { method pixel_brightness (line 557) | pub fn pixel_brightness(&self, x: u16, y: u16) -> u32 { method load_mapper (line 563) | pub fn load_mapper(&mut self, mapper: Mapper) { method mirroring (line 569) | pub fn mirroring(&self) -> Mirroring { method snapshot (line 574) | pub fn snapshot(&self) -> Self { method load_nametables (line 612) | pub fn load_nametables(&self, nametables: &mut [u8]) { method load_pattern_tables (line 664) | pub fn load_pattern_tables(&self, pattern_tables: &mut [u8]) { method load_oam (line 688) | pub fn load_oam( method load_palettes (line 781) | pub fn load_palettes(&self, palettes: &mut [u8], colors: &mut [u8]) { method set_pixel (line 792) | fn set_pixel(color: u16, x: u16, y: u16, width: u16, pixels: &mut [u8]) { method increment_vram_addr (line 805) | const fn increment_vram_addr(&mut self) { method start_vblank (line 816) | fn start_vblank(&mut self) { method stop_vblank (line 828) | fn stop_vblank(&mut self) { method fetch_bg_nt_byte (line 845) | fn fetch_bg_nt_byte(&mut self) { method fetch_bg_attr_byte (line 862) | fn fetch_bg_attr_byte(&mut self) { method bg_fetch_cycle (line 873) | fn bg_fetch_cycle(&mut self) { method oam_eval_cycle (line 894) | fn oam_eval_cycle(&mut self) { method spr_eval_cycle (line 985) | fn spr_eval_cycle(&mut self) { method load_sprites (line 1016) | fn load_sprites(&mut self) { method spr_fetch_cycle (line 1082) | fn spr_fetch_cycle(&mut self) { method pixel_palette (line 1099) | fn pixel_palette(&mut self) -> u8 { method headless_sprite_zero_hit (line 1157) | fn headless_sprite_zero_hit(&mut self) { method render_pixel (line 1203) | fn render_pixel(&mut self) { method clock_to (line 1221) | pub fn clock_to(&mut self, clock: u32) { method write_ctrl (line 1252) | pub fn write_ctrl(&mut self, val: u8) { method write_mask (line 1288) | pub fn write_mask(&mut self, val: u8) { method read_status (line 1304) | pub fn read_status(&mut self) -> u8 { method peek_status (line 1338) | pub const fn peek_status(&self) -> u8 { method write_oamaddr (line 1349) | pub const fn write_oamaddr(&mut self, val: u8) { method read_oamdata (line 1360) | pub fn read_oamdata(&mut self) -> u8 { method peek_oamdata (line 1372) | pub fn peek_oamdata(&self) -> u8 { method write_oamdata (line 1389) | pub fn write_oamdata(&mut self, mut val: u8) { method write_scroll (line 1429) | pub fn write_scroll(&mut self, val: u8) { method write_addr (line 1440) | pub fn write_addr(&mut self, val: u8) { method read_data (line 1450) | pub fn read_data(&mut self) -> u8 { method peek_data (line 1484) | pub fn peek_data(&self) -> u8 { method write_data (line 1496) | pub fn write_data(&mut self, val: u8) { method default (line 291) | fn default() -> Self { constant NAMETABLE_START (line 299) | pub const NAMETABLE_START: u16 = 0x2000; constant ATTR_OFFSET (line 300) | pub const ATTR_OFFSET: u16 = 0x03C0; constant PALETTE_START (line 302) | pub const PALETTE_START: u16 = 0x3F00; constant PALETTE_END (line 303) | pub const PALETTE_END: u16 = 0x3F20; constant WIDTH (line 309) | pub const WIDTH: u16 = 256; constant HEIGHT (line 310) | pub const HEIGHT: u16 = 240; constant FRAME (line 311) | pub const FRAME: usize = (WIDTH * HEIGHT) as usize; constant NAMETABLE (line 313) | pub const NAMETABLE: u16 = 0x0400; constant OAM (line 314) | pub const OAM: usize = 256; constant SECONDARY_OAM (line 315) | pub const SECONDARY_OAM: usize = 32; constant VRAM (line 317) | pub const VRAM: usize = 0x0800; constant PALETTE (line 318) | pub const PALETTE: usize = 32; constant START (line 327) | pub const START: u16 = 0; constant ODD_SKIP (line 328) | pub const ODD_SKIP: u16 = 339; constant END (line 329) | pub const END: u16 = 340; constant VISIBLE_START (line 331) | pub const VISIBLE_START: u16 = 1; constant VISIBLE_END (line 332) | pub const VISIBLE_END: u16 = 256; constant VBLANK (line 334) | pub const VBLANK: u16 = VISIBLE_START; constant OAM_CLEAR_START (line 336) | pub const OAM_CLEAR_START: u16 = 1; constant OAM_CLEAR_END (line 337) | pub const OAM_CLEAR_END: u16 = 64; constant SPR_EVAL_START (line 339) | pub const SPR_EVAL_START: u16 = 65; constant SPR_EVAL_START1 (line 340) | pub const SPR_EVAL_START1: u16 = 66; constant SPR_EVAL_END0 (line 341) | pub const SPR_EVAL_END0: u16 = 255; constant SPR_EVAL_END (line 342) | pub const SPR_EVAL_END: u16 = 256; constant SPR_FETCH_START (line 343) | pub const SPR_FETCH_START: u16 = 257; constant SPR_FETCH_END (line 344) | pub const SPR_FETCH_END: u16 = 320; constant SPR_FETCH_RANGE (line 345) | pub const SPR_FETCH_RANGE: RangeInclusive = SPR_FETCH_START..=SPR_F... constant BG_PREFETCH_START (line 347) | pub const BG_PREFETCH_START: u16 = 321; constant BG_PREFETCH_END (line 348) | pub const BG_PREFETCH_END: u16 = 336; constant BG_PREFETCH_RANGE (line 349) | pub const BG_PREFETCH_RANGE: RangeInclusive = BG_PREFETCH_START..=B... constant BG_DUMMY_START (line 351) | pub const BG_DUMMY_START: u16 = 337; constant BG_DUMMY_END (line 352) | pub const BG_DUMMY_END: u16 = END; constant INC_Y (line 354) | pub const INC_Y: u16 = 256; constant COPY_Y_START (line 355) | pub const COPY_Y_START: u16 = 280; constant COPY_Y_END (line 356) | pub const COPY_Y_END: u16 = 304; constant COPY_Y_RANGE (line 357) | pub const COPY_Y_RANGE: RangeInclusive = COPY_Y_START..=COPY_Y_END; constant DIVIDER_NTSC (line 360) | pub const DIVIDER_NTSC: u8 = 4; constant DIVIDER_PAL (line 361) | pub const DIVIDER_PAL: u8 = 5; constant DIVIDER_DENDY (line 362) | pub const DIVIDER_DENDY: u8 = DIVIDER_PAL; constant START (line 369) | pub const START: u16 = 0; constant VISIBLE_START (line 371) | pub const VISIBLE_START: u16 = START; constant VISIBLE_END (line 372) | pub const VISIBLE_END: u16 = 239; constant POSTRENDER (line 374) | pub const POSTRENDER: u16 = 240; constant PRERENDER_NTSC (line 375) | pub const PRERENDER_NTSC: u16 = 261; constant PRERENDER_PAL (line 376) | pub const PRERENDER_PAL: u16 = 311; constant PRERENDER_DENDY (line 377) | pub const PRERENDER_DENDY: u16 = PRERENDER_PAL; constant VBLANK_NTSC (line 379) | pub const VBLANK_NTSC: u16 = 241; constant VBLANK_PAL (line 380) | pub const VBLANK_PAL: u16 = VBLANK_NTSC; constant VBLANK_DENDY (line 381) | pub const VBLANK_DENDY: u16 = 291; method clock (line 1510) | fn clock(&mut self) { method region (line 1651) | fn region(&self) -> NesRegion { method set_region (line 1655) | fn set_region(&mut self, region: NesRegion) { method reset (line 1683) | fn reset(&mut self, kind: ResetKind) { function ciram_mirror_horizontal (line 1735) | fn ciram_mirror_horizontal() { function ciram_mirror_vertical (line 1751) | fn ciram_mirror_vertical() { function ciram_mirror_single_screen_a (line 1767) | fn ciram_mirror_single_screen_a() { function ciram_mirror_single_screen_b (line 1783) | fn ciram_mirror_single_screen_b() { function vram_writes (line 1799) | fn vram_writes() { function vram_reads (line 1812) | fn vram_reads() { function vram_read_pagecross (line 1829) | fn vram_read_pagecross() { function vram_read_vertical_increment (line 1846) | fn vram_read_vertical_increment() { function vram_horizontal_mirror (line 1868) | fn vram_horizontal_mirror() { function vram_vertical_mirror (line 1905) | fn vram_vertical_mirror() { function read_status_resets_latch (line 1957) | fn read_status_resets_latch() { function vram_mirroring (line 1982) | fn vram_mirroring() { function read_status_resets_vblank (line 1999) | fn read_status_resets_vblank() { function sprite_zero_hit_headless_visible_cycle (line 2009) | fn sprite_zero_hit_headless_visible_cycle() { function oam_read_write (line 2035) | fn oam_read_write() { FILE: tetanes-core/src/ppu/ctrl.rs type Ctrl (line 14) | pub struct Ctrl { method new (line 54) | pub fn new() -> Self { method write (line 60) | pub const fn write(&mut self, val: u8) { method reset (line 78) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/ppu/frame.rs type Buffer (line 16) | pub struct Buffer(Box>); method fmt (line 19) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method default (line 25) | fn default() -> Self { type Target (line 31) | type Target = [u16; ppu::size::FRAME]; method deref (line 32) | fn deref(&self) -> &Self::Target { method deref_mut (line 38) | fn deref_mut(&mut self) -> &mut Self::Target { type Frame (line 47) | pub struct Frame { method new (line 60) | pub fn new() -> Self { method increment (line 68) | pub const fn increment(&mut self) { method pixel (line 74) | pub fn pixel(&self, x: u16, y: u16) -> u16 { method set_pixel (line 79) | pub fn set_pixel(&mut self, x: u16, y: u16, color: u16) { method pixel_brightness (line 84) | pub fn pixel_brightness(&self, x: u16, y: u16) -> u32 { method number (line 95) | pub const fn number(&self) -> u32 { method is_odd (line 100) | pub const fn is_odd(&self) -> bool { method buffer (line 106) | pub fn buffer(&self) -> &[u16; ppu::size::FRAME] { method default (line 54) | fn default() -> Self { method reset (line 112) | fn reset(&mut self, _kind: ResetKind) { FILE: tetanes-core/src/ppu/mask.rs type Mask (line 14) | pub struct Mask { method new (line 56) | pub fn new(region: NesRegion) -> Self { method write (line 66) | pub fn write(&mut self, val: u8) { method update_emphasis (line 81) | pub fn update_emphasis(&mut self) { method set_region (line 106) | pub fn set_region(&mut self, region: NesRegion) { method reset (line 114) | fn reset(&mut self, _kind: ResetKind) { method clock (line 120) | fn clock(&mut self) { FILE: tetanes-core/src/ppu/scroll.rs type Scroll (line 13) | pub struct Scroll { constant COARSE_X_MASK (line 32) | pub const COARSE_X_MASK: u16 = 0x001F; constant COARSE_Y_MASK (line 33) | pub const COARSE_Y_MASK: u16 = 0x03E0; constant NT_X_MASK (line 34) | pub const NT_X_MASK: u16 = 0x0400; constant NT_Y_MASK (line 35) | pub const NT_Y_MASK: u16 = 0x0800; constant FINE_Y_MASK (line 36) | pub const FINE_Y_MASK: u16 = 0x7000; constant X_MAX_COL (line 37) | const X_MAX_COL: u16 = 31; constant Y_MAX_COL (line 38) | const Y_MAX_COL: u16 = 29; constant Y_OVER_COL (line 39) | const Y_OVER_COL: u16 = 31; constant Y_INCREMENT (line 40) | const Y_INCREMENT: u16 = 0x1000; constant ATTR_START (line 42) | const ATTR_START: u16 = 0x23C0; constant ADDR_MIRROR (line 43) | const ADDR_MIRROR: u16 = 0x3FFF; method new (line 45) | pub const fn new() -> Self { method attr_addr (line 65) | pub const fn attr_addr(&self) -> u16 { method attr_shift (line 74) | pub const fn attr_shift(&self) -> u16 { method addr (line 80) | pub const fn addr(&self) -> u16 { method write (line 88) | pub fn write(&mut self, val: u8) { method write_addr (line 121) | pub fn write_addr(&mut self, val: u8) { method set_v (line 146) | pub const fn set_v(&mut self, val: u16) { method delayed_update (line 155) | pub const fn delayed_update(&mut self) -> bool { method increment (line 169) | pub const fn increment(&mut self, val: u16) { method copy_x (line 175) | pub const fn copy_x(&mut self) { method copy_y (line 185) | pub const fn copy_y(&mut self) { method increment_x (line 198) | pub const fn increment_x(&mut self) { method increment_y (line 213) | pub const fn increment_y(&mut self) { method reset_latch (line 236) | pub const fn reset_latch(&mut self) { method write_nametable_select (line 241) | pub fn write_nametable_select(&mut self, val: u8) { method reset (line 251) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/ppu/sprite.rs type Sprite (line 13) | pub struct Sprite { method new (line 25) | pub const fn new() -> Self { method fmt (line 46) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method default (line 40) | fn default() -> Self { FILE: tetanes-core/src/ppu/status.rs type Status (line 14) | pub struct Status { method new (line 56) | pub fn new() -> Self { method write (line 63) | pub const fn write(&mut self, val: u8) { method read (line 72) | pub const fn read(&self) -> u8 { method set_spr_overflow (line 77) | pub fn set_spr_overflow(&mut self, val: bool) { method set_spr_zero_hit (line 83) | pub fn set_spr_zero_hit(&mut self, val: bool) { method set_in_vblank (line 89) | pub fn set_in_vblank(&mut self, val: bool) { method reset_in_vblank (line 95) | pub fn reset_in_vblank(&mut self) { method reset (line 103) | fn reset(&mut self, kind: ResetKind) { FILE: tetanes-core/src/sys/fs/os.rs function writer_impl (line 10) | pub fn writer_impl(path: impl AsRef) -> Result { function reader_impl (line 23) | pub fn reader_impl(path: impl AsRef) -> Result { function clear_dir_impl (line 28) | pub fn clear_dir_impl(path: impl AsRef) -> Result<()> { function exists_impl (line 37) | pub fn exists_impl(path: impl AsRef) -> bool { FILE: tetanes-core/src/sys/fs/wasm.rs type StoreWriter (line 13) | pub struct StoreWriter { type StoreReader (line 18) | pub struct StoreReader { function local_storage (line 22) | pub fn local_storage() -> Result { method write (line 34) | fn write(&mut self, buf: &[u8]) -> io::Result { method flush (line 39) | fn flush(&mut self) -> io::Result<()> { method read (line 64) | fn read(&mut self, buf: &mut [u8]) -> io::Result { function writer_impl (line 69) | pub fn writer_impl(path: impl AsRef) -> Result { function reader_impl (line 77) | pub fn reader_impl(path: impl AsRef) -> Result { function clear_dir_impl (line 98) | pub fn clear_dir_impl(path: impl AsRef) -> Result<()> { function exists_impl (line 113) | pub fn exists_impl(path: impl AsRef) -> bool { FILE: tetanes-core/src/video.rs type ParseVideoFilterError (line 15) | pub struct ParseVideoFilterError; type VideoFilter (line 19) | pub enum VideoFilter { method as_slice (line 26) | pub const fn as_slice() -> &'static [Self] { method as_ref (line 32) | fn as_ref(&self) -> &str { type Error (line 41) | type Error = ParseVideoFilterError; method try_from (line 43) | fn try_from(value: usize) -> Result { type Frame (line 54) | pub struct Frame(Vec); constant SIZE (line 57) | pub const SIZE: usize = ppu::size::FRAME * 4; method new (line 60) | pub fn new() -> Self { method default (line 71) | fn default() -> Self { type Target (line 77) | type Target = Vec; method deref (line 78) | fn deref(&self) -> &Self::Target { method deref_mut (line 84) | fn deref_mut(&mut self) -> &mut Self::Target { type Video (line 91) | pub struct Video { method new (line 104) | pub fn new() -> Self { method with_filter (line 109) | pub fn with_filter(filter: VideoFilter) -> Self { method apply_filter (line 117) | pub fn apply_filter(&mut self, buffer: &[u16], frame_number: u32) -> &... method apply_filter_into (line 127) | pub fn apply_filter_into(&self, buffer: &[u16], frame_number: u32, out... method decode_buffer (line 135) | pub fn decode_buffer(buffer: &[u16], output: &mut [u8]) { method apply_ntsc_filter (line 152) | pub fn apply_ntsc_filter(buffer: &[u16], frame_number: u32, output: &m... method fmt (line 177) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method default (line 97) | fn default() -> Self { function generate_ntsc_palette (line 185) | fn generate_ntsc_palette() -> Vec { FILE: tetanes-utils/src/bin/generate_db.rs constant GAME_DB_TXT (line 18) | const GAME_DB_TXT: &str = "tetanes-core/game_database.txt"; constant GAME_DB (line 19) | const GAME_DB: &str = "tetanes-core/game_db.dat"; function main (line 21) | fn main() -> anyhow::Result<()> { function apply_corrections (line 77) | fn apply_corrections(game: &mut Game) { type Game (line 116) | pub struct Game { method new (line 130) | fn new>(path: P) -> anyhow::Result { type Opt (line 172) | struct Opt { FILE: tetanes-utils/src/bin/list_boards.rs function main (line 9) | fn main() -> anyhow::Result<()> { function get_mapper (line 42) | fn get_mapper>(path: P) -> anyhow::Result { type Opt (line 49) | struct Opt { FILE: tetanes/build.rs function main (line 1) | fn main() { FILE: tetanes/src/bin/build_artifacts.rs type Args (line 17) | pub struct Args { type Build (line 33) | struct Build { method new (line 80) | fn new(args: Args) -> anyhow::Result { method make (line 112) | fn make( method create_build_dir (line 126) | fn create_build_dir(&self, dir: impl AsRef) -> anyhow::Result, output: impl AsRef anyhow::Result<()> { method create_macos_app (line 290) | fn create_macos_app(&self) -> anyhow::Result<()> { method create_windows_installer (line 402) | fn create_windows_installer(&self) -> anyhow::Result<()> { method compress_web_artifacts (line 446) | fn compress_web_artifacts(&self) -> anyhow::Result<()> { function main (line 45) | fn main() -> anyhow::Result<()> { function copy (line 464) | fn copy(src: impl AsRef, dst: impl AsRef) -> anyhow::Result<... function rename (line 474) | fn rename(src: impl AsRef, dst: impl AsRef) -> anyhow::Resul... function create_dir_all (line 484) | fn create_dir_all(dir: impl AsRef) -> anyhow::Result<()> { function remove_dir_all (line 493) | fn remove_dir_all(dir: impl AsRef) -> anyhow::Result<()> { function write (line 502) | fn write(path: impl AsRef, contents: impl AsRef<[u8]>) -> anyhow::... function read_to_string (line 513) | fn read_to_string(path: impl AsRef) -> anyhow::Result { function symlink (line 523) | fn symlink(src: impl AsRef, dst: impl AsRef) -> anyhow::Resu... function cmd_spawn_wait (line 535) | fn cmd_spawn_wait(cmd: &mut Command) -> anyhow::Result { function cmd_output (line 545) | fn cmd_output(cmd: &mut Command) -> anyhow::Result { function cmd_status (line 553) | fn cmd_status(cmd: &mut Command) -> anyhow::Result { FILE: tetanes/src/error.rs type Error (line 1) | pub type Error = anyhow::Error; type Result (line 2) | pub type Result = anyhow::Result; FILE: tetanes/src/logging.rs function create_registry (line 10) | fn create_registry() -> Layered { function init (line 27) | pub fn init() -> anyhow::Result { FILE: tetanes/src/main.rs function main (line 46) | fn main() -> anyhow::Result<()> { FILE: tetanes/src/nes.rs type Nes (line 42) | pub struct Nes { method run (line 130) | pub fn run(cfg: Config) -> anyhow::Result<()> { method should_terminate (line 147) | pub fn should_terminate(&self) -> bool { method new (line 159) | pub fn new(cfg: Config, event_loop: &EventLoop) -> Self { method request_renderer_resources (line 182) | pub(crate) fn request_renderer_resources( method init_running (line 211) | pub(crate) fn init_running(&mut self, event_loop: &ActiveEventLoop) ->... type State (line 54) | pub(crate) enum State { method is_exiting (line 77) | pub const fn is_exiting(&self) -> bool { method default (line 69) | fn default() -> Self { type RunState (line 84) | pub enum RunState { method paused (line 91) | pub const fn paused(&self) -> bool { method auto_paused (line 95) | pub const fn auto_paused(&self) -> bool { method manually_paused (line 99) | pub const fn manually_paused(&self) -> bool { type Running (line 106) | pub(crate) struct Running { FILE: tetanes/src/nes/action.rs type Action (line 18) | pub enum Action { constant BINDABLE (line 40) | pub const BINDABLE: [Self; 112] = [ method is_joypad (line 167) | pub const fn is_joypad(&self) -> bool { method joypad_player (line 171) | pub fn joypad_player(&self, player: Player) -> bool { method fmt (line 177) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method as_ref (line 183) | fn as_ref(&self) -> &str { type Error (line 311) | type Error = anyhow::Error; method try_from (line 313) | fn try_from(s: &str) -> Result { method from (line 430) | fn from(state: Ui) -> Self { method from (line 436) | fn from(menu: Menu) -> Self { method from (line 442) | fn from(feature: Feature) -> Self { method from (line 448) | fn from(setting: Setting) -> Self { method from (line 454) | fn from((player, btn): (Player, JoypadBtn)) -> Self { method from (line 460) | fn from(deck: DeckAction) -> Self { method from (line 466) | fn from(action: Debug) -> Self { method partial_cmp (line 28) | fn partial_cmp(&self, other: &Self) -> Option { method cmp (line 34) | fn cmp(&self, other: &Self) -> std::cmp::Ordering { type Ui (line 472) | pub enum Ui { type Feature (line 481) | pub enum Feature { type Setting (line 490) | pub enum Setting { type DebugKind (line 511) | pub enum DebugKind { type DebugStep (line 519) | pub enum DebugStep { type Debug (line 528) | pub enum Debug { FILE: tetanes/src/nes/audio.rs type SampleRb (line 13) | type SampleRb = Arc>; type SampleProducer (line 14) | type SampleProducer = CachingProd; type SampleConsumer (line 15) | type SampleConsumer = CachingCons; type State (line 20) | pub enum State { type CallbackMsg (line 33) | pub enum CallbackMsg { type Audio (line 41) | pub struct Audio { method fmt (line 51) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 68) | pub fn new(enabled: bool, mut sample_rate: f32, latency: Duration, buf... method enabled (line 91) | pub fn enabled(&self) -> bool { method device (line 101) | pub fn device(&self) -> Option<&cpal::Device> { method set_enabled (line 107) | pub fn set_enabled(&mut self, enabled: bool) -> anyhow::Result { method process (line 117) | pub fn process(&mut self, samples: &[f32]) { method channels (line 129) | pub fn channels(&self) -> u16 { method queued_time (line 137) | pub fn queued_time(&self) -> Duration { method pause (line 150) | pub fn pause(&mut self, paused: bool) { method recreate_output (line 161) | fn recreate_output(&mut self) -> anyhow::Result { method set_sample_rate (line 169) | pub fn set_sample_rate(&mut self, sample_rate: f32) -> anyhow::Result<... method set_buffer_size (line 176) | pub fn set_buffer_size(&mut self, buffer_size: usize) -> anyhow::Resul... method set_latency (line 183) | pub fn set_latency(&mut self, latency: Duration) -> anyhow::Result bool { method start_recording (line 197) | pub fn start_recording(&mut self) -> anyhow::Result<()> { method stop_recording (line 210) | pub fn stop_recording(&mut self) -> anyhow::Result> { method start (line 222) | pub fn start(&mut self) -> anyhow::Result { method stop (line 236) | pub fn stop(&mut self) -> State { method available_hosts (line 246) | pub fn available_hosts(&self) -> Vec { method available_devices (line 256) | pub fn available_devices(&self) -> anyhow::Result { method supported_configs (line 266) | pub fn supported_configs(&self) -> Option) -> std::fmt::Result { method create (line 296) | fn create( method choose_config (line 331) | fn choose_config( method start (line 388) | fn start(&mut self) -> anyhow::Result<()> { method stop (line 404) | fn stop(&mut self) { type Mixer (line 412) | pub(crate) struct Mixer { method fmt (line 424) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method start (line 438) | fn start( method pause (line 483) | fn pause(&mut self, paused: bool) { method start_recording (line 501) | fn start_recording(&mut self) -> anyhow::Result<()> { method stop_recording (line 532) | fn stop_recording(&mut self) -> anyhow::Result> { method make_stream (line 543) | fn make_stream( method process (line 566) | fn process(&mut self, samples: &[f32]) { FILE: tetanes/src/nes/config.rs constant MAX_RECENT_ROMS (line 22) | const MAX_RECENT_ROMS: usize = 10; type AudioConfig (line 27) | pub struct AudioConfig { method default (line 34) | fn default() -> Self { type EmulationConfig (line 55) | pub struct EmulationConfig { method default (line 69) | fn default() -> Self { type RecentRom (line 94) | pub enum RecentRom { method name (line 103) | pub fn name(&self) -> &str { type RendererConfig (line 114) | pub struct RendererConfig { method default (line 133) | fn default() -> Self { type InputConfig (line 156) | pub struct InputConfig { method set_binding (line 188) | pub fn set_binding(&mut self, action: Action, input: Input, binding: u... method clear_binding (line 220) | pub fn clear_binding(&mut self, input: Input) { method update_gamepad_assignments (line 241) | pub fn update_gamepad_assignments(&mut self, gamepads: &Gamepads) { method next_gamepad_unassigned (line 266) | pub fn next_gamepad_unassigned(&mut self) -> Option { method gamepad_assigned_to (line 273) | pub const fn gamepad_assigned_to(&self, player: Player) -> Option { method gamepad_assignment (line 277) | pub fn gamepad_assignment(&self, uuid: &Uuid) -> Option { method assign_gamepad (line 284) | pub const fn assign_gamepad(&mut self, player: Player, uuid: Uuid) { method unassign_gamepad (line 288) | pub fn unassign_gamepad(&mut self, player: Player) -> Option { method unassign_gamepad_name (line 292) | pub fn unassign_gamepad_name(&mut self, uuid: &Uuid) -> Option { method default (line 166) | fn default() -> Self { type Config (line 315) | pub struct Config { constant SAVE_DIR (line 324) | pub const SAVE_DIR: &'static str = "save"; constant SAVE_EXTENSION (line 325) | pub const SAVE_EXTENSION: &'static str = "sav"; constant WINDOW_TITLE (line 326) | pub const WINDOW_TITLE: &'static str = "TetaNES"; constant FILENAME (line 327) | pub const FILENAME: &'static str = "config.json"; method default_config_dir (line 330) | pub fn default_config_dir() -> PathBuf { method default_data_dir (line 338) | pub fn default_data_dir() -> PathBuf { method default_picture_dir (line 346) | pub fn default_picture_dir() -> PathBuf { method default_audio_dir (line 354) | pub fn default_audio_dir() -> PathBuf { method config_path (line 362) | pub fn config_path() -> PathBuf { method save_path (line 367) | pub fn save_path(name: &str, slot: u8) -> PathBuf { method reset (line 375) | pub fn reset(&mut self) { method save (line 379) | pub fn save(&self) -> anyhow::Result<()> { method load (line 388) | pub fn load(path: Option) -> Self { method increment_speed (line 427) | pub fn increment_speed(&mut self) -> f32 { method next_increment_speed (line 432) | pub fn next_increment_speed(&self) -> f32 { method decrement_speed (line 440) | pub fn decrement_speed(&mut self) -> f32 { method next_decrement_speed (line 445) | pub fn next_decrement_speed(&self) -> f32 { method increment_scale (line 453) | pub fn increment_scale(&mut self) -> f32 { method next_increment_scale (line 458) | pub fn next_increment_scale(&self) -> f32 { method decrement_scale (line 466) | pub fn decrement_scale(&mut self) -> f32 { method next_decrement_scale (line 471) | pub fn next_decrement_scale(&self) -> f32 { method window_size (line 480) | pub fn window_size(&self, aspect_ratio: f32) -> egui::Vec2 { method window_size_for_scale (line 485) | pub fn window_size_for_scale(&self, aspect_ratio: f32, scale: f32) -> ... method texture_size (line 494) | pub const fn texture_size(&self) -> egui::Vec2 { method shortcut (line 504) | pub fn shortcut(&self, action: impl Into) -> String { method action_input (line 515) | pub fn action_input(&self, action: impl Into) -> Option { method add_recent_rom (line 532) | pub fn add_recent_rom(&mut self, rom: RecentRom) { type FrameRate (line 542) | pub enum FrameRate { constant MIN (line 550) | pub const MIN: Self = Self::X50; constant MAX (line 551) | pub const MAX: Self = Self::X60; method duration (line 553) | pub fn duration(&self) -> Duration { method from (line 587) | fn from(region: NesRegion) -> Self { method from (line 597) | fn from(region: &NesRegion) -> Self { method as_ref (line 603) | fn as_ref(&self) -> &str { method fmt (line 613) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function from (line 559) | fn from(frame_rate: FrameRate) -> Self { function from (line 569) | fn from(frame_rate: &FrameRate) -> Self { function from (line 575) | fn from(frame_rate: FrameRate) -> Self { function from (line 581) | fn from(frame_rate: &FrameRate) -> Self { FILE: tetanes/src/nes/emulation.rs type FrameStats (line 42) | pub struct FrameStats { method new (line 65) | pub fn new() -> Self { method default (line 52) | fn default() -> Self { type FrameTimeDiag (line 72) | pub struct FrameTimeDiag { constant MAX_HISTORY (line 81) | const MAX_HISTORY: usize = 120; constant UPDATE_INTERVAL (line 82) | const UPDATE_INTERVAL: Duration = Duration::from_millis(300); method new (line 84) | fn new() -> Self { method push (line 94) | fn push(&mut self, frame_time: f32) { method avg (line 109) | fn avg(&mut self) -> f32 { method history (line 120) | fn history(&self) -> impl Iterator { method reset (line 124) | fn reset(&mut self) { function shutdown (line 133) | fn shutdown(tx: &NesEventProxy, err: impl std::fmt::Display) { type Threads (line 140) | enum Threads { type Single (line 147) | struct Single { type Multi (line 153) | struct Multi { method spawn (line 159) | fn spawn( method main (line 176) | fn main( type Emulation (line 196) | pub struct Emulation { method new (line 202) | pub fn new( method on_event (line 221) | pub fn on_event(&mut self, event: &NesEvent) { method try_clock_frame (line 233) | pub fn try_clock_frame(&mut self) { method terminate (line 241) | pub fn terminate(&mut self) { type State (line 256) | pub struct State { method new (line 290) | fn new(tx: NesEventProxy, frame_tx: BufSender, cf... method add_message (line 345) | pub(crate) fn add_message(&mut self, ty: MessageType, msg... method write_deck (line 349) | fn write_deck( method on_error (line 358) | fn on_error(&mut self, err: impl Into) { method on_event (line 375) | fn on_event(&mut self, event: &NesEvent) { method on_emulation_event (line 388) | fn on_emulation_event(&mut self, event: &EmulationEvent) { method on_config_event (line 524) | fn on_config_event(&mut self, event: &ConfigEvent) { method update_frame_stats (line 606) | fn update_frame_stats(&mut self) { method send_frame (line 637) | fn send_frame(&mut self) { method set_run_state (line 645) | fn set_run_state(&mut self, mode: RunState) { method save_state (line 663) | fn save_state(&mut self, slot: u8, auto: bool) { method load_state (line 677) | fn load_state(&mut self, slot: u8) { method unload_rom (line 692) | fn unload_rom(&mut self) { method on_load_rom (line 715) | fn on_load_rom(&mut self, rom: LoadedRom) { method load_rom_path (line 739) | fn load_rom_path(&mut self, path: impl AsRef) { method load_rom (line 748) | fn load_rom(&mut self, name: &str, rom: &mut impl Read) { method on_load_replay (line 756) | fn on_load_replay(&mut self, start: Cpu, name: impl AsRef) { method load_replay_path (line 769) | fn load_replay_path(&mut self, path: impl AsRef) { method load_replay (line 777) | fn load_replay(&mut self, name: &str, replay: &mut impl Read) { method update_region (line 784) | fn update_region(&mut self, region: NesRegion) { method audio_record (line 791) | fn audio_record(&mut self, recording: bool) { method replay_record (line 810) | fn replay_record(&mut self, recording: bool) { method save_screenshot (line 829) | fn save_screenshot(&mut self) -> anyhow::Result { method park_duration (line 857) | fn park_duration(&self) -> Option { method try_clock_frame (line 885) | fn try_clock_frame(&mut self) { method drop (line 284) | fn drop(&mut self) { FILE: tetanes/src/nes/emulation/replay.rs type State (line 18) | pub struct State((Cpu, Vec)); type ReplayEvent (line 21) | pub enum ReplayEvent { type Error (line 38) | type Error = anyhow::Error; method try_from (line 40) | fn try_from(event: EmulationEvent) -> Result { method from (line 28) | fn from(event: ReplayEvent) -> Self { type ReplayFrame (line 52) | pub struct ReplayFrame { type Record (line 59) | pub struct Record { method new (line 65) | pub fn new() -> Self { method start (line 69) | pub fn start(&mut self, cpu: Cpu) { method stop (line 74) | pub fn stop(&mut self, name: &str) -> anyhow::Result> { method push (line 78) | pub fn push(&mut self, frame: u32, event: EmulationEvent) { method save (line 87) | pub fn save(&mut self, name: &str) -> anyhow::Result> { type Replay (line 114) | pub struct Replay { method new (line 119) | pub fn new() -> Self { method load_path (line 124) | pub fn load_path(&mut self, path: impl AsRef) -> anyhow::Result<... method load (line 133) | pub fn load(&mut self, mut replay: impl Read) -> anyhow::Result { method next (line 142) | pub fn next(&mut self, frame: u32) -> Option { FILE: tetanes/src/nes/emulation/rewind.rs type Frame (line 11) | pub struct Frame { type Rewind (line 18) | pub struct Rewind { constant TARGET_FPS (line 29) | const TARGET_FPS: usize = 60; method new (line 31) | pub fn new(enabled: bool, seconds: u32, interval: u32) -> Self { method frame_size (line 45) | const fn frame_size(seconds: usize, interval: usize) -> usize { method set_enabled (line 49) | pub fn set_enabled(&mut self, enabled: bool) { method set_seconds (line 56) | pub fn set_seconds(&mut self, seconds: u32) { method set_interval (line 62) | pub fn set_interval(&mut self, interval: u32) { method push (line 68) | pub fn push(&mut self, cpu: &Cpu) -> Result<()> { method pop (line 93) | pub fn pop(&mut self) -> Option { method clear (line 119) | pub fn clear(&mut self) { method rewind_disabled (line 128) | pub fn rewind_disabled(&mut self) { method instant_rewind (line 135) | pub fn instant_rewind(&mut self) { FILE: tetanes/src/nes/event.rs type Response (line 46) | pub struct Response { type NesEventProxy (line 52) | pub struct NesEventProxy(EventLoopProxy); method new (line 55) | pub fn new(event_loop: &EventLoop) -> Self { method event (line 59) | pub fn event(&self, event: impl Into) { method inner (line 67) | pub const fn inner(&self) -> &EventLoopProxy { type NesEvent (line 74) | pub enum NesEvent { method from (line 98) | fn from(event: accesskit_winit::Event) -> Self { method from (line 163) | fn from(event: ConfigEvent) -> Self { method from (line 175) | fn from(event: DebugEvent) -> Self { method from (line 209) | fn from(event: EmulationEvent) -> Self { method from (line 235) | fn from(event: RendererEvent) -> Self { method from (line 253) | fn from(event: UiEvent) -> Self { type AccessKitWindowEvent (line 90) | pub enum AccessKitWindowEvent { type ConfigEvent (line 117) | pub enum ConfigEvent { type DebugEvent (line 170) | pub enum DebugEvent { type EmulationEvent (line 182) | pub enum EmulationEvent { type RendererEvent (line 216) | pub enum RendererEvent { type UiEvent (line 242) | pub enum UiEvent { type ReplayData (line 259) | pub struct ReplayData(pub Vec); method fmt (line 262) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method as_ref (line 268) | fn as_ref(&self) -> &[u8] { method user_event (line 274) | fn user_event(&mut self, event_loop: &ActiveEventLoop, event: NesEvent) { method resumed (line 323) | fn resumed(&mut self, event_loop: &ActiveEventLoop) { method window_event (line 346) | fn window_event( method device_event (line 363) | fn device_event( method about_to_wait (line 380) | fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { method suspended (line 392) | fn suspended(&mut self, event_loop: &ActiveEventLoop) { method exiting (line 404) | fn exiting(&mut self, event_loop: &ActiveEventLoop) { method user_event (line 421) | fn user_event(&mut self, _event_loop: &ActiveEventLoop, mut event: NesEv... method resumed (line 553) | fn resumed(&mut self, _event_loop: &ActiveEventLoop) {} method window_event (line 555) | fn window_event( method device_event (line 661) | fn device_event( method about_to_wait (line 672) | fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { method suspended (line 700) | fn suspended(&mut self, event_loop: &ActiveEventLoop) { method exiting (line 709) | fn exiting(&mut self, _event_loop: &ActiveEventLoop) { method memory_warning (line 721) | fn memory_warning(&mut self, _event_loop: &ActiveEventLoop) { method run_state (line 732) | fn run_state(&self) -> RunState { method set_run_state (line 736) | fn set_run_state(&mut self, state: RunState) { method update_repaint_times (line 741) | pub fn update_repaint_times(&mut self, event_loop: &ActiveEventLoop) { method on_ui_event (line 766) | pub fn on_ui_event(&mut self, event: &UiEvent) { method event (line 816) | pub fn event(&mut self, event: impl Into) { method on_gamepad_event (line 838) | pub fn on_gamepad_event(&mut self, window_id: WindowId, event: gilrs::Ev... method on_input (line 929) | pub fn on_input( FILE: tetanes/src/nes/input.rs type Input (line 87) | pub enum Input { method fmt (line 95) | pub fn fmt(input: Input) -> String { type AxisDirection (line 268) | pub enum AxisDirection { type Bindings (line 273) | pub type Bindings = [Option; 3]; type ActionBindings (line 277) | pub struct ActionBindings { method new (line 283) | pub const fn new(action: Action, bindings: Bindings) -> Self { method empty (line 287) | pub fn empty(action: Action) -> Self { method default_shortcuts (line 296) | pub fn default_shortcuts() -> BTreeMap { method default_player_bindings (line 365) | pub fn default_player_bindings(player: Player) -> BTreeMap); method from_input_config (line 429) | pub fn from_input_config(cfg: &InputConfig) -> Self { type Target (line 445) | type Target = HashMap; method deref (line 446) | fn deref(&self) -> &Self::Target { method deref_mut (line 452) | fn deref_mut(&mut self) -> &mut Self::Target { type Gamepads (line 459) | pub struct Gamepads { method new (line 467) | pub fn new() -> Self { method update_events (line 493) | pub fn update_events(&mut self) { method axis_state (line 501) | pub fn axis_state(value: f32) -> (Option, ElementState) { method has_events (line 517) | pub fn has_events(&self) -> bool { method input_from_event (line 521) | pub fn input_from_event( method connected_gamepad (line 556) | pub fn connected_gamepad(&self, id: gilrs::GamepadId) -> Option Option Option Option { method gamepad_uuid (line 579) | pub fn gamepad_uuid(&self, id: gilrs::GamepadId) -> Option { method is_connected (line 583) | pub fn is_connected(&self, uuid: &Uuid) -> bool { method list (line 587) | pub fn list(&self) -> Option impl Iterator { method events (line 595) | pub fn events(&self) -> impl Iterator { method next_event (line 599) | pub fn next_event(&mut self) -> Option { method clear_events (line 603) | pub fn clear_events(&mut self) { method set_ui_consumes (line 607) | pub fn set_ui_consumes(&mut self, consumes: bool) { method connect (line 614) | pub fn connect(&mut self, gamepad_id: gilrs::GamepadId) { method disconnect (line 622) | pub fn disconnect(&mut self, gamepad_id: gilrs::GamepadId) { method create_uuid (line 630) | pub fn create_uuid(gamepad: &gilrs::Gamepad<'_>) -> Uuid { FILE: tetanes/src/nes/renderer.rs constant OVERSCAN_TRIM (line 55) | pub const OVERSCAN_TRIM: usize = (4 * ppu::size::WIDTH * 8) as usize; type FrameRecycle (line 59) | pub struct FrameRecycle; method new_element (line 62) | fn new_element(&self) -> Frame { method recycle (line 66) | fn recycle(&self, _frame: &mut Frame) {} type State (line 70) | pub struct State { method fmt (line 79) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Viewport (line 91) | pub struct Viewport { method fmt (line 106) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method initialize_window (line 1277) | pub fn initialize_window( method update_info (line 1318) | pub fn update_info(info: &mut ViewportInfo, ctx: &egui::Context, windo... method set_cursor (line 1354) | fn set_cursor(&mut self, cursor_icon: egui::CursorIcon) { type Renderer (line 126) | pub struct Renderer { method fmt (line 143) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 177) | pub fn new( method destroy (line 283) | pub fn destroy(&mut self) { method root_window_id (line 296) | pub fn root_window_id(&self) -> Option { method window_id_for_viewport (line 300) | pub fn window_id_for_viewport(&self, viewport_id: ViewportId) -> Optio... method viewport_id_for_window (line 309) | pub fn viewport_id_for_window(&self, window_id: WindowId) -> Option(&self, reader: impl FnOnce(&Viewport) -> R) ->... method root_window (line 322) | pub fn root_window(&self) -> Option> { method all_window_ids (line 327) | pub fn all_window_ids(&self) -> Vec { method window (line 336) | pub fn window(&self, window_id: WindowId) -> Option> { method window_size (line 346) | pub fn window_size(&self, cfg: &Config) -> Vec2 { method window_size_for_scale (line 350) | pub fn window_size_for_scale(&self, cfg: &Config, scale: f32) -> Vec2 { method find_max_scale_for_width (line 358) | pub fn find_max_scale_for_width(&self, width: f32, cfg: &Config) -> f32 { method all_viewports_occluded (line 368) | pub fn all_viewports_occluded(&self) -> bool { method inner_size (line 373) | pub fn inner_size(&self) -> Option> { method fullscreen (line 377) | pub fn fullscreen(&self) -> bool { method set_fullscreen (line 383) | pub fn set_fullscreen(&mut self, fullscreen: bool, embed_viewports: bo... method set_embed_viewports (line 393) | pub fn set_embed_viewports(&mut self, embed: bool) { method set_always_on_top (line 397) | pub fn set_always_on_top(&mut self, always_on_top: bool) { method initialize_all_windows (line 411) | fn initialize_all_windows(&mut self, event_loop: &ActiveEventLoop) { method rom_loaded (line 432) | pub fn rom_loaded(&self) -> bool { method add_message (line 436) | pub fn add_message(&mut self, ty: MessageType, text: S) method on_error (line 444) | pub fn on_error(&mut self, err: anyhow::Error) { method load (line 451) | pub fn load(ctx: &egui::Context, cfg: &Config) -> anyhow::Result<()> { method auto_save (line 469) | pub fn auto_save(&mut self, cfg: &Config) -> anyhow::Result<()> { method save (line 477) | pub fn save(&mut self, cfg: &Config) -> anyhow::Result<()> { method request_resources (line 498) | pub fn request_resources( method create_window (line 546) | pub fn create_window( method create_painter (line 656) | pub async fn create_painter(window: Arc) -> anyhow::Result anyhow::Result<()> { method set_painter_window (line 727) | fn set_painter_window( method create_or_update_viewport (line 744) | fn create_or_update_viewport<'a>( method handle_platform_output (line 792) | pub fn handle_platform_output(viewport: &mut Viewport, platform_output... method open_url_in_browser (line 814) | fn open_url_in_browser(url: &str) { method handle_viewport_output (line 820) | fn handle_viewport_output( method process_viewport_commands (line 841) | fn process_viewport_commands( method redraw (line 1043) | pub fn redraw( method handle_resize (line 1229) | fn handle_resize(&mut self, viewport_id: ViewportId, cfg: &Config) { method resize_window (line 1247) | fn resize_window(&self, cfg: &Config) { type Resources (line 161) | pub struct Resources { method fmt (line 168) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { FILE: tetanes/src/nes/renderer/clipboard.rs type Clipboard (line 2) | pub struct Clipboard { method fmt (line 23) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 32) | pub fn new() -> Self { method get (line 36) | pub fn get(&mut self) -> Option { method set (line 48) | pub fn set(&mut self, text: impl Into) { method default (line 11) | fn default() -> Self { FILE: tetanes/src/nes/renderer/event.rs method on_event (line 26) | pub fn on_event(&mut self, event: &mut NesEvent, cfg: &Config) { method on_window_event (line 114) | pub fn on_window_event(&mut self, window_id: WindowId, event: &WindowEve... method on_mouse_motion (line 406) | pub fn on_mouse_motion(&mut self, delta: (f64, f64)) { method on_mouse_button_input (line 423) | fn on_mouse_button_input( method on_cursor_moved (line 443) | fn on_cursor_moved( method on_touch (line 460) | fn on_touch( method on_mouse_wheel (line 533) | fn on_mouse_wheel(viewport: &mut Viewport, pixels_per_point: f32, delta:... method on_keyboard_input (line 550) | fn on_keyboard_input(viewport: &mut Viewport, event: &KeyEvent) { method on_gamepad_update (line 638) | pub fn on_gamepad_update(&self, gamepads: &Gamepads) -> Response { type Error (line 651) | type Error = (); method try_from (line 653) | fn try_from((key, modifiers): (egui::Key, egui::Modifiers)) -> Result Self { function is_cut_command (line 666) | pub fn is_cut_command(modifiers: egui::Modifiers, keycode: egui::Key) ->... function is_copy_command (line 672) | pub fn is_copy_command(modifiers: egui::Modifiers, keycode: egui::Key) -... function is_paste_command (line 678) | pub fn is_paste_command(modifiers: egui::Modifiers, keycode: egui::Key) ... function is_printable_char (line 688) | pub const fn is_printable_char(chr: char) -> bool { function key_from_winit_key (line 696) | pub fn key_from_winit_key(key: &winit::keyboard::Key) -> Option Optio... function key_from_keycode (line 771) | pub const fn key_from_keycode(keycode: KeyCode) -> Option { function keycode_from_key (line 887) | pub const fn keycode_from_key(key: egui::Key) -> Option { function modifiers_from_modifiers_state (line 1001) | pub fn modifiers_from_modifiers_state(modifier_state: ModifiersState) ->... function modifiers_state_from_modifiers (line 1017) | pub fn modifiers_state_from_modifiers(modifiers: egui::Modifiers) -> Mod... function pointer_button_from_mouse (line 1036) | pub const fn pointer_button_from_mouse(button: MouseButton) -> Option MouseBu... function translate_cursor (line 1057) | pub const fn translate_cursor(cursor_icon: egui::CursorIcon) -> Option Response { method on_event (line 203) | pub fn on_event(&mut self, queue: &wgpu::Queue, event: &mut NesEvent) { method add_message (line 271) | pub fn add_message(&mut self, ty: MessageType, text: S) method loaded_region (line 285) | pub fn loaded_region(&self) -> Option { method aspect_ratio (line 289) | pub fn aspect_ratio(&self, cfg: &Config) -> f32 { method ui (line 301) | pub fn ui(&mut self, ui: &mut Ui, cfg: &Config, gamepads: &Gamepads) { method initialize (line 364) | fn initialize(&mut self, ui: &mut Ui, cfg: &Config) { method show_about_window (line 418) | fn show_about_window(&mut self, ctx: &Context, enabled: bool) { method show_about_homebrew_window (line 426) | fn show_about_homebrew_window(&mut self, ctx: &Context, enabled: bool) { method show_viewport_info_window (line 455) | pub(super) fn show_viewport_info_window( method show_performance_window (line 466) | fn show_performance_window(&mut self, ctx: &Context, enabled: bool, cf... method close_viewport (line 476) | pub(super) fn close_viewport(&self, viewport_id: ViewportId) { method show_viewport (line 502) | fn show_viewport( method show_update_window (line 543) | fn show_update_window(&mut self, ctx: &Context, enabled: bool, cfg: &C... method menubar (line 617) | fn menubar(&mut self, ui: &mut Ui, cfg: &Config) { method toggle_dark_mode_button (line 653) | pub fn toggle_dark_mode_button(tx: &NesEventProxy, ui: &mut Ui) { method file_menu (line 671) | fn file_menu(&mut self, ui: &mut Ui, cfg: &Config) { method homebrew_rom_menu (line 798) | fn homebrew_rom_menu(&mut self, ui: &mut Ui) { method controls_menu (line 818) | fn controls_menu(&mut self, ui: &mut Ui, cfg: &Config) { method config_menu (line 933) | fn config_menu(&mut self, ui: &mut Ui, cfg: &Config) { method window_menu (line 1023) | fn window_menu(&mut self, ui: &mut Ui, cfg: &Config) { method debug_menu (line 1072) | fn debug_menu(&mut self, ui: &mut Ui, cfg: &Config) { method nes_frame (line 1206) | fn nes_frame(&mut self, ui: &mut Ui, enabled: bool, cfg: &Config, game... method performance_stats (line 1362) | fn performance_stats(&mut self, ui: &mut Ui, cfg: &Config) { method help_menu (line 1518) | fn help_menu(&mut self, ui: &mut Ui) { method about (line 1526) | fn about(&mut self, ui: &mut Ui, enabled: bool) { method about_homebrew (line 1578) | fn about_homebrew(ui: &mut Ui, rom: RomAsset) { method message_bar (line 1593) | fn message_bar(&mut self, ui: &mut Ui) { method error_bar (line 1608) | fn error_bar(&mut self, ui: &mut Ui) { method dark_theme (line 1622) | pub fn dark_theme() -> egui::Visuals { method light_theme (line 1693) | pub fn light_theme() -> egui::Visuals { FILE: tetanes/src/nes/renderer/gui/keybinds.rs type Tab (line 21) | pub enum Tab { type State (line 29) | pub struct State { method ui (line 171) | fn ui(&mut self, ui: &mut Ui, enabled: bool, cfg: &Config, gamepad_sta... method list (line 195) | fn list( method player_gamepad_combo (line 258) | fn player_gamepad_combo( method show_set_keybind_window (line 328) | pub fn show_set_keybind_window( method set_keybind (line 355) | pub fn set_keybind( method show_gamepad_unassign_window (line 482) | fn show_gamepad_unassign_window(&mut self, ctx: &Context) { method gamepad_unassign_confirm (line 508) | fn gamepad_unassign_confirm(&mut self, ui: &mut Ui) { type Keybinds (line 38) | pub struct Keybinds { constant TITLE (line 68) | const TITLE: &'static str = "TetaNES - Keybinds"; method new (line 70) | pub fn new(tx: NesEventProxy) -> Self { method wants_input (line 83) | pub fn wants_input(&self) -> bool { method open (line 89) | pub fn open(&self) -> bool { method set_open (line 93) | pub fn set_open(&self, open: bool, ctx: &Context) { method toggle_open (line 100) | pub fn toggle_open(&self, ctx: &Context) { method show (line 112) | pub fn show(&mut self, ui: &mut Ui, opts: ViewportOptions, cfg: Config... type PendingInput (line 45) | pub struct PendingInput { type GamepadState (line 54) | pub struct GamepadState { type ConnectedGamepad (line 61) | pub struct ConnectedGamepad { FILE: tetanes/src/nes/renderer/gui/lib.rs type ViewportOptions (line 18) | pub struct ViewportOptions { type ShowShortcut (line 24) | pub enum ShowShortcut { method then (line 30) | pub fn then(&self, f: impl FnOnce() -> T) -> Option { type ShortcutText (line 38) | pub trait ShortcutText<'a> method shortcut_text (line 42) | fn shortcut_text(self, shortcut_text: impl Into) -> Shortc... function cursor_to_zapper (line 51) | pub fn cursor_to_zapper(x: f32, y: f32, rect: Rect) -> Option { function input_down (line 60) | pub fn input_down(ui: &mut Ui, gamepads: &Gamepads, cfg: &Config, input:... type ShortcutWidget (line 86) | pub struct ShortcutWidget<'a, T> { type Target (line 93) | type Target = T; method deref (line 94) | fn deref(&self) -> &Self::Target { method deref_mut (line 100) | fn deref_mut(&mut self) -> &mut Self::Target { method ui (line 109) | fn ui(self, ui: &mut Ui) -> Response { type ToggleValue (line 146) | pub struct ToggleValue<'a> { function new (line 152) | pub fn new(selected: &'a mut bool, text: impl Into) -> Self { method ui (line 161) | fn ui(self, ui: &mut Ui) -> Response { type RadioValue (line 172) | pub struct RadioValue<'a, T> { function new (line 179) | pub fn new(current_value: &'a mut T, alternative: T, text: impl Into Response { type Error (line 204) | type Error = (); method try_from (line 206) | fn try_from(val: Input) -> Result { function screen_center (line 218) | pub fn screen_center(ctx: &Context) -> Option { function screen_size_in_pixels (line 233) | pub fn screen_size_in_pixels(window: &Window) -> egui::Vec2 { function pixels_per_point (line 238) | pub fn pixels_per_point(egui_ctx: &egui::Context, window: &Window) -> f32 { function inner_rect_in_points (line 244) | pub fn inner_rect_in_points(window: &Window, pixels_per_point: f32) -> O... function outer_rect_in_points (line 256) | pub fn outer_rect_in_points(window: &Window, pixels_per_point: f32) -> O... function to_winit_icon (line 268) | pub fn to_winit_icon(icon: &egui::IconData) -> Option) { method oam_tile_from_offset (line 1217) | fn oam_tile_from_offset(&self, offset: Vec2, texture_size: Vec2) -> Ch... method palette_tab (line 1236) | fn palette_tab(&mut self, ui: &mut Ui) { method palette_hover (line 1269) | fn palette_hover(&mut self, ui: &mut Ui, res: &egui::Response, pos: Po... method palette_color_from_offset (line 1291) | fn palette_color_from_offset(&self, offset: Vec2) -> PaletteColor { method palette (line 1317) | fn palette(&mut self, ui: &mut Ui, label: &str, offset: Option) { method palette_row (line 1367) | fn palette_row(&self, ui: &mut Ui, index: usize, pos: Pos2, size: Vec2... method palette_grid (line 1382) | fn palette_grid(&self, ui: &mut Ui, size: Vec2) -> egui::Response { type NametablesState (line 47) | struct NametablesState { type PatternTablesState (line 56) | struct PatternTablesState { type OamState (line 65) | struct OamState { type PalettesState (line 77) | struct PalettesState { type NametableTile (line 87) | struct NametableTile { method default (line 103) | fn default() -> Self { type ChrTile (line 123) | struct ChrTile { method default (line 130) | fn default() -> Self { type PaletteColor (line 141) | struct PaletteColor { method default (line 149) | fn default() -> Self { type PpuViewer (line 161) | pub struct PpuViewer { constant TITLE (line 177) | const TITLE: &'static str = "TetaNES - PPU Viewer"; method new (line 179) | pub fn new(tx: NesEventProxy, render_state: &mut RenderState) -> Self { method id (line 255) | pub const fn id(&self) -> ViewportId { method open (line 259) | pub fn open(&self) -> bool { method set_open (line 263) | pub fn set_open(&self, open: bool, ctx: &Context) { method toggle_open (line 271) | pub fn toggle_open(&self, ctx: &Context) { method update_ppu (line 284) | pub fn update_ppu(&mut self, queue: &wgpu::Queue, ppu: Ppu) { method show (line 341) | pub fn show(&mut self, ui: &mut Ui, opts: ViewportOptions) { type Tab (line 168) | pub enum Tab { function zoom_slider (line 1410) | fn zoom_slider(ui: &mut Ui, zoom: &mut f32) { function paint_grid (line 1424) | fn paint_grid(ui: &mut Ui, rect: Rect, y_spacing: f32, x_spacing: f32, c... function translate_screen_pos_to_tile (line 1444) | fn translate_screen_pos_to_tile(pos: Pos2, image_rect: Rect, texture_siz... function tile_selection (line 1451) | fn tile_selection(image_rect: Rect, texture_size: Vec2, tile_offset: Vec... FILE: tetanes/src/nes/renderer/gui/preferences.rs type State (line 33) | pub struct State { method ui (line 516) | fn ui(&mut self, ui: &mut Ui, enabled: bool, cfg: &Config) { method emulation_tab (line 564) | fn emulation_tab(&mut self, ui: &mut Ui, cfg: &Config) { method audio_tab (line 760) | fn audio_tab(tx: &NesEventProxy, ui: &mut Ui, cfg: &Config) { method video_tab (line 854) | fn video_tab(tx: &NesEventProxy, ui: &mut Ui, cfg: &Config) { method input_tab (line 916) | fn input_tab(tx: &NesEventProxy, ui: &mut Ui, cfg: &Config) { method genie_codes_entry (line 937) | pub fn genie_codes_entry(&mut self, ui: &mut Ui, cfg: &Config) { method restore_defaults (line 999) | fn restore_defaults(tx: &NesEventProxy, ctx: &Context) { method clear_save_states (line 1051) | pub(crate) fn clear_save_states(tx: &NesEventProxy) { type Preferences (line 41) | pub struct Preferences { constant TITLE (line 63) | const TITLE: &'static str = "TetaNES - Preferences"; method new (line 65) | pub fn new(tx: NesEventProxy) -> Self { method open (line 77) | pub fn open(&self) -> bool { method set_open (line 81) | pub fn set_open(&self, open: bool, ctx: &Context) { method toggle_open (line 88) | pub fn toggle_open(&self, ctx: &Context) { method show (line 100) | pub fn show(&mut self, ui: &mut Ui, opts: ViewportOptions, cfg: Config) { method show_genie_codes_entry (line 131) | pub fn show_genie_codes_entry(&mut self, ui: &mut Ui, cfg: &Config) { method genie_codes_list (line 135) | pub fn genie_codes_list(tx: &NesEventProxy, ui: &mut Ui, cfg: &Config,... method save_slot_radio (line 173) | pub fn save_slot_radio( method speed_slider (line 206) | pub fn speed_slider(tx: &NesEventProxy, ui: &mut Ui, mut speed: f32) { method run_ahead_slider (line 218) | pub fn run_ahead_slider(tx: &NesEventProxy, ui: &mut Ui, mut run_ahead... method rewind_checkbox (line 228) | pub fn rewind_checkbox( method zapper_checkbox (line 246) | pub fn zapper_checkbox( method overscan_checkbox (line 264) | pub fn overscan_checkbox( method video_filter_radio (line 281) | pub fn video_filter_radio( method shader_radio (line 315) | pub fn shader_radio( method four_player_radio (line 346) | pub fn four_player_radio(tx: &NesEventProxy, ui: &mut Ui, mut four_pla... method nes_region_radio (line 358) | pub fn nes_region_radio(tx: &NesEventProxy, ui: &mut Ui, mut region: N... method ram_state_radio (line 373) | pub fn ram_state_radio(tx: &NesEventProxy, ui: &mut Ui, mut ram_state:... method menubar_checkbox (line 386) | pub fn menubar_checkbox( method messages_checkbox (line 402) | pub fn messages_checkbox( method screen_reader_checkbox (line 421) | pub fn screen_reader_checkbox(ui: &mut Ui, shortcut: impl Into; method deref (line 85) | fn deref(&self) -> &Self::Target { type Painter (line 92) | pub struct Painter { method new (line 119) | pub fn new() -> Self { method set_shader (line 123) | pub fn set_shader(&mut self, shader: Shader) { method set_window (line 137) | pub async fn set_window( method paint (line 170) | pub fn paint( method render_state (line 296) | pub const fn render_state(&self) -> Option<&RenderState> { method render_state_mut (line 300) | pub const fn render_state_mut(&mut self) -> Option<&mut RenderState> { method on_window_resized (line 304) | pub fn on_window_resized(&mut self, viewport_id: ViewportId, width: u3... method retain_surfaces (line 313) | pub fn retain_surfaces(&mut self, viewport_ids: &ViewportIdSet) { method destroy (line 317) | pub fn destroy(&mut self) { method default (line 99) | fn default() -> Self { type SlicedBuffer (line 325) | struct SlicedBuffer { type RenderState (line 333) | pub struct RenderState { method create (line 359) | async fn create( method max_texture_side (line 585) | pub fn max_texture_side(&self) -> u32 { method register_texture (line 589) | pub fn register_texture( method create_vertex_buffer (line 618) | fn create_vertex_buffer(device: &wgpu::Device, size: u64) -> wgpu::Buf... method create_index_buffer (line 627) | fn create_index_buffer(device: &wgpu::Device, size: u64) -> wgpu::Buff... method resize_surface (line 636) | fn resize_surface(&self, surface: &mut Surface, width: NonZeroU32, hei... method update_texture (line 661) | pub fn update_texture(&mut self, id: epaint::TextureId, image_delta: &... method update_buffers (line 759) | pub fn update_buffers( method render (line 873) | pub fn render<'rp>( method create_sampler (line 950) | fn create_sampler( type UniformBuffer (line 983) | struct UniformBuffer { method eq (line 991) | fn eq(&self, other: &Self) -> bool { type ScreenDescriptor (line 997) | pub struct ScreenDescriptor { method screen_size_in_points (line 1007) | fn screen_size_in_points(&self) -> [f32; 2] { type ScissorRect (line 1016) | struct ScissorRect { method new (line 1024) | fn new(clip_rect: &epaint::Rect, pixels_per_point: f32, target_size: [... FILE: tetanes/src/nes/renderer/shader.rs type ParseShaderError (line 7) | pub struct ParseShaderError; type Shader (line 11) | pub enum Shader { method as_slice (line 18) | pub const fn as_slice() -> &'static [Self] { method as_ref (line 24) | fn as_ref(&self) -> &str { type Error (line 33) | type Error = ParseShaderError; method try_from (line 35) | fn try_from(value: usize) -> Result { type Resources (line 46) | pub struct Resources { method new (line 53) | pub fn new( FILE: tetanes/src/nes/renderer/texture.rs type Texture (line 6) | pub struct Texture { method new (line 17) | pub fn new( method resize (line 72) | pub fn resize(&mut self, render_state: &mut RenderState, size: Vec2, a... method sized (line 76) | pub fn sized(&self) -> SizedTexture { method update (line 80) | pub fn update(&self, queue: &wgpu::Queue, bytes: &[u8]) { method update_partial (line 84) | pub fn update_partial(&self, queue: &wgpu::Queue, bytes: &[u8], origin... FILE: tetanes/src/nes/rom.rs type RomData (line 2) | pub struct RomData(pub Vec); method fmt (line 5) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method as_ref (line 11) | fn as_ref(&self) -> &[u8] { type RomAsset (line 18) | pub struct RomAsset { method fmt (line 27) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method new (line 38) | pub const fn new( method data (line 54) | pub fn data(&self) -> RomData { constant HOMEBREW_ROMS (line 80) | pub const HOMEBREW_ROMS: [RomAsset; 18] = rom_assets!( FILE: tetanes/src/nes/version.rs type Fetcher (line 11) | pub struct Fetcher { method create_client (line 28) | fn create_client() -> Option { method update_available (line 42) | pub fn update_available(&self, version: &'static str) -> anyhow::Resul... method is_newer (line 109) | fn is_newer(new: &str, old: &str) -> bool { method default (line 18) | fn default() -> Self { type Version (line 120) | pub struct Version { method new (line 132) | pub fn new() -> Self { method current (line 139) | pub const fn current(&self) -> &str { method latest (line 143) | pub fn latest(&self) -> String { method set_latest (line 147) | pub fn set_latest(&mut self, version: String) { method requires_updates (line 151) | pub const fn requires_updates(&self) -> bool { method check_for_updates (line 156) | pub const fn check_for_updates( method check_for_updates (line 164) | pub fn check_for_updates( method install_update_and_restart (line 209) | pub fn install_update_and_restart(&mut self) -> anyhow::Result<()> { method default (line 126) | fn default() -> Self { FILE: tetanes/src/opts.rs type FourPlayer (line 7) | pub(crate) struct FourPlayer(tetanes_core::input::FourPlayer); method value_variants (line 10) | fn value_variants<'a>() -> &'a [Self] { method to_possible_value (line 15) | fn to_possible_value(&self) -> Option { type RamState (line 21) | pub(crate) struct RamState(tetanes_core::mem::RamState); method value_variants (line 24) | fn value_variants<'a>() -> &'a [Self] { method to_possible_value (line 29) | fn to_possible_value(&self) -> Option { type NesRegion (line 35) | pub(crate) struct NesRegion(tetanes_core::common::NesRegion); method value_variants (line 38) | fn value_variants<'a>() -> &'a [Self] { method to_possible_value (line 43) | fn to_possible_value(&self) -> Option { type Opts (line 52) | pub struct Opts { method load (line 111) | pub fn load(self) -> anyhow::Result { FILE: tetanes/src/platform.rs type Initialize (line 7) | pub trait Initialize { method initialize (line 9) | fn initialize(&mut self) -> anyhow::Result<()>; type BuilderExt (line 13) | pub trait BuilderExt { method with_platform (line 15) | fn with_platform(self, title: &str) -> Self; function open_file_dialog (line 19) | pub fn open_file_dialog( function speak_text (line 30) | pub fn speak_text(text: &str) { function constrain_window_to_viewport (line 38) | pub fn constrain_window_to_viewport( type Feature (line 50) | pub enum Feature { FILE: tetanes/src/sys.rs type DiskUsage (line 7) | pub struct DiskUsage { type SystemStats (line 15) | pub struct SystemStats { type SystemInfo (line 21) | pub trait SystemInfo { method update (line 22) | fn update(&mut self); method stats (line 23) | fn stats(&self) -> Option; FILE: tetanes/src/sys/info/os.rs type System (line 6) | pub struct System { method default (line 12) | fn default() -> Self { method update (line 43) | fn update(&mut self) { method stats (line 63) | fn stats(&self) -> Option { FILE: tetanes/src/sys/info/wasm.rs type System (line 4) | pub struct System {} method update (line 7) | fn update(&mut self) {} method stats (line 9) | fn stats(&self) -> Option { FILE: tetanes/src/sys/logging/os.rs type Log (line 12) | pub struct Log { function init_impl (line 16) | pub fn init_impl(registry: S) -> anyhow::Result<(impl SubscriberInitE... FILE: tetanes/src/sys/logging/wasm.rs type Log (line 10) | pub struct Log; function init_impl (line 12) | pub fn init_impl(registry: S) -> anyhow::Result<(impl SubscriberInitE... FILE: tetanes/src/sys/platform/os.rs function open_file_dialog_impl (line 10) | pub fn open_file_dialog_impl( function speak_text_impl (line 26) | pub const fn speak_text_impl(_text: &str) {} method initialize (line 30) | fn initialize(&mut self) -> anyhow::Result<()> { method initialize (line 47) | fn initialize(&mut self) -> anyhow::Result<()> { method with_platform (line 54) | fn with_platform(self, _title: &str) -> Self { function constrain_window_to_viewport_impl (line 102) | pub fn constrain_window_to_viewport_impl( FILE: tetanes/src/sys/platform/wasm.rs constant BIN_NAME (line 25) | const BIN_NAME: &str = env!("CARGO_PKG_NAME"); constant VERSION (line 26) | const VERSION: &str = env!("CARGO_PKG_VERSION"); constant OS_OPTIONS (line 27) | const OS_OPTIONS: [(Os, Arch, &str); 5] = [ type System (line 36) | pub struct System; function open_file_dialog_impl (line 39) | pub fn open_file_dialog_impl( function speak_text_impl (line 70) | pub fn speak_text_impl(text: &str) { function on_error (line 92) | fn on_error(tx: &NesEventProxy, err: JsValue) { function set_resize_handler (line 101) | fn set_resize_handler(window: &web_sys::Window, tx: &NesEventProxy) { function set_file_onload_handler (line 130) | fn set_file_onload_handler( function set_file_onchange_handlers (line 165) | fn set_file_onchange_handlers( function constrain_window_to_viewport_impl (line 232) | pub fn constrain_window_to_viewport_impl( function set_clipboard_text (line 277) | pub fn set_clipboard_text(state: &Rc>, text: String) -> R... function process_input (line 306) | pub fn process_input( type Os (line 406) | enum Os { method fmt (line 416) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type Arch (line 430) | enum Arch { method fmt (line 436) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { function platform_to_string (line 446) | const fn platform_to_string(os: Os, arch: Arch) -> &'static str { function user_agent_data (line 474) | fn user_agent_data(this: &NavigatorExt) -> Option; function get_high_entropy_values (line 478) | async fn get_high_entropy_values(this: &NavigatorUAData, hints: Vec bool; function platform (line 486) | fn platform(this: &HighEntropyValues) -> String; function architecture (line 490) | fn architecture(this: &HighEntropyValues) -> String; function detect_user_platform (line 494) | async fn detect_user_platform() -> anyhow::Result<(Os, Arch)> { function download_url_by_os (line 552) | fn download_url_by_os(os: Os, arch: Arch) -> String { function set_download_versions (line 564) | fn set_download_versions(document: &web_sys::Document) { function finish_loading (line 634) | fn finish_loading(document: &web_sys::Document, tx: &NesEventProxy) -> a... method initialize (line 646) | fn initialize(&mut self) -> anyhow::Result<()> { method initialize (line 664) | fn initialize(&mut self) -> anyhow::Result<()> { function download_save_states (line 797) | pub fn download_save_states() -> anyhow::Result<()> { method with_platform (line 857) | fn with_platform(self, _title: &str) -> Self { constant CANVAS (line 866) | pub(super) const CANVAS: &str = "frame"; constant LOADING_STATUS (line 867) | pub(super) const LOADING_STATUS: &str = "loading-status"; constant ROM_INPUT (line 868) | pub(super) const ROM_INPUT: &str = "load-rom"; constant REPLAY_INPUT (line 869) | pub(super) const REPLAY_INPUT: &str = "load-replay"; constant VERSION (line 870) | pub(super) const VERSION: &str = "version"; constant VERSION_DOWNLOAD (line 871) | pub(super) const VERSION_DOWNLOAD: &str = "version-download"; constant VERSION_OPTIONS (line 872) | pub(super) const VERSION_OPTIONS: &str = "version-options"; constant SELECTED_VERSION (line 873) | pub(super) const SELECTED_VERSION: &str = "selected-version"; constant WINDOWS_X86_LINK (line 874) | pub(super) const WINDOWS_X86_LINK: &str = "x86_64-pc-windows-msvc"; constant MACOS_X86_LINK (line 875) | pub(super) const MACOS_X86_LINK: &str = "x86_64-apple-darwin"; constant MACOS_AARCH64_LINK (line 876) | pub(super) const MACOS_AARCH64_LINK: &str = "aarch64-apple-darwin"; constant LINUX_X86_LINK (line 877) | pub(super) const LINUX_X86_LINK: &str = "x86_64-unknown-linux-gnu"; function get_canvas (line 881) | pub fn get_canvas() -> Option { function focus_canvas (line 889) | pub fn focus_canvas() { FILE: tetanes/src/sys/thread/os.rs function spawn_impl (line 5) | pub fn spawn_impl(future: F) function park_timeout_impl (line 14) | pub fn park_timeout_impl(dur: Duration) { function sleep_impl (line 28) | pub async fn sleep_impl(dur: Duration) { FILE: tetanes/src/sys/thread/wasm.rs function spawn_impl (line 7) | pub fn spawn_impl(future: F) function park_timeout_impl (line 16) | pub fn park_timeout_impl(_dur: Duration) {} function sleep_impl (line 19) | pub async fn sleep_impl(dur: Duration) { FILE: tetanes/src/thread.rs function spawn (line 6) | pub fn spawn(future: F) function park_timeout (line 15) | pub fn park_timeout(dur: Duration) { function sleep (line 20) | pub async fn sleep(dur: Duration) {