[INFO] cloning repository https://github.com/Guterfps/NES_Emulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Guterfps/NES_Emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGuterfps%2FNES_Emulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGuterfps%2FNES_Emulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 30be714a3dbbe132a7d4a2a3a3fe29e8442c00d0
[INFO] checking Guterfps/NES_Emulator against try#7b3da9103634dffd4f4365cfd8642427c781d99f+rustflags=-Dinherent-method-on-receiver for 152214-denied
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGuterfps%2FNES_Emulator" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Guterfps/NES_Emulator
[INFO] finished tweaking git repo https://github.com/Guterfps/NES_Emulator
[INFO] tweaked toml for git repo https://github.com/Guterfps/NES_Emulator written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Guterfps/NES_Emulator on toolchain 7b3da9103634dffd4f4365cfd8642427c781d99f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Guterfps/NES_Emulator 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" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sdl3-sys v0.5.11+SDL3-3.2.28
[INFO] [stderr]   Downloaded sdl3 v0.16.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a14bdb6ba0c9b3d57be50688317acd45867e60f73a76ccd7db39985c94930a2e
[INFO] running `Command { std: "docker" "start" "-a" "a14bdb6ba0c9b3d57be50688317acd45867e60f73a76ccd7db39985c94930a2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a14bdb6ba0c9b3d57be50688317acd45867e60f73a76ccd7db39985c94930a2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a14bdb6ba0c9b3d57be50688317acd45867e60f73a76ccd7db39985c94930a2e", kill_on_drop: false }`
[INFO] [stdout] a14bdb6ba0c9b3d57be50688317acd45867e60f73a76ccd7db39985c94930a2e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dinherent-method-on-receiver" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c8c2ed18441263e55df210ae9b0f875f36ba4f99d1c77246800c5a809cf304b4
[INFO] running `Command { std: "docker" "start" "-a" "c8c2ed18441263e55df210ae9b0f875f36ba4f99d1c77246800c5a809cf304b4", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling sdl3-sys v0.5.11+SDL3-3.2.28
[INFO] [stderr]    Compiling sdl3 v0.16.2
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::emulator::apu::regs::Reg`
[INFO] [stdout]  --> src/emulator/apu/channels/dmc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::emulator::apu::regs::Reg;
[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: `SPRITE_0_HIT_FLAG`
[INFO] [stdout]   --> src/emulator/ppu.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | use status_reg::{SPRITE_0_HIT_FLAG, StatusReg};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/main.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::emulator::apu::regs::Reg`
[INFO] [stdout]  --> src/emulator/apu/channels/dmc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::emulator::apu::regs::Reg;
[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: `SPRITE_0_HIT_FLAG`
[INFO] [stdout]   --> src/emulator/ppu.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | use status_reg::{SPRITE_0_HIT_FLAG, StatusReg};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/main.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/emulator/cpu/test.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut chr_rom = [0u8; CHR_PAGE_SIZE];
[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: `bottom_right_nt`
[INFO] [stdout]   --> src/emulator/ppu/render.rs:54:40
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let (main_nt, right_nt, bottom_nt, bottom_right_nt) = get_nametables(ppu, base_nametable);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bottom_right_nt`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/main.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     cpu.run_with_callback(move |cpu| {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AddressingMode` is more private than the item `trace::OpCode::mode`
[INFO] [stdout]   --> src/emulator/cpu/trace.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub mode: AddressingMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ field `trace::OpCode::mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `AddressingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/emulator/cpu.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum AddressingMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nes_test` is never used
[INFO] [stdout]   --> src/main.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn nes_test() {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tile` is never used
[INFO] [stdout]    --> src/main.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn show_tile(chr_rom: &Vec<u8>, bank: usize, tile_n: usize) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tile_bank` is never used
[INFO] [stdout]    --> src/main.rs:273:4
[INFO] [stdout]     |
[INFO] [stdout] 273 | fn show_tile_bank(chr_rom: &Vec<u8>, bank: usize) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tiles` is never used
[INFO] [stdout]    --> src/main.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn tiles() {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `snake_game` is never used
[INFO] [stdout]    --> src/main.rs:354:4
[INFO] [stdout]     |
[INFO] [stdout] 354 | fn snake_game() {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_user_input` is never used
[INFO] [stdout]    --> src/main.rs:395:4
[INFO] [stdout]     |
[INFO] [stdout] 395 | fn handle_user_input(cpu: &mut CPU6502, event_pump: &mut EventPump) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color` is never used
[INFO] [stdout]    --> src/main.rs:424:4
[INFO] [stdout]     |
[INFO] [stdout] 424 | fn color(byte: u8) -> Color {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_screan_state` is never used
[INFO] [stdout]    --> src/main.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn read_screan_state(cpu: &mut CPU6502, frame: &mut [u8; 32 * 3 * 32]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_interrupt` is never used
[INFO] [stdout]    --> src/emulator/apu/channels/dmc.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl Dmc {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn clear_interrupt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAME_INTERRUPT_MASK` is never used
[INFO] [stdout]  --> src/emulator/apu/regs/status.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const FRAME_INTERRUPT_MASK: u8 = 0b0100_0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS` is never used
[INFO] [stdout]   --> src/emulator/bus.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_cycles` is never used
[INFO] [stdout]    --> src/emulator/bus.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl<'a> Bus<'a> {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn get_cycles(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ZERO_PAGE` is never used
[INFO] [stdout]   --> src/emulator/cpu.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const ZERO_PAGE: u16 = 0x0000; // 0x0000 - 0x00FF
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/emulator/cpu.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl<'a> CPU6502<'a> {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn load(&mut self, program: Vec<u8>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn load_and_run(&mut self, program: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn mem_write(&mut self, addr: u16, data: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn mem_read(&mut self, addr: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_cycles_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     fn skb(&mut self, _mode: &AddressingMode) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 729 |     fn skw(&mut self, _mode: &AddressingMode) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpCode` is never constructed
[INFO] [stdout]  --> src/emulator/cpu/trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct OpCode {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/emulator/cpu/trace.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl OpCode {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     fn new(code: u8, mnemonic: &'static str, len: u8, cycles: u8, mode: AddressingMode) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace` is never used
[INFO] [stdout]    --> src/emulator/cpu/trace.rs:367:8
[INFO] [stdout]     |
[INFO] [stdout] 367 | pub fn trace(cpu: &mut CPU6502) -> String {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mem_write_u16` is never used
[INFO] [stdout]  --> src/emulator/memory.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait MemAccess {
[INFO] [stdout]   |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 9 |     fn mem_write_u16(&mut self, pos: u16, data: u16) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scroll_reg` and `addr_reg` are never read
[INFO] [stdout]   --> src/emulator/ppu.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Ppu {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     scroll_reg: ScrollReg,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     addr_reg: AddressReg,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_0` is never used
[INFO] [stdout]   --> src/emulator/ppu.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const NAME_TABLE_0: u16 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOT_328_IN_SCANLINE` is never used
[INFO] [stdout]   --> src/emulator/ppu.rs:69:7
[INFO] [stdout]    |
[INFO] [stdout] 69 | const DOT_328_IN_SCANLINE: usize = 328;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_sprite_0_hit` and `increment_vram_addr` are never used
[INFO] [stdout]    --> src/emulator/ppu.rs:325:8
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn is_sprite_0_hit(&self, cycle: usize) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     fn increment_vram_addr(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]  --> src/emulator/ppu/address_reg.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AddressReg {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 4 |     value: (u8, u8),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIRRORS_MASK` is never used
[INFO] [stdout]  --> src/emulator/ppu/address_reg.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MIRRORS_MASK: u16 = 0b1111_1111_1111_1111;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set`, `get`, `update`, `increment`, and `mirror_down_addr` are never used
[INFO] [stdout]   --> src/emulator/ppu/address_reg.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl AddressReg {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn set(&mut self, data: u16) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn update(&mut self, data: u8, latch: bool) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn increment(&mut self, inc: AddressInc) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn mirror_down_addr(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_FLAGS` is never used
[INFO] [stdout]  --> src/emulator/ppu/control_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const NAME_TABLE_FLAGS: u8 = 0b0000_0011;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MASTER_SLAVE_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const MASTER_SLAVE_FLAG: u8 = 0b0100_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NAME_TABLE_SIZE: u16 = 0x400;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLES_ADRESS` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const NAME_TABLES_ADRESS: u16 = 0x2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vram_addr_increment` and `nametable_addr` are never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl ControlReg {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn vram_addr_increment(&self) -> AddressInc {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn nametable_addr(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_w`, `get_scroll_x`, `get_scroll_y`, and `get_nametable_select` are never used
[INFO] [stdout]    --> src/emulator/ppu/internal_regs.rs:71:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl InternalRegs {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn get_w(&self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_scroll_x(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_scroll_y(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn get_nametable_select(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY_SCALE_FLAG` is never used
[INFO] [stdout]  --> src/emulator/ppu/mask_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const GREY_SCALE_FLAG: u8 = 0b0000_0001;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_RED_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const EMPHASIZE_RED_FLAG: u8 = 0b0010_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_GREEN_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const EMPHASIZE_GREEN_FLAG: u8 = 0b0100_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_BKUE_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const EMPHASIZE_BKUE_FLAG: u8 = 0b1000_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MaskReg {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn get(&self) -> u8 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const TILE_SIZE: usize = 16;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_WIDTH` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const TILE_WIDTH: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_HIGHT` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const TILE_HIGHT: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_OF_BG_PALLETES` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const NUM_OF_BG_PALLETES: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLOR_BITS` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const COLOR_BITS: u8 = 0b11;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const SPRITE_SIZE: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_INDEX_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const SPRITE_INDEX_BYTE: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_ATTR_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SPRITE_ATTR_BYTE: usize = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_X_POS_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const SPRITE_X_POS_BYTE: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_FLIP_HOR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const SPRITE_FLIP_HOR: u8 = 0b0100_0000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_FLIP_VER` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const SPRITE_FLIP_VER: u8 = 0b1000_0000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_MASK` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const SPRITE_PALETTE_MASK: u8 = 0b11;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_SPRITE_PALETTE_OFFSET` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const START_SPRITE_PALETTE_OFFSET: u8 = 0x11;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_OF_SPRITE_PALETTES` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const NUM_OF_SPRITE_PALETTES: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATTRIBUTE_OFFSET` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const ATTRIBUTE_OFFSET: usize = 0x03C0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_NAMETABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const TWO_NAMETABLE_SIZE: u16 = NAME_TABLE_SIZE * 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREE_NAMETABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const THREE_NAMETABLE_SIZE: u16 = NAME_TABLE_SIZE * 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIRST_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const FIRST_TABLE_ADDR: u16 = VRAM_ADDR;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECOND_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const SECOND_TABLE_ADDR: u16 = VRAM_ADDR + NAME_TABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THIRD_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const THIRD_TABLE_ADDR: u16 = VRAM_ADDR + TWO_NAMETABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FORTH_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const FORTH_TABLE_ADDR: u16 = VRAM_ADDR + THREE_NAMETABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISPLAY_WIDTH` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const DISPLAY_WIDTH: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISPLAY_HIGHT` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:40:7
[INFO] [stdout]    |
[INFO] [stdout] 40 | const DISPLAY_HIGHT: usize = 240;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn render(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_backgound` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn draw_backgound(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bg_pallete` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:136:4
[INFO] [stdout]     |
[INFO] [stdout] 136 | fn bg_pallete(
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_nametables` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn get_nametables(ppu: &Ppu, base_addr: u16) -> (&[u8], &[u8], &[u8], &[u8]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_sprites` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:204:4
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn draw_sprites(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprite_palette` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:260:4
[INFO] [stdout]     |
[INFO] [stdout] 260 | fn sprite_palette(ppu: &Ppu, pal_idx: u8) -> [u8; NUM_OF_SPRITE_PALETTES] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_name_table` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn render_name_table(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rect` is never constructed
[INFO] [stdout]  --> src/emulator/ppu/render/rect.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rect {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/emulator/ppu/render/rect.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Rect {
[INFO] [stdout]   | --------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(x1: usize, y1: usize, x2: usize, y2: usize) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x` and `y` are never read
[INFO] [stdout]  --> src/emulator/ppu/scroll_reg.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct ScrollReg {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 2 |     x: u8,
[INFO] [stdout]   |     ^
[INFO] [stdout] 3 |     y: u8,
[INFO] [stdout]   |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write`, `scroll_x`, and `scroll_y` are never used
[INFO] [stdout]   --> src/emulator/ppu/scroll_reg.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ScrollReg {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn write(&mut self, value: u8, latch: bool) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn scroll_x(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn scroll_y(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_OPEN_BUS` is never used
[INFO] [stdout]  --> src/emulator/ppu/status_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const PPU_OPEN_BUS: u8 = 0b0001_1111;
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_OVERFLOW_FLAG` is never used
[INFO] [stdout]  --> src/emulator/ppu/status_reg.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SPRITE_OVERFLOW_FLAG: u8 = 0b0010_0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/emulator/ppu/status_reg.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl StatusReg {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn update(&mut self, value: u8) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mapper` is never read
[INFO] [stdout]   --> src/emulator/rom.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Rom {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     mapper: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_8_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const FLAGS_8_INDX: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_9_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const FLAGS_9_INDX: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_10_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const FLAGS_10_INDX: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `read_prg`, `reag_chr`, `prg_size`, and `chr_size` are never used
[INFO] [stdout]   --> src/emulator/rom.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl Rom {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn read_prg(&self, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn reag_chr(&self, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn prg_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn chr_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bottom_right_nt`
[INFO] [stdout]   --> src/emulator/ppu/render.rs:54:40
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let (main_nt, right_nt, bottom_nt, bottom_right_nt) = get_nametables(ppu, base_nametable);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bottom_right_nt`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/main.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     cpu.run_with_callback(move |cpu| {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AddressingMode` is more private than the item `trace::OpCode::mode`
[INFO] [stdout]   --> src/emulator/cpu/trace.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     pub mode: AddressingMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^ field `trace::OpCode::mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `AddressingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/emulator/cpu.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum AddressingMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nes_test` is never used
[INFO] [stdout]   --> src/main.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn nes_test() {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tile` is never used
[INFO] [stdout]    --> src/main.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn show_tile(chr_rom: &Vec<u8>, bank: usize, tile_n: usize) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tile_bank` is never used
[INFO] [stdout]    --> src/main.rs:273:4
[INFO] [stdout]     |
[INFO] [stdout] 273 | fn show_tile_bank(chr_rom: &Vec<u8>, bank: usize) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tiles` is never used
[INFO] [stdout]    --> src/main.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn tiles() {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `snake_game` is never used
[INFO] [stdout]    --> src/main.rs:354:4
[INFO] [stdout]     |
[INFO] [stdout] 354 | fn snake_game() {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_user_input` is never used
[INFO] [stdout]    --> src/main.rs:395:4
[INFO] [stdout]     |
[INFO] [stdout] 395 | fn handle_user_input(cpu: &mut CPU6502, event_pump: &mut EventPump) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color` is never used
[INFO] [stdout]    --> src/main.rs:424:4
[INFO] [stdout]     |
[INFO] [stdout] 424 | fn color(byte: u8) -> Color {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_screan_state` is never used
[INFO] [stdout]    --> src/main.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn read_screan_state(cpu: &mut CPU6502, frame: &mut [u8; 32 * 3 * 32]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_interrupt` is never used
[INFO] [stdout]    --> src/emulator/apu/channels/dmc.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl Dmc {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn clear_interrupt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FRAME_INTERRUPT_MASK` is never used
[INFO] [stdout]  --> src/emulator/apu/regs/status.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const FRAME_INTERRUPT_MASK: u8 = 0b0100_0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS` is never used
[INFO] [stdout]   --> src/emulator/bus.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_cycles` is never used
[INFO] [stdout]    --> src/emulator/bus.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl<'a> Bus<'a> {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn get_cycles(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ZERO_PAGE` is never used
[INFO] [stdout]   --> src/emulator/cpu.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const ZERO_PAGE: u16 = 0x0000; // 0x0000 - 0x00FF
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/emulator/cpu.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl<'a> CPU6502<'a> {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn load(&mut self, program: Vec<u8>) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn run(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn load_and_run(&mut self, program: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn mem_write(&mut self, addr: u16, data: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn mem_read(&mut self, addr: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_cycles_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     fn skb(&mut self, _mode: &AddressingMode) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 729 |     fn skw(&mut self, _mode: &AddressingMode) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpCode` is never constructed
[INFO] [stdout]  --> src/emulator/cpu/trace.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct OpCode {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/emulator/cpu/trace.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl OpCode {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     fn new(code: u8, mnemonic: &'static str, len: u8, cycles: u8, mode: AddressingMode) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace` is never used
[INFO] [stdout]    --> src/emulator/cpu/trace.rs:367:8
[INFO] [stdout]     |
[INFO] [stdout] 367 | pub fn trace(cpu: &mut CPU6502) -> String {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mem_write_u16` is never used
[INFO] [stdout]  --> src/emulator/memory.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait MemAccess {
[INFO] [stdout]   |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 9 |     fn mem_write_u16(&mut self, pos: u16, data: u16) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scroll_reg` and `addr_reg` are never read
[INFO] [stdout]   --> src/emulator/ppu.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Ppu {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     scroll_reg: ScrollReg,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     addr_reg: AddressReg,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_0` is never used
[INFO] [stdout]   --> src/emulator/ppu.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const NAME_TABLE_0: u16 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOT_328_IN_SCANLINE` is never used
[INFO] [stdout]   --> src/emulator/ppu.rs:69:7
[INFO] [stdout]    |
[INFO] [stdout] 69 | const DOT_328_IN_SCANLINE: usize = 328;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_sprite_0_hit` and `increment_vram_addr` are never used
[INFO] [stdout]    --> src/emulator/ppu.rs:325:8
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Ppu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 325 |     fn is_sprite_0_hit(&self, cycle: usize) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     fn increment_vram_addr(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]  --> src/emulator/ppu/address_reg.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AddressReg {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 4 |     value: (u8, u8),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIRRORS_MASK` is never used
[INFO] [stdout]  --> src/emulator/ppu/address_reg.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MIRRORS_MASK: u16 = 0b1111_1111_1111_1111;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set`, `get`, `update`, `increment`, and `mirror_down_addr` are never used
[INFO] [stdout]   --> src/emulator/ppu/address_reg.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl AddressReg {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn set(&mut self, data: u16) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn update(&mut self, data: u8, latch: bool) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn increment(&mut self, inc: AddressInc) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn mirror_down_addr(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_FLAGS` is never used
[INFO] [stdout]  --> src/emulator/ppu/control_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const NAME_TABLE_FLAGS: u8 = 0b0000_0011;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MASTER_SLAVE_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const MASTER_SLAVE_FLAG: u8 = 0b0100_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const NAME_TABLE_SIZE: u16 = 0x400;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAME_TABLES_ADRESS` is never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const NAME_TABLES_ADRESS: u16 = 0x2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vram_addr_increment` and `nametable_addr` are never used
[INFO] [stdout]   --> src/emulator/ppu/control_reg.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl ControlReg {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn vram_addr_increment(&self) -> AddressInc {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn nametable_addr(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_w`, `get_scroll_x`, `get_scroll_y`, and `get_nametable_select` are never used
[INFO] [stdout]    --> src/emulator/ppu/internal_regs.rs:71:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl InternalRegs {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn get_w(&self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_scroll_x(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn get_scroll_y(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn get_nametable_select(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY_SCALE_FLAG` is never used
[INFO] [stdout]  --> src/emulator/ppu/mask_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const GREY_SCALE_FLAG: u8 = 0b0000_0001;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_RED_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const EMPHASIZE_RED_FLAG: u8 = 0b0010_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_GREEN_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const EMPHASIZE_GREEN_FLAG: u8 = 0b0100_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPHASIZE_BKUE_FLAG` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const EMPHASIZE_BKUE_FLAG: u8 = 0b1000_0000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/emulator/ppu/mask_reg.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MaskReg {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn get(&self) -> u8 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const TILE_SIZE: usize = 16;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_WIDTH` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const TILE_WIDTH: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_HIGHT` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const TILE_HIGHT: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_OF_BG_PALLETES` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const NUM_OF_BG_PALLETES: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLOR_BITS` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const COLOR_BITS: u8 = 0b11;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const SPRITE_SIZE: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_INDEX_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const SPRITE_INDEX_BYTE: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_ATTR_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SPRITE_ATTR_BYTE: usize = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_X_POS_BYTE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const SPRITE_X_POS_BYTE: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_FLIP_HOR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const SPRITE_FLIP_HOR: u8 = 0b0100_0000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_FLIP_VER` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const SPRITE_FLIP_VER: u8 = 0b1000_0000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_PALETTE_MASK` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const SPRITE_PALETTE_MASK: u8 = 0b11;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `START_SPRITE_PALETTE_OFFSET` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const START_SPRITE_PALETTE_OFFSET: u8 = 0x11;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_OF_SPRITE_PALETTES` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const NUM_OF_SPRITE_PALETTES: usize = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATTRIBUTE_OFFSET` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const ATTRIBUTE_OFFSET: usize = 0x03C0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TWO_NAMETABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const TWO_NAMETABLE_SIZE: u16 = NAME_TABLE_SIZE * 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREE_NAMETABLE_SIZE` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const THREE_NAMETABLE_SIZE: u16 = NAME_TABLE_SIZE * 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIRST_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const FIRST_TABLE_ADDR: u16 = VRAM_ADDR;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECOND_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const SECOND_TABLE_ADDR: u16 = VRAM_ADDR + NAME_TABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THIRD_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const THIRD_TABLE_ADDR: u16 = VRAM_ADDR + TWO_NAMETABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FORTH_TABLE_ADDR` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const FORTH_TABLE_ADDR: u16 = VRAM_ADDR + THREE_NAMETABLE_SIZE;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISPLAY_WIDTH` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const DISPLAY_WIDTH: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISPLAY_HIGHT` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:40:7
[INFO] [stdout]    |
[INFO] [stdout] 40 | const DISPLAY_HIGHT: usize = 240;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn render(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_backgound` is never used
[INFO] [stdout]   --> src/emulator/ppu/render.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn draw_backgound(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bg_pallete` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:136:4
[INFO] [stdout]     |
[INFO] [stdout] 136 | fn bg_pallete(
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_nametables` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn get_nametables(ppu: &Ppu, base_addr: u16) -> (&[u8], &[u8], &[u8], &[u8]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_sprites` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:204:4
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn draw_sprites(ppu: &Ppu, frame: &mut Frame) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprite_palette` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:260:4
[INFO] [stdout]     |
[INFO] [stdout] 260 | fn sprite_palette(ppu: &Ppu, pal_idx: u8) -> [u8; NUM_OF_SPRITE_PALETTES] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_name_table` is never used
[INFO] [stdout]    --> src/emulator/ppu/render.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn render_name_table(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rect` is never constructed
[INFO] [stdout]  --> src/emulator/ppu/render/rect.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Rect {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/emulator/ppu/render/rect.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Rect {
[INFO] [stdout]   | --------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(x1: usize, y1: usize, x2: usize, y2: usize) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x` and `y` are never read
[INFO] [stdout]  --> src/emulator/ppu/scroll_reg.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct ScrollReg {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 2 |     x: u8,
[INFO] [stdout]   |     ^
[INFO] [stdout] 3 |     y: u8,
[INFO] [stdout]   |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write`, `scroll_x`, and `scroll_y` are never used
[INFO] [stdout]   --> src/emulator/ppu/scroll_reg.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl ScrollReg {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn write(&mut self, value: u8, latch: bool) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn scroll_x(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn scroll_y(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_OPEN_BUS` is never used
[INFO] [stdout]  --> src/emulator/ppu/status_reg.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const PPU_OPEN_BUS: u8 = 0b0001_1111;
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_OVERFLOW_FLAG` is never used
[INFO] [stdout]  --> src/emulator/ppu/status_reg.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SPRITE_OVERFLOW_FLAG: u8 = 0b0010_0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update` is never used
[INFO] [stdout]   --> src/emulator/ppu/status_reg.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl StatusReg {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn update(&mut self, value: u8) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mapper` is never read
[INFO] [stdout]   --> src/emulator/rom.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Rom {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     mapper: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_8_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const FLAGS_8_INDX: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_9_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const FLAGS_9_INDX: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAGS_10_INDX` is never used
[INFO] [stdout]   --> src/emulator/rom.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const FLAGS_10_INDX: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `read_prg`, `reag_chr`, `prg_size`, and `chr_size` are never used
[INFO] [stdout]   --> src/emulator/rom.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl Rom {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn read_prg(&self, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn reag_chr(&self, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn prg_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn chr_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.28s
[INFO] running `Command { std: "docker" "inspect" "c8c2ed18441263e55df210ae9b0f875f36ba4f99d1c77246800c5a809cf304b4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8c2ed18441263e55df210ae9b0f875f36ba4f99d1c77246800c5a809cf304b4", kill_on_drop: false }`
[INFO] [stdout] c8c2ed18441263e55df210ae9b0f875f36ba4f99d1c77246800c5a809cf304b4
