[INFO] updating cached repository https://github.com/Valtis/RustNes [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"` [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 836905877e12c5859cfc82be0fd03dc7beb0b771 [INFO] testing Valtis/RustNes against 1.44.0 for beta-1.45-1 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes" "/workspace/builds/worker-10/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-10/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Valtis/RustNes on toolchain 1.44.0 [INFO] running `"/workspace/cargo-home/bin/cargo" "+1.44.0" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/Valtis/RustNes [INFO] finished tweaking git repo https://github.com/Valtis/RustNes [INFO] tweaked toml for git repo https://github.com/Valtis/RustNes written to /workspace/builds/worker-10/source/Cargo.toml [INFO] crate git repo https://github.com/Valtis/RustNes already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+1.44.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "build" "--frozen"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 3a8d8e043e53737dd9750a4ceb924d21e647a720327d2d19913be8975746b390 [INFO] running `"docker" "start" "-a" "3a8d8e043e53737dd9750a4ceb924d21e647a720327d2d19913be8975746b390"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling sdl2-sys v0.30.0 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Compiling time v0.1.37 [INFO] [stderr] Compiling num-integer v0.1.34 [INFO] [stderr] Compiling num-iter v0.1.33 [INFO] [stderr] Compiling num v0.1.37 [INFO] [stderr] Compiling sdl2 v0.30.0 [INFO] [stderr] Compiling nes v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ppu/mod.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | try!(write!(f, "{:?}", self.registers)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AudioCallback`, `AudioDevice` [INFO] [stderr] --> src/console/mod.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/console/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:94:51 [INFO] [stderr] | [INFO] [stderr] 94 | let rom_mem = Rc::new(RefCell::new(rom as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | ) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:63:50 [INFO] [stderr] | [INFO] [stderr] 63 | let volume_envelope_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:76:31 [INFO] [stderr] | [INFO] [stderr] 76 | let shift_count = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:89:35 [INFO] [stderr] | [INFO] [stderr] 89 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:33:34 [INFO] [stderr] | [INFO] [stderr] 33 | let counter_reload = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:43:35 [INFO] [stderr] | [INFO] [stderr] 43 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:38:41 [INFO] [stderr] | [INFO] [stderr] 38 | let volume_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:50:30 [INFO] [stderr] | [INFO] [stderr] 50 | let rate_index = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | let bit_1 = (0b0000_0000_0000_0001 & self.shift_register); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | memory: Option>>>, [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/dmc_channel.rs:186:40 [INFO] [stderr] | [INFO] [stderr] 186 | self.output.output_level = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:245:54 [INFO] [stderr] | [INFO] [stderr] 245 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::envelope::Envelope` [INFO] [stderr] --> src/apu/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use self::envelope::Envelope; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::sweep::Sweep` [INFO] [stderr] --> src/apu/mod.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use self::sweep::Sweep; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::VecDeque` [INFO] [stderr] --> src/apu/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | use std::collections::VecDeque; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | audio_queue: Box>, [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:261:33 [INFO] [stderr] | [INFO] [stderr] 261 | pub fn new(audio_queue: Box>) -> Apu<'a> { [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/mod.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | ((cpu_frequency*1000_000.0) / sample_rate as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:370:54 [INFO] [stderr] | [INFO] [stderr] 370 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:17:28 [INFO] [stderr] | [INFO] [stderr] 17 | memory: Rc>>, // reference to memory, so that cpu can use it [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:48:61 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn new(tv_system: &TvSystem, memory: Rc>>) -> Cpu<'a> { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:8:25 [INFO] [stderr] | [INFO] [stderr] 8 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn new(mirroring: Mirroring, rom: Rc>>) -> Vram { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/ppu/renderer.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/ppu/renderer.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/ppu/renderer.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | for y in (0..240) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:57:27 [INFO] [stderr] | [INFO] [stderr] 57 | for x in (0..256) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:58:15 [INFO] [stderr] | [INFO] [stderr] 58 | vram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:121:29 [INFO] [stderr] | [INFO] [stderr] 121 | rom: Rc>>) -> Ppu<'a> { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory/mod.rs:8:21 [INFO] [stderr] | [INFO] [stderr] 8 | impl fmt::Debug for Memory { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:10:25 [INFO] [stderr] | [INFO] [stderr] 10 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | ram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn new(rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:70:46 [INFO] [stderr] | [INFO] [stderr] 70 | ram: Box::new(Ram::new()) as Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/console/mod.rs:43:26 [INFO] [stderr] | [INFO] [stderr] 43 | .unwrap_or_else(|e| panic!("Failed to initialize SDL context")); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consumed_time` [INFO] [stderr] --> src/console/mod.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let consumed_time = time::precise_time_ns() - current_time; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timer_low_bits` [INFO] [stderr] --> src/apu/pulse_channel.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | let timer_low_bits = value; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_buf` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `memory` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:39 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `enabled` [INFO] [stderr] --> src/apu/dmc_channel.rs:139:46 [INFO] [stderr] | [INFO] [stderr] 139 | fn cycle(&mut self, reader: &mut Reader, enabled: bool) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/apu/sweep.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut sweep = (base >> self.shift) as i16; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2132:13 [INFO] [stderr] | [INFO] [stderr] 2132 | let mut divisor:u8; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2133:13 [INFO] [stderr] | [INFO] [stderr] 2133 | let mut color_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2134:13 [INFO] [stderr] | [INFO] [stderr] 2134 | let mut master_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/noise_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE: [u16; 16] = [ [INFO] [stderr] 13 | | 4, 8, 14, 30, 60, 88, 118, 148, [INFO] [stderr] 14 | | 188, 236, 354, 472, 708, 944, 1890, 3778 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/dmc_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE : [u16; 16] = [ [INFO] [stderr] 13 | | 398, 354, 316, 298, 276, 236, 210, 198, [INFO] [stderr] 14 | | 176, 148, 132, 118, 98, 78, 66, 50 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `halted` [INFO] [stderr] --> src/apu/length_counter.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn halted(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `enabled` [INFO] [stderr] --> src/apu/length_counter.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn enabled(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ppu/renderer.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 56 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 12.03s [INFO] running `"docker" "inspect" "3a8d8e043e53737dd9750a4ceb924d21e647a720327d2d19913be8975746b390"` [INFO] running `"docker" "rm" "-f" "3a8d8e043e53737dd9750a4ceb924d21e647a720327d2d19913be8975746b390"` [INFO] [stdout] 3a8d8e043e53737dd9750a4ceb924d21e647a720327d2d19913be8975746b390 [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "test" "--frozen" "--no-run"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 8d188a555ea564b205e24a7198d9ac1cd6ecf8464701f950540e4f4a1d1997f7 [INFO] running `"docker" "start" "-a" "8d188a555ea564b205e24a7198d9ac1cd6ecf8464701f950540e4f4a1d1997f7"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling nes v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ppu/mod.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | try!(write!(f, "{:?}", self.registers)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AudioCallback`, `AudioDevice` [INFO] [stderr] --> src/console/mod.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/console/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:94:51 [INFO] [stderr] | [INFO] [stderr] 94 | let rom_mem = Rc::new(RefCell::new(rom as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | ) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:63:50 [INFO] [stderr] | [INFO] [stderr] 63 | let volume_envelope_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:76:31 [INFO] [stderr] | [INFO] [stderr] 76 | let shift_count = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:89:35 [INFO] [stderr] | [INFO] [stderr] 89 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:33:34 [INFO] [stderr] | [INFO] [stderr] 33 | let counter_reload = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:43:35 [INFO] [stderr] | [INFO] [stderr] 43 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:38:41 [INFO] [stderr] | [INFO] [stderr] 38 | let volume_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:50:30 [INFO] [stderr] | [INFO] [stderr] 50 | let rate_index = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | let bit_1 = (0b0000_0000_0000_0001 & self.shift_register); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | memory: Option>>>, [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/dmc_channel.rs:186:40 [INFO] [stderr] | [INFO] [stderr] 186 | self.output.output_level = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:245:54 [INFO] [stderr] | [INFO] [stderr] 245 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:299:52 [INFO] [stderr] | [INFO] [stderr] 299 | Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/apu/sweep.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::envelope::Envelope` [INFO] [stderr] --> src/apu/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use self::envelope::Envelope; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::sweep::Sweep` [INFO] [stderr] --> src/apu/mod.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use self::sweep::Sweep; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::VecDeque` [INFO] [stderr] --> src/apu/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | use std::collections::VecDeque; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | audio_queue: Box>, [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:261:33 [INFO] [stderr] | [INFO] [stderr] 261 | pub fn new(audio_queue: Box>) -> Apu<'a> { [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/mod.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | ((cpu_frequency*1000_000.0) / sample_rate as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:370:54 [INFO] [stderr] | [INFO] [stderr] 370 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:447:52 [INFO] [stderr] | [INFO] [stderr] 447 | Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:17:28 [INFO] [stderr] | [INFO] [stderr] 17 | memory: Rc>>, // reference to memory, so that cpu can use it [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:48:61 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn new(tv_system: &TvSystem, memory: Rc>>) -> Cpu<'a> { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:2193:78 [INFO] [stderr] | [INFO] [stderr] 2193 | let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:8:25 [INFO] [stderr] | [INFO] [stderr] 8 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn new(mirroring: Mirroring, rom: Rc>>) -> Vram { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:131:75 [INFO] [stderr] | [INFO] [stderr] 131 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/ppu/renderer.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/ppu/renderer.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/ppu/renderer.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | for y in (0..240) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:57:27 [INFO] [stderr] | [INFO] [stderr] 57 | for x in (0..256) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:58:15 [INFO] [stderr] | [INFO] [stderr] 58 | vram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:121:29 [INFO] [stderr] | [INFO] [stderr] 121 | rom: Rc>>) -> Ppu<'a> { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `rom::*` [INFO] [stderr] --> src/ppu/mod.rs:788:9 [INFO] [stderr] | [INFO] [stderr] 788 | use rom::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:829:75 [INFO] [stderr] | [INFO] [stderr] 829 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory/mod.rs:8:21 [INFO] [stderr] | [INFO] [stderr] 8 | impl fmt::Debug for Memory { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:10:25 [INFO] [stderr] | [INFO] [stderr] 10 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | ram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn new(rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:70:46 [INFO] [stderr] | [INFO] [stderr] 70 | ram: Box::new(Ram::new()) as Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `memory::*` [INFO] [stderr] --> src/memory_bus/mod.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | use memory::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ppu::*` [INFO] [stderr] --> src/memory_bus/mod.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | use ppu::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `AudioQueue` [INFO] [stderr] --> src/memory_bus/mod.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | use self::sdl2::audio::{AudioQueue}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:146:75 [INFO] [stderr] | [INFO] [stderr] 146 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `memory::*` [INFO] [stderr] --> src/ram/mod.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | use memory::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/console/mod.rs:43:26 [INFO] [stderr] | [INFO] [stderr] 43 | .unwrap_or_else(|e| panic!("Failed to initialize SDL context")); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consumed_time` [INFO] [stderr] --> src/console/mod.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let consumed_time = time::precise_time_ns() - current_time; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timer_low_bits` [INFO] [stderr] --> src/apu/pulse_channel.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | let timer_low_bits = value; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_buf` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `memory` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:39 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `enabled` [INFO] [stderr] --> src/apu/dmc_channel.rs:139:46 [INFO] [stderr] | [INFO] [stderr] 139 | fn cycle(&mut self, reader: &mut Reader, enabled: bool) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/dmc_channel.rs:286:28 [INFO] [stderr] | [INFO] [stderr] 286 | fn read(&mut self, address: u16) -> u8 { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/dmc_channel.rs:290:29 [INFO] [stderr] | [INFO] [stderr] 290 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/apu/dmc_channel.rs:290:43 [INFO] [stderr] | [INFO] [stderr] 290 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slice` [INFO] [stderr] --> src/apu/mod.rs:413:29 [INFO] [stderr] | [INFO] [stderr] 413 | fn queue(&mut self, slice: &[f32]) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/mod.rs:431:28 [INFO] [stderr] | [INFO] [stderr] 431 | fn read(&mut self, address: u16) -> u8 { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/mod.rs:435:29 [INFO] [stderr] | [INFO] [stderr] 435 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/apu/mod.rs:435:43 [INFO] [stderr] | [INFO] [stderr] 435 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels` [INFO] [stderr] --> src/ppu/mod.rs:823:30 [INFO] [stderr] | [INFO] [stderr] 823 | fn render(&mut self, pixels: &Vec) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels` [INFO] [stderr] --> src/memory_bus/mod.rs:105:30 [INFO] [stderr] | [INFO] [stderr] 105 | fn render(&mut self, pixels: &Vec) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slice` [INFO] [stderr] --> src/memory_bus/mod.rs:168:29 [INFO] [stderr] | [INFO] [stderr] 168 | fn queue(&mut self, slice: &[f32]) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/apu/triangle_channel.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | let mut channel = create_test_channel(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/apu/sweep.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut sweep = (base >> self.shift) as i16; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2132:13 [INFO] [stderr] | [INFO] [stderr] 2132 | let mut divisor:u8; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2133:13 [INFO] [stderr] | [INFO] [stderr] 2133 | let mut color_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2134:13 [INFO] [stderr] | [INFO] [stderr] 2134 | let mut master_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/noise_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE: [u16; 16] = [ [INFO] [stderr] 13 | | 4, 8, 14, 30, 60, 88, 118, 148, [INFO] [stderr] 14 | | 188, 236, 354, 472, 708, 944, 1890, 3778 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/dmc_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE : [u16; 16] = [ [INFO] [stderr] 13 | | 398, 354, 316, 298, 276, 236, 210, 198, [INFO] [stderr] 14 | | 176, 148, 132, 118, 98, 78, 66, 50 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: function `writing_to_0x400B_loads_length_counter` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:173:8 [INFO] [stderr] | [INFO] [stderr] 173 | fn writing_to_0x400B_loads_length_counter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_loads_length_counter` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `writing_to_0x400B_sets_linear_counter_reload_flag` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:229:8 [INFO] [stderr] | [INFO] [stderr] 229 | fn writing_to_0x400B_sets_linear_counter_reload_flag() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_sets_linear_counter_reload_flag` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x400A_sets_timer_low_bits` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:246:8 [INFO] [stderr] | [INFO] [stderr] 246 | fn write_to_0x400A_sets_timer_low_bits() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_a_sets_timer_low_bits` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x400B_sets_timer_high_bits` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:254:8 [INFO] [stderr] | [INFO] [stderr] 254 | fn write_to_0x400B_sets_timer_high_bits() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_b_sets_timer_high_bits` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:318:27 [INFO] [stderr] | [INFO] [stderr] 318 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(overflowing_literals)]` on by default [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:333:27 [INFO] [stderr] | [INFO] [stderr] 333 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:355:27 [INFO] [stderr] | [INFO] [stderr] 355 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:368:27 [INFO] [stderr] | [INFO] [stderr] 368 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:382:27 [INFO] [stderr] | [INFO] [stderr] 382 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:394:27 [INFO] [stderr] | [INFO] [stderr] 394 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:411:27 [INFO] [stderr] | [INFO] [stderr] 411 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:422:27 [INFO] [stderr] | [INFO] [stderr] 422 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:434:27 [INFO] [stderr] | [INFO] [stderr] 434 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:450:27 [INFO] [stderr] | [INFO] [stderr] 450 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:463:27 [INFO] [stderr] | [INFO] [stderr] 463 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:476:27 [INFO] [stderr] | [INFO] [stderr] 476 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:490:27 [INFO] [stderr] | [INFO] [stderr] 490 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:506:27 [INFO] [stderr] | [INFO] [stderr] 506 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:525:27 [INFO] [stderr] | [INFO] [stderr] 525 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:536:27 [INFO] [stderr] | [INFO] [stderr] 536 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/mod.rs:464:27 [INFO] [stderr] | [INFO] [stderr] 464 | apu.write(0x4012, 0x100); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/mod.rs:495:27 [INFO] [stderr] | [INFO] [stderr] 495 | apu.write(0x4012, 0x100); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:799:8 [INFO] [stderr] | [INFO] [stderr] 799 | fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_1_envelope` [INFO] [stderr] [INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:836:8 [INFO] [stderr] | [INFO] [stderr] 836 | fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_2_envelope` [INFO] [stderr] [INFO] [stderr] warning: function `writing_0xC0_into_0x4017_should_clear_frame_interrupt` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:974:8 [INFO] [stderr] | [INFO] [stderr] 974 | fn writing_0xC0_into_0x4017_should_clear_frame_interrupt() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x_c0_into_0x4017_should_clear_frame_interrupt` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/cpu/mod.rs:6924:28 [INFO] [stderr] | [INFO] [stderr] 6924 | cpu.status_flags = 0x103; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x103` (decimal `259`) does not fit into the type `u8` and will become `3u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:150:8 [INFO] [stderr] | [INFO] [stderr] 150 | fn write_to_0x1FFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x1FFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:157:8 [INFO] [stderr] | [INFO] [stderr] 157 | fn read_from_0x1FFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x1_fff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `vram_address_0x3EFF_mirrors_to_0x2EFF` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:371:8 [INFO] [stderr] | [INFO] [stderr] 371 | fn vram_address_0x3EFF_mirrors_to_0x2EFF() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `vram_address_0x3_eff_mirrors_to_0x2_eff` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:378:8 [INFO] [stderr] | [INFO] [stderr] 378 | fn write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f00_writes_to_beginning_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:386:8 [INFO] [stderr] | [INFO] [stderr] 386 | fn read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f00_reads_from_beginning_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:393:8 [INFO] [stderr] | [INFO] [stderr] 393 | fn write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_f_writes_to_end_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:401:8 [INFO] [stderr] | [INFO] [stderr] 401 | fn read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_f_reads_from_end_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:408:8 [INFO] [stderr] | [INFO] [stderr] 408 | fn write_to_vram_address_0x3F10_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f10_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:415:8 [INFO] [stderr] | [INFO] [stderr] 415 | fn read_from_vram_address_0x3F10_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f10_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:422:8 [INFO] [stderr] | [INFO] [stderr] 422 | fn write_to_vram_address_0x3F14_is_mirrored_to_0x3F04() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f14_is_mirrored_to_0x3_f04` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:429:8 [INFO] [stderr] | [INFO] [stderr] 429 | fn read_from_vram_address_0x3F14_is_mirrored_to_0x3F04() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f14_is_mirrored_to_0x3_f04` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:437:8 [INFO] [stderr] | [INFO] [stderr] 437 | fn write_to_vram_address_0x3F18_is_mirrored_to_0x3F08() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f18_is_mirrored_to_0x3_f08` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:444:8 [INFO] [stderr] | [INFO] [stderr] 444 | fn read_from_vram_address_0x3F18_is_mirrored_to_0x3F08() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f18_is_mirrored_to_0x3_f08` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:451:8 [INFO] [stderr] | [INFO] [stderr] 451 | fn write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:458:8 [INFO] [stderr] | [INFO] [stderr] 458 | fn read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:466:8 [INFO] [stderr] | [INFO] [stderr] 466 | fn write_to_vram_address_0x3F20_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f20_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:473:8 [INFO] [stderr] | [INFO] [stderr] 473 | fn read_from_vram_address_0x3F20_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f20_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:480:8 [INFO] [stderr] | [INFO] [stderr] 480 | fn write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:487:8 [INFO] [stderr] | [INFO] [stderr] 487 | fn read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:494:8 [INFO] [stderr] | [INFO] [stderr] 494 | fn write_to_vram_address_0x3F45_is_mirrored_to_0x3F05() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f45_is_mirrored_to_0x3_f05` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:501:8 [INFO] [stderr] | [INFO] [stderr] 501 | fn read_from_vram_address_0x3F45_is_mirrored_to_0x3F05() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f45_is_mirrored_to_0x3_f05` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ppu/renderer.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1076:8 [INFO] [stderr] | [INFO] [stderr] 1076 | fn read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1085:8 [INFO] [stderr] | [INFO] [stderr] 1085 | fn read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1095:8 [INFO] [stderr] | [INFO] [stderr] 1095 | fn read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/ppu/mod.rs:1108:32 [INFO] [stderr] | [INFO] [stderr] 1108 | ppu.vram.write(0x3F00, 0x200); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x200` (decimal `512`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `read_from_address_0x200A_is_mirrored_to_status_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1158:8 [INFO] [stderr] | [INFO] [stderr] 1158 | fn read_from_address_0x200A_is_mirrored_to_status_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_0x200_a_is_mirrored_to_status_register` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1165:8 [INFO] [stderr] | [INFO] [stderr] 1165 | fn write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_address_between_0x2008_and_0x3_fff_is_mirrored_correctly` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1172:8 [INFO] [stderr] | [INFO] [stderr] 1172 | fn read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_between_0x2008_and_0x3_fff_is_mirrored_correctly` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x3FFF_writes_to_ppu_data_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1181:8 [INFO] [stderr] | [INFO] [stderr] 1181 | fn write_to_0x3FFF_writes_to_ppu_data_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x3_fff_writes_to_ppu_data_register` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x3FFF_reads_from_ppu_data_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1189:8 [INFO] [stderr] | [INFO] [stderr] 1189 | fn read_from_0x3FFF_reads_from_ppu_data_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x3_fff_reads_from_ppu_data_register` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_ram` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:188:8 [INFO] [stderr] | [INFO] [stderr] 188 | fn write_to_0x1FFF_is_redirected_to_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_at_0x1FFF_is_read_from_ram` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:209:8 [INFO] [stderr] | [INFO] [stderr] 209 | fn read_at_0x1FFF_is_read_from_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x1_fff_is_read_from_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0xFFFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:230:8 [INFO] [stderr] | [INFO] [stderr] 230 | fn write_to_0xFFFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x_ffff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_at_0xFFFF_is_read_from_rom` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:251:8 [INFO] [stderr] | [INFO] [stderr] 251 | fn read_at_0xFFFF_is_read_from_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x_ffff_is_read_from_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_above_0x1FFF_panics` should have a snake case name [INFO] [stderr] --> src/ram/mod.rs:98:8 [INFO] [stderr] | [INFO] [stderr] 98 | fn read_from_above_0x1FFF_panics() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_above_0x1_fff_panics` [INFO] [stderr] [INFO] [stderr] warning: function `write_from_above_0x1FFF_panics` should have a snake case name [INFO] [stderr] --> src/ram/mod.rs:105:8 [INFO] [stderr] | [INFO] [stderr] 105 | fn write_from_above_0x1FFF_panics() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_from_above_0x1_fff_panics` [INFO] [stderr] [INFO] [stderr] warning: 139 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 12.27s [INFO] running `"docker" "inspect" "8d188a555ea564b205e24a7198d9ac1cd6ecf8464701f950540e4f4a1d1997f7"` [INFO] running `"docker" "rm" "-f" "8d188a555ea564b205e24a7198d9ac1cd6ecf8464701f950540e4f4a1d1997f7"` [INFO] [stdout] 8d188a555ea564b205e24a7198d9ac1cd6ecf8464701f950540e4f4a1d1997f7 [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+1.44.0" "test" "--frozen"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] ad8a1379ee8d0f164c786b16319fb17dbd3a43093ff8a04ec544e68b11066688 [INFO] running `"docker" "start" "-a" "ad8a1379ee8d0f164c786b16319fb17dbd3a43093ff8a04ec544e68b11066688"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ppu/mod.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | try!(write!(f, "{:?}", self.registers)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AudioCallback`, `AudioDevice` [INFO] [stderr] --> src/console/mod.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/console/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:94:51 [INFO] [stderr] | [INFO] [stderr] 94 | let rom_mem = Rc::new(RefCell::new(rom as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/console/mod.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | ) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:63:50 [INFO] [stderr] | [INFO] [stderr] 63 | let volume_envelope_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:76:31 [INFO] [stderr] | [INFO] [stderr] 76 | let shift_count = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/pulse_channel.rs:89:35 [INFO] [stderr] | [INFO] [stderr] 89 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:33:34 [INFO] [stderr] | [INFO] [stderr] 33 | let counter_reload = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/triangle_channel.rs:43:35 [INFO] [stderr] | [INFO] [stderr] 43 | let timer_high_bits = (0b0000_0111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:38:41 [INFO] [stderr] | [INFO] [stderr] 38 | let volume_divider_period = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:50:30 [INFO] [stderr] | [INFO] [stderr] 50 | let rate_index = (0b0000_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/noise_channel.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | let bit_1 = (0b0000_0000_0000_0001 & self.shift_register); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:25:35 [INFO] [stderr] | [INFO] [stderr] 25 | memory: Option>>>, [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/dmc_channel.rs:186:40 [INFO] [stderr] | [INFO] [stderr] 186 | self.output.output_level = (0b0111_1111 & value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:245:54 [INFO] [stderr] | [INFO] [stderr] 245 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/dmc_channel.rs:299:52 [INFO] [stderr] | [INFO] [stderr] 299 | Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/apu/sweep.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::envelope::Envelope` [INFO] [stderr] --> src/apu/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use self::envelope::Envelope; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::sweep::Sweep` [INFO] [stderr] --> src/apu/mod.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use self::sweep::Sweep; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::VecDeque` [INFO] [stderr] --> src/apu/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | use std::collections::VecDeque; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | audio_queue: Box>, [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:261:33 [INFO] [stderr] | [INFO] [stderr] 261 | pub fn new(audio_queue: Box>) -> Apu<'a> { [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Audio` [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/apu/mod.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | ((cpu_frequency*1000_000.0) / sample_rate as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:370:54 [INFO] [stderr] | [INFO] [stderr] 370 | pub fn set_memory(&mut self, mem: Rc>>) { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/apu/mod.rs:447:52 [INFO] [stderr] | [INFO] [stderr] 447 | Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:17:28 [INFO] [stderr] | [INFO] [stderr] 17 | memory: Rc>>, // reference to memory, so that cpu can use it [INFO] [stderr] | ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:48:61 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn new(tv_system: &TvSystem, memory: Rc>>) -> Cpu<'a> { [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/cpu/mod.rs:2193:78 [INFO] [stderr] | [INFO] [stderr] 2193 | let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:8:25 [INFO] [stderr] | [INFO] [stderr] 8 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn new(mirroring: Mirroring, rom: Rc>>) -> Vram { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/vram.rs:131:75 [INFO] [stderr] | [INFO] [stderr] 131 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/ppu/renderer.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/ppu/renderer.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/ppu/renderer.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | for y in (0..240) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` iterator expression [INFO] [stderr] --> src/ppu/renderer.rs:57:27 [INFO] [stderr] | [INFO] [stderr] 57 | for x in (0..256) { [INFO] [stderr] | ^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:58:15 [INFO] [stderr] | [INFO] [stderr] 58 | vram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | renderer: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:121:29 [INFO] [stderr] | [INFO] [stderr] 121 | rom: Rc>>) -> Ppu<'a> { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `rom::*` [INFO] [stderr] --> src/ppu/mod.rs:788:9 [INFO] [stderr] | [INFO] [stderr] 788 | use rom::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ppu/mod.rs:829:75 [INFO] [stderr] | [INFO] [stderr] 829 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory/mod.rs:8:21 [INFO] [stderr] | [INFO] [stderr] 8 | impl fmt::Debug for Memory { [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:10:25 [INFO] [stderr] | [INFO] [stderr] 10 | rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | ram: Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn new(rom: Rc>>, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:70:46 [INFO] [stderr] | [INFO] [stderr] 70 | ram: Box::new(Ram::new()) as Box, [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `memory::*` [INFO] [stderr] --> src/memory_bus/mod.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | use memory::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ppu::*` [INFO] [stderr] --> src/memory_bus/mod.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | use ppu::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `AudioQueue` [INFO] [stderr] --> src/memory_bus/mod.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | use self::sdl2::audio::{AudioQueue}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/memory_bus/mod.rs:146:75 [INFO] [stderr] | [INFO] [stderr] 146 | let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box)); [INFO] [stderr] | ^^^^^^ help: use `dyn`: `dyn Memory` [INFO] [stderr] [INFO] [stderr] warning: unused import: `memory::*` [INFO] [stderr] --> src/ram/mod.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | use memory::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/console/mod.rs:43:26 [INFO] [stderr] | [INFO] [stderr] 43 | .unwrap_or_else(|e| panic!("Failed to initialize SDL context")); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consumed_time` [INFO] [stderr] --> src/console/mod.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let consumed_time = time::precise_time_ns() - current_time; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timer_low_bits` [INFO] [stderr] --> src/apu/pulse_channel.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | let timer_low_bits = value; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_buf` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `memory` [INFO] [stderr] --> src/apu/dmc_channel.rs:71:39 [INFO] [stderr] | [INFO] [stderr] 71 | let new_buf = if let Some(ref memory) = self.memory { [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `enabled` [INFO] [stderr] --> src/apu/dmc_channel.rs:139:46 [INFO] [stderr] | [INFO] [stderr] 139 | fn cycle(&mut self, reader: &mut Reader, enabled: bool) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/dmc_channel.rs:286:28 [INFO] [stderr] | [INFO] [stderr] 286 | fn read(&mut self, address: u16) -> u8 { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/dmc_channel.rs:290:29 [INFO] [stderr] | [INFO] [stderr] 290 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/apu/dmc_channel.rs:290:43 [INFO] [stderr] | [INFO] [stderr] 290 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slice` [INFO] [stderr] --> src/apu/mod.rs:413:29 [INFO] [stderr] | [INFO] [stderr] 413 | fn queue(&mut self, slice: &[f32]) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/mod.rs:431:28 [INFO] [stderr] | [INFO] [stderr] 431 | fn read(&mut self, address: u16) -> u8 { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/apu/mod.rs:435:29 [INFO] [stderr] | [INFO] [stderr] 435 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/apu/mod.rs:435:43 [INFO] [stderr] | [INFO] [stderr] 435 | fn write(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels` [INFO] [stderr] --> src/ppu/mod.rs:823:30 [INFO] [stderr] | [INFO] [stderr] 823 | fn render(&mut self, pixels: &Vec) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pixels` [INFO] [stderr] --> src/memory_bus/mod.rs:105:30 [INFO] [stderr] | [INFO] [stderr] 105 | fn render(&mut self, pixels: &Vec) { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slice` [INFO] [stderr] --> src/memory_bus/mod.rs:168:29 [INFO] [stderr] | [INFO] [stderr] 168 | fn queue(&mut self, slice: &[f32]) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/apu/triangle_channel.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | let mut channel = create_test_channel(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/apu/sweep.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut sweep = (base >> self.shift) as i16; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2132:13 [INFO] [stderr] | [INFO] [stderr] 2132 | let mut divisor:u8; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2133:13 [INFO] [stderr] | [INFO] [stderr] 2133 | let mut color_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/cpu/mod.rs:2134:13 [INFO] [stderr] | [INFO] [stderr] 2134 | let mut master_freq:f64; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/noise_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE: [u16; 16] = [ [INFO] [stderr] 13 | | 4, 8, 14, 30, 60, 88, 118, 148, [INFO] [stderr] 14 | | 188, 236, 354, 472, 708, 944, 1890, 3778 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `PAL_RATE` [INFO] [stderr] --> src/apu/dmc_channel.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / static PAL_RATE : [u16; 16] = [ [INFO] [stderr] 13 | | 398, 354, 316, 298, 276, 236, 210, 198, [INFO] [stderr] 14 | | 176, 148, 132, 118, 98, 78, 66, 50 [INFO] [stderr] 15 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: function `writing_to_0x400B_loads_length_counter` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:173:8 [INFO] [stderr] | [INFO] [stderr] 173 | fn writing_to_0x400B_loads_length_counter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_loads_length_counter` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `writing_to_0x400B_sets_linear_counter_reload_flag` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:229:8 [INFO] [stderr] | [INFO] [stderr] 229 | fn writing_to_0x400B_sets_linear_counter_reload_flag() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_sets_linear_counter_reload_flag` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x400A_sets_timer_low_bits` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:246:8 [INFO] [stderr] | [INFO] [stderr] 246 | fn write_to_0x400A_sets_timer_low_bits() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_a_sets_timer_low_bits` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x400B_sets_timer_high_bits` should have a snake case name [INFO] [stderr] --> src/apu/triangle_channel.rs:254:8 [INFO] [stderr] | [INFO] [stderr] 254 | fn write_to_0x400B_sets_timer_high_bits() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_b_sets_timer_high_bits` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:318:27 [INFO] [stderr] | [INFO] [stderr] 318 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(overflowing_literals)]` on by default [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:333:27 [INFO] [stderr] | [INFO] [stderr] 333 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:355:27 [INFO] [stderr] | [INFO] [stderr] 355 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:368:27 [INFO] [stderr] | [INFO] [stderr] 368 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:382:27 [INFO] [stderr] | [INFO] [stderr] 382 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:394:27 [INFO] [stderr] | [INFO] [stderr] 394 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:411:27 [INFO] [stderr] | [INFO] [stderr] 411 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:422:27 [INFO] [stderr] | [INFO] [stderr] 422 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:434:27 [INFO] [stderr] | [INFO] [stderr] 434 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:450:27 [INFO] [stderr] | [INFO] [stderr] 450 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:463:27 [INFO] [stderr] | [INFO] [stderr] 463 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:476:27 [INFO] [stderr] | [INFO] [stderr] 476 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:490:27 [INFO] [stderr] | [INFO] [stderr] 490 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:506:27 [INFO] [stderr] | [INFO] [stderr] 506 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:525:27 [INFO] [stderr] | [INFO] [stderr] 525 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/dmc_channel.rs:536:27 [INFO] [stderr] | [INFO] [stderr] 536 | dmc.write(0x4012, 0x100); // random mem address, not used here [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/mod.rs:464:27 [INFO] [stderr] | [INFO] [stderr] 464 | apu.write(0x4012, 0x100); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/apu/mod.rs:495:27 [INFO] [stderr] | [INFO] [stderr] 495 | apu.write(0x4012, 0x100); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:799:8 [INFO] [stderr] | [INFO] [stderr] 799 | fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_1_envelope` [INFO] [stderr] [INFO] [stderr] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:836:8 [INFO] [stderr] | [INFO] [stderr] 836 | fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_2_envelope` [INFO] [stderr] [INFO] [stderr] warning: function `writing_0xC0_into_0x4017_should_clear_frame_interrupt` should have a snake case name [INFO] [stderr] --> src/apu/mod.rs:974:8 [INFO] [stderr] | [INFO] [stderr] 974 | fn writing_0xC0_into_0x4017_should_clear_frame_interrupt() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x_c0_into_0x4017_should_clear_frame_interrupt` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/cpu/mod.rs:6924:28 [INFO] [stderr] | [INFO] [stderr] 6924 | cpu.status_flags = 0x103; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x103` (decimal `259`) does not fit into the type `u8` and will become `3u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:150:8 [INFO] [stderr] | [INFO] [stderr] 150 | fn write_to_0x1FFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x1FFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:157:8 [INFO] [stderr] | [INFO] [stderr] 157 | fn read_from_0x1FFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x1_fff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `vram_address_0x3EFF_mirrors_to_0x2EFF` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:371:8 [INFO] [stderr] | [INFO] [stderr] 371 | fn vram_address_0x3EFF_mirrors_to_0x2EFF() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `vram_address_0x3_eff_mirrors_to_0x2_eff` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:378:8 [INFO] [stderr] | [INFO] [stderr] 378 | fn write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f00_writes_to_beginning_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:386:8 [INFO] [stderr] | [INFO] [stderr] 386 | fn read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f00_reads_from_beginning_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:393:8 [INFO] [stderr] | [INFO] [stderr] 393 | fn write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_f_writes_to_end_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:401:8 [INFO] [stderr] | [INFO] [stderr] 401 | fn read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_f_reads_from_end_of_palette_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:408:8 [INFO] [stderr] | [INFO] [stderr] 408 | fn write_to_vram_address_0x3F10_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f10_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:415:8 [INFO] [stderr] | [INFO] [stderr] 415 | fn read_from_vram_address_0x3F10_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f10_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:422:8 [INFO] [stderr] | [INFO] [stderr] 422 | fn write_to_vram_address_0x3F14_is_mirrored_to_0x3F04() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f14_is_mirrored_to_0x3_f04` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:429:8 [INFO] [stderr] | [INFO] [stderr] 429 | fn read_from_vram_address_0x3F14_is_mirrored_to_0x3F04() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f14_is_mirrored_to_0x3_f04` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:437:8 [INFO] [stderr] | [INFO] [stderr] 437 | fn write_to_vram_address_0x3F18_is_mirrored_to_0x3F08() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f18_is_mirrored_to_0x3_f08` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:444:8 [INFO] [stderr] | [INFO] [stderr] 444 | fn read_from_vram_address_0x3F18_is_mirrored_to_0x3F08() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f18_is_mirrored_to_0x3_f08` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:451:8 [INFO] [stderr] | [INFO] [stderr] 451 | fn write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:458:8 [INFO] [stderr] | [INFO] [stderr] 458 | fn read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:466:8 [INFO] [stderr] | [INFO] [stderr] 466 | fn write_to_vram_address_0x3F20_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f20_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:473:8 [INFO] [stderr] | [INFO] [stderr] 473 | fn read_from_vram_address_0x3F20_is_mirrored_to_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f20_is_mirrored_to_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:480:8 [INFO] [stderr] | [INFO] [stderr] 480 | fn write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:487:8 [INFO] [stderr] | [INFO] [stderr] 487 | fn read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:494:8 [INFO] [stderr] | [INFO] [stderr] 494 | fn write_to_vram_address_0x3F45_is_mirrored_to_0x3F05() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f45_is_mirrored_to_0x3_f05` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name [INFO] [stderr] --> src/ppu/vram.rs:501:8 [INFO] [stderr] | [INFO] [stderr] 501 | fn read_from_vram_address_0x3F45_is_mirrored_to_0x3F05() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f45_is_mirrored_to_0x3_f05` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ppu/renderer.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1076:8 [INFO] [stderr] | [INFO] [stderr] 1076 | fn read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1085:8 [INFO] [stderr] | [INFO] [stderr] 1085 | fn read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1095:8 [INFO] [stderr] | [INFO] [stderr] 1095 | fn read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3_f00` [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u8 [INFO] [stderr] --> src/ppu/mod.rs:1108:32 [INFO] [stderr] | [INFO] [stderr] 1108 | ppu.vram.write(0x3F00, 0x200); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the literal `0x200` (decimal `512`) does not fit into the type `u8` and will become `0u8` [INFO] [stderr] = help: consider using `u16` instead [INFO] [stderr] [INFO] [stderr] warning: function `read_from_address_0x200A_is_mirrored_to_status_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1158:8 [INFO] [stderr] | [INFO] [stderr] 1158 | fn read_from_address_0x200A_is_mirrored_to_status_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_0x200_a_is_mirrored_to_status_register` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1165:8 [INFO] [stderr] | [INFO] [stderr] 1165 | fn write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_address_between_0x2008_and_0x3_fff_is_mirrored_correctly` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1172:8 [INFO] [stderr] | [INFO] [stderr] 1172 | fn read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_between_0x2008_and_0x3_fff_is_mirrored_correctly` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x3FFF_writes_to_ppu_data_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1181:8 [INFO] [stderr] | [INFO] [stderr] 1181 | fn write_to_0x3FFF_writes_to_ppu_data_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x3_fff_writes_to_ppu_data_register` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_0x3FFF_reads_from_ppu_data_register` should have a snake case name [INFO] [stderr] --> src/ppu/mod.rs:1189:8 [INFO] [stderr] | [INFO] [stderr] 1189 | fn read_from_0x3FFF_reads_from_ppu_data_register() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x3_fff_reads_from_ppu_data_register` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0x1FFF_is_redirected_to_ram` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:188:8 [INFO] [stderr] | [INFO] [stderr] 188 | fn write_to_0x1FFF_is_redirected_to_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_ram` [INFO] [stderr] [INFO] [stderr] warning: function `read_at_0x1FFF_is_read_from_ram` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:209:8 [INFO] [stderr] | [INFO] [stderr] 209 | fn read_at_0x1FFF_is_read_from_ram() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x1_fff_is_read_from_ram` [INFO] [stderr] [INFO] [stderr] warning: function `write_to_0xFFFF_is_redirected_to_rom` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:230:8 [INFO] [stderr] | [INFO] [stderr] 230 | fn write_to_0xFFFF_is_redirected_to_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x_ffff_is_redirected_to_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_at_0xFFFF_is_read_from_rom` should have a snake case name [INFO] [stderr] --> src/memory_bus/mod.rs:251:8 [INFO] [stderr] | [INFO] [stderr] 251 | fn read_at_0xFFFF_is_read_from_rom() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x_ffff_is_read_from_rom` [INFO] [stderr] [INFO] [stderr] warning: function `read_from_above_0x1FFF_panics` should have a snake case name [INFO] [stderr] --> src/ram/mod.rs:98:8 [INFO] [stderr] | [INFO] [stderr] 98 | fn read_from_above_0x1FFF_panics() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_above_0x1_fff_panics` [INFO] [stderr] [INFO] [stderr] warning: function `write_from_above_0x1FFF_panics` should have a snake case name [INFO] [stderr] --> src/ram/mod.rs:105:8 [INFO] [stderr] | [INFO] [stderr] 105 | fn write_from_above_0x1FFF_panics() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_from_above_0x1_fff_panics` [INFO] [stderr] [INFO] [stderr] warning: 139 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.11s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/nes-f06d530b550fd3b3 [INFO] [stdout] [INFO] [stdout] running 1006 tests [INFO] [stdout] test apu::dmc_channel::tests::channel_is_active_and_then_disabled_after_sample_ends ... ok [INFO] [stdout] test apu::dmc_channel::tests::irq_flag_not_set_when_irq_disabled ... ok [INFO] [stdout] test apu::dmc_channel::tests::writing_0x00_to_0x4015_should_stop_sample ... ok [INFO] [stdout] test apu::dmc_channel::tests::writing_0x00_into_0x4013_should_yield_one_byte_sample ... ok [INFO] [stdout] test apu::dmc_channel::tests::channel_reloads_length_from_0x4013_when_restarting_at_zero_length ... ok [INFO] [stdout] test apu::dmc_channel::tests::irq_flag_is_set_when_sample_ends_and_loop_not_set_and_irq_enabled ... ok [INFO] [stdout] test apu::dmc_channel::tests::disabling_dmc_interrupt_clears_dmc_interrupt_flag ... ok [INFO] [stdout] test apu::dmc_channel::tests::clearing_loop_flag_ends_sample_once_it_reaches_end ... ok [INFO] [stdout] test apu::dmc_channel::tests::looped_sample_does_not_set_irq_flags ... ok [INFO] [stdout] test apu::dmc_channel::tests::one_byte_buffer_is_immediately_filled ... ok [INFO] [stdout] test apu::envelope::tests::divider_period_is_decremented_if_start_flag_is_not_set_and_constant_volume_is_set_when_executing_cycle ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_value_is_decremented_if_start_flag_is_not_set_and_constant_volume_is_not_set_divider_is_zero_before_cycling ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_value_is_decremented_if_start_flag_is_not_set_and_constant_volume_is_set_divider_is_zero_before_cycling ... ok [INFO] [stdout] test apu::envelope::tests::divider_period_is_period_plus_one ... ok [INFO] [stdout] test apu::envelope::tests::envelope_volume_is_counter_value_if_constant_volume_flag_is_clear ... ok [INFO] [stdout] test apu::envelope::tests::start_flag_is_cleared_if_start_flag_is_set_when_executing_cycle ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_value_remains_zero_if_start_flag_is_not_set_and_loop_flag_is_not_set_and_divider_is_zero_before_cycling ... ok [INFO] [stdout] test apu::envelope::tests::envelope_volume_is_not_affected_by_cycling_if_constant_flag_is_set ... ok [INFO] [stdout] test apu::envelope::tests::volume_output_is_the_envelope_period_if_constant_flag_is_set ... ok [INFO] [stdout] test apu::length_counter::tests::counter_is_loaded_with_correct_value_from_the_table ... ok [INFO] [stdout] test apu::length_counter::tests::counter_is_not_cycled_when_already_at_zero ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_cycled_when_halt_flag_is_cleared ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_not_cycled_when_counter_is_halted ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_not_silent_if_counter_has_nonzero_value ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_set_zero_when_disabled ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_silent_after_cycling_to_zero_value ... ok [INFO] [stdout] test apu::length_counter::tests::length_counter_is_silent_if_counter_has_zero_value ... ok [INFO] [stdout] test apu::length_counter::tests::no_value_is_loaded_into_counter_if_counter_is_disabled ... ok [INFO] [stdout] test apu::length_counter::tests::value_is_loaded_into_counter_if_counter_is_enabled ... ok [INFO] [stdout] test apu::linear_counter::tests::counter_is_decremented_if_reload_is_not_set ... ok [INFO] [stdout] test apu::linear_counter::tests::counter_is_not_decremented_if_it_is_zero ... ok [INFO] [stdout] test apu::linear_counter::tests::linear_counter_does_not_silence_channel_if_counter_has_nonzero_value ... ok [INFO] [stdout] test apu::linear_counter::tests::linear_counter_reload_flag_is_cleared_if_control_is_not_set ... ok [INFO] [stdout] test apu::linear_counter::tests::linear_counter_reload_flag_is_not_cleared_if_control_is_set ... ok [INFO] [stdout] test apu::linear_counter::tests::linear_counter_silences_channel_if_counter_is_zero ... ok [INFO] [stdout] test apu::linear_counter::tests::linear_counter_value_is_reloaded_if_reload_flag_is_set ... ok [INFO] [stdout] test apu::pulse_channel::tests::cycle_length_counter_method_actually_cycles_length_counter ... ok [INFO] [stdout] test apu::pulse_channel::tests::disabling_channel_disables_length_counter ... ok [INFO] [stdout] test apu::pulse_channel::tests::enabling_channel_enables_length_counter ... ok [INFO] [stdout] test apu::pulse_channel::tests::output_is_envelope_value_if_length_counter_does_not_silence_channel ... ok [INFO] [stdout] test apu::pulse_channel::tests::output_is_zero_if_length_counter_silences_channel ... ok [INFO] [stdout] test apu::pulse_channel::tests::writing_to_0x4000_sets_length_counter_halt_flag ... ok [INFO] [stdout] test apu::pulse_channel::tests::writing_to_0x4003_loads_length_counter ... ok [INFO] [stdout] test apu::pulse_channel::tests::writing_to_0x4004_sets_length_counter_halt_flag ... ok [INFO] [stdout] test apu::pulse_channel::tests::writing_to_0x4007_loads_length_counter ... ok [INFO] [stdout] test apu::tests::even_jitter_is_handled_correctly ... ok [INFO] [stdout] test apu::dmc_channel::tests::looped_sample_ends_only_when_0x00_is_written_to_0x4015 ... ok [INFO] [stdout] test apu::dmc_channel::tests::writing_0x10_to_0x4015_should_restart_dmc_if_sample_is_finished ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_value_is_not_changed_if_start_flag_is_not_set_and_divider_is_nonzero_before_cycling ... ok [INFO] [stdout] test apu::envelope::tests::divider_period_is_decremented_if_start_flag_is_not_set_and_constant_volume_is_not_set_when_executing_cycle ... ok [INFO] [stdout] test apu::envelope::tests::divider_period_is_wraps_around_if_start_flag_is_not_set_when_executing_cycle ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_is_set_to_15_if_start_flag_is_set ... ok [INFO] [stdout] test apu::dmc_channel::tests::looped_sample_should_reload_length_from_0x4013_when_it_reaches_end ... ok [INFO] [stdout] test apu::envelope::tests::divider_period_is_reloaded_if_start_flag_is_set_when_executing_cycle ... ok [INFO] [stdout] test apu::envelope::tests::envelope_counter_value_is_set_to_15_if_loop_flag_is_set_when_divider_is_zero_and_counter_is_zero_when_cycling ... ok [INFO] [stdout] test apu::tests::pulse_channel_2_length_counter_load_works_and_status_reg_has_value ... ok [INFO] [stdout] test apu::dmc_channel::tests::writing_to_0x4013_should_not_affect_current_length ... ok [INFO] [stdout] test apu::dmc_channel::tests::writing_0x10_to_0x4015_should_not_affect_channel_if_sample_is_active ... ok [INFO] [stdout] test apu::tests::triangle_channel_length_counter_load_works_and_status_reg_has_value ... ok [INFO] [stdout] test apu::tests::pulse_channel_1_length_counter_load_works_and_status_reg_has_value ... ok [INFO] [stdout] test apu::tests::reading_0x4015_does_not_clear_dmc_interrupt ... ok [INFO] [stdout] test apu::dmc_channel::tests::clearing_loop_flag_and_setting_it_again_does_not_stop_loop ... ok [INFO] [stdout] test apu::tests::noise_channel_length_counter_load_works_and_status_reg_has_value ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_noise_channel_envelope ... ok [INFO] [stdout] test apu::tests::reading_0x4015_clears_frame_interrupt ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope ... ok [INFO] [stdout] test apu::tests::frame_interrupt_flag_should_be_set_when_0x00_is_written_into_0x4017 ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_1_length_counter ... ok [INFO] [stdout] test apu::tests::frame_irq_flag_should_be_clear_when_executing_29830_cycles ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_2_sweep_unit ... ok [INFO] [stdout] test apu::tests::frame_irq_flag_should_not_be_set_again_at_29833 ... ok [INFO] [stdout] test apu::tests::frame_irq_flag_should_be_set_again_at_29832 ... ok [INFO] [stdout] test apu::tests::frame_irq_flag_should_be_set_when_executing_29831_cycles ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_noise_channel_length_counter ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_1_sweep_unit ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_triangle_channel_linear_counter ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_triangle_channel_length_counter ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_1_sweep_unit ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_2_envelope ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_2_sweep_unit ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_1_length_counter ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_noise_channel_length_counter ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_1_envelope ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_noise_channel_envelope ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_triange_channel_linear_counter ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_affect_frame_interrupt_flag ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_triange_channel_length_counter ... ok [INFO] [stdout] test apu::tests::frame_interrupt_flag_should_not_be_set_when_0x40_is_written_into_0x4017 ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_2_length_counter ... ok [INFO] [stdout] test apu::tests::writing_to_0x4015_clears_dmc_interrupt_flag ... ok [INFO] [stdout] test apu::timer::tests::timer_is_clocked_when_it_goes_from_zero_to_length ... ok [INFO] [stdout] test apu::triangle_channel::tests::cycle_length_counter_method_actually_cycles_length_counter ... ok [INFO] [stdout] test apu::timer::tests::low_bits_are_set_correctly ... ok [INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_2_length_counter ... ok [INFO] [stdout] test apu::tests::frame_interrupt_flag_should_not_be_set_when_0x80_is_written_into_0x4017 ... ok [INFO] [stdout] test apu::timer::tests::high_bits_are_set_correctly ... ok [INFO] [stdout] test apu::timer::tests::timer_value_is_reloaded_when_cycled_at_zero ... ok [INFO] [stdout] test apu::triangle_channel::tests::disabling_channel_disables_length_counter ... ok [INFO] [stdout] test apu::triangle_channel::tests::output_is_sequenced_value_if_channel_is_not_silenced ... ok [INFO] [stdout] test apu::triangle_channel::tests::enabling_channel_enables_length_counter ... ok [INFO] [stdout] test apu::triangle_channel::tests::cycling_channel_timer_length_times_does_not_advance_sequence ... ok [INFO] [stdout] test apu::triangle_channel::tests::write_to_0x400A_sets_timer_low_bits ... ok [INFO] [stdout] test apu::triangle_channel::tests::output_is_zero_if_length_counter_silences_channel ... ok [INFO] [stdout] test apu::triangle_channel::tests::output_is_zero_if_linear_counter_silences_channel ... ok [INFO] [stdout] test apu::triangle_channel::tests::cycle_linear_counter_actually_cycles_linear_counter ... ok [INFO] [stdout] test apu::triangle_channel::tests::cycling_channel_counter_plus_one_times_advances_sequence ... ok [INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x400B_sets_linear_counter_reload_flag ... ok [INFO] [stdout] test apu::triangle_channel::tests::write_to_0x400B_sets_timer_high_bits ... ok [INFO] [stdout] test controller::tests::b_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test controller::tests::a_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test controller::tests::button_b_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_down_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_left_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_b_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_left_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_a_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_right_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_select_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_start_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_start_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_up_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_up_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_right_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_select_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::button_a_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::left_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test controller::tests::down_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test controller::tests::read_from_0x4017_increases_shift_if_strobe_is_low ... ok [INFO] [stdout] test controller::tests::read_from_0x4016_keeps_shift_at_0_if_strobe_is_high ... ok [INFO] [stdout] test controller::tests::read_from_0x4016_increases_shift_if_strobe_is_low ... ok [INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x4008_sets_length_counter_halt_flag ... ok [INFO] [stdout] test controller::tests::right_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x400B_loads_length_counter ... ok [INFO] [stdout] test controller::tests::read_from_0x4017_keeps_shift_at_0_if_strobe_is_high ... ok [INFO] [stdout] test controller::tests::button_down_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok [INFO] [stdout] test controller::tests::select_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test apu::tests::writing_0xC0_into_0x4017_should_clear_frame_interrupt ... ok [INFO] [stdout] test cpu::tests::add_absolute_x_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test apu::tests::writing_0x40_into_0x4017_should_clear_frame_interrupt ... ok [INFO] [stdout] test cpu::tests::add_immediate_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::add_indirect_x_stores_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::add_indirect_y_stores_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::add_zero_page_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::add_zero_page_x_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::addition_works_with_positive_numbers_that_would_overflow_signed_8_bit_integer ... ok [INFO] [stdout] test cpu::tests::and_absolute_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::and_absolute_x_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::and_absolute_y_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::and_immediate_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::and_immediate_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::and_indirect_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::and_indirect_y_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::and_zero_page_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::and_zero_page_x_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_absolute_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_absolute_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_absolute_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_absolute_x_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_accumulator_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_page_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_page_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::add_absolute_y_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test controller::tests::write_to_0x4016_sets_strobe_if_bit_0_is_set ... ok [INFO] [stdout] test controller::tests::write_to_0x4016_clears_strobe_if_bit_0_is_clear ... ok [INFO] [stdout] test controller::tests::start_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test controller::tests::up_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_page_x_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::bit_test_zero_increments_pc_correctly ... ok [INFO] [stdout] test controller::tests::shift_wraps_around_after_7 ... ok [INFO] [stdout] test cpu::tests::bit_test_absolute_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_x_page_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::arithmetic_shift_left_zero_x_page_takes_5_cycles ... ok [INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x4008_sets_linear_counter_control_and_value ... ok [INFO] [stdout] test cpu::tests::add_absolute_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::bit_test_absolute_sets_flags_correctly ... ok [INFO] [stdout] test cpu::tests::branch_if_carry_clear_branches_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_negative_branches_if_zero_flag_is_set ... ok [INFO] [stdout] test cpu::tests::branch_if_negative_does_not_branch_and_updates_pc_correctly_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_not_equal_branches_if_zero_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_overflow_clear_branches_if_overflow_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::bit_test_zero_page_takes_3_cycles ... ok [INFO] [stdout] test cpu::tests::bit_test_zero_page_sets_flags_correctly ... ok [INFO] [stdout] test cpu::tests::branch_if_overflow_clear_does_not_branch_and_updates_pc_correctly_if_flag_is_set ... ok [INFO] [stdout] test cpu::tests::branch_if_carry_set_does_not_branch_and_updates_pc_correctly_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_carry_set_branches_if_flag_is_set ... ok [INFO] [stdout] test cpu::tests::bit_test_absolute_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::branch_if_overflow_set_does_not_branch_and_updates_pc_correctly_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_positive_jumps_to_relative_address_on_nonzero_positive_number ... ok [INFO] [stdout] test cpu::tests::clear_carry_flag_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::clear_decimal_flags_clears_the_flag_and_does_not_touch_other_flags ... ok [INFO] [stdout] test cpu::tests::clear_decimal_flags_does_nothing_if_flag_is_already_cleared ... ok [INFO] [stdout] test cpu::tests::clear_decimal_flags_sets_wait_counter_correctly ... ok [INFO] [stdout] test cpu::tests::clear_interrupt_disable_flag_clears_the_flag_and_does_not_touch_other_flags ... ok [INFO] [stdout] test cpu::tests::clear_interrupt_disable_flag_does_nothing_flag_is_already_unset ... ok [INFO] [stdout] test cpu::tests::clear_interrupt_disable_flag_sets_wait_counter_correctly ... ok [INFO] [stdout] test cpu::tests::clear_overflow_flag_clears_the_flag ... ok [INFO] [stdout] test cpu::tests::clear_overflow_flag_does_nothing_if_the_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::clear_overflow_flag_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::compare_absolute_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_absolute_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_absolute_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_absolute_x_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_absolute_x_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_absolute_x_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_absolute_y_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_absolute_y_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_absolute_y_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_immediate_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_immediate_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_immediate_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_indirect_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_indirect_x_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_indirect_x_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_indirect_y_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_indirect_y_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_indirect_y_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_x_absolute_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_x_absolute_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_x_absolute_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_x_immediate_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_x_immediate_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_x_immediate_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_x_zero_page_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_x_zero_page_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_x_zero_page_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_y_absolute_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_y_absolute_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_y_absolute_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::branch_if_positive_jumps_to_address_on_zero ... ok [INFO] [stdout] test cpu::tests::branch_if_equal_branches_if_zero_flag_is_set ... ok [INFO] [stdout] test cpu::tests::compare_y_immediate_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_y_immediate_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_y_zero_page_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::branch_if_carry_clear_does_not_branch_and_updates_pc_correctly_if_flag_is_set ... ok [INFO] [stdout] test cpu::tests::branch_if_equal_does_not_branch_and_updates_pc_correctly_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_overflow_set_branches_if_overflow_flag_is_set ... ok [INFO] [stdout] test cpu::tests::clear_carry_flag_clears_the_flag_if_set ... ok [INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_not_affect_frame_interrupt_flag ... ok [INFO] [stdout] test cpu::tests::clear_carry_does_nothing_if_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::branch_if_positive_does_not_jump_on_negative_number ... ok [INFO] [stdout] test cpu::tests::compare_y_immediate_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_y_zero_page_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_x_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_x_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::compare_zero_page_x_sets_carry_flag_if_accumulator_is_greater ... ok [INFO] [stdout] test cpu::tests::decrease_y_decreases_y_by_one ... ok [INFO] [stdout] test cpu::tests::decrease_x_decreases_x_by_one ... ok [INFO] [stdout] test cpu::tests::decrease_y_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_decreases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_x_decreases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::decrement_memory_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_decreases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_x_decreases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::do_absolute_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_absolute_store_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::do_absolute_x_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::do_absolute_y_store_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::do_absolute_x_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_absolute_y_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_absolute_y_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_add_adds_the_carry_flag_to_result_if_it_is_set ... ok [INFO] [stdout] test cpu::tests::do_add_clears_zero_flag_if_flag_is_set_and_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_add_adds_two_small_numbers_together_and_does_not_set_any_flags ... ok [INFO] [stdout] test cpu::tests::do_add_clears_carry_flag_if_result_fits_in_8_bytes ... ok [INFO] [stdout] test cpu::tests::compare_y_zero_page_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok [INFO] [stdout] test cpu::tests::decrement_memory_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::do_add_adds_two_small_numbers_together_and_stores_result_in_accumulator ... ok [INFO] [stdout] test cpu::tests::do_add_does_not_set_zero_flag_if_accumulator_and_operand_are_zero_but_carry_is_set ... ok [INFO] [stdout] test cpu::tests::do_add_does_nothing_if_zero_flag_is_set_and_accumulator_and_operand_are_zero ... ok [INFO] [stdout] test cpu::tests::do_add_sets_carry_flag_if_result_is_too_large_to_fit_8_bytes ... ok [INFO] [stdout] test cpu::tests::do_add_sets_negative_flag_if_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_add_sets_negative_flag_if_result_is_negative_after_overflow ... ok [INFO] [stdout] test cpu::tests::do_add_sets_zero_flag_if_accumulator_and_operand_are_zero ... ok [INFO] [stdout] test cpu::tests::do_add_sets_zero_flag_if_negative_and_positive_number_end_up_as_zero ... ok [INFO] [stdout] test cpu::tests::do_add_sets_zero_flag_if_result_is_zero_after_adding_carry ... ok [INFO] [stdout] test cpu::tests::do_add_stores_lowest_8_bits_in_accumulator_if_result_is_too_large_to_fit_accumulator ... ok [INFO] [stdout] test cpu::tests::do_add_with_clears_overflow_flag_if_result_does_not_overflow ... ok [INFO] [stdout] test cpu::tests::do_add_with_two_negative_numbers_sets_overflow_flag_if_result_does_not_fit_8_bit_signed_variable ... ok [INFO] [stdout] test cpu::tests::do_add_with_two_positive_numbers_sets_overflow_flag_if_result_does_not_fit_8_bit_signed_variable ... ok [INFO] [stdout] test cpu::tests::do_and_clears_negative_flag_if_flag_is_set_and_number_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_and_clears_zero_flag_if_it_was_set_before_and_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_and_does_not_modify_wait_counter ... ok [INFO] [stdout] test cpu::tests::do_and_does_not_touch_program_counter ... ok [INFO] [stdout] test cpu::tests::do_and_does_nothing_to_negative_flag_if_it_is_set_and_number_is_negative ... ok [INFO] [stdout] test cpu::tests::do_and_does_nothing_to_negative_flag_if_it_is_unset_and_number_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_and_does_nothing_to_zero_flag_if_it_was_not_set_before_and_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_and_does_nothing_to_zero_flag_if_flag_is_set_and_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_absolute_x_store_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_does_not_set_bit_0_even_if_carry_is_set ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_clears_negative_flag_if_bit_7_is_not_set_after_shift ... ok [INFO] [stdout] test cpu::tests::do_and_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_moves_bits_left ... ok [INFO] [stdout] test cpu::tests::do_and_sets_negative_flag_if_result_is_negative_and_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_add_unset_negative_flag_if_result_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_clears_carry_if_bit_7_is_0_before_shift ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_sets_negative_flag_if_bit_7_is_set_after_shift ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_sets_carry_if_bit_7_is_1_before_shift ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_not_touch_accumulator ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_nothing_if_negative_bit_is_set_and_negative_flag_is_set ... ok [INFO] [stdout] test cpu::tests::do_absolute_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_nothing_if_overflow_bit_is_set_and_overflow_flag_is_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_nothing_if_result_is_not_zero_and_zero_flag_was_not_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_nothing_if_negative_flag_is_not_set_and_bit_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_sets_zero_flag_if_result_is_zero_and_carry_is_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_nothing_if_overflow_bit_is_not_set_and_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_clears_negative_flag_if_bit_is_not_set_and_flag_is_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_clears_zero_flag_if_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_bit_test_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::do_and_sets_zero_flag_if_result_is_zero_and_flag_was_not_set_before ... ok [INFO] [stdout] test cpu::tests::do_arithmetic_shift_left_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_negative_flag_if_bit_is_set_and_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_negative_flag_if_bit_is_set_in_memory_and_not_in_accumulator ... ok [INFO] [stdout] test cpu::tests::do_compare_clears_carry_zero_and_negative_flag_if_register_is_smaller_and_subtraction_result_is_positive_due_to_overflow ... ok [INFO] [stdout] test cpu::tests::do_compare_clears_negative_flag_and_sets_carry_and_zero_flags_if_result_is_equal_and_negative_was_set_before ... ok [INFO] [stdout] test cpu::tests::do_compare_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::do_compare_sets_carry_and_zero_flags_if_register_is_equal_operand ... ok [INFO] [stdout] test cpu::tests::do_compare_sets_carry_flag_and_negative_flag_if_register_is_greater_but_subtraction_result_has_sign_bit_set ... ok [INFO] [stdout] test cpu::tests::do_decrement_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::do_decrement_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::do_decrement_decreases_y_by_one ... ok [INFO] [stdout] test cpu::tests::do_decrement_handles_overflow ... ok [INFO] [stdout] test cpu::tests::do_decrement_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::do_decrement_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_clears_negative_flag_if_flag_is_set_and_number_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_not_modify_wait_counter ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_not_touch_program_counter_ ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_nothing_to_negative_flag_if_it_is_set_and_number_is_negative ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_clears_zero_flag_if_it_was_set_before_and_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_does_nothing_if_result_is_zero_and_zero_flag_was_already_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_overflow_flag_if_overflow_bit_is_set_and_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_overflow_flag_if_overflow_bit_is_set_but_accumulator_bit_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_bit_test_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_sets_negative_flag_if_result_is_negative_and_flag_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_sets_zero_flag_if_result_is_zero_and_flag_was_not_set_before ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_clears_negative_flag_if_result_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_clears_zero_flag_if_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_does_not_modify_wait_counter ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_does_not_touch_program_counter ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_sets_accumulator_value_correctly ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_sets_negative_flag_if_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_inclusive_or_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_increment_clears_negative_flag_if_result_is_positive ... ok [INFO] [stdout] test cpu::tests::do_increment_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_increment_handles_overflow ... ok [INFO] [stdout] test cpu::tests::do_increment_increases_value_by_one ... ok [INFO] [stdout] test cpu::tests::do_increment_negative_flag_if_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_increment_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_indirect_x_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_indirect_x_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_indirect_x_store_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::do_indirect_y_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_indirect_y_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_indirect_y_store_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_if_can_jump_backwards ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_if_jumps_if_condition_is_true ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_if_does_not_jump_if_condition_is_false ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_if_takes_2_cycles_if_condition_is_false ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_takes_3_cycles_if_branching_to_same_page ... ok [INFO] [stdout] test cpu::tests::do_relative_jump_takes_5_cycles_if_branching_to_different_page ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_clears_negative_flag_if_original_was_negative ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_clears_negative_flag_if_original_was_positive ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_moves_bits_right_and_fills_bit_7_with_zero_when_it_was_0 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_moves_bits_right_and_fills_bit_7_with_zero_when_it_was_0_and_bit_0_was_1 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_moves_bits_right_and_fills_bit_7_with_zero_when_it_was_1 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_moves_bits_right_and_fills_bit_7_with_zero_when_it_was_1_and_bit_0_was_1 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_sets_bit_7_0_even_if_carry_is_1 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_sets_carry_to_0_if_old_bit_0_was_0 ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_sets_carry_to_1_if_old_bit_0_was_1 ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_nothing_to_negative_flag_if_it_is_unset_and_number_is_not_negative ... ok [INFO] [stdout] test cpu::tests::do_compare_does_not_modify_registers ... ok [INFO] [stdout] test cpu::tests::do_compare_clears_carry_and_zero_flag_if_register_is_smaller_and_subtraction_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_moves_bits_left ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_clears_negative_flag_if_bit_7_is_not_set_after_shift ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_sets_negative_flag_if_bit_7_is_set_after_shift ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_sets_carry_if_bit_7_is_1_before_shift ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_sets_bit_0_to_1_if_carry_is_set ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_clears_negative_flag_if_original_was_negative ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_clears_negative_flag_if_original_was_positive ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_moves_bits_right_and_sets_bit_7_with_1_when_carry_is_1 ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_moves_bits_right_and_sets_bit_7_with_zero_when_carry_is_0 ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_sets_carry_to_0_if_old_bit_0_was_0 ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_sets_carry_to_1_if_old_bit_0_was_1 ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_sets_negative_flag_if_carry_is_1 ... ok [INFO] [stdout] test cpu::tests::do_rotate_right_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_negative_flag_if_end_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_overflow_flag_if_accumulator_was_negative_and_result_is_negative_and_fits ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_overflow_flag_if_accumulator_was_negative_and_result_is_positive_and_fits ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_overflow_flag_if_accumulator_was_positive_and_result_is_negative_and_fits ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_overflow_flag_if_accumulator_was_positive_and_result_is_positive_and_fits ... ok [INFO] [stdout] test cpu::tests::do_subtract_clears_zero_flag_if_result_is_non_zero ... ok [INFO] [stdout] test cpu::tests::do_subtract_gives_correct_value_if_result_wraps_around ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_carry_if_result_is_positive ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_clears_carry_flag_if_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_negative_flag_if_end_result_is_negative ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_overflow_flag_if_subtraction_is_too_big_to_be_represented_as_8_bit_signed ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_overflow_flag_if_subtraction_is_too_small_to_be_represented_as_8_bit_signed ... ok [INFO] [stdout] test cpu::tests::do_subtract_sets_zero_flag_if_result_is_zero ... ok [INFO] [stdout] test cpu::tests::do_subtract_subtracts_borrow_if_carry_is_not_set ... ok [INFO] [stdout] test cpu::tests::do_subtract_subtracts_two_positive_numbers_correctly_when_result_is_positive ... ok [INFO] [stdout] test cpu::tests::do_zero_page_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_zero_page_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_zero_page_store_takes_3_cycles ... ok [INFO] [stdout] test cpu::tests::do_zero_page_x_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_right_bitshift_sets_zero_flag_if_result_is_zero_and_carry_flag_was_set ... ok [INFO] [stdout] test cpu::tests::do_zero_page_x_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::do_zero_page_x_store_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::do_zero_page_y_store_increments_pc_correctly ... ok [INFO] [stdout] test cpu::tests::do_zero_page_y_store_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::do_zero_page_y_store_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::exclusive_or_absolute_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_absolute_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_absolute_y_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_immediate_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_indirect_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_indirect_y_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_zero_page_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::exclusive_or_zero_page_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::force_interrupt_pushes_3_values_into_stack ... ok [INFO] [stdout] test cpu::tests::force_interrupt_pushes_old_pc_before_status_flags ... ok [INFO] [stdout] test cpu::tests::force_interrupt_pushes_status_flags_to_top_of_stack_with_bits_4_and_5_set ... ok [INFO] [stdout] test cpu::tests::force_interrupt_jumps_to_address_stored_at_interrupt_vector ... ok [INFO] [stdout] test cpu::tests::force_interrupt_sets_interrupt_disable_flag ... ok [INFO] [stdout] test cpu::tests::force_interrupt_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::get_absolute_address_handles_program_counter_wrapping ... ok [INFO] [stdout] test cpu::tests::get_absolute_address_returns_correct_address ... ok [INFO] [stdout] test cpu::tests::get_absolute_address_with_offset_hans ... ok [INFO] [stdout] test cpu::tests::get_absolute_address_with_offset_returns_correct_address ... ok [INFO] [stdout] test cpu::tests::get_byte_operand_gets_correct_value_and_updates_program_counter ... ok [INFO] [stdout] test cpu::tests::get_indirect_x_address_returns_correct_address ... ok [INFO] [stdout] test cpu::tests::get_indirect_x_address_returns_correct_address_if_zero_page_address_wraps_around ... ok [INFO] [stdout] test cpu::tests::get_indirect_y_address_returns_correct_address ... ok [INFO] [stdout] test cpu::tests::get_indirect_y_address_returns_correct_address_if_main_address_wraps_around ... ok [INFO] [stdout] test cpu::tests::get_indirect_y_address_returns_correct_address_if_zero_page_part_wraps_around ... ok [INFO] [stdout] test cpu::tests::get_zero_page_address_returns_correct_address ... ok [INFO] [stdout] test cpu::tests::get_zero_page_address_with_offset_returns_correct_address_when_value_does_not_wrap_around ... ok [INFO] [stdout] test cpu::tests::get_zero_page_address_with_offset_returns_correct_address_when_value_wraps_around ... ok [INFO] [stdout] test cpu::tests::inclusive_or_absolute_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_absolute_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_absolute_y_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_immediate_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_indirect_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_indirect_y_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_zero_page_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::inclusive_or_zero_page_x_sets_correct_value_into_accumulator ... ok [INFO] [stdout] test cpu::tests::increase_x_increases_value_by_one ... ok [INFO] [stdout] test cpu::tests::increase_x_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::increase_y_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_increases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_x_increases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::increment_memory_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_increases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_x_increases_value_in_memory ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::increment_memory_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::jump_absolute_sets_program_counter_to_new_value ... ok [INFO] [stdout] test cpu::tests::jump_absolute_sets_wait_counter_correctly ... ok [INFO] [stdout] test cpu::tests::jump_indirect_handles_6502_indirect_bug ... ok [INFO] [stdout] test cpu::tests::jump_indirect_sets_program_counter_to_new_value ... ok [INFO] [stdout] test cpu::tests::jump_indirect_sets_wait_counter_correctly ... ok [INFO] [stdout] test cpu::tests::jump_to_subroutine_changes_program_counter_value ... ok [INFO] [stdout] test cpu::tests::jump_to_subroutine_does_not_affect_status_flags ... ok [INFO] [stdout] test cpu::tests::jump_to_subroutine_pushes_return_address_into_stack ... ok [INFO] [stdout] test cpu::tests::jump_to_subroutine_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::load_a_absolute_loads_correct_value_from_memory ... ok [INFO] [stdout] test cpu::tests::load_a_absolute_x_loads_correct_value_from_memory ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_nothing_to_zero_flag_if_it_was_not_set_before_and_result_is_not_zero ... ok [INFO] [stdout] test cpu::tests::load_a_indirect_y_loads_correct_value_from_memory ... ok [INFO] [stdout] test cpu::tests::load_a_indirect_x_loads_correct_value_from_memory ... ok [INFO] [stdout] test cpu::tests::load_a_immediate_sets_a_to_the_value_given_in_next_byte ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_sets_accumulator_value_to_the_result ... ok [INFO] [stdout] test cpu::tests::load_a_absolute_y_loads_correct_value_from_memory ... ok [INFO] [stdout] test cpu::tests::do_exclusive_or_does_nothing_to_zero_flag_if_flag_is_set_and_result_is_zero ... ok [INFO] [stdout] test cpu::tests::load_x_absolute_y_sets_x_to_correct_value ... ok [INFO] [stdout] test cpu::tests::load_a_zero_page_sets_a_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_a_zero_page_x_sets_a_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_x_absolute_sets_x_to_correct_value ... ok [INFO] [stdout] test cpu::tests::load_x_immediate_sets_x_to_the_value_given_in_next_byte ... ok [INFO] [stdout] test cpu::tests::load_x_sets_x_value ... ok [INFO] [stdout] test cpu::tests::load_x_zero_page_sets_x_to_correct_value ... ok [INFO] [stdout] test cpu::tests::load_x_zero_page_y_sets_x_to_correct_value ... ok [INFO] [stdout] test cpu::tests::load_y_absolute_sets_y_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_y_absolute_x_sets_y_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_y_immediate_sets_y_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_y_sets_y_value ... ok [INFO] [stdout] test cpu::tests::load_y_zero_page_sets_y_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::load_y_zero_page_x_sets_y_to_a_correct_value ... ok [INFO] [stdout] test cpu::tests::logical_right_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::logical_right_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_absolute_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_absolute_modifies_memory ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_absolute_x_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_absolute_x_modifies_memory ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_accumulator_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_modifies_memory ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_x_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_x_modifies_memory ... ok [INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::nmi_handler_disables_interrupts ... ok [INFO] [stdout] test cpu::tests::nmi_handler_pushes_old_program_counter_into_stack ... ok [INFO] [stdout] test cpu::tests::load_a_sets_a_value ... ok [INFO] [stdout] test cpu::tests::nmi_handler_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::pop_value_from_stack_updates_stack_pointer ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_clears_negative_flag_if_value_pulled_was_not_negative ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_clears_zero_flag_if_value_pulled_was_not_zero ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_increments_stack_pointer ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_sets_accumulator_to_correct_value ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_sets_negative_flag_if_value_pulled_was_negative ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_sets_zero_flag_if_value_pulled_was_zero ... ok [INFO] [stdout] test cpu::tests::pull_accumulator_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::pull_status_flags_always_sets_4_and_5_bits ... ok [INFO] [stdout] test cpu::tests::pull_status_flags_from_stack_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::pull_status_flags_from_stack_increments_stack_pointer ... ok [INFO] [stdout] test cpu::tests::pull_status_flags_from_stack_takes_4_cycles ... ok [INFO] [stdout] test cpu::tests::pull_status_flags_sets_status_flags_correctly ... ok [INFO] [stdout] test cpu::tests::push_accumulator_decrements_stack_pointer ... ok [INFO] [stdout] test cpu::tests::push_accumulator_does_not_modify_accumulator ... ok [INFO] [stdout] test cpu::tests::push_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::push_accumulator_pushes_accumulator_into_stack ... ok [INFO] [stdout] test cpu::tests::push_accumulator_takes_3_cycles ... ok [INFO] [stdout] test cpu::tests::push_status_flags_into_stack_does_not_increment_program_counter ... ok [INFO] [stdout] test cpu::tests::push_status_flags_into_stack_pushes_flags_to_stack_and_sets_bits_4_and_5_to_1 ... ok [INFO] [stdout] test cpu::tests::push_status_flags_into_stack_takes_3_cycles ... ok [INFO] [stdout] test cpu::tests::push_value_to_stack_pushes_value_into_stack ... ok [INFO] [stdout] test cpu::tests::push_value_to_stack_updates_stack_pointer ... ok [INFO] [stdout] test cpu::tests::read_absolute_returns_value_pointed_by_address_at_program_counter ... ok [INFO] [stdout] test cpu::tests::read_absolute_sets_wait_counter_to_4 ... ok [INFO] [stdout] test cpu::tests::read_absolute_with_offset_handles_wrapping ... ok [INFO] [stdout] test cpu::tests::read_absolute_with_offset_return_correct_value ... ok [INFO] [stdout] test cpu::tests::read_absolute_with_offset_takes_4_cycles_if_page_boundary_is_not_crossed ... ok [INFO] [stdout] test cpu::tests::read_absolute_with_offset_takes_5_cycles_if_page_boundary_is_barely_crossed ... ok [INFO] [stdout] test cpu::tests::read_absolute_with_offset_takes_5_cycles_if_page_boundary_is_crossed ... ok [INFO] [stdout] test cpu::tests::read_absolute_x_returns_value_pointed_by_16_bit_address_pointed_by_pc_and_x_register ... ok [INFO] [stdout] test cpu::tests::read_absolute_y_returns_value_pointed_by_16_bit_address_pointed_by_pc_and_y_register ... ok [INFO] [stdout] test cpu::tests::read_immediate_returns_value_pointed_by_program_counter ... ok [INFO] [stdout] test cpu::tests::read_immediate_sets_wait_counter_to_2 ... ok [INFO] [stdout] test cpu::tests::read_indirect_takes_6_cycles_if_page_boundary_is_crossed ... ok [INFO] [stdout] test cpu::tests::read_indirect_x_returns_correct_value ... ok [INFO] [stdout] test cpu::tests::read_indirect_x_sets_wait_counter_to_6 ... ok [INFO] [stdout] test cpu::tests::read_indirect_x_wraps_zero_page_address_around ... ok [INFO] [stdout] test cpu::tests::read_indirect_y_returns_correct_value ... ok [INFO] [stdout] test cpu::tests::read_indirect_y_takes_5_cycles_if_no_page_boundary_is_crossed ... ok [INFO] [stdout] test cpu::tests::read_indirect_y_wraps_final_address_around ... ok [INFO] [stdout] test cpu::tests::read_indirect_y_wraps_zero_page_address_around ... ok [INFO] [stdout] test cpu::tests::read_zero_page_returns_value_at_zero_page_pointed_by_program_counter ... ok [INFO] [stdout] test cpu::tests::read_zero_page_sets_wait_counter_to_3 ... ok [INFO] [stdout] test cpu::tests::read_zero_page_with_offset_returns_value_at_zero_page_with_offset ... ok [INFO] [stdout] test cpu::tests::read_zero_page_with_offset_sets_wait_counter_to_4 ... ok [INFO] [stdout] test cpu::tests::read_zero_page_x_handles_wrap_around ... ok [INFO] [stdout] test cpu::tests::read_zero_page_x_returns_value_at_zero_page_pointed_by_program_counter_indexed_with_x ... ok [INFO] [stdout] test cpu::tests::read_zero_page_y_returns_value_at_zero_page_pointed_by_program_counter_indexed_with_y ... ok [INFO] [stdout] test cpu::tests::return_from_interrupt_increments_stack_pointer_by_3 ... ok [INFO] [stdout] test cpu::tests::return_from_interrupt_sets_status_flags_to_value_from_stack_but_ignore_bits_4_and_5 ... ok [INFO] [stdout] test cpu::tests::return_from_interrupt_sets_the_program_counter_correctly ... ok [INFO] [stdout] test cpu::tests::return_from_interrupt_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::return_from_subroutine_does_not_touch_status_flags ... ok [INFO] [stdout] test cpu::tests::return_from_subroutine_increments_stack_pointer ... ok [INFO] [stdout] test cpu::tests::return_from_subroutine_sets_pc_correctly ... ok [INFO] [stdout] test cpu::tests::return_from_subroutine_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_x_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::rotate_left_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_left_accumulator_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::overflow_flag_is_not_set_when_negative_and_positive_number_are_added_and_result_is_positive ... ok [INFO] [stdout] test cpu::tests::nmi_handler_pushes_status_flags_with_bit_4_unset_and_bit_5_set ... ok [INFO] [stdout] test cpu::tests::overflow_flag_is_not_set_when_positive_and_negative_number_are_added_and_result_is_negative ... ok [INFO] [stdout] test cpu::tests::no_operation_waits_2_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_x_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_x_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_modifies_memory ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_x_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_x_modifies_memory ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_right_accumulator_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_left_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_stores_correct_value_in_memory ... ok [INFO] [stdout] test cpu::tests::do_bit_test_clears_overflow_bit_if_overflow_bit_is_not_set_and_flag_is_set ... ok [INFO] [stdout] test cpu::tests::rotate_right_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::do_rotate_left_clears_carry_if_bit_7_is_0_before_shift ... ok [INFO] [stdout] test cpu::tests::rotate_left_zero_page_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::do_compare_sets_carry_flag_if_register_is_greater_than_operand_and_result_has_no_sign_bit_set ... ok [INFO] [stdout] test cpu::tests::rotate_right_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_x_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::set_carry_flag_does_nothing_if_flag_is_already_set ... ok [INFO] [stdout] test cpu::tests::set_carry_flag_sets_the_flag_if_it_was_not_set_before ... ok [INFO] [stdout] test cpu::tests::set_carry_flag_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::set_decimal_flag_does_not_touch_program_counter ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_x_modifies_memory ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_modifies_memory ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::rotate_right_accumulator_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::rotate_right_zero_page_does_increments_program_counter ... ok [INFO] [stdout] test cpu::tests::set_carry_flag_does_not_modify_program_counter ... ok [INFO] [stdout] test cpu::tests::pop_value_from_stack_returns_correct_value ... ok [INFO] [stdout] test cpu::tests::set_decimal_flag_does_nothing_if_flag_was_already_set ... ok [INFO] [stdout] test cpu::tests::nmi_handler_set_progam_counter_to_value_stored_at_nmi_vector ... ok [INFO] [stdout] test cpu::tests::set_negative_flag_does_nothing_if_flag_is_unset_and_value_is_positive ... ok [INFO] [stdout] test cpu::tests::set_zero_negative_flags_clears_negative_flag_if_bit_is_unset ... ok [INFO] [stdout] test cpu::tests::set_zero_negative_flags_clears_zero_flag_if_value_is_nonzero ... ok [INFO] [stdout] test cpu::tests::set_negative_flag_sets_the_flag_if_flag_value_is_negative_and_flag_was_not_set ... ok [INFO] [stdout] test cpu::tests::set_zero_flag_clears_the_flag_if_flag_is_set_and_value_was_not_zero ... ok [INFO] [stdout] test cpu::tests::set_negative_flag_clears_the_flag_if_flag_is_set_and_value_was_positive ... ok [INFO] [stdout] test cpu::tests::set_zero_flag_sets_the_flag_if_flag_value_is_zero_and_flag_was_not_set ... ok [INFO] [stdout] test cpu::tests::set_negative_flag_does_nothing_if_value_is_negative_and_flag_was_already_set ... ok [INFO] [stdout] test cpu::tests::set_decimal_flag_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::set_zero_negative_flags_sets_negative_flag_if_bit_set ... ok [INFO] [stdout] test cpu::tests::set_decimal_flag_sets_the_flag_if_it_was_unset ... ok [INFO] [stdout] test cpu::tests::store_a_absolute_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::setting_interrupt_disable_flag_sets_wait_counter_correctly ... ok [INFO] [stdout] test cpu::tests::set_zero_negative_flags_set_zero_flag_if_value_is_zero ... ok [INFO] [stdout] test cpu::tests::store_a_zero_page_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_x_absolute_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::setting_interrupt_disable_flag_does_nothing_if_flag_is_already_set ... ok [INFO] [stdout] test cpu::tests::setting_interrupt_disable_flag_sets_the_flag_and_does_not_touch_other_flags ... ok [INFO] [stdout] test cpu::tests::store_a_absolute_y_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_a_indirect_x_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_a_indirect_y_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_a_zero_page_x_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_x_zero_page_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_x_zero_page_y_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_y_zero_page_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::subtract_absolute_y_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::store_y_zero_page_x_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::set_zero_flag_does_nothing_if_flag_is_unset_and_value_is_not_zero ... ok [INFO] [stdout] test cpu::tests::subtract_zero_page_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::set_zero_flag_does_nothing_if_value_is_zero_and_flag_was_already_set ... ok [INFO] [stdout] test cpu::tests::store_a_absolute_x_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::store_y_absolute_stores_value_into_memory_correctly ... ok [INFO] [stdout] test cpu::tests::subtract_absolute_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::subtract_absolute_x_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::subtract_immediate_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::subtract_indirect_y_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::subtract_indirect_x_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_x_value_to_correct_value ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_sets_x_to_correct_value ... ok [INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_sets_accumulator_value_to_correct_value ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_sets_stack_pointer_to_correct_value ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_sets_wait_counter_correct ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_clears_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_sets_accumulator_value_to_correct_value ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_sets_zero_flag ... ok [INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_absolute_does_not_modify_registers ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_absolute_does_not_modify_status_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_absolute_writes_result_to_memory ... ok [INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_indirect_x_does_not_modify_registers ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_does_not_touch_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_indirect_x_writes_result_to_memory ... ok [INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_does_not_modify_status_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_page_writes_result_to_memory ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_sets_y_value_to_correct_value ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_y_does_not_modify_registers ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_sets_negative_flag ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_y_writes_result_to_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_a_zero_page_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_absolute_y_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_absolute_x_sets_flags ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_absolute_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_indirect_x_does_not_modify_status_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_does_not_modify_registers ... ok [INFO] [stdout] test cpu::tests::subtract_zero_page_x_stores_correct_value_in_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_and_a_with_x_store_result_zero_page_y_does_not_modify_status_flags ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_takes_2_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_y_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_y_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_x_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_y_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_x_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_x_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_zero_page_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_double_no_operation_increments_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_x_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_y_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_absolute_y_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_x_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_y_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_indirect_y_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_x_increments_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtract_acc_zero_page_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_absolute_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_absolute_x_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_absolute_y_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_indirect_x_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_indirect_y_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_zero_page_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_zero_page_x_subtracts_result_from_a ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_absolute_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_absolute_y_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_indirect_x_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_indirect_y_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_zero_page_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_zero_page_y_loads_correct_values ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_y_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_x_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_y_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_y_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_absolute_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_indirect_y_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_clears_zero_flag ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_y_sets_flags ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_y_decrements_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_updates_pc ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_left_memory_bitwise_and_acc_zero_page_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_changes_memory ... ok [INFO] [stdout] test controller::tests::controller_panics_if_write_is_not_to_0x4016 ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_x_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_y_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_y_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_y_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_x_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_x_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_y_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_indirect_y_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_x_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_y_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_absolute_y_takes_7_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_x_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_y_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_y_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_y_takes_8_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_triple_no_operation_no_page_penalty_increments_pc_twice ... ok [INFO] [stdout] test cpu::tests::unofficial_triple_no_operation_page_penalty_adds_a_cycle_when_page_boundary_is_crossed ... ok [INFO] [stdout] test cpu::tests::unofficial_triple_no_operation_page_penalty_does_not_add_a_cycle_when_page_boundary_is_not_crossed ... ok [INFO] [stdout] test cpu::tests::unofficial_triple_no_operation_page_penalty_increments_pc_twice ... ok [INFO] [stdout] test cpu::tests::write_to_ppu_oam_register_takes_513_on_even_cycle ... ok [INFO] [stdout] test cpu::tests::write_to_ppu_oam_register_takes_514_on_odd_cycle ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_x_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_x_changes_and_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_takes_5_cycles ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_changes_memory ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_x_takes_6_cycles ... ok [INFO] [stdout] test memory_bus::tests::read_above_0x4020_is_read_from_rom ... ok [INFO] [stdout] test memory_bus::tests::read_at_0xFFFF_is_read_from_rom ... ok [INFO] [stdout] test memory_bus::tests::write_to_0x0000_is_redirected_to_ram ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_x_changes_accumulator ... ok [INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_x_takes_7_cycles ... ok [INFO] [stdout] test memory_bus::tests::write_above_0x4020_is_redirected_to_rom ... ok [INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_y_changes_and_accumulator ... ok [INFO] [stdout] test memory_bus::tests::write_to_0x1FFF_is_redirected_to_ram ... ok [INFO] [stdout] test memory_bus::tests::write_to_0x4020_is_redirected_to_rom ... ok [INFO] [stdout] test memory_bus::tests::read_at_0x1FFF_is_read_from_ram ... ok [INFO] [stdout] test memory_bus::tests::read_at_0x0000_is_read_from_ram ... ok [INFO] [stdout] test ppu::tests::first_write_to_0x2005_sets_temporary_register_address_bits_correctly ... ok [INFO] [stdout] test memory_bus::tests::read_at_0x4020_is_read_from_rom ... ok [INFO] [stdout] test memory_bus::tests::read_under_0x2000_is_read_from_ram ... ok [INFO] [stdout] test memory_bus::tests::write_to_0xFFFF_is_redirected_to_rom ... ok [INFO] [stdout] test ppu::tests::get_cycle_count_modifies_extra_cycle_counter_if_extra_cycle_is_needed ... ok [INFO] [stdout] test ppu::tests::nmi_does_nothing_to_nmi_status_nmi_has_not_occured ... ok [INFO] [stdout] test ppu::tests::nmi_occured_clears_nmi_status_if_nmi_has_occured ... ok [INFO] [stdout] test ppu::tests::get_cycle_count_does_not_modify_extra_cycle_counter_if_no_extra_cycles_are_needed ... ok [INFO] [stdout] test ppu::tests::nmi_occured_returns_false_if_nmi_has_not_occured ... ok [INFO] [stdout] test ppu::tests::get_cycle_count_returns_extra_cycle_every_n_frames_if_cycle_is_required ... ok [INFO] [stdout] test ppu::tests::get_cycle_count_returns_same_value_every_time_if_no_extra_cycles_are_needed ... ok [INFO] [stdout] test ppu::tests::ppu_does_not_generate_nmi_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_cleared ... ok [INFO] [stdout] test ppu::tests::first_write_to_0x2005_sets_fine_x_scroll_register_correctly ... ok [INFO] [stdout] test memory_bus::tests::write_under_0x2000_is_redirected_to_ram ... ok [INFO] [stdout] test ppu::tests::read_from_0x2002_clears_the_address_latch ... ok [INFO] [stdout] test ppu::tests::ppu_sets_vblank_bit_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_set ... ok [INFO] [stdout] test ppu::tests::oam_dma_write_panics_if_data_length_is_not_256_bytes ... ok [INFO] [stdout] test ppu::tests::nmi_occured_returns_true_if_nmi_has_occured ... ok [INFO] [stdout] test ppu::tests::ppu_clears_vblank_bit_on_pre_render_scanline_second_pixel ... ok [INFO] [stdout] test ppu::tests::oam_dma_write_replaces_oam ... ok [INFO] [stdout] test ppu::tests::read_from_0x2002_clears_the_bit_7 ... ok [INFO] [stdout] test ppu::tests::ppu_sets_vblank_bit_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_cleared ... ok [INFO] [stdout] test ppu::tests::read_from_0x2000_panics ... ok [INFO] [stdout] test ppu::tests::ppu_generates_nmi_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_set ... ok [INFO] [stdout] test ppu::tests::read_from_0x2001_panics ... ok [INFO] [stdout] test ppu::tests::read_from_0x2002_does_not_flip_the_address_latch_if_latch_is_clear ... ok [INFO] [stdout] test ppu::tests::read_from_0x2004_returns_oam_value_at_address ... ok [INFO] [stdout] test ppu::tests::read_from_0x2002_returns_status_register_register ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00 ... ok [INFO] [stdout] test ppu::tests::read_from_0x2005_panics ... ok [INFO] [stdout] test ppu::tests::read_from_0x2006_panics ... ok [INFO] [stdout] test ppu::tests::read_from_0x2003_panics ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_increments_vram_address_by_one_if_control_register_bit_2_is_0 ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00 ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_increments_vram_address_by_32_if_control_register_bit_2_is_1 ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_sets_read_buffer_to_nametable_value_at_0x1000_before_address ... ok [INFO] [stdout] test ppu::tests::write_to_0x2000_changes_control_register_register ... ok [INFO] [stdout] test ppu::tests::read_from_0x3FFF_reads_from_ppu_data_register ... ok [INFO] [stdout] test ppu::tests::write_to_0x2001_changes_mask_register_register ... ok [INFO] [stdout] test ppu::tests::read_from_address_0x200A_is_mirrored_to_status_register ... ok [INFO] [stdout] test ppu::tests::read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00 ... ok [INFO] [stdout] test ppu::tests::read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly ... ok [INFO] [stdout] test ppu::tests::second_write_to_0x2005_sets_temporary_register_address_bits_correctly ... ok [INFO] [stdout] test ppu::tests::write_to_0x2000_updates_temporary_register_nametable ... ok [INFO] [stdout] test ppu::tests::write_to_0x2002_panics ... ok [INFO] [stdout] test ppu::tests::write_to_0x2004_increments_oam_address_register ... ok [INFO] [stdout] test ppu::tests::write_to_0x2005_sets_the_address_latch_if_it_was_unset_before ... ok [INFO] [stdout] test ppu::tests::write_to_0x2000_generates_nmi_if_nmi_bit_will_be_set_and_vblank_bit_is_set ... ok [INFO] [stdout] test ppu::tests::write_to_0x2004_changes_object_attribute_memory_at_oam_address ... ok [INFO] [stdout] test ppu::tests::write_to_0x2006_unsets_the_address_latch_if_it_was_set_before ... ok [INFO] [stdout] test ppu::tests::second_write_to_0x2005_does_not_touch_fine_x_scroll ... ok [INFO] [stdout] test ppu::tests::write_to_0x2006_copies_temporary_register_to_address_register_if_latch_is_set ... ok [INFO] [stdout] test ppu::tests::write_to_0x2006_sets_the_address_latch_if_it_was_unset_before ... ok [INFO] [stdout] test ppu::tests::write_to_0x2003_changes_oam_address_register ... ok [INFO] [stdout] test ppu::tests::write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly ... ok [INFO] [stdout] test ppu::tests::write_to_0x2006_writes_first_6_bits_of_high_byte_to_temporary_register_if_latch_is_unset ... ok [INFO] [stdout] test ppu::tests::write_to_0x2005_unsets_the_address_latch_if_it_was_set_before ... ok [INFO] [stdout] test ppu::tests::write_to_0x2006_writes_low_byte_to_temporary_register_if_latch_is_set ... ok [INFO] [stdout] test ppu::tests::write_to_address_0x2008_is_mirrored_to_control_register ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F10_is_mirrored_to_0x3F00 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_0x2000_is_not_redirected_to_rom ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram ... ok [INFO] [stdout] test ppu::tests::write_to_0x2007_increments_vram_address_by_32_if_control_register_bit_2_is_1 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_0x1FFF_is_redirected_to_rom ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F14_is_mirrored_to_0x3F04 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F20_is_mirrored_to_0x3F00 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C ... ok [INFO] [stdout] test ppu::vram::tests::vram_address_0x3500_mirrors_to_0x2500 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F45_is_mirrored_to_0x3F05 ... ok [INFO] [stdout] test ppu::vram::tests::vram_address_0x3EFF_mirrors_to_0x2EFF ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_0_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_1_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F ... ok [INFO] [stdout] test ppu::vram::tests::vram_address_0x3000_mirrors_to_0x2000 ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_1_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_2_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_3_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_0_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_1_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_2_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_2_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_3_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_0_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_1_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_2_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_2_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_3_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_0_correctly ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_1_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_1_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_2_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_2_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_end_of_nametable_3_correctly ... ok [INFO] [stdout] test ppu::vram::tests::write_to_0x0000_is_redirected_to_rom ... ok [INFO] [stdout] test ppu::vram::tests::write_to_0x1FFF_is_redirected_to_rom ... ok [INFO] [stdout] test ppu::vram::tests::write_to_0x2000_is_not_redirected_to_rom ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F10_is_mirrored_to_0x3F00 ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F14_is_mirrored_to_0x3F04 ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F18_is_mirrored_to_0x3F08 ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F20_is_mirrored_to_0x3F00 ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3F45_is_mirrored_to_0x3F05 ... ok [INFO] [stdout] test ppu::vram::tests::write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F ... ok [INFO] [stdout] test ram::tests::read_from_above_0x1FFF_panics ... ok [INFO] [stdout] test ram::tests::read_from_final_ram_address_returns_correct_data ... ok [INFO] [stdout] test ram::tests::read_from_mirrored_section_returns_correct_data ... ok [INFO] [stdout] test ram::tests::write_to_final_mirrored_ram_address_writes_to_correct_address ... ok [INFO] [stdout] test ram::tests::read_from_ram_address_returns_correct_data ... ok [INFO] [stdout] test ram::tests::write_to_memory_ram_address_writes_data_correctly ... ok [INFO] [stdout] test ram::tests::write_to_mirrored_address_writes_to_correct_ram_address ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_beginning_of_nametable_2_correctly_with_vertical_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_reads_from_end_of_nametable_1_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::vram::tests::vram_writes_to_beginning_of_nametable_1_correctly_with_horizontal_mirroring ... ok [INFO] [stdout] test ppu::tests::write_to_0x3FFF_writes_to_ppu_data_register ... ok [INFO] [stdout] test ppu::tests::write_to_0x2007_writes_to_memory_at_vram_address ... ok [INFO] [stdout] test ppu::tests::write_to_0x2007_increments_vram_address_by_one_if_control_register_bit_2_is_0 ... ok [INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F18_is_mirrored_to_0x3F08 ... ok [INFO] [stdout] test ram::tests::write_from_above_0x1FFF_panics ... ok [INFO] [stdout] test ppu::vram::tests::read_from_0x0000_is_redirected_to_rom ... ok [INFO] [stdout] test apu::tests::pulse_channel_1_lenght_counter_ticks_down_to_zero ... ok [INFO] [stdout] test apu::tests::noise_channel_length_counter_ticks_down_to_zero ... ok [INFO] [stdout] test apu::tests::pulse_channel_2_length_counter_ticks_down_to_zero ... ok [INFO] [stdout] test apu::tests::triangle_channel_linear_counter_ticks_down_to_zero ... ok [INFO] [stdout] test apu::tests::triangle_channel_length_counter_ticks_down_to_zero ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1006 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `"docker" "inspect" "ad8a1379ee8d0f164c786b16319fb17dbd3a43093ff8a04ec544e68b11066688"` [INFO] running `"docker" "rm" "-f" "ad8a1379ee8d0f164c786b16319fb17dbd3a43093ff8a04ec544e68b11066688"` [INFO] [stdout] ad8a1379ee8d0f164c786b16319fb17dbd3a43093ff8a04ec544e68b11066688