[INFO] cloning repository https://github.com/rap2363/rustyraven
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rap2363/rustyraven" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frap2363%2Frustyraven", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frap2363%2Frustyraven'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bcd862e885c43ff5c30974af116416939ed49957
[INFO] checking rap2363/rustyraven against ed77b7b8699e342c2dc842c83cb5fe4025252ee8 for pr-158915-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frap2363%2Frustyraven" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/rap2363/rustyraven
[INFO] finished tweaking git repo https://github.com/rap2363/rustyraven
[INFO] tweaked toml for git repo https://github.com/rap2363/rustyraven written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rap2363/rustyraven on toolchain ed77b7b8699e342c2dc842c83cb5fe4025252ee8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rap2363/rustyraven already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: binary `test_opcodes` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /workspace/builds/worker-3-tc1/source/target/.../test_opcodes
[INFO] [stderr]   |                                                  ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: to change the binary name to `test-opcodes`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "test_opcodes"
[INFO] [stderr] 2 + name = "test-opcodes"
[INFO] [stderr]   |
[INFO] [stderr] warning: `RustyRaven` (manifest) generated 1 warning
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded minifb v0.28.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9
[INFO] running `Command { std: "docker" "start" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9" "/opt/rustwide/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9" "/opt/rustwide/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `test_opcodes` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /opt/rustwide/target/.../test_opcodes
[INFO] [stderr]   |                          ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: to change the binary name to `test-opcodes`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "test_opcodes"
[INFO] [stderr] 2 + name = "test-opcodes"
[INFO] [stderr]   |
[INFO] [stderr] warning: `RustyRaven` (manifest) generated 1 warning
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling wayland-backend v0.3.16
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling wayland-scanner v0.31.11
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]     Checking polycool v0.4.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking euclid v0.22.14
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]     Checking linebender_resource_handle v0.1.1
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling unicode-general-category v1.1.0
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking fearless_simd v0.4.1
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking kurbo v0.13.1
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking guillotiere v0.7.0
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking epaint_default_fonts v0.35.0
[INFO] [stderr]     Checking pxfm v0.1.30
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking self_cell v1.3.0
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking accesskit v0.24.1
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]    Compiling minifb v0.28.0
[INFO] [stderr]     Checking glow v0.17.0
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling bytemuck_derive v1.11.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking bytemuck v1.25.2
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking font-types v0.11.3
[INFO] [stderr]     Checking color v0.3.3
[INFO] [stderr]     Checking emath v0.35.0
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking read-fonts v0.39.2
[INFO] [stderr]     Checking ecolor v0.35.0
[INFO] [stderr]     Checking peniko v0.6.1
[INFO] [stderr]     Checking vello_common v0.0.9
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking wayland-client v0.31.15
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking vello_cpu v0.0.9
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking wayland-protocols v0.32.13
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking webbrowser v1.2.1
[INFO] [stderr]     Checking harfrust v0.7.0
[INFO] [stderr]     Checking skrifa v0.42.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking epaint v0.35.0
[INFO] [stderr]     Checking egui v0.35.0
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking egui-winit v0.35.0
[INFO] [stderr]     Checking egui_glow v0.35.0
[INFO] [stderr]     Checking eframe v0.35.0
[INFO] [stderr]     Checking RustyRaven v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `addressing_modes` and `rom::NametableArrangement::VerticallyMirrored`
[INFO] [stdout]    --> src/addressing_modes.rs:122:17
[INFO] [stdout]     |
[INFO] [stdout] 122 |     use crate::{addressing_modes, rom::NametableArrangement::VerticallyMirrored};
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressingMode` is never used
[INFO] [stdout]  --> src/addressing_modes.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum AddressingMode {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PageBoundaryResult` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum PageBoundaryResult {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressingModeData` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum AddressingModeData {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_data` and `as_address` are never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn as_address(self) -> Option<u16> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl AddressingMode {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn into_data(self, cpu: &Cpu) -> (AddressingModeData, PageBoundaryResult) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NMI_ADDRESS` is never used
[INFO] [stdout]   --> src/cpu.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NMI_ADDRESS: u16 = 0xFFFA;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESET_ADDRESS` is never used
[INFO] [stdout]   --> src/cpu.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const RESET_ADDRESS: u16 = 0xFFFC;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Opcode` is never used
[INFO] [stdout]   --> src/cpu.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | enum Opcode {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Nmi` is never used
[INFO] [stdout]   --> src/cpu.rs:75:6
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Nmi {
[INFO] [stdout]    |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Bus` is never constructed
[INFO] [stdout]   --> src/cpu.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Bus {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `ppu`, `controller_1`, and `controller_2` are never used
[INFO] [stdout]    --> src/cpu.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl Bus {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  89 |     pub fn from(ppu: Ppu, controller_1: Controller, controller_2: Controller) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn ppu(&mut self) -> &mut Ppu {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn controller_1(&mut self) -> &mut Controller {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn controller_2(&mut self) -> &mut Controller {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cpu` is never constructed
[INFO] [stdout]    --> src/cpu.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Cpu {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Cycles` is never used
[INFO] [stdout]    --> src/cpu.rs:122:6
[INFO] [stdout]     |
[INFO] [stdout] 122 | enum Cycles {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FetchInstructionResult` is never constructed
[INFO] [stdout]    --> src/cpu.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct FetchInstructionResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WriteLocation` is never used
[INFO] [stdout]    --> src/cpu.rs:133:6
[INFO] [stdout]     |
[INFO] [stdout] 133 | enum WriteLocation {
[INFO] [stdout]     |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/cpu.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl FetchInstructionResult {
[INFO] [stdout]     | --------------------------- associated function in this implementation
[INFO] [stdout] 139 |     fn new(opcode: Opcode, addressing_mode: AddressingMode, cycles: Cycles) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/cpu.rs:145:12
[INFO] [stdout]      |
[INFO] [stdout]  144 | impl Cpu {
[INFO] [stdout]      | -------- associated items in this implementation
[INFO] [stdout]  145 |     pub fn initialize(mapper: Rc<RefCell<dyn Mapper>>) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  167 |     pub fn set_nmi(&mut self) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  179 |     pub fn clear_nmi_latch(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  183 |     fn dec_nmi(&mut self, cycles: u8) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  193 |     fn is_nmi(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  197 |     fn clear_nmi(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  201 |     fn increment_pc(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  205 |     fn push_stack(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  211 |     fn push_pc(&mut self) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  218 |     fn pull_stack(&mut self) -> u8 {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  224 |     fn pull_address(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  229 |     fn fetch_next_byte(&mut self) -> u8 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  237 |     fn fetch_next_two_bytes(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  254 |     fn implied(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  259 |     fn immediate(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  263 |     fn zero_page(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  267 |     fn zero_page_x(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  271 |     fn zero_page_y(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  275 |     fn absolute(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  279 |     fn absolute_x(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  283 |     fn absolute_y(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  287 |     fn indirect_zero_page_x(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  291 |     fn indirect_zero_page_y(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  296 |     fn indirect(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  300 |     fn relative(&mut self) -> AddressingMode {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  307 |     pub fn fetch_instruction(&mut self) -> FetchInstructionResult {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  548 |     fn check_and_set_negative(&mut self, x: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  556 |     fn check_and_set_overflow(&mut self, x: u8, y: u8, sum: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  570 |     fn check_and_set_zero(&mut self, x: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  578 |     fn check_and_set_carry(&mut self, c: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  587 |     fn branch_offset(&mut self, offset: u8) -> PageBoundaryResult {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  598 |     fn adc(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  616 |     fn and(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  629 |     fn asl(&mut self, m: u8, write_location: WriteLocation) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  652 |     fn bcc(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  664 |     fn bcs(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  676 |     fn beq(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  689 |     fn bit(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  703 |     fn bmi(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  715 |     fn bne(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  727 |     fn bpl(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  739 |     fn brk(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  752 |     fn bvc(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  764 |     fn bvs(&mut self, m: u8) -> (bool, PageBoundaryResult) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  775 |     fn clc(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  782 |     fn cld(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  789 |     fn cli(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  796 |     fn clv(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  804 |     fn cmp_processor_status(&mut self, a: u8, b: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  829 |     fn cmp(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  837 |     fn cpx(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  845 |     fn cpy(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  852 |     fn dec(&mut self, m: u8, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  863 |     fn dex(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  872 |     fn dey(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  881 |     fn eor(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  890 |     fn inc(&mut self, m: u8, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  901 |     fn inx(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  910 |     fn iny(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  919 |     fn jmp(&mut self, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  928 |     fn jsr(&mut self, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  939 |     fn lda(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  948 |     fn ldx(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  957 |     fn ldy(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  966 |     fn lsr(&mut self, m: u8, write_location: WriteLocation) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  987 |     fn ora(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  995 |     fn pha(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1001 |     fn php(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1007 |     fn pla(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1016 |     fn plp(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1023 |     fn rol(&mut self, m: u8, write_location: WriteLocation) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1044 |     fn ror(&mut self, m: u8, write_location: WriteLocation) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1065 |     fn rti(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1073 |     fn rts(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1080 |     fn sbc(&mut self, m: u8) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1085 |     fn sec(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |     fn sed(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1095 |     fn sei(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1102 |     fn sta(&mut self, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1109 |     fn stx(&mut self, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1116 |     fn sty(&mut self, address: u16) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1123 |     fn tax(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1132 |     fn tay(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1141 |     fn tsx(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1150 |     fn txa(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1159 |     fn txs(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1166 |     fn tya(&mut self) {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1184 |     fn handle_nmi_interrupt(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1209 |     fn calculate_branch_cycles(num_cycles: &mut usize, branch_and_pbr: (bool, PageBoundaryResult)) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1224 |     pub fn execute_cycles_for_one_instruction(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1239 |     fn get_data(&self, addressing_mode_data: AddressingModeData) -> u8 {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1247 |     pub fn fetch_instruction_and_execute(&mut self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Button` is never used
[INFO] [stdout]  --> src/controller.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Button {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Controller` is never constructed
[INFO] [stdout]   --> src/controller.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/controller.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn strobe_high(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn strobe_low(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn read(&mut self) -> u8 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn read_button(&self, button: Button) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn set_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Segment` is never constructed
[INFO] [stdout]   --> src/memory.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Segment<const N: usize> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `initialize_with`, `write_bytes`, `write_byte`, and `read_byte` are never used
[INFO] [stdout]   --> src/memory.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<const N: usize> Segment<N> {
[INFO] [stdout]    | ------------------------------- associated items in this implementation
[INFO] [stdout] 16 |     // Initializes the segment to all zeros.
[INFO] [stdout] 17 |     pub fn initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn initialize_with(data: &[u8]) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn write_bytes(&mut self, address: usize, values: &[u8]) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn write_byte(&mut self, address: usize, value: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn read_byte(&self, address: usize) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CpuMemory` is never constructed
[INFO] [stdout]   --> src/memory.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct CpuMemory {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/memory.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  51 |     pub fn initialize(bus: Rc<RefCell<Bus>>, mapper: Rc<RefCell<dyn Mapper>>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn write_byte_to_stack(&mut self, sp: u8, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn read_byte_from_stack(&self, sp: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn write_byte(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn get_dma_bytes(&self, address_hi: u8) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn read_byte(&self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn read_two_bytes_wrapping_page(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn read_two_bytes_zero_page(&self, address: u8) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRERENDER_SCANLINE` is never used
[INFO] [stdout]  --> src/ppu.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const PRERENDER_SCANLINE: usize = 261;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_SCANLINES` is never used
[INFO] [stdout]  --> src/ppu.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const NUM_SCANLINES: usize = 262;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_DOTS` is never used
[INFO] [stdout]   --> src/ppu.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const NUM_DOTS: usize = 341;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BG_PALETTE_RAM` is never used
[INFO] [stdout]   --> src/ppu.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const BG_PALETTE_RAM: u16 = 0x3F00;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_RAM` is never used
[INFO] [stdout]   --> src/ppu.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const SPRITE_PALETTE_RAM: u16 = 0x3F10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `NametableBank` is never used
[INFO] [stdout]   --> src/ppu.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | enum NametableBank {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuMemory` is never constructed
[INFO] [stdout]   --> src/ppu.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct PpuMemory {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pixel` is never constructed
[INFO] [stdout]   --> src/ppu.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Pixel(pub u8, pub u8, pub u8);
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SpritePriority` is never used
[INFO] [stdout]   --> src/ppu.rs:38:6
[INFO] [stdout]    |
[INFO] [stdout] 38 | enum SpritePriority {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpritePixel` is never constructed
[INFO] [stdout]   --> src/ppu.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SpritePixel(Pixel, SpritePriority, bool, bool); // bools encode whether the pixel is for a sprite 0 pixel and whether it's tr...
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYSTEM_PALETTE_COLORS` is never used
[INFO] [stdout]   --> src/ppu.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const SYSTEM_PALETTE_COLORS: [Pixel; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_system_color` is never used
[INFO] [stdout]    --> src/ppu.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn get_system_color(color_index: u8) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `select_name_table_bank`, `write_byte`, `write_bytes`, `read_byte`, and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 122 |      pub fn initialize(mapper: Rc<RefCell<dyn Mapper>>) -> Self {
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn select_name_table_bank(&self, address: u16) -> (NametableBank, usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn write_byte(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn read_byte(&self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CycleOperation` is never used
[INFO] [stdout]    --> src/ppu.rs:233:6
[INFO] [stdout]     |
[INFO] [stdout] 233 | enum CycleOperation {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatchedDataBuffer` is never constructed
[INFO] [stdout]    --> src/ppu.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 | struct LatchedDataBuffer(u8);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_and_set` is never used
[INFO] [stdout]    --> src/ppu.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 253 | impl LatchedDataBuffer {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] 254 |     fn read_and_set(&mut self, new_data: u8) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DoubleBuffer` is never constructed
[INFO] [stdout]    --> src/ppu.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct DoubleBuffer {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `front`, `back`, and `swap` are never used
[INFO] [stdout]    --> src/ppu.rs:271:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DoubleBuffer {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 271 |     fn initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn front(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn back(&mut self) -> &mut Vec<Pixel> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn swap(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShiftRegister` is never constructed
[INFO] [stdout]    --> src/ppu.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct ShiftRegister(u16);
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize`, `push`, `hi`, `lo`, and `bit` are never used
[INFO] [stdout]    --> src/ppu.rs:303:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl ShiftRegister {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 302 |
[INFO] [stdout] 303 |     fn initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn push(&mut self, byte: u8) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn hi(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     fn lo(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn bit(&self, n: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sprite` is never constructed
[INFO] [stdout]    --> src/ppu.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Sprite {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `is_sprite_zero` are never used
[INFO] [stdout]    --> src/ppu.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | impl Sprite {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 336 |     fn from(bytes: &[u8; 4], is_sprite_zero: bool) -> Self {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn is_sprite_zero(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ppu` is never constructed
[INFO] [stdout]    --> src/ppu.rs:352:12
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct Ppu {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WriteToggle` is never used
[INFO] [stdout]    --> src/ppu.rs:381:6
[INFO] [stdout]     |
[INFO] [stdout] 381 | enum WriteToggle {
[INFO] [stdout]     |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 387 |     pub fn initialize(mapper: Rc<RefCell<dyn Mapper>>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn nmi(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn rendering_enabled(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     pub fn write_io_register(&mut self, address: u16, data: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn read_io_register(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn increment_vram(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 642 |     pub fn dma(&mut self, dma_bytes: &[u8]) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     pub fn dma_flag(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     fn increment_coarse_x(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     fn increment_y(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn fine_y(&self) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 709 |     fn create_sprite_line_pixels(&self, sprites_on_scanline: Vec<Sprite>, scanline_y: u8) -> Vec<Option<SpritePixel>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     fn get_line_sprites(&self, scanline_y: u8) -> Vec<Sprite> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn get_image(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 802 |     fn iterate_frame_index(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn execute_cycle(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn palette_color(&self, idx: u16) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     fn execute_operation(&mut self, operation: CycleOperation) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuControl` is never constructed
[INFO] [stdout]   --> src/ppu_registers.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct PpuControl(u8);
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SpriteSize` is never used
[INFO] [stdout]   --> src/ppu_registers.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum SpriteSize {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VramIncrement` is never used
[INFO] [stdout]   --> src/ppu_registers.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum VramIncrement {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/ppu_registers.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn into(self) -> u8 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_nmi(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn sprite_size(self) -> SpriteSize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn bg_pattern_table_half(self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn sprite_pattern_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn vram_address_increment(self) -> VramIncrement {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn base_name_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuMask` is never constructed
[INFO] [stdout]   --> src/ppu_registers.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct PpuMask(u8);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from`, `into`, `sprites_enabled`, `bg_enabled`, `sprites_left_column_disabled`, and `bg_left_column_disabled` are never used
[INFO] [stdout]    --> src/ppu_registers.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl PpuMask {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  82 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sprites_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn bg_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn sprites_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn bg_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessorStatus` is never constructed
[INFO] [stdout]  --> src/processor_status.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ProcessorStatus(u8);
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/processor_status.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ProcessorStatus {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]   7 |     pub fn initialize() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  11 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  15 |     pub fn from(flags: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  20 |     pub fn set_carry(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub fn clear_carry(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn is_carry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn carry(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn set_zero(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn clear_zero(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn set_interrupt(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn clear_interrupt(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn is_interrupt(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn set_decimal(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn clear_decimal(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn set_break(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn clear_break(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn is_break(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn set_bit_five(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn set_overflow(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn clear_overflow(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn is_overflow(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn set_negative(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn clear_negative(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_negative(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MapperName` is never used
[INFO] [stdout]  --> src/rom.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `NametableArrangement` is never used
[INFO] [stdout]   --> src/rom.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum NametableArrangement {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NesRom` is never constructed
[INFO] [stdout]   --> src/rom.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NesRom {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file_path` is never used
[INFO] [stdout]   --> src/rom.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl NesRom {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn from_file_path(filepath: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Mapper` is never used
[INFO] [stdout]   --> src/mappers/mapper.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Mapper {
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mapper` is never used
[INFO] [stdout]   --> src/mappers/mapper.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn get_mapper(rom: &NesRom) -> Rc<RefCell<dyn Mapper>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mapper0` is never constructed
[INFO] [stdout]   --> src/mappers/mapper_0.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Mapper0 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from` and `test_initialize` are never used
[INFO] [stdout]   --> src/mappers/mapper_0.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Mapper0 {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 34 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn test_initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PrgBankMode` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:120:6
[INFO] [stdout]     |
[INFO] [stdout] 120 | enum PrgBankMode {
[INFO] [stdout]     |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChrBankMode` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:130:6
[INFO] [stdout]     |
[INFO] [stdout] 130 | enum ChrBankMode {
[INFO] [stdout]     |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Register` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:135:6
[INFO] [stdout]     |
[INFO] [stdout] 135 | enum Register {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ControlState` is never constructed
[INFO] [stdout]    --> src/mappers/mapper_1.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | struct ControlState {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `initialize` and `reset` are never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl ControlState {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 155 |
[INFO] [stdout] 156 |     fn initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn reset(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mapper1` is never constructed
[INFO] [stdout]    --> src/mappers/mapper_1.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct Mapper1 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl Mapper1 {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 196 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn test_initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     fn write_control(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn write_chr_bank_0(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     fn write_chr_bank_1(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn write_prg_bank(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn get_mapped_prg_address(&self, address: u16) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     fn get_mapped_chr_address(&self, address: u16) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mapper2` is never constructed
[INFO] [stdout]   --> src/mappers/mapper_2.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Mapper2 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/mappers/mapper_2.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Mapper2 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 55 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mapper7` is never constructed
[INFO] [stdout]   --> src/mappers/mapper_7.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Mapper7 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from` and `test_initialize` are never used
[INFO] [stdout]   --> src/mappers/mapper_7.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Mapper7 {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 47 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn test_initialize() -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `RustyRaven` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `rusty_raven`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:129:13
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `addressing_modes` and `rom::NametableArrangement::VerticallyMirrored`
[INFO] [stdout]    --> src/addressing_modes.rs:122:17
[INFO] [stdout]     |
[INFO] [stdout] 122 |     use crate::{addressing_modes, rom::NametableArrangement::VerticallyMirrored};
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt` and `fs`
[INFO] [stdout]  --> src/test_opcodes.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt, fs};
[INFO] [stdout]   |           ^^^  ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `addressing_modes` and `rom::NametableArrangement::VerticallyMirrored`
[INFO] [stdout]    --> src/addressing_modes.rs:122:17
[INFO] [stdout]     |
[INFO] [stdout] 122 |     use crate::{addressing_modes, rom::NametableArrangement::VerticallyMirrored};
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NMI_ADDRESS` is never used
[INFO] [stdout]   --> src/cpu.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NMI_ADDRESS: u16 = 0xFFFA;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CycleLatency` and `Interrupt` are never constructed
[INFO] [stdout]   --> src/cpu.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Nmi {
[INFO] [stdout]    |      --- variants in this enum
[INFO] [stdout] 76 |     None,
[INFO] [stdout] 77 |     CycleLatency(u8),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 78 |     Interrupt,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Nmi` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bus`, `cycle_budget`, `nmi`, and `nmi_latch` are never read
[INFO] [stdout]    --> src/cpu.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Cpu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 107 |     pub memory: CpuMemory,
[INFO] [stdout] 108 |     pub bus: Rc<RefCell<Bus>>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub cycle_budget: i32, // when cycle_budget >= 0, we're allowed to execute cycles.
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 117 |     nmi: Nmi, // Starts at 7 and decrements down to 0 with our normal cycle count. When this
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 118 |               // happens we trigger an interrupt!
[INFO] [stdout] 119 |     nmi_latch: bool,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/cpu.rs:163:12
[INFO] [stdout]      |
[INFO] [stdout]  144 | impl Cpu {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  167 |     pub fn set_nmi(&mut self) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  179 |     pub fn clear_nmi_latch(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  183 |     fn dec_nmi(&mut self, cycles: u8) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  193 |     fn is_nmi(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  197 |     fn clear_nmi(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  211 |     fn push_pc(&mut self) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1184 |     fn handle_nmi_interrupt(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1224 |     pub fn execute_cycles_for_one_instruction(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_button` is never used
[INFO] [stdout]   --> src/controller.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_byte_zero_page` is never used
[INFO] [stdout]    --> src/memory.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_RAM` is never used
[INFO] [stdout]   --> src/ppu.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const SPRITE_PALETTE_RAM: u16 = 0x3F10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/ppu.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Pixel(pub u8, pub u8, pub u8);
[INFO] [stdout]    |            ----- ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `Pixel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BehindBackground` and `InFrontOfBackground` are never constructed
[INFO] [stdout]   --> src/ppu.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | enum SpritePriority {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 39 |     BehindBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     InFrontOfBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpritePriority` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stdout]   --> src/ppu.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SpritePixel(Pixel, SpritePriority, bool, bool); // bools encode whether the pixel is for a sprite 0 pixel and whether it's tr...
[INFO] [stdout]    |        ----------- ^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `SpritePixel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYSTEM_PALETTE_COLORS` is never used
[INFO] [stdout]   --> src/ppu.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const SYSTEM_PALETTE_COLORS: [Pixel; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_system_color` is never used
[INFO] [stdout]    --> src/ppu.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn get_system_color(color_index: u8) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `front`, `back`, and `ready` are never read
[INFO] [stdout]    --> src/ppu.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct DoubleBuffer {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 265 |     front: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 266 |     back: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 267 |     ready: Cell<bool>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `front`, `back`, and `swap` are never used
[INFO] [stdout]    --> src/ppu.rs:279:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DoubleBuffer {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn front(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn back(&mut self) -> &mut Vec<Pixel> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn swap(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/ppu.rs:299:22
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct ShiftRegister(u16);
[INFO] [stdout]     |        ------------- ^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push`, `hi`, `lo`, and `bit` are never used
[INFO] [stdout]    --> src/ppu.rs:307:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl ShiftRegister {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn push(&mut self, byte: u8) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn hi(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     fn lo(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn bit(&self, n: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sprite` is never constructed
[INFO] [stdout]    --> src/ppu.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Sprite {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `is_sprite_zero` are never used
[INFO] [stdout]    --> src/ppu.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | impl Sprite {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 336 |     fn from(bytes: &[u8; 4], is_sprite_zero: bool) -> Self {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn is_sprite_zero(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt` and `fs`
[INFO] [stdout]  --> src/test_opcodes.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt, fs};
[INFO] [stdout]   |           ^^^  ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/ppu.rs:363:5
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct Ppu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 363 |     frame_operations: Vec<[Vec<CycleOperation>; NUM_DOTS]>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 364 |     frame_index: (usize, usize), // row, column,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 365 |     even_frame: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     name_table_byte: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 371 |     attribute_table_group: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 372 |     pattern_table_byte_lo: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 373 |     pattern_table_byte_hi: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 374 |     pattern_byte_sr_hi: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 375 |     pattern_byte_sr_lo: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 376 |     attribute_byte_sr: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 377 |     image_buffer: DoubleBuffer,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 378 |     line_sprite_pixels: Vec<Option<SpritePixel>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn nmi(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn rendering_enabled(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     pub fn dma_flag(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     fn increment_coarse_x(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     fn increment_y(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn fine_y(&self) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 709 |     fn create_sprite_line_pixels(&self, sprites_on_scanline: Vec<Sprite>, scanline_y: u8) -> Vec<Option<SpritePixel>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     fn get_line_sprites(&self, scanline_y: u8) -> Vec<Sprite> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn get_image(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 802 |     fn iterate_frame_index(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn execute_cycle(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn palette_color(&self, idx: u16) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     fn execute_operation(&mut self, operation: CycleOperation) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bg_pattern_table_half` and `sprite_pattern_table_address` are never used
[INFO] [stdout]   --> src/ppu_registers.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn bg_pattern_table_half(self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn sprite_pattern_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sprites_enabled`, `bg_enabled`, `sprites_left_column_disabled`, and `bg_left_column_disabled` are never used
[INFO] [stdout]    --> src/ppu_registers.rs:90:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl PpuMask {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sprites_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn bg_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn sprites_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn bg_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_decimal` and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MapperName` is never used
[INFO] [stdout]  --> src/rom.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NesRom` is never constructed
[INFO] [stdout]   --> src/rom.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NesRom {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_file_path` is never used
[INFO] [stdout]   --> src/rom.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl NesRom {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn from_file_path(filepath: &str) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mapper` is never used
[INFO] [stdout]   --> src/mappers/mapper.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn get_mapper(rom: &NesRom) -> Rc<RefCell<dyn Mapper>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/mappers/mapper_0.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Mapper0 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 34 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl Mapper1 {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 196 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mapper2` is never constructed
[INFO] [stdout]   --> src/mappers/mapper_2.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Mapper2 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/mappers/mapper_2.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Mapper2 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 55 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/mappers/mapper_7.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Mapper7 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 47 |     pub fn from(rom: &NesRom) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `addressing_modes` and `rom::NametableArrangement::VerticallyMirrored`
[INFO] [stdout]    --> src/addressing_modes.rs:122:17
[INFO] [stdout]     |
[INFO] [stdout] 122 |     use crate::{addressing_modes, rom::NametableArrangement::VerticallyMirrored};
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ppu::Ppu`
[INFO] [stdout]  --> src/memory.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ppu::Ppu;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::controller::Controller`
[INFO] [stdout]  --> src/memory.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::controller::Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/headless.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[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/headless.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut now = std::time::Instant::now();
[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/headless.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut num_frames = 0;
[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/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sleep_duration`
[INFO] [stdout]   --> src/headless.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sleep_duration`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]   --> src/headless.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut now = std::time::Instant::now();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_frames`
[INFO] [stdout]   --> src/headless.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut num_frames = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_frames`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_button` and `clear_button` are never used
[INFO] [stdout]   --> src/controller.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn set_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string` and `fetch_next_two_bytes_wrapping_page` are never used
[INFO] [stdout]    --> src/cpu.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_byte_zero_page` are never used
[INFO] [stdout]    --> src/memory.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_chr_rom_data` and `vblank` are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_nmi` and `base_name_table_address` are never used
[INFO] [stdout]   --> src/ppu_registers.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_nmi(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn base_name_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_interrupt`, `is_decimal`, `is_break`, and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn is_interrupt(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_break(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_0.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Mapper0 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn test_initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:213:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl Mapper1 {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn test_initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_7.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Mapper7 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn test_initialize() -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:129:13
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_button` and `clear_button` are never used
[INFO] [stdout]   --> src/controller.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn set_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NMI_ADDRESS` is never used
[INFO] [stdout]   --> src/cpu.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NMI_ADDRESS: u16 = 0xFFFA;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CycleLatency` and `Interrupt` are never constructed
[INFO] [stdout]   --> src/cpu.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Nmi {
[INFO] [stdout]    |      --- variants in this enum
[INFO] [stdout] 76 |     None,
[INFO] [stdout] 77 |     CycleLatency(u8),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 78 |     Interrupt,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Nmi` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bus`, `cycle_budget`, `nmi`, and `nmi_latch` are never read
[INFO] [stdout]    --> src/cpu.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Cpu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 107 |     pub memory: CpuMemory,
[INFO] [stdout] 108 |     pub bus: Rc<RefCell<Bus>>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub cycle_budget: i32, // when cycle_budget >= 0, we're allowed to execute cycles.
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 117 |     nmi: Nmi, // Starts at 7 and decrements down to 0 with our normal cycle count. When this
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 118 |               // happens we trigger an interrupt!
[INFO] [stdout] 119 |     nmi_latch: bool,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/cpu.rs:163:12
[INFO] [stdout]      |
[INFO] [stdout]  144 | impl Cpu {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  167 |     pub fn set_nmi(&mut self) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  179 |     pub fn clear_nmi_latch(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  183 |     fn dec_nmi(&mut self, cycles: u8) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  193 |     fn is_nmi(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  197 |     fn clear_nmi(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  211 |     fn push_pc(&mut self) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1184 |     fn handle_nmi_interrupt(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1224 |     pub fn execute_cycles_for_one_instruction(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_0.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Mapper0 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn test_initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:213:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl Mapper1 {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn test_initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_7.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Mapper7 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn test_initialize() -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_byte_zero_page` is never used
[INFO] [stdout]    --> src/memory.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_RAM` is never used
[INFO] [stdout]   --> src/ppu.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const SPRITE_PALETTE_RAM: u16 = 0x3F10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/ppu.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Pixel(pub u8, pub u8, pub u8);
[INFO] [stdout]    |            ----- ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `Pixel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BehindBackground` and `InFrontOfBackground` are never constructed
[INFO] [stdout]   --> src/ppu.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | enum SpritePriority {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 39 |     BehindBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     InFrontOfBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpritePriority` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stdout]   --> src/ppu.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SpritePixel(Pixel, SpritePriority, bool, bool); // bools encode whether the pixel is for a sprite 0 pixel and whether it's tr...
[INFO] [stdout]    |        ----------- ^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `SpritePixel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYSTEM_PALETTE_COLORS` is never used
[INFO] [stdout]   --> src/ppu.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const SYSTEM_PALETTE_COLORS: [Pixel; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_system_color` is never used
[INFO] [stdout]    --> src/ppu.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn get_system_color(color_index: u8) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `front`, `back`, and `ready` are never read
[INFO] [stdout]    --> src/ppu.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct DoubleBuffer {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 265 |     front: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 266 |     back: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 267 |     ready: Cell<bool>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `front`, `back`, and `swap` are never used
[INFO] [stdout]    --> src/ppu.rs:279:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DoubleBuffer {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn front(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn back(&mut self) -> &mut Vec<Pixel> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn swap(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/ppu.rs:299:22
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct ShiftRegister(u16);
[INFO] [stdout]     |        ------------- ^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push`, `hi`, `lo`, and `bit` are never used
[INFO] [stdout]    --> src/ppu.rs:307:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl ShiftRegister {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn push(&mut self, byte: u8) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn hi(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     fn lo(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn bit(&self, n: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sprite` is never constructed
[INFO] [stdout]    --> src/ppu.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Sprite {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `is_sprite_zero` are never used
[INFO] [stdout]    --> src/ppu.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | impl Sprite {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 336 |     fn from(bytes: &[u8; 4], is_sprite_zero: bool) -> Self {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn is_sprite_zero(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/ppu.rs:363:5
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct Ppu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 363 |     frame_operations: Vec<[Vec<CycleOperation>; NUM_DOTS]>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 364 |     frame_index: (usize, usize), // row, column,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 365 |     even_frame: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     name_table_byte: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 371 |     attribute_table_group: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 372 |     pattern_table_byte_lo: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 373 |     pattern_table_byte_hi: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 374 |     pattern_byte_sr_hi: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 375 |     pattern_byte_sr_lo: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 376 |     attribute_byte_sr: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 377 |     image_buffer: DoubleBuffer,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 378 |     line_sprite_pixels: Vec<Option<SpritePixel>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn nmi(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn rendering_enabled(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     pub fn dma_flag(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     fn increment_coarse_x(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     fn increment_y(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn fine_y(&self) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 709 |     fn create_sprite_line_pixels(&self, sprites_on_scanline: Vec<Sprite>, scanline_y: u8) -> Vec<Option<SpritePixel>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     fn get_line_sprites(&self, scanline_y: u8) -> Vec<Sprite> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn get_image(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 802 |     fn iterate_frame_index(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn execute_cycle(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn palette_color(&self, idx: u16) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     fn execute_operation(&mut self, operation: CycleOperation) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SpriteSize` is never used
[INFO] [stdout]   --> src/ppu_registers.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum SpriteSize {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_nmi`, `sprite_size`, `bg_pattern_table_half`, `sprite_pattern_table_address`, and `base_name_table_address` are never used
[INFO] [stdout]   --> src/ppu_registers.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_nmi(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn sprite_size(self) -> SpriteSize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn bg_pattern_table_half(self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn sprite_pattern_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn base_name_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sprites_enabled`, `bg_enabled`, `sprites_left_column_disabled`, and `bg_left_column_disabled` are never used
[INFO] [stdout]    --> src/ppu_registers.rs:90:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl PpuMask {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sprites_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn bg_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn sprites_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn bg_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_interrupt`, `is_decimal`, `is_break`, and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn is_interrupt(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_break(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sleep_duration` is never read
[INFO] [stdout]    --> src/main.rs:76:30
[INFO] [stdout]     |
[INFO] [stdout]  76 |       let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 106 | /         sleep_duration = if keys_down.contains(&egui::Key::Tab) {
[INFO] [stdout] 107 | |             std::time::Duration::from_millis(2)
[INFO] [stdout] 108 | |         } else {
[INFO] [stdout] 109 | |             STANDARD_CYCLE_SLEEP
[INFO] [stdout] 110 | |         };
[INFO] [stdout]     | |_________- `sleep_duration` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_FRAME_CYCLES` is never used
[INFO] [stdout]   --> src/main.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const NUM_FRAME_CYCLES: usize = 89_342; // 262 * 341
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string` and `fetch_next_two_bytes_wrapping_page` are never used
[INFO] [stdout]    --> src/cpu.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_byte_zero_page` are never used
[INFO] [stdout]    --> src/memory.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_chr_rom_data` and `vblank` are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_nmi` and `base_name_table_address` are never used
[INFO] [stdout]   --> src/ppu_registers.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_nmi(self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn base_name_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_interrupt`, `is_decimal`, `is_break`, and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn is_interrupt(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_break(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_0.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Mapper0 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn test_initialize() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]    --> src/mappers/mapper_1.rs:213:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl Mapper1 {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 213 |     fn test_initialize() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `test_initialize` is never used
[INFO] [stdout]   --> src/mappers/mapper_7.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Mapper7 {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn test_initialize() -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_button` is never used
[INFO] [stdout]   --> src/controller.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NMI_ADDRESS` is never used
[INFO] [stdout]   --> src/cpu.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NMI_ADDRESS: u16 = 0xFFFA;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CycleLatency` and `Interrupt` are never constructed
[INFO] [stdout]   --> src/cpu.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | enum Nmi {
[INFO] [stdout]    |      --- variants in this enum
[INFO] [stdout] 76 |     None,
[INFO] [stdout] 77 |     CycleLatency(u8),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 78 |     Interrupt,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Nmi` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bus`, `cycle_budget`, `nmi`, and `nmi_latch` are never read
[INFO] [stdout]    --> src/cpu.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Cpu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 107 |     pub memory: CpuMemory,
[INFO] [stdout] 108 |     pub bus: Rc<RefCell<Bus>>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub cycle_budget: i32, // when cycle_budget >= 0, we're allowed to execute cycles.
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 117 |     nmi: Nmi, // Starts at 7 and decrements down to 0 with our normal cycle count. When this
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 118 |               // happens we trigger an interrupt!
[INFO] [stdout] 119 |     nmi_latch: bool,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/cpu.rs:163:12
[INFO] [stdout]      |
[INFO] [stdout]  144 | impl Cpu {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  167 |     pub fn set_nmi(&mut self) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  179 |     pub fn clear_nmi_latch(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  183 |     fn dec_nmi(&mut self, cycles: u8) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  193 |     fn is_nmi(&mut self) -> bool {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  197 |     fn clear_nmi(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  211 |     fn push_pc(&mut self) {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1184 |     fn handle_nmi_interrupt(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1224 |     pub fn execute_cycles_for_one_instruction(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_byte_zero_page` is never used
[INFO] [stdout]    --> src/memory.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_RAM` is never used
[INFO] [stdout]   --> src/ppu.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const SPRITE_PALETTE_RAM: u16 = 0x3F10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, and `2` are never read
[INFO] [stdout]   --> src/ppu.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Pixel(pub u8, pub u8, pub u8);
[INFO] [stdout]    |            ----- ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `Pixel` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BehindBackground` and `InFrontOfBackground` are never constructed
[INFO] [stdout]   --> src/ppu.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | enum SpritePriority {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 39 |     BehindBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     InFrontOfBackground,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpritePriority` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stdout]   --> src/ppu.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SpritePixel(Pixel, SpritePriority, bool, bool); // bools encode whether the pixel is for a sprite 0 pixel and whether it's tr...
[INFO] [stdout]    |        ----------- ^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^
[INFO] [stdout]    |        |
[INFO] [stdout]    |        fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout]    = note: `SpritePixel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYSTEM_PALETTE_COLORS` is never used
[INFO] [stdout]   --> src/ppu.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const SYSTEM_PALETTE_COLORS: [Pixel; 64] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_system_color` is never used
[INFO] [stdout]    --> src/ppu.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn get_system_color(color_index: u8) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `front`, `back`, and `ready` are never read
[INFO] [stdout]    --> src/ppu.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 264 | struct DoubleBuffer {
[INFO] [stdout]     |        ------------ fields in this struct
[INFO] [stdout] 265 |     front: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 266 |     back: Vec<Pixel>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 267 |     ready: Cell<bool>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `front`, `back`, and `swap` are never used
[INFO] [stdout]    --> src/ppu.rs:279:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DoubleBuffer {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn front(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn back(&mut self) -> &mut Vec<Pixel> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn swap(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/ppu.rs:299:22
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct ShiftRegister(u16);
[INFO] [stdout]     |        ------------- ^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push`, `hi`, `lo`, and `bit` are never used
[INFO] [stdout]    --> src/ppu.rs:307:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | impl ShiftRegister {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 307 |     fn push(&mut self, byte: u8) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn hi(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     fn lo(&self) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn bit(&self, n: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sprite` is never constructed
[INFO] [stdout]    --> src/ppu.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Sprite {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `is_sprite_zero` are never used
[INFO] [stdout]    --> src/ppu.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | impl Sprite {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 336 |     fn from(bytes: &[u8; 4], is_sprite_zero: bool) -> Self {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn is_sprite_zero(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/ppu.rs:363:5
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub struct Ppu {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 363 |     frame_operations: Vec<[Vec<CycleOperation>; NUM_DOTS]>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 364 |     frame_index: (usize, usize), // row, column,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 365 |     even_frame: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     name_table_byte: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 371 |     attribute_table_group: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 372 |     pattern_table_byte_lo: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 373 |     pattern_table_byte_hi: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 374 |     pattern_byte_sr_hi: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 375 |     pattern_byte_sr_lo: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 376 |     attribute_byte_sr: ShiftRegister,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 377 |     image_buffer: DoubleBuffer,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 378 |     line_sprite_pixels: Vec<Option<SpritePixel>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     pub fn nmi(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn rendering_enabled(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     pub fn dma_flag(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 663 |     fn increment_coarse_x(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     fn increment_y(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 704 |     fn fine_y(&self) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 709 |     fn create_sprite_line_pixels(&self, sprites_on_scanline: Vec<Sprite>, scanline_y: u8) -> Vec<Option<SpritePixel>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     fn get_line_sprites(&self, scanline_y: u8) -> Vec<Sprite> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     pub fn get_image(&self) -> Option<Vec<Pixel>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 802 |     fn iterate_frame_index(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     pub fn execute_cycle(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn palette_color(&self, idx: u16) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 848 |     fn execute_operation(&mut self, operation: CycleOperation) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bg_pattern_table_half` and `sprite_pattern_table_address` are never used
[INFO] [stdout]   --> src/ppu_registers.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PpuControl {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn bg_pattern_table_half(self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn sprite_pattern_table_address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sprites_enabled`, `bg_enabled`, `sprites_left_column_disabled`, and `bg_left_column_disabled` are never used
[INFO] [stdout]    --> src/ppu_registers.rs:90:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl PpuMask {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sprites_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn bg_enabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn sprites_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn bg_left_column_disabled(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_decimal` and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:129:13
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[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/addressing_modes.rs:129:13
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/addressing_modes.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut cpu = Cpu::initialize(Rc::new(RefCell::new(Mapper0::test_initialize())));
[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/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sleep_duration` is never read
[INFO] [stdout]    --> src/main.rs:76:30
[INFO] [stdout]     |
[INFO] [stdout]  76 |       let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 106 | /         sleep_duration = if keys_down.contains(&egui::Key::Tab) {
[INFO] [stdout] 107 | |             std::time::Duration::from_millis(2)
[INFO] [stdout] 108 | |         } else {
[INFO] [stdout] 109 | |             STANDARD_CYCLE_SLEEP
[INFO] [stdout] 110 | |         };
[INFO] [stdout]     | |_________- `sleep_duration` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_FRAME_CYCLES` is never used
[INFO] [stdout]   --> src/main.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const NUM_FRAME_CYCLES: usize = 89_342; // 262 * 341
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string` and `fetch_next_two_bytes_wrapping_page` are never used
[INFO] [stdout]    --> src/cpu.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_byte_zero_page` is never used
[INFO] [stdout]    --> src/memory.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_chr_rom_data` and `vblank` are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_decimal` and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/mappers/mapper_7.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut chr_rom_data = Segment::<0x2000>::initialize();
[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/headless.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[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/headless.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut now = std::time::Instant::now();
[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/headless.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut num_frames = 0;
[INFO] [stdout]    |         ----^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sleep_duration`
[INFO] [stdout]   --> src/headless.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut sleep_duration = STANDARD_CYCLE_SLEEP;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sleep_duration`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]   --> src/headless.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut now = std::time::Instant::now();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_frames`
[INFO] [stdout]   --> src/headless.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut num_frames = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_frames`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_data` is never used
[INFO] [stdout]   --> src/addressing_modes.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl AddressingModeData {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn as_data(self) -> Option<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_button` is never used
[INFO] [stdout]   --> src/controller.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Controller {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn clear_button(&mut self, button: Button) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_string` and `fetch_next_two_bytes_wrapping_page` are never used
[INFO] [stdout]    --> src/cpu.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn fetch_next_two_bytes_wrapping_page(&mut self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_byte_zero_page` is never used
[INFO] [stdout]    --> src/memory.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl CpuMemory {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn read_byte_zero_page(&self, address: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_bytes` and `read_two_bytes` are never used
[INFO] [stdout]    --> src/ppu.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl PpuMemory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn write_bytes(&mut self, address: u16, values: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_two_bytes(&self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_chr_rom_data` and `vblank` are never used
[INFO] [stdout]    --> src/ppu.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 386 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn write_chr_rom_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PpuStatus` is never constructed
[INFO] [stdout]    --> src/ppu_registers.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PpuStatus(u8);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ppu_registers.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl PpuStatus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 116 |     pub fn from(byte: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn into(self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_vblank(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn clear_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn set_vblank(self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn sprite_zero_hit(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn sprite_overflow(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_decimal` and `clear_bit_five` are never used
[INFO] [stdout]   --> src/processor_status.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ProcessorStatus {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_decimal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn clear_bit_five(self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Unknown` is never constructed
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum MapperName {
[INFO] [stdout]   |          ---------- variant in this enum
[INFO] [stdout] 5 |     Unknown(u8),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MapperName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ppu.rs:782:20
[INFO] [stdout]     |
[INFO] [stdout] 782 |                 if x_pos <= 0xFF {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `minifb`
[INFO] [stderr]   --> Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | minifb = "0.28"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `minifb`
[INFO] [stderr] warning: `RustyRaven` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.10s
[INFO] running `Command { std: "docker" "inspect" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9", kill_on_drop: false }`
[INFO] [stdout] 9b3fbaea57e61b076c657c02aeb7f8cae3b9db7be6473b14e0a28d3ff4b347a9
