[INFO] cloning repository https://github.com/Valtis/RustNes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Valtis/RustNes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 836905877e12c5859cfc82be0fd03dc7beb0b771
[INFO] testing Valtis/RustNes against beta-2020-10-09 for beta-1.48-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes" "/workspace/builds/worker-6/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Valtis/RustNes on toolchain beta-2020-10-09
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-10-09" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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-6/source/Cargo.toml
[INFO] crate git repo https://github.com/Valtis/RustNes already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-10-09" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c1ce3100c5408e93353fcbada91926e9f1d8215a1b1fa5f5070ae94280e73124
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "c1ce3100c5408e93353fcbada91926e9f1d8215a1b1fa5f5070ae94280e73124", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c1ce3100c5408e93353fcbada91926e9f1d8215a1b1fa5f5070ae94280e73124", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c1ce3100c5408e93353fcbada91926e9f1d8215a1b1fa5f5070ae94280e73124", kill_on_drop: false }`
[INFO] [stdout] c1ce3100c5408e93353fcbada91926e9f1d8215a1b1fa5f5070ae94280e73124
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "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" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3c05c9149c935cf422f828730cfae21128967bc894cbf0d22b9237576c60472d
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "3c05c9149c935cf422f828730cfae21128967bc894cbf0d22b9237576c60472d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.23
[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 sdl2 v0.30.0
[INFO] [stderr]    Compiling nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/ppu/mod.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stdout]  --> src/console/mod.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/console/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/console/mod.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stdout]    |                                                   ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/console/mod.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<Memory>));
[INFO] [stdout]     |                  ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:50:30
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::envelope::Envelope`
[INFO] [stdout]   --> src/apu/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use self::envelope::Envelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sweep::Sweep`
[INFO] [stdout]   --> src/apu/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use self::sweep::Sweep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/apu/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:162:22
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stdout]     |                      ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:261:33
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/mod.rs:285:13
[INFO] [stdout]     |
[INFO] [stdout] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:370:54
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:48:61
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/ppu/vram.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]   |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/vram.rs:15:58
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/ppu/renderer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ppu/renderer.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/ppu/renderer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |             for y in (0..240) {
[INFO] [stdout]    |                      ^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:57:27
[INFO] [stdout]    |
[INFO] [stdout] 57 |                  for x in (0..256) {
[INFO] [stdout]    |                           ^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<Memory>,
[INFO] [stdout]    |               ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/memory/mod.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for Memory {
[INFO] [stdout]   |                     ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<Memory>,
[INFO] [stdout]    |              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:64:36
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:70:46
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stdout]    |                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/console/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `consumed_time`
[INFO] [stdout]    --> src/console/mod.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer_low_bits`
[INFO] [stdout]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let timer_low_bits = value;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_buf`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:39
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stdout]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/apu/sweep.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut sweep = (base >> self.shift) as i16;
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2132:13
[INFO] [stdout]      |
[INFO] [stdout] 2132 |         let mut divisor:u8;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2133:13
[INFO] [stdout]      |
[INFO] [stdout] 2133 |         let mut color_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2134:13
[INFO] [stdout]      |
[INFO] [stdout] 2134 |         let mut master_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static is never used: `PAL_RATE`
[INFO] [stdout]   --> src/apu/noise_channel.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / static PAL_RATE: [u16; 16] = [
[INFO] [stdout] 13 | |     4, 8, 14, 30, 60, 88, 118, 148,
[INFO] [stdout] 14 | |     188, 236, 354, 472, 708,  944, 1890, 3778
[INFO] [stdout] 15 | | ];
[INFO] [stdout]    | |__^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static is never used: `PAL_RATE`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / static PAL_RATE : [u16; 16] = [
[INFO] [stdout] 13 | |     398, 354, 316, 298, 276, 236, 210, 198,
[INFO] [stdout] 14 | |     176, 148, 132, 118,  98,  78,  66,  50
[INFO] [stdout] 15 | | ];
[INFO] [stdout]    | |__^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `halted`
[INFO] [stdout]   --> src/apu/length_counter.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn halted(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `enabled`
[INFO] [stdout]   --> src/apu/length_counter.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/ppu/renderer.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 10.14s
[INFO] [stdout] warning: 56 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "3c05c9149c935cf422f828730cfae21128967bc894cbf0d22b9237576c60472d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3c05c9149c935cf422f828730cfae21128967bc894cbf0d22b9237576c60472d", kill_on_drop: false }`
[INFO] [stdout] 3c05c9149c935cf422f828730cfae21128967bc894cbf0d22b9237576c60472d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "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" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ef698ae07482fa067c90a884a73d78e6c53bbbd5d7cc46d6b5c04d24a422f27f
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "ef698ae07482fa067c90a884a73d78e6c53bbbd5d7cc46d6b5c04d24a422f27f", kill_on_drop: false }`
[INFO] [stderr]    Compiling nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/ppu/mod.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stdout]  --> src/console/mod.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/console/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/console/mod.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stdout]    |                                                   ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/console/mod.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<Memory>));
[INFO] [stdout]     |                  ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:50:30
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:299:52
[INFO] [stdout]     |
[INFO] [stdout] 299 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/apu/sweep.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::envelope::Envelope`
[INFO] [stdout]   --> src/apu/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use self::envelope::Envelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sweep::Sweep`
[INFO] [stdout]   --> src/apu/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use self::sweep::Sweep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/apu/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:162:22
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stdout]     |                      ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:261:33
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/mod.rs:285:13
[INFO] [stdout]     |
[INFO] [stdout] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:370:54
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:447:52
[INFO] [stdout]     |
[INFO] [stdout] 447 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            ^^^^^^^^^^ help: use `dyn`: `dyn Memory +'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:48:61
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             ^^^^^^^^^^^ help: use `dyn`: `dyn Memory + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]     --> src/cpu/mod.rs:2193:78
[INFO] [stdout]      |
[INFO] [stdout] 2193 |         let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]      |                                                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/ppu/vram.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]   |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/vram.rs:15:58
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/vram.rs:131:75
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/ppu/renderer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ppu/renderer.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/ppu/renderer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |             for y in (0..240) {
[INFO] [stdout]    |                      ^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:57:27
[INFO] [stdout]    |
[INFO] [stdout] 57 |                  for x in (0..256) {
[INFO] [stdout]    |                           ^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<Memory>,
[INFO] [stdout]    |               ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: use `dyn`: `dyn Renderer + 'a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rom::*`
[INFO] [stdout]    --> src/ppu/mod.rs:788:9
[INFO] [stdout]     |
[INFO] [stdout] 788 |     use rom::*;
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:829:75
[INFO] [stdout]     |
[INFO] [stdout] 829 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/memory/mod.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for Memory {
[INFO] [stdout]   |                     ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                         ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<Memory>,
[INFO] [stdout]    |              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:64:36
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                                    ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:70:46
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stdout]    |                                              ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::*`
[INFO] [stdout]   --> src/memory_bus/mod.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |     use memory::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ppu::*`
[INFO] [stdout]   --> src/memory_bus/mod.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     use ppu::*;
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AudioQueue`
[INFO] [stdout]   --> src/memory_bus/mod.rs:92:29
[INFO] [stdout]    |
[INFO] [stdout] 92 |     use self::sdl2::audio::{AudioQueue};
[INFO] [stdout]    |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/memory_bus/mod.rs:146:75
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^ help: use `dyn`: `dyn Memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::*`
[INFO] [stdout]   --> src/ram/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     use memory::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/console/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `consumed_time`
[INFO] [stdout]    --> src/console/mod.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer_low_bits`
[INFO] [stdout]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let timer_low_bits = value;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_buf`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:39
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stdout]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:286:28
[INFO] [stdout]     |
[INFO] [stdout] 286 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:290:29
[INFO] [stdout]     |
[INFO] [stdout] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:290:43
[INFO] [stdout]     |
[INFO] [stdout] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/apu/mod.rs:413:29
[INFO] [stdout]     |
[INFO] [stdout] 413 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/mod.rs:431:28
[INFO] [stdout]     |
[INFO] [stdout] 431 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/mod.rs:435:29
[INFO] [stdout]     |
[INFO] [stdout] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/apu/mod.rs:435:43
[INFO] [stdout]     |
[INFO] [stdout] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixels`
[INFO] [stdout]    --> src/ppu/mod.rs:823:30
[INFO] [stdout]     |
[INFO] [stdout] 823 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixels`
[INFO] [stdout]    --> src/memory_bus/mod.rs:105:30
[INFO] [stdout]     |
[INFO] [stdout] 105 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/memory_bus/mod.rs:168:29
[INFO] [stdout]     |
[INFO] [stdout] 168 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/apu/triangle_channel.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut channel = create_test_channel();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/apu/sweep.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut sweep = (base >> self.shift) as i16;
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2132:13
[INFO] [stdout]      |
[INFO] [stdout] 2132 |         let mut divisor:u8;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2133:13
[INFO] [stdout]      |
[INFO] [stdout] 2133 |         let mut color_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2134:13
[INFO] [stdout]      |
[INFO] [stdout] 2134 |         let mut master_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static is never used: `PAL_RATE`
[INFO] [stdout]   --> src/apu/noise_channel.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / static PAL_RATE: [u16; 16] = [
[INFO] [stdout] 13 | |     4, 8, 14, 30, 60, 88, 118, 148,
[INFO] [stdout] 14 | |     188, 236, 354, 472, 708,  944, 1890, 3778
[INFO] [stdout] 15 | | ];
[INFO] [stdout]    | |__^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static is never used: `PAL_RATE`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / static PAL_RATE : [u16; 16] = [
[INFO] [stdout] 13 | |     398, 354, 316, 298, 276, 236, 210, 198,
[INFO] [stdout] 14 | |     176, 148, 132, 118,  98,  78,  66,  50
[INFO] [stdout] 15 | | ];
[INFO] [stdout]    | |__^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_to_0x400B_loads_length_counter` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn writing_to_0x400B_loads_length_counter() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_loads_length_counter`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_to_0x400B_sets_linear_counter_reload_flag` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 |     fn writing_to_0x400B_sets_linear_counter_reload_flag() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_sets_linear_counter_reload_flag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x400A_sets_timer_low_bits` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn write_to_0x400A_sets_timer_low_bits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_a_sets_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x400B_sets_timer_high_bits` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn write_to_0x400B_sets_timer_high_bits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_b_sets_timer_high_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:318:27
[INFO] [stdout]     |
[INFO] [stdout] 318 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(overflowing_literals)]` on by default
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:333:27
[INFO] [stdout]     |
[INFO] [stdout] 333 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:355:27
[INFO] [stdout]     |
[INFO] [stdout] 355 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:368:27
[INFO] [stdout]     |
[INFO] [stdout] 368 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:382:27
[INFO] [stdout]     |
[INFO] [stdout] 382 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:411:27
[INFO] [stdout]     |
[INFO] [stdout] 411 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:422:27
[INFO] [stdout]     |
[INFO] [stdout] 422 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:434:27
[INFO] [stdout]     |
[INFO] [stdout] 434 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:450:27
[INFO] [stdout]     |
[INFO] [stdout] 450 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:463:27
[INFO] [stdout]     |
[INFO] [stdout] 463 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:476:27
[INFO] [stdout]     |
[INFO] [stdout] 476 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:490:27
[INFO] [stdout]     |
[INFO] [stdout] 490 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:506:27
[INFO] [stdout]     |
[INFO] [stdout] 506 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:525:27
[INFO] [stdout]     |
[INFO] [stdout] 525 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/dmc_channel.rs:536:27
[INFO] [stdout]     |
[INFO] [stdout] 536 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/mod.rs:464:27
[INFO] [stdout]     |
[INFO] [stdout] 464 |         apu.write(0x4012, 0x100);
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]    --> src/apu/mod.rs:495:27
[INFO] [stdout]     |
[INFO] [stdout] 495 |         apu.write(0x4012, 0x100);
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:799:8
[INFO] [stdout]     |
[INFO] [stdout] 799 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_1_envelope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:836:8
[INFO] [stdout]     |
[INFO] [stdout] 836 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_2_envelope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0xC0_into_0x4017_should_clear_frame_interrupt` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:974:8
[INFO] [stdout]     |
[INFO] [stdout] 974 |     fn writing_0xC0_into_0x4017_should_clear_frame_interrupt() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x_c0_into_0x4017_should_clear_frame_interrupt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]     --> src/cpu/mod.rs:6924:28
[INFO] [stdout]      |
[INFO] [stdout] 6924 |         cpu.status_flags = 0x103;
[INFO] [stdout]      |                            ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the literal `0x103` (decimal `259`) does not fit into the type `u8` and will become `3u8`
[INFO] [stdout]      = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn write_to_0x1FFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 |     fn read_from_0x1FFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x1_fff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vram_address_0x3EFF_mirrors_to_0x2EFF` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 |     fn vram_address_0x3EFF_mirrors_to_0x2EFF() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `vram_address_0x3_eff_mirrors_to_0x2_eff`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:378:8
[INFO] [stdout]     |
[INFO] [stdout] 378 |     fn write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f00_writes_to_beginning_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:386:8
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f00_reads_from_beginning_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:393:8
[INFO] [stdout]     |
[INFO] [stdout] 393 |     fn write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_f_writes_to_end_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 |     fn read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_f_reads_from_end_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:408:8
[INFO] [stdout]     |
[INFO] [stdout] 408 |     fn write_to_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:415:8
[INFO] [stdout]     |
[INFO] [stdout] 415 |     fn read_from_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:422:8
[INFO] [stdout]     |
[INFO] [stdout] 422 |     fn write_to_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:429:8
[INFO] [stdout]     |
[INFO] [stdout] 429 |     fn read_from_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:437:8
[INFO] [stdout]     |
[INFO] [stdout] 437 |     fn write_to_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 444 |     fn read_from_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:451:8
[INFO] [stdout]     |
[INFO] [stdout] 451 |     fn write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:458:8
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:466:8
[INFO] [stdout]     |
[INFO] [stdout] 466 |     fn write_to_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:473:8
[INFO] [stdout]     |
[INFO] [stdout] 473 |     fn read_from_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:480:8
[INFO] [stdout]     |
[INFO] [stdout] 480 |     fn write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:487:8
[INFO] [stdout]     |
[INFO] [stdout] 487 |     fn read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:494:8
[INFO] [stdout]     |
[INFO] [stdout] 494 |     fn write_to_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:501:8
[INFO] [stdout]     |
[INFO] [stdout] 501 |     fn read_from_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/ppu/renderer.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1076:8
[INFO] [stdout]      |
[INFO] [stdout] 1076 |     fn read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1085:8
[INFO] [stdout]      |
[INFO] [stdout] 1085 |     fn read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] 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] [stdout]     --> src/ppu/mod.rs:1095:8
[INFO] [stdout]      |
[INFO] [stdout] 1095 |     fn read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: literal out of range for u8
[INFO] [stdout]     --> src/ppu/mod.rs:1108:32
[INFO] [stdout]      |
[INFO] [stdout] 1108 |         ppu.vram.write(0x3F00, 0x200);
[INFO] [stdout]      |                                ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the literal `0x200` (decimal `512`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]      = help: consider using `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_address_0x200A_is_mirrored_to_status_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1158:8
[INFO] [stdout]      |
[INFO] [stdout] 1158 |     fn read_from_address_0x200A_is_mirrored_to_status_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_0x200_a_is_mirrored_to_status_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1165:8
[INFO] [stdout]      |
[INFO] [stdout] 1165 |     fn write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1172:8
[INFO] [stdout]      |
[INFO] [stdout] 1172 |     fn read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x3FFF_writes_to_ppu_data_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1181:8
[INFO] [stdout]      |
[INFO] [stdout] 1181 |     fn write_to_0x3FFF_writes_to_ppu_data_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x3_fff_writes_to_ppu_data_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x3FFF_reads_from_ppu_data_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1189:8
[INFO] [stdout]      |
[INFO] [stdout] 1189 |     fn read_from_0x3FFF_reads_from_ppu_data_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x3_fff_reads_from_ppu_data_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x1FFF_is_redirected_to_ram` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 |     fn write_to_0x1FFF_is_redirected_to_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_at_0x1FFF_is_read_from_ram` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 |     fn read_at_0x1FFF_is_read_from_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x1_fff_is_read_from_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0xFFFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn write_to_0xFFFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x_ffff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_at_0xFFFF_is_read_from_rom` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 |     fn read_at_0xFFFF_is_read_from_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x_ffff_is_read_from_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stdout]   --> src/ram/mod.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn read_from_above_0x1FFF_panics() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_above_0x1_fff_panics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stdout]    --> src/ram/mod.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write_from_above_0x1FFF_panics() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_from_above_0x1_fff_panics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 139 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 10.88s
[INFO] running `Command { std: "docker" "inspect" "ef698ae07482fa067c90a884a73d78e6c53bbbd5d7cc46d6b5c04d24a422f27f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ef698ae07482fa067c90a884a73d78e6c53bbbd5d7cc46d6b5c04d24a422f27f", kill_on_drop: false }`
[INFO] [stdout] ef698ae07482fa067c90a884a73d78e6c53bbbd5d7cc46d6b5c04d24a422f27f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "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" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 6a0415a0e8734356d31296c1bb906e3c73e89cf562346ea742a6195e05584f4d
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "6a0415a0e8734356d31296c1bb906e3c73e89cf562346ea742a6195e05584f4d", kill_on_drop: false }`
[INFO] [stderr] warning: use of deprecated macro `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<Memory>));
[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<Memory>));
[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<Rc<RefCell<Box<Memory + 'a>>>>,
[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<RefCell<Box<Memory + '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/apu/dmc_channel.rs:299:52
[INFO] [stderr]     |
[INFO] [stderr] 299 |                 Box::new(MockMemory::new()) as Box<Memory>));
[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<Audio<f32>>,
[INFO] [stderr]     |                      ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[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<Audio<f32>>) -> Apu<'a> {
[INFO] [stderr]     |                                 ^^^^^^^^^^ help: use `dyn`: `dyn Audio<f32>`
[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<RefCell<Box<Memory + '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/apu/mod.rs:447:52
[INFO] [stderr]     |
[INFO] [stderr] 447 |                 Box::new(MockMemory::new()) as Box<Memory>));
[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<RefCell<Box<Memory +'a>>>, // 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<RefCell<Box<Memory + 'a>>>) -> 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<Memory>));
[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<RefCell<Box<Memory>>>,
[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<RefCell<Box<Memory>>>) -> 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<Memory>));
[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<Memory>,
[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<Renderer + 'a>,
[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<Renderer + 'a>,
[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<RefCell<Box<Memory>>>) -> 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<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/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<RefCell<Box<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:11:14
[INFO] [stderr]    |
[INFO] [stderr] 11 |     ram: Box<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:64:36
[INFO] [stderr]    |
[INFO] [stderr] 64 |     pub fn new(rom: Rc<RefCell<Box<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:70:46
[INFO] [stderr]    |
[INFO] [stderr] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[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<Memory>));
[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<Pixel>) {
[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<Pixel>) {
[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 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 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.15s
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/nes-5b8324993304ff7b
[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::channel_reloads_length_from_0x4013_when_restarting_at_zero_length ... ok
[INFO] [stdout] test apu::dmc_channel::tests::one_byte_buffer_is_immediately_filled ... 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::clearing_loop_flag_and_setting_it_again_does_not_stop_loop ... 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::looped_sample_should_reload_length_from_0x4013_when_it_reaches_end ... ok
[INFO] [stdout] test apu::dmc_channel::tests::writing_0x00_to_0x4015_should_stop_sample ... ok
[INFO] [stdout] test apu::dmc_channel::tests::irq_flag_not_set_when_irq_disabled ... ok
[INFO] [stdout] test apu::dmc_channel::tests::looped_sample_does_not_set_irq_flags ... ok
[INFO] [stdout] test apu::dmc_channel::tests::disabling_dmc_interrupt_clears_dmc_interrupt_flag ... 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::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_decremented_if_start_flag_is_not_set_and_constant_volume_is_set_when_executing_cycle ... 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::writing_to_0x4013_should_not_affect_current_length ... ok
[INFO] [stdout] test apu::dmc_channel::tests::looped_sample_ends_only_when_0x00_is_written_to_0x4015 ... ok
[INFO] [stdout] test apu::envelope::tests::divider_period_is_period_plus_one ... 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::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::divider_period_is_reloaded_if_start_flag_is_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::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::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_set_to_15_if_loop_flag_is_set_when_divider_is_zero_and_counter_is_zero_when_cycling ... 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_volume_is_not_affected_by_cycling_if_constant_flag_is_set ... 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::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_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::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::linear_counter::tests::linear_counter_reload_flag_is_not_cleared_if_control_is_set ... 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::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::pulse_channel::tests::writing_to_0x4003_loads_length_counter ... ok
[INFO] [stdout] test apu::pulse_channel::tests::output_is_zero_if_length_counter_silences_channel ... ok
[INFO] [stdout] test apu::pulse_channel::tests::cycle_length_counter_method_actually_cycles_length_counter ... ok
[INFO] [stdout] test apu::linear_counter::tests::counter_is_not_decremented_if_it_is_zero ... 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::writing_to_0x4000_sets_length_counter_halt_flag ... ok
[INFO] [stdout] test apu::length_counter::tests::no_value_is_loaded_into_counter_if_counter_is_disabled ... ok
[INFO] [stdout] test apu::pulse_channel::tests::disabling_channel_disables_length_counter ... 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::linear_counter_value_is_reloaded_if_reload_flag_is_set ... ok
[INFO] [stdout] test apu::tests::frame_interrupt_flag_should_be_set_when_0x00_is_written_into_0x4017 ... ok
[INFO] [stdout] test apu::linear_counter::tests::linear_counter_silences_channel_if_counter_is_zero ... ok
[INFO] [stdout] test apu::tests::frame_interrupt_flag_should_not_be_set_when_0x80_is_written_into_0x4017 ... ok
[INFO] [stdout] test apu::tests::frame_irq_flag_should_be_set_again_at_29832 ... ok
[INFO] [stdout] test apu::tests::noise_channel_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::tests::frame_irq_flag_should_be_clear_when_executing_29830_cycles ... ok
[INFO] [stdout] test apu::tests::frame_irq_flag_should_not_be_set_again_at_29833 ... 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::frame_irq_flag_should_be_set_when_executing_29831_cycles ... ok
[INFO] [stdout] test apu::tests::pulse_channel_1_length_counter_load_works_and_status_reg_has_value ... ok
[INFO] [stdout] test apu::tests::pulse_channel_2_length_counter_load_works_and_status_reg_has_value ... ok
[INFO] [stdout] test apu::tests::reading_0x4015_clears_frame_interrupt ... ok
[INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_noise_channel_envelope ... ok
[INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope ... ok
[INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_1_length_counter ... ok
[INFO] [stdout] test apu::tests::triangle_channel_length_counter_load_works_and_status_reg_has_value ... 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_affect_frame_interrupt_flag ... ok
[INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_2_length_counter ... ok
[INFO] [stdout] test apu::tests::writing_0x00_into_0x4017_should_not_clock_pulse_channel_2_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_0x80_into_0x4017_should_clock_noise_channel_envelope ... ok
[INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_2_envelope ... 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_0x80_into_0x4017_should_clock_pulse_channel_1_length_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_0x40_into_0x4017_should_clear_frame_interrupt ... 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_pulse_channel_2_length_counter ... ok
[INFO] [stdout] test apu::timer::tests::high_bits_are_set_correctly ... 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_triange_channel_linear_counter ... ok
[INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_triange_channel_length_counter ... ok
[INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_clock_pulse_channel_2_sweep_unit ... ok
[INFO] [stdout] test apu::tests::writing_to_0x4015_clears_dmc_interrupt_flag ... 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_timer_length_times_does_not_advance_sequence ... ok
[INFO] [stdout] test apu::timer::tests::timer_value_is_reloaded_when_cycled_at_zero ... ok
[INFO] [stdout] test apu::triangle_channel::tests::cycle_length_counter_method_actually_cycles_length_counter ... ok
[INFO] [stdout] test apu::triangle_channel::tests::cycling_channel_counter_plus_one_times_advances_sequence ... ok
[INFO] [stdout] test apu::timer::tests::low_bits_are_set_correctly ... ok
[INFO] [stdout] test apu::triangle_channel::tests::disabling_channel_disables_length_counter ... 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::writing_to_0x400B_loads_length_counter ... 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_0x400A_sets_timer_low_bits ... ok
[INFO] [stdout] test apu::triangle_channel::tests::write_to_0x400B_sets_timer_high_bits ... ok
[INFO] [stdout] test controller::tests::a_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok
[INFO] [stdout] test controller::tests::b_button_status_is_correctly_returned_when_reading_from_0x4016 ... 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::button_a_bit_is_set_if_key_down_is_called_with_correct_keycode ... 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_b_bit_is_cleared_if_key_up_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_down_bit_is_set_if_key_down_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_right_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... ok
[INFO] [stdout] test apu::triangle_channel::tests::enabling_channel_enables_length_counter ... 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::output_is_sequenced_value_if_channel_is_not_silenced ... ok
[INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x4008_sets_length_counter_halt_flag ... 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_left_bit_is_set_if_key_down_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::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_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 controller::tests::read_from_0x4017_increases_shift_if_strobe_is_low ... ok
[INFO] [stdout] test controller::tests::read_from_0x4017_keeps_shift_at_0_if_strobe_is_high ... ok
[INFO] [stdout] test controller::tests::right_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok
[INFO] [stdout] test controller::tests::select_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok
[INFO] [stdout] test controller::tests::shift_wraps_around_after_7 ... 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::start_button_status_is_correctly_returned_when_reading_from_0x4016 ... 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::write_to_0x4016_sets_strobe_if_bit_0_is_set ... ok
[INFO] [stdout] test controller::tests::up_button_status_is_correctly_returned_when_reading_from_0x4016 ... ok
[INFO] [stdout] test controller::tests::write_to_0x4016_clears_strobe_if_bit_0_is_clear ... ok
[INFO] [stdout] test cpu::tests::add_absolute_x_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::add_absolute_y_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::add_absolute_stores_correct_value_in_accumulator ... 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_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::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::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 cpu::tests::bit_test_absolute_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::bit_test_absolute_sets_flags_correctly ... ok
[INFO] [stdout] test cpu::tests::bit_test_absolute_takes_4_cycles ... ok
[INFO] [stdout] test cpu::tests::bit_test_zero_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::bit_test_zero_page_sets_flags_correctly ... ok
[INFO] [stdout] test cpu::tests::bit_test_zero_page_takes_3_cycles ... ok
[INFO] [stdout] test cpu::tests::branch_if_carry_clear_branches_if_flag_is_not_set ... 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_carry_set_branches_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_equal_branches_if_zero_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_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::branch_if_overflow_clear_does_not_branch_and_updates_pc_correctly_if_flag_is_set ... ok
[INFO] [stdout] test cpu::tests::branch_if_overflow_set_branches_if_overflow_flag_is_set ... 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_does_not_jump_on_negative_number ... ok
[INFO] [stdout] test cpu::tests::branch_if_positive_jumps_to_address_on_zero ... ok
[INFO] [stdout] test cpu::tests::branch_if_positive_jumps_to_relative_address_on_nonzero_positive_number ... ok
[INFO] [stdout] test cpu::tests::add_indirect_y_stores_correct_value_into_accumulator ... ok
[INFO] [stdout] test apu::triangle_channel::tests::writing_to_0x4008_sets_linear_counter_control_and_value ... ok
[INFO] [stdout] test cpu::tests::clear_carry_does_nothing_if_flag_is_not_set ... ok
[INFO] [stdout] test cpu::tests::clear_carry_flag_clears_the_flag_if_set ... ok
[INFO] [stdout] test cpu::tests::clear_decimal_flags_sets_wait_counter_correctly ... ok
[INFO] [stdout] test cpu::tests::clear_decimal_flags_does_nothing_if_flag_is_already_cleared ... 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_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_if_accumulator_is_greater ... ok
[INFO] [stdout] test apu::tests::writing_0xC0_into_0x4017_should_clear_frame_interrupt ... 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_x_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... ok
[INFO] [stdout] test apu::tests::writing_0x80_into_0x4017_should_not_affect_frame_interrupt_flag ... ok
[INFO] [stdout] test controller::tests::button_select_bit_is_set_if_key_down_is_called_with_correct_keycode ... ok
[INFO] [stdout] test cpu::tests::compare_indirect_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... 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_start_bit_is_cleared_if_key_up_is_called_with_correct_keycode ... 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_absolute_y_sets_carry_flag_if_accumulator_is_greater ... 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_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok
[INFO] [stdout] test cpu::tests::compare_immediate_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_x_absolute_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_indirect_y_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_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_if_accumulator_is_greater ... 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_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_if_accumulator_is_greater ... 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_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_x_zero_page_clears_carry_zero_flags_and_sets_negative_if_accumulator_is_smaller ... ok
[INFO] [stdout] test cpu::tests::compare_y_immediate_sets_carry_flag_if_accumulator_is_greater ... 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_zero_page_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_y_zero_page_sets_carry_flag_and_zero_flag_if_accumulator_is_equal ... 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_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 controller::tests::controller_panics_if_write_is_not_to_0x4016 ... 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::compare_zero_page_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::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_decreases_value_in_memory ... ok
[INFO] [stdout] test cpu::tests::decrease_x_decreases_x_by_one ... 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::do_absolute_store_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::do_absolute_store_stores_value_into_memory_correctly ... ok
[INFO] [stdout] test cpu::tests::decrement_memory_zero_page_x_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::decrement_memory_absolute_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_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::do_absolute_store_takes_4_cycles ... 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::do_absolute_x_store_increments_pc_correctly ... 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_adds_the_carry_flag_to_result_if_it_is_set ... 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_clears_carry_flag_if_result_fits_in_8_bytes ... 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_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_absolute_y_store_takes_5_cycles ... ok
[INFO] [stdout] test cpu::tests::do_absolute_x_store_takes_5_cycles ... ok
[INFO] [stdout] test cpu::tests::do_absolute_y_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::compare_y_zero_page_sets_carry_flag_if_accumulator_is_greater ... ok
[INFO] [stdout] test cpu::tests::decrement_memory_absolute_x_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::do_absolute_y_store_increments_pc_correctly ... 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_sets_zero_flag_if_accumulator_and_operand_are_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_unset_negative_flag_if_result_is_not_negative ... ok
[INFO] [stdout] test cpu::tests::do_add_sets_negative_flag_if_result_is_negative_after_overflow ... ok
[INFO] [stdout] test cpu::tests::decrement_memory_zero_page_takes_5_cycles ... ok
[INFO] [stdout] test cpu::tests::do_add_sets_negative_flag_if_result_is_negative ... 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_does_nothing_to_zero_flag_if_flag_is_set_and_result_is_zero ... 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_clears_negative_flag_if_flag_is_set_and_number_is_not_negative ... 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_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_nothing_to_negative_flag_if_it_is_set_and_number_is_negative ... ok
[INFO] [stdout] test cpu::tests::do_and_does_not_touch_program_counter ... 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_and_sets_negative_flag_if_result_is_negative_and_flag_is_not_set ... 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_moves_bits_left ... 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_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_and_sets_accumulator_value_to_the_result ... 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::decrease_y_takes_2_cycles ... 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_clears_zero_flag_if_result_is_not_zero ... 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_arithmetic_shift_left_sets_zero_flag_if_result_is_zero ... 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::do_bit_test_does_not_modify_program_counter ... 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_and_does_nothing_to_zero_flag_if_it_was_not_set_before_and_result_is_not_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_overflow_bit_is_not_set_and_flag_is_not_set ... 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_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_but_accumulator_bit_is_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_compare_clears_carry_and_zero_flag_if_register_is_smaller_and_subtraction_result_is_negative ... 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_bit_test_sets_zero_flag_if_result_is_zero ... 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_sets_carry_flag_if_register_is_greater_than_operand_and_result_has_no_sign_bit_set ... ok
[INFO] [stdout] test cpu::tests::do_decrement_clears_zero_flag ... 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_compare_does_not_modify_program_counter ... ok
[INFO] [stdout] test cpu::tests::do_decrement_clears_negative_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_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_negative_flag_if_bit_is_set_and_flag_is_not_set ... 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_compare_does_not_modify_registers ... 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_decrement_decreases_y_by_one ... ok
[INFO] [stdout] test cpu::tests::do_decrement_sets_zero_flag ... 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_decrement_handles_overflow ... 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_touch_program_counter ... ok
[INFO] [stdout] test cpu::tests::do_inclusive_or_does_not_modify_wait_counter ... ok
[INFO] [stdout] test cpu::tests::do_decrement_sets_negative_flag ... ok
[INFO] [stdout] test cpu::tests::do_inclusive_or_sets_accumulator_value_correctly ... 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_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_exclusive_or_does_nothing_to_zero_flag_if_it_was_not_set_before_and_result_is_not_zero ... ok
[INFO] [stdout] test cpu::tests::do_exclusive_or_sets_accumulator_value_to_the_result ... 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::do_indirect_x_store_stores_value_into_memory_correctly ... ok
[INFO] [stdout] test cpu::tests::do_inclusive_or_sets_zero_flag_if_result_is_zero ... ok
[INFO] [stdout] test cpu::tests::do_increment_negative_flag_if_result_is_negative ... ok
[INFO] [stdout] test cpu::tests::do_increment_handles_overflow ... ok
[INFO] [stdout] test cpu::tests::do_indirect_y_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_bit_test_does_nothing_if_negative_bit_is_set_and_negative_flag_is_set ... ok
[INFO] [stdout] test cpu::tests::do_inclusive_or_sets_negative_flag_if_result_is_negative ... ok
[INFO] [stdout] test cpu::tests::do_increment_clears_zero_flag_if_result_is_non_zero ... ok
[INFO] [stdout] test cpu::tests::do_increment_clears_negative_flag_if_result_is_positive ... ok
[INFO] [stdout] test cpu::tests::do_indirect_x_store_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::do_indirect_x_store_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::do_increment_increases_value_by_one ... ok
[INFO] [stdout] test cpu::tests::do_increment_sets_zero_flag_if_result_is_zero ... 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_jumps_if_condition_is_true ... ok
[INFO] [stdout] test cpu::tests::do_relative_jump_if_can_jump_backwards ... ok
[INFO] [stdout] test cpu::tests::do_indirect_y_store_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::do_relative_jump_if_takes_2_cycles_if_condition_is_false ... 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_zero_flag_if_result_is_non_zero ... 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_positive ... ok
[INFO] [stdout] test cpu::tests::do_relative_jump_takes_3_cycles_if_branching_to_same_page ... 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_rotate_left_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_1 ... 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_rotate_left_clears_carry_if_bit_7_is_0_before_shift ... 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_rotate_left_sets_negative_flag_if_bit_7_is_set_after_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_moves_bits_left ... 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_left_sets_zero_flag_if_result_is_zero ... 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_sets_carry_if_bit_7_is_1_before_shift ... 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_moves_bits_right_and_sets_bit_7_with_1_when_carry_is_1 ... 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_right_bitshift_sets_zero_flag_if_result_is_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_subtract_clears_negative_flag_if_end_result_is_negative ... 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_subtract_clears_overflow_flag_if_accumulator_was_negative_and_result_is_negative_and_fits ... ok
[INFO] [stdout] test cpu::tests::do_rotate_right_sets_negative_flag_if_carry_is_1 ... ok
[INFO] [stdout] test cpu::tests::do_subtract_clears_zero_flag_if_result_is_non_zero ... 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_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_rotate_right_moves_bits_right_and_sets_bit_7_with_zero_when_carry_is_0 ... 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_carry_if_result_is_positive ... ok
[INFO] [stdout] test cpu::tests::do_subtract_gives_correct_value_if_result_wraps_around ... ok
[INFO] [stdout] test cpu::tests::do_zero_page_x_store_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::do_rotate_right_sets_zero_flag_if_result_is_zero ... 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_takes_3_cycles ... ok
[INFO] [stdout] test cpu::tests::do_zero_page_store_increments_pc_correctly ... 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_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::do_zero_page_y_store_takes_4_cycles ... 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_zero_page_store_stores_value_into_memory_correctly ... ok
[INFO] [stdout] test cpu::tests::do_subtract_sets_clears_carry_flag_if_result_is_negative ... ok
[INFO] [stdout] test cpu::tests::do_zero_page_x_store_takes_4_cycles ... ok
[INFO] [stdout] test cpu::tests::exclusive_or_indirect_y_sets_correct_value_into_accumulator ... ok
[INFO] [stdout] test cpu::tests::do_subtract_subtracts_borrow_if_carry_is_not_set ... 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_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::do_zero_page_y_store_increments_pc_correctly ... ok
[INFO] [stdout] test cpu::tests::force_interrupt_sets_interrupt_disable_flag ... ok
[INFO] [stdout] test cpu::tests::get_absolute_address_returns_correct_address ... 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_absolute_address_with_offset_hans ... ok
[INFO] [stdout] test cpu::tests::exclusive_or_absolute_x_sets_correct_value_into_accumulator ... ok
[INFO] [stdout] test cpu::tests::get_absolute_address_handles_program_counter_wrapping ... 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::force_interrupt_jumps_to_address_stored_at_interrupt_vector ... 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_indirect_x_address_returns_correct_address_if_zero_page_address_wraps_around ... ok
[INFO] [stdout] test cpu::tests::get_zero_page_address_returns_correct_address ... ok
[INFO] [stdout] test cpu::tests::force_interrupt_pushes_3_values_into_stack ... 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::inclusive_or_immediate_sets_correct_value_into_accumulator ... ok
[INFO] [stdout] test cpu::tests::inclusive_or_absolute_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_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::get_indirect_y_address_returns_correct_address ... 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::get_indirect_x_address_returns_correct_address ... ok
[INFO] [stdout] test cpu::tests::force_interrupt_pushes_old_pc_before_status_flags ... ok
[INFO] [stdout] test cpu::tests::get_indirect_y_address_returns_correct_address_if_main_address_wraps_around ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_increases_value_in_memory ... ok
[INFO] [stdout] test cpu::tests::inclusive_or_indirect_y_sets_correct_value_into_accumulator ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_x_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::increase_y_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_x_increases_value_in_memory ... 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::inclusive_or_zero_page_sets_correct_value_into_accumulator ... ok
[INFO] [stdout] test cpu::tests::increment_memory_zero_page_x_increments_program_counter ... 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::jump_indirect_handles_6502_indirect_bug ... ok
[INFO] [stdout] test cpu::tests::increment_memory_zero_page_increases_value_in_memory ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_x_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::increment_memory_zero_page_takes_5_cycles ... ok
[INFO] [stdout] test cpu::tests::increase_x_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::increment_memory_zero_page_x_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::increment_memory_absolute_takes_6_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_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::jump_absolute_sets_wait_counter_correctly ... ok
[INFO] [stdout] test cpu::tests::jump_to_subroutine_pushes_return_address_into_stack ... ok
[INFO] [stdout] test cpu::tests::load_a_absolute_loads_correct_value_from_memory ... ok
[INFO] [stdout] test cpu::tests::jump_to_subroutine_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::jump_to_subroutine_does_not_affect_status_flags ... ok
[INFO] [stdout] test cpu::tests::jump_to_subroutine_changes_program_counter_value ... ok
[INFO] [stdout] test cpu::tests::jump_absolute_sets_program_counter_to_new_value ... ok
[INFO] [stdout] test cpu::tests::load_a_zero_page_sets_a_to_a_correct_value ... ok
[INFO] [stdout] test cpu::tests::jump_indirect_sets_program_counter_to_new_value ... ok
[INFO] [stdout] test cpu::tests::load_a_immediate_sets_a_to_the_value_given_in_next_byte ... ok
[INFO] [stdout] test cpu::tests::load_a_indirect_x_loads_correct_value_from_memory ... ok
[INFO] [stdout] test cpu::tests::load_a_absolute_y_loads_correct_value_from_memory ... ok
[INFO] [stdout] test cpu::tests::jump_indirect_sets_wait_counter_correctly ... ok
[INFO] [stdout] test cpu::tests::load_a_sets_a_value ... ok
[INFO] [stdout] test cpu::tests::load_a_absolute_x_loads_correct_value_from_memory ... 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_y_absolute_x_sets_y_to_a_correct_value ... ok
[INFO] [stdout] test cpu::tests::load_y_zero_page_sets_y_to_a_correct_value ... ok
[INFO] [stdout] test cpu::tests::load_x_absolute_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_x_zero_page_y_sets_x_to_correct_value ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_absolute_does_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::logical_right_absolute_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_absolute_modifies_memory ... ok
[INFO] [stdout] test cpu::tests::load_y_immediate_sets_y_to_a_correct_value ... 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::load_a_indirect_y_loads_correct_value_from_memory ... ok
[INFO] [stdout] test cpu::tests::logical_right_absolute_x_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_does_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::load_a_zero_page_x_sets_a_to_a_correct_value ... 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_accumulator_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_accumulator_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_x_modifies_memory ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_accumulator_does_not_modify_program_counter ... 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::nmi_handler_pushes_old_program_counter_into_stack ... ok
[INFO] [stdout] test cpu::tests::load_x_zero_page_sets_x_to_correct_value ... ok
[INFO] [stdout] test cpu::tests::load_y_sets_y_value ... ok
[INFO] [stdout] test cpu::tests::nmi_handler_set_progam_counter_to_value_stored_at_nmi_vector ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_x_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::pop_value_from_stack_returns_correct_value ... ok
[INFO] [stdout] test cpu::tests::pull_accumulator_clears_negative_flag_if_value_pulled_was_not_negative ... ok
[INFO] [stdout] test cpu::tests::pop_value_from_stack_updates_stack_pointer ... ok
[INFO] [stdout] test cpu::tests::pull_accumulator_increments_stack_pointer ... 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::load_y_zero_page_x_sets_y_to_a_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_takes_4_cycles ... ok
[INFO] [stdout] test cpu::tests::pull_accumulator_sets_zero_flag_if_value_pulled_was_zero ... ok
[INFO] [stdout] test cpu::tests::pull_accumulator_does_not_modify_program_counter ... 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::rotate_left_accumulator_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::rotate_left_zero_page_increments_program_counter ... ok
[INFO] [stdout] test cpu::tests::rotate_left_zero_page_stores_correct_value_in_memory ... 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_takes_6_cycles ... 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_right_accumulator_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::rotate_right_accumulator_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::rotate_right_zero_page_does_increments_program_counter ... 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_zero_page_x_does_increments_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::set_carry_flag_does_not_modify_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::set_decimal_flag_does_nothing_if_flag_was_already_set ... ok
[INFO] [stdout] test cpu::tests::set_decimal_flag_sets_the_flag_if_it_was_unset ... ok
[INFO] [stdout] test cpu::tests::set_decimal_flag_takes_2_cycles ... 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_negative_flag_does_nothing_if_flag_is_unset_and_value_is_positive ... 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_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_zero_flag_does_nothing_if_flag_is_unset_and_value_is_not_zero ... 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::set_zero_flag_sets_the_flag_if_flag_value_is_zero_and_flag_was_not_set ... 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_zero_negative_flags_set_zero_flag_if_value_is_zero ... ok
[INFO] [stdout] test cpu::tests::set_zero_negative_flags_sets_negative_flag_if_bit_set ... 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::setting_interrupt_disable_flag_sets_wait_counter_correctly ... ok
[INFO] [stdout] test cpu::tests::store_a_absolute_stores_value_into_memory_correctly ... ok
[INFO] [stdout] test cpu::tests::store_a_absolute_x_stores_value_into_memory_correctly ... 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_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_absolute_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_absolute_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::store_y_zero_page_x_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_absolute_y_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::subtract_immediate_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::logical_right_shift_zero_page_takes_5_cycles ... 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::logical_right_shift_zero_page_modifies_memory ... 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_sets_accumulator_to_correct_value ... ok
[INFO] [stdout] test cpu::tests::nmi_handler_disables_interrupts ... ok
[INFO] [stdout] test cpu::tests::subtract_indirect_x_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::subtract_zero_page_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::transfer_accumulator_to_x_takes_2_cycles ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_clears_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_clears_zero_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_sets_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_y_sets_y_value_to_correct_value ... 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_clears_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_clears_zero_flag ... ok
[INFO] [stdout] test cpu::tests::nmi_handler_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_sets_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_clears_zero_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_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_accumulator_to_x_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_stack_pointer_does_not_touch_flags ... ok
[INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_sets_x_to_correct_value ... ok
[INFO] [stdout] test cpu::tests::subtract_zero_page_x_stores_correct_value_in_accumulator ... ok
[INFO] [stdout] test cpu::tests::transfer_x_to_accumulator_clears_zero_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_accumulator_to_x_sets_x_value_to_correct_value ... ok
[INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_sets_zero_flag ... 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_accumulator_clears_negative_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_y_to_accumulator_clears_negative_flag ... ok
[INFO] [stdout] test cpu::tests::transfer_x_to_stack_pointer_sets_wait_counter_correct ... 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::transfer_y_to_accumulator_clears_zero_flag ... 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_writes_result_to_memory ... 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_indirect_x_does_not_modify_status_flags ... 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_y_to_accumulator_sets_accumulator_value_to_correct_value ... 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::unofficial_and_a_with_x_store_result_zero_page_y_does_not_modify_registers ... 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::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_absolute_sets_flags ... ok
[INFO] [stdout] test cpu::tests::transfer_y_to_accumulator_sets_negative_flag ... 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::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::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_updates_pc ... 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_absolute_y_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_a_zero_page_updates_pc ... ok
[INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_updates_pc ... 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_indirect_y_decrements_memory ... 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_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::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_x_decrements_memory ... ok
[INFO] [stdout] test cpu::tests::unofficial_decrement_memory_and_compare_with_acc_indirect_x_sets_flags ... 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_indirect_y_sets_flags ... ok
[INFO] [stdout] test cpu::tests::unofficial_double_no_operation_increments_pc ... 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_indirect_y_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_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_updates_pc ... 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_x_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_increment_memory_subtract_acc_absolute_x_takes_7_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_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_absolute_y_updates_pc ... 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_increments_memory ... 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_decrement_memory_and_compare_with_acc_zero_page_x_takes_6_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_absolute_increments_memory ... 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_zero_page_x_updates_pc ... 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_updates_pc ... 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_subtracts_acc_indirect_x_subtracts_result_from_a ... ok
[INFO] [stdout] test cpu::tests::no_operation_waits_2_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_subtracts_acc_absolute_subtracts_result_from_a ... ok
[INFO] [stdout] test cpu::tests::transfer_stack_pointer_to_x_takes_2_cycles ... 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_increments_memory ... ok
[INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_zero_page_subtracts_result_from_a ... ok
[INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_zero_page_loads_correct_values ... 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_indirect_y_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_increment_memory_subtracts_acc_zero_page_x_subtracts_result_from_a ... 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_load_a_and_x_absolute_y_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_rotate_left_memory_bitwise_and_acc_absolute_changes_memory ... 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_absolute_x_changes_and_accumulator ... 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_takes_7_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_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_y_takes_8_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_zero_page_changes_and_accumulator ... ok
[INFO] [stdout] test cpu::tests::unofficial_load_a_and_x_indirect_x_loads_correct_values ... ok
[INFO] [stdout] test cpu::tests::unofficial_increment_memory_subtracts_acc_absolute_y_subtracts_result_from_a ... 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_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_left_memory_bitwise_and_acc_indirect_y_changes_memory ... 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_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_x_takes_6_cycles ... 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_left_memory_bitwise_and_acc_absolute_x_changes_memory ... 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_indirect_x_changes_and_accumulator ... 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_takes_8_cycles ... 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_y_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_zero_page_takes_5_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_x_changes_memory ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_changes_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_rotate_right_memory_add_acc_absolute_y_changes_memory ... 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_absolute_y_changes_and_accumulator ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_absolute_x_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_indirect_x_changes_memory ... 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_x_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_acc_zero_page_x_takes_6_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_shift_left_memory_inclusive_or_acc_absolute_changes_memory ... 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_x_changes_accumulator ... 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_shift_left_memory_inclusive_or_acc_absolute_y_changes_memory ... 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_y_changes_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_y_takes_7_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_rotate_right_memory_add_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_left_memory_inclusive_or_acc_zero_page_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_indirect_x_takes_8_cycles ... 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_zero_page_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_absolute_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_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_takes_5_cycles ... 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_right_memory_xor_acc_indirect_y_changes_and_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_right_memory_xor_acc_indirect_y_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_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::unofficial_shift_right_memory_xor_acc_absolute_x_takes_7_cycles ... 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_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_indirect_x_takes_8_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_zero_page_changes_and_accumulator ... ok
[INFO] [stdout] test cpu::tests::write_to_ppu_oam_register_takes_514_on_odd_cycle ... ok
[INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_zero_page_changes_memory ... ok
[INFO] [stdout] test cpu::tests::write_to_ppu_oam_register_takes_513_on_even_cycle ... ok
[INFO] [stdout] test cpu::tests::unofficial_shift_right_memory_xor_acc_indirect_y_takes_8_cycles ... ok
[INFO] [stdout] test cpu::tests::unofficial_triple_no_operation_no_page_penalty_increments_pc_twice ... ok
[INFO] [stdout] test memory_bus::tests::write_above_0x4020_is_redirected_to_rom ... ok
[INFO] [stdout] test memory_bus::tests::write_to_0x0000_is_redirected_to_ram ... ok
[INFO] [stdout] test memory_bus::tests::read_under_0x2000_is_read_from_ram ... ok
[INFO] [stdout] test memory_bus::tests::write_to_0x4020_is_redirected_to_rom ... ok
[INFO] [stdout] test memory_bus::tests::write_to_0xFFFF_is_redirected_to_rom ... ok
[INFO] [stdout] test memory_bus::tests::write_to_0x1FFF_is_redirected_to_ram ... ok
[INFO] [stdout] test memory_bus::tests::read_above_0x4020_is_read_from_rom ... ok
[INFO] [stdout] test ppu::tests::get_cycle_count_returns_same_value_every_time_if_no_extra_cycles_are_needed ... ok
[INFO] [stdout] test memory_bus::tests::read_at_0x4020_is_read_from_rom ... ok
[INFO] [stdout] test memory_bus::tests::read_at_0xFFFF_is_read_from_rom ... ok
[INFO] [stdout] test ppu::tests::first_write_to_0x2005_sets_temporary_register_address_bits_correctly ... 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 memory_bus::tests::write_under_0x2000_is_redirected_to_ram ... 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_occured_returns_false_if_nmi_has_not_occured ... ok
[INFO] [stdout] test ppu::tests::nmi_does_nothing_to_nmi_status_nmi_has_not_occured ... ok
[INFO] [stdout] test ppu::tests::nmi_occured_returns_true_if_nmi_has_occured ... ok
[INFO] [stdout] test ppu::tests::first_write_to_0x2005_sets_fine_x_scroll_register_correctly ... ok
[INFO] [stdout] test ppu::tests::ppu_generates_nmi_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_set ... ok
[INFO] [stdout] test memory_bus::tests::read_at_0x1FFF_is_read_from_ram ... ok
[INFO] [stdout] test ppu::tests::ppu_clears_vblank_bit_on_pre_render_scanline_second_pixel ... 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::oam_dma_write_panics_if_data_length_is_not_256_bytes ... 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::read_from_0x2000_panics ... ok
[INFO] [stdout] test memory_bus::tests::read_at_0x0000_is_read_from_ram ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2002_clears_the_address_latch ... ok
[INFO] [stdout] test ppu::tests::oam_dma_write_replaces_oam ... 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::ppu_sets_vblank_bit_on_vblank_first_scanline_second_pixel_if_nmi_flag_is_cleared ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2001_panics ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2005_panics ... ok
[INFO] [stdout] test ppu::tests::nmi_occured_clears_nmi_status_if_nmi_has_occured ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2002_clears_the_bit_7 ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2003_panics ... ok
[INFO] [stdout] test ppu::tests::read_from_0x2004_returns_oam_value_at_address ... ok
[INFO] [stdout] test ppu::tests::read_from_0x3FFF_reads_from_ppu_data_register ... 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_sets_read_buffer_to_nametable_value_at_0x1000_before_address ... 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_0x2002_does_not_flip_the_address_latch_if_latch_is_clear ... 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_0x2006_panics ... 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_0x2002_returns_status_register_register ... 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_address_0x200A_is_mirrored_to_status_register ... ok
[INFO] [stdout] test ppu::tests::second_write_to_0x2005_does_not_touch_fine_x_scroll ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2002_panics ... ok
[INFO] [stdout] test ppu::tests::read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2001_changes_mask_register_register ... ok
[INFO] [stdout] test ppu::tests::second_write_to_0x2005_sets_temporary_register_address_bits_correctly ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2003_changes_oam_address_register ... 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_0x2000_updates_temporary_register_nametable ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2000_changes_control_register_register ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2004_changes_object_attribute_memory_at_oam_address ... 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_0x2005_unsets_the_address_latch_if_it_was_set_before ... 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_0x2004_increments_oam_address_register ... 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::tests::write_to_0x2006_sets_the_address_latch_if_it_was_unset_before ... ok
[INFO] [stdout] test ppu::tests::write_to_address_0x2008_is_mirrored_to_control_register ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_0x2000_is_not_redirected_to_rom ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2006_unsets_the_address_latch_if_it_was_set_before ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_0x0000_is_redirected_to_rom ... 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_0x2007_writes_to_memory_at_vram_address ... 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_0x3F20_is_mirrored_to_0x3F00 ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F45_is_mirrored_to_0x3F05 ... 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::vram_address_0x3000_mirrors_to_0x2000 ... 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_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::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_2_correctly_with_vertical_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_horizontal_mirroring ... 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_horizontal_mirroring ... 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 ppu::vram::tests::vram_address_0x3500_mirrors_to_0x2500 ... ok
[INFO] [stdout] test ram::tests::read_from_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_from_above_0x1FFF_panics ... ok
[INFO] [stdout] test ram::tests::write_to_final_mirrored_ram_address_writes_to_correct_address ... 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::tests::write_to_0x3FFF_writes_to_ppu_data_register ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_0x1FFF_is_redirected_to_rom ... ok
[INFO] [stdout] test ppu::tests::write_to_0x2006_writes_low_byte_to_temporary_register_if_latch_is_set ... 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_vram_address_0x3F1C_is_mirrored_to_0x3F0C ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F18_is_mirrored_to_0x3F08 ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram ... ok
[INFO] [stdout] test ppu::vram::tests::read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram ... ok
[INFO] [stdout] test ppu::tests::write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly ... ok
[INFO] [stdout] test apu::tests::triangle_channel_linear_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_length_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_1_lenght_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 `Command { std: "docker" "inspect" "6a0415a0e8734356d31296c1bb906e3c73e89cf562346ea742a6195e05584f4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6a0415a0e8734356d31296c1bb906e3c73e89cf562346ea742a6195e05584f4d", kill_on_drop: false }`
[INFO] [stdout] 6a0415a0e8734356d31296c1bb906e3c73e89cf562346ea742a6195e05584f4d
