[INFO] cloning repository https://github.com/mppadding/gba
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mppadding/gba" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmppadding%2Fgba", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmppadding%2Fgba'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4ea7617865355ef82849bc7f2cb4f73d9a7d4b77
[INFO] checking mppadding/gba against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmppadding%2Fgba" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mppadding/gba
[INFO] finished tweaking git repo https://github.com/mppadding/gba
[INFO] tweaked toml for git repo https://github.com/mppadding/gba written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mppadding/gba on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mppadding/gba 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f345811218563ec78db98354ab328bf3289a6aaadaa4ed21c675dbfd21553509
[INFO] running `Command { std: "docker" "start" "-a" "f345811218563ec78db98354ab328bf3289a6aaadaa4ed21c675dbfd21553509", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f345811218563ec78db98354ab328bf3289a6aaadaa4ed21c675dbfd21553509", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f345811218563ec78db98354ab328bf3289a6aaadaa4ed21c675dbfd21553509", kill_on_drop: false }`
[INFO] [stdout] f345811218563ec78db98354ab328bf3289a6aaadaa4ed21c675dbfd21553509
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 73919952a98894fde8f6ed7323313375b2c29bf4c89a373862af7d08febae3a9
[INFO] running `Command { std: "docker" "start" "-a" "73919952a98894fde8f6ed7323313375b2c29bf4c89a373862af7d08febae3a9", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.144
[INFO] [stderr]    Compiling log v0.4.17
[INFO] [stderr]    Compiling signal-hook v0.3.15
[INFO] [stderr]    Compiling parking_lot_core v0.9.7
[INFO] [stderr]     Checking iana-time-zone v0.1.56
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking chrono v0.4.24
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking mio v0.8.6
[INFO] [stderr]     Checking sdl2-sys v0.35.2
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking crossterm v0.26.1
[INFO] [stderr]     Checking sdl2 v0.35.2
[INFO] [stderr]     Checking ratatui v0.20.1
[INFO] [stderr]     Checking tui-logger v0.9.1
[INFO] [stderr]     Checking gba v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/main.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet};
[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: `exit`
[INFO] [stdout]  --> src/main.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::process::{exit, Command};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backtrace::PC_BACKTRACE`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::backtrace::PC_BACKTRACE;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MGBA_REG_DEBUG_ENABLE` and `MGBA_REG_DEBUG_FLAGS`
[INFO] [stdout]  --> src/cpu.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 |     debugger::{MgbaDebug, MGBA_REG_DEBUG_ENABLE, MGBA_REG_DEBUG_FLAGS},
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stdout`, `backtrace::Backtrace`, `panic`, `self`, and `time::Duration`
[INFO] [stdout]  --> src/debugger.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     backtrace::Backtrace,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     collections::HashMap,
[INFO] [stdout] 4 |     io::{self, Stdout},
[INFO] [stdout]   |          ^^^^  ^^^^^^
[INFO] [stdout] 5 |     panic,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]   --> src/debugger.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]    |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 11 |     execute,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 12 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::debug`
[INFO] [stdout]   --> src/debugger.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use log::debug;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::error`
[INFO] [stdout]   --> src/debugger.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::error;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]   --> src/debugger.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use log::info;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::warn`
[INFO] [stdout]   --> src/debugger.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use log::warn;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color`, `CrosstermBackend`, `Style`, and `Terminal`
[INFO] [stdout]   --> src/debugger.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     layout::{Constraint, Direction, Layout, Rect},
[INFO] [stdout] 21 |     style::{Color, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^
[INFO] [stdout] 22 |     widgets::{Block, Borders, Paragraph},
[INFO] [stdout] 23 |     Frame, Terminal,
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TuiLoggerSmartWidget`, `TuiWidgetState`, and `init_logger`
[INFO] [stdout]   --> src/debugger.rs:25:18
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tui_logger::{init_logger, TuiLoggerSmartWidget, TuiWidgetState};
[INFO] [stdout]    |                  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_cpu_backtrace`
[INFO] [stdout]   --> src/debugger.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 29 |     disassembler, print_cpu_backtrace,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/game_window.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `rect::Rect`
[INFO] [stdout]  --> src/game_window.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rect::Rect,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 9 |     render::{Canvas, Texture, TextureCreator},
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/main.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet};
[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: `exit`
[INFO] [stdout]  --> src/main.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::process::{exit, Command};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backtrace::PC_BACKTRACE`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::backtrace::PC_BACKTRACE;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MGBA_REG_DEBUG_ENABLE` and `MGBA_REG_DEBUG_FLAGS`
[INFO] [stdout]  --> src/cpu.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 |     debugger::{MgbaDebug, MGBA_REG_DEBUG_ENABLE, MGBA_REG_DEBUG_FLAGS},
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stdout`, `backtrace::Backtrace`, `panic`, `self`, and `time::Duration`
[INFO] [stdout]  --> src/debugger.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     backtrace::Backtrace,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 3 |     collections::HashMap,
[INFO] [stdout] 4 |     io::{self, Stdout},
[INFO] [stdout]   |          ^^^^  ^^^^^^
[INFO] [stdout] 5 |     panic,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DisableMouseCapture`, `EnableMouseCapture`, `EnterAlternateScreen`, `Event`, `KeyCode`, `LeaveAlternateScreen`, `disable_raw_mode`, `enable_raw_mode`, `execute`, and `self`
[INFO] [stdout]   --> src/debugger.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |     event::{self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
[INFO] [stdout]    |             ^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 11 |     execute,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 12 |     terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::debug`
[INFO] [stdout]   --> src/debugger.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use log::debug;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::error`
[INFO] [stdout]   --> src/debugger.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::error;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]   --> src/debugger.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use log::info;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::warn`
[INFO] [stdout]   --> src/debugger.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use log::warn;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color`, `CrosstermBackend`, `Style`, and `Terminal`
[INFO] [stdout]   --> src/debugger.rs:19:24
[INFO] [stdout]    |
[INFO] [stdout] 19 |     backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     layout::{Constraint, Direction, Layout, Rect},
[INFO] [stdout] 21 |     style::{Color, Style},
[INFO] [stdout]    |             ^^^^^  ^^^^^
[INFO] [stdout] 22 |     widgets::{Block, Borders, Paragraph},
[INFO] [stdout] 23 |     Frame, Terminal,
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TuiLoggerSmartWidget`, `TuiWidgetState`, and `init_logger`
[INFO] [stdout]   --> src/debugger.rs:25:18
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tui_logger::{init_logger, TuiLoggerSmartWidget, TuiWidgetState};
[INFO] [stdout]    |                  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_cpu_backtrace`
[INFO] [stdout]   --> src/debugger.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 29 |     disassembler, print_cpu_backtrace,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/game_window.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `rect::Rect`
[INFO] [stdout]  --> src/game_window.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rect::Rect,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 9 |     render::{Canvas, Texture, TextureCreator},
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/cpu.rs:963:21
[INFO] [stdout]     |
[INFO] [stdout] 962 |                     todo!("Implement DMA dest increment+reload");
[INFO] [stdout]     |                     -------------------------------------------- any code following this expression is unreachable
[INFO] [stdout] 963 |                     dest_ptr + step
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/cpu.rs:963:21
[INFO] [stdout]     |
[INFO] [stdout] 962 |                     todo!("Implement DMA dest increment+reload");
[INFO] [stdout]     |                     -------------------------------------------- any code following this expression is unreachable
[INFO] [stdout] 963 |                     dest_ptr + step
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `if_enable`
[INFO] [stdout]    --> src/cpu.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |         let if_enable = (self.io_if & irq) == irq;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_if_enable`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enable`
[INFO] [stdout]    --> src/cpu.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         let enable = (control & 0x8000) != 0;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_enable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1185:13
[INFO] [stdout]      |
[INFO] [stdout] 1185 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1186:13
[INFO] [stdout]      |
[INFO] [stdout] 1186 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_calc`
[INFO] [stdout]     --> src/cpu.rs:1187:13
[INFO] [stdout]      |
[INFO] [stdout] 1187 |         let num_calc = self.read_register(2);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_calc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/cpu.rs:1188:13
[INFO] [stdout]      |
[INFO] [stdout] 1188 |         let offset = self.read_register(3);
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1195:13
[INFO] [stdout]      |
[INFO] [stdout] 1195 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1196:13
[INFO] [stdout]      |
[INFO] [stdout] 1196 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1203:13
[INFO] [stdout]      |
[INFO] [stdout] 1203 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1204:13
[INFO] [stdout]      |
[INFO] [stdout] 1204 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/cpu.rs:3032:13
[INFO] [stdout]      |
[INFO] [stdout] 3032 |             _ => {
[INFO] [stdout]      |             ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/cpu.rs:3032:13
[INFO] [stdout]      |
[INFO] [stdout] 2982 |             0x00..=0x3F => {
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3005 |             0x40..=0x7F => {
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3012 |             0x80..=0x9F => self.arm_block_data_transfer(opcode),
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] 3013 |             0xA0..=0xBF => self.arm_branch(opcode),
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3032 |             _ => {
[INFO] [stdout]      |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/debugger.rs:522:37
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn format_opcode_thumb(opcode: u16, cpu: &CPU) -> String {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/debugger.rs:625:17
[INFO] [stdout]     |
[INFO] [stdout] 625 | fn format_sound(cpu: &mut CPU) -> String {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/disassembler.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout] 265 |         _ => ("???".to_string(), "???".to_string()),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/disassembler.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout]  23 |         0x00..=0x3F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 154 |         0x40..=0x7F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 203 |         0x80..=0x9F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 233 |         0xA0..=0xBF => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 265 |         _ => ("???".to_string(), "???".to_string()),
[INFO] [stdout]     |         ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/disassembler.rs:158:21
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 let mut offset = opcode & 0xFFF;
[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/disassembler.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |             let mut mnemonic = match load {
[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/disassembler.rs:217:17
[INFO] [stdout]     |
[INFO] [stdout] 217 |             let mut mnemonic = match (load, pre, up) {
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]   --> src/disassembler.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let cond = ((opcode >> 28) & 0xF) as u8;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_cond`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/disassembler.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                 let i = (opcode & 0x2000000) != 0;
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pre_index`
[INFO] [stdout]    --> src/disassembler.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |                 let pre_index = (opcode & (1 << 24)) != 0;
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pre_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rlist`
[INFO] [stdout]    --> src/disassembler.rs:204:17
[INFO] [stdout]     |
[INFO] [stdout] 204 |             let rlist = opcode & 0xFFFF;
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_rlist`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rn`
[INFO] [stdout]    --> src/disassembler.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let rn = ((opcode >> 16) & 0xF) as u8;
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_rn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_back`
[INFO] [stdout]    --> src/disassembler.rs:207:17
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let write_back = (opcode & 0x200000) != 0;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_back`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `psr`
[INFO] [stdout]    --> src/disassembler.rs:208:17
[INFO] [stdout]     |
[INFO] [stdout] 208 |             let psr = (opcode & 0x400000) != 0;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_psr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mnemonic`
[INFO] [stdout]    --> src/disassembler.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |             let mut mnemonic = match load {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mnemonic`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `if_enable`
[INFO] [stdout]    --> src/cpu.rs:739:13
[INFO] [stdout]     |
[INFO] [stdout] 739 |         let if_enable = (self.io_if & irq) == irq;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_if_enable`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enable`
[INFO] [stdout]    --> src/cpu.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         let enable = (control & 0x8000) != 0;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_enable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mosaic`
[INFO] [stdout]    --> src/renderer.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     let mosaic = (msg.control & 0x40) != 0x00;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_mosaic`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1185:13
[INFO] [stdout]      |
[INFO] [stdout] 1185 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1186:13
[INFO] [stdout]      |
[INFO] [stdout] 1186 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_calc`
[INFO] [stdout]     --> src/cpu.rs:1187:13
[INFO] [stdout]      |
[INFO] [stdout] 1187 |         let num_calc = self.read_register(2);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_calc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/cpu.rs:1188:13
[INFO] [stdout]      |
[INFO] [stdout] 1188 |         let offset = self.read_register(3);
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1195:13
[INFO] [stdout]      |
[INFO] [stdout] 1195 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1196:13
[INFO] [stdout]      |
[INFO] [stdout] 1196 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src_addr`
[INFO] [stdout]     --> src/cpu.rs:1203:13
[INFO] [stdout]      |
[INFO] [stdout] 1203 |         let src_addr = self.read_register(0);
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_src_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest_addr`
[INFO] [stdout]     --> src/cpu.rs:1204:13
[INFO] [stdout]      |
[INFO] [stdout] 1204 |         let dest_addr = self.read_register(1);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dest_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prio`
[INFO] [stdout]    --> src/renderer.rs:737:13
[INFO] [stdout]     |
[INFO] [stdout] 737 |         let prio = obj.get_priority();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_prio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_handle`
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let window_handle = thread::spawn(move || {
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PC_BACKTRACE` is never used
[INFO] [stdout]  --> src/backtrace.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub static mut PC_BACKTRACE: VecDeque<(u32, u32, bool, String, String)> = VecDeque::new();
[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 `replace_registers_in_string` is never used
[INFO] [stdout]  --> src/backtrace.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn replace_registers_in_string(cpu: &CPU, str: &String) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_mode`, `disable_irq`, `memcpy`, and `operation_ldrh_strh` are never used
[INFO] [stdout]     --> src/cpu.rs:644:8
[INFO] [stdout]      |
[INFO] [stdout]  586 | impl CPU {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  644 |     fn set_mode(&mut self, mode: u8) {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  837 |     fn disable_irq(&mut self, disable: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  859 |     fn memcpy(&mut self, dest: u32, src: u32, count: u32) {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2852 |     fn operation_ldrh_strh(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/debugger.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout]    |     ----- ^^^  ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 36 -     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout] 36 +     Delay((), ()), // (Break after X, counter of hits)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Default` and `Conditional` are never constructed
[INFO] [stdout]   --> src/debugger.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum Breakpoint {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 35 |     Default,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 36 |     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout] 37 |     Conditional(Box<dyn Fn() -> bool>),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `IO` and `LOG` are never constructed
[INFO] [stdout]   --> src/debugger.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum ViewState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 41 |     RAM,
[INFO] [stdout] 42 |     IO,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 43 |     LOG,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Quit`, `Reset`, and `Back` are never constructed
[INFO] [stdout]   --> src/debugger.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum DebuggerEvent {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 48 |     None,
[INFO] [stdout] 49 |     Quit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 50 |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 51 |     Back,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GAME` is never constructed
[INFO] [stdout]   --> src/debugger.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub enum InputMode {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 56 |     GAME,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputMode` 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 `MGBA_REG_DEBUG_ENABLE` is never used
[INFO] [stdout]   --> src/debugger.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub const MGBA_REG_DEBUG_ENABLE: usize = 0x04FFF780;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MGBA_REG_DEBUG_FLAGS` is never used
[INFO] [stdout]   --> src/debugger.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const MGBA_REG_DEBUG_FLAGS: usize = 0x04FFF700;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MGBA_REG_DEBUG_STRING` is never used
[INFO] [stdout]   --> src/debugger.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub const MGBA_REG_DEBUG_STRING: usize = 0x04FFF600;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `input_mode` are never read
[INFO] [stdout]    --> src/debugger.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct Debugger {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 131 |     pub opcode: u32,
[INFO] [stdout] 132 |     pub state: ViewState,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub input_mode: InputMode,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]    --> src/debugger.rs:379:12
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl Debugger {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 379 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stack` is never used
[INFO] [stdout]    --> src/debugger.rs:388:4
[INFO] [stdout]     |
[INFO] [stdout] 388 | fn format_stack(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_rom` is never used
[INFO] [stdout]    --> src/debugger.rs:407:4
[INFO] [stdout]     |
[INFO] [stdout] 407 | fn format_rom(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_regs` is never used
[INFO] [stdout]    --> src/debugger.rs:441:4
[INFO] [stdout]     |
[INFO] [stdout] 441 | fn format_regs(cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_memory` is never used
[INFO] [stdout]    --> src/debugger.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn format_memory(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_opcode_thumb` is never used
[INFO] [stdout]    --> src/debugger.rs:522:4
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn format_opcode_thumb(opcode: u16, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_opcode_arm` is never used
[INFO] [stdout]    --> src/debugger.rs:537:4
[INFO] [stdout]     |
[INFO] [stdout] 537 | fn format_opcode_arm(opcode: u32, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_debugger_state` is never used
[INFO] [stdout]    --> src/debugger.rs:552:4
[INFO] [stdout]     |
[INFO] [stdout] 552 | fn format_debugger_state(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_dma` is never used
[INFO] [stdout]    --> src/debugger.rs:578:4
[INFO] [stdout]     |
[INFO] [stdout] 578 | fn format_dma(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_interrupt` is never used
[INFO] [stdout]    --> src/debugger.rs:596:4
[INFO] [stdout]     |
[INFO] [stdout] 596 | fn format_interrupt(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_sound` is never used
[INFO] [stdout]    --> src/debugger.rs:625:4
[INFO] [stdout]     |
[INFO] [stdout] 625 | fn format_sound(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_lcd` is never used
[INFO] [stdout]    --> src/debugger.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn format_lcd(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_serial` is never used
[INFO] [stdout]    --> src/debugger.rs:699:4
[INFO] [stdout]     |
[INFO] [stdout] 699 | fn format_serial(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_view_ram` is never used
[INFO] [stdout]    --> src/debugger.rs:728:4
[INFO] [stdout]     |
[INFO] [stdout] 728 | fn draw_view_ram<B: Backend>(f: &mut Frame<B>, cpu: &mut CPU, area: Rect) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_view_io` is never used
[INFO] [stdout]    --> src/debugger.rs:762:4
[INFO] [stdout]     |
[INFO] [stdout] 762 | fn draw_view_io<B: Backend>(f: &mut Frame<B>, cpu: &mut CPU, area: Rect) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rlist_to_string` is never used
[INFO] [stdout]  --> src/disassembler.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn rlist_to_string(rlist: u8, str: &mut String) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_arm` is never used
[INFO] [stdout]   --> src/disassembler.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn disassemble_arm(opcode: u32, pc: u32) -> (String, String) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_thumb` is never used
[INFO] [stdout]    --> src/disassembler.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn disassemble_thumb(opcode: u16) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RAM`, `Object`, and `Full` are never constructed
[INFO] [stdout]   --> src/game_window.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Dump {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 21 |     Video,
[INFO] [stdout] 22 |     RAM,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 23 |     Palette,
[INFO] [stdout] 24 |     Object,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 25 |     Full,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dump` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pause` is never constructed
[INFO] [stdout]   --> src/game_window.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum WindowEvent {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Pause(bool),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WindowEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/lcd.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl LCD {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn set_dispcnt(&mut self, val: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_dispcnt_mode(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_background_control(&mut self, n: u8, val: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn get_window_dimensions(&self, n: u8) -> (u16, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_winin(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_winout(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_mosaic(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_bldcnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_bldalpha(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_bldy(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fill` is never read
[INFO] [stdout]   --> src/renderer.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct ObjectAttributes {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fill: i16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_obj_affine` is never used
[INFO] [stdout]   --> src/renderer.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn get_obj_affine(oam: &Vec<u8>, n: usize) -> [ObjectAttributes; 4] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_rect_argb` is never used
[INFO] [stdout]    --> src/renderer.rs:402:4
[INFO] [stdout]     |
[INFO] [stdout] 402 | fn draw_rect_argb(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_draw_background` is never used
[INFO] [stdout]    --> src/renderer.rs:851:8
[INFO] [stdout]     |
[INFO] [stdout] 851 | pub fn test_draw_background(texture: &mut Texture, width: usize, height: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_u16` is never used
[INFO] [stdout]   --> src/serial.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Serial {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn read_u16(&self, addr: u32) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sound` is never constructed
[INFO] [stdout]  --> src/sound.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Sound {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/cpu.rs:3032:13
[INFO] [stdout]      |
[INFO] [stdout] 3032 |             _ => {
[INFO] [stdout]      |             ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/cpu.rs:3032:13
[INFO] [stdout]      |
[INFO] [stdout] 2982 |             0x00..=0x3F => {
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3005 |             0x40..=0x7F => {
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3012 |             0x80..=0x9F => self.arm_block_data_transfer(opcode),
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] 3013 |             0xA0..=0xBF => self.arm_branch(opcode),
[INFO] [stdout]      |             ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 3032 |             _ => {
[INFO] [stdout]      |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opcode_cmp`
[INFO] [stdout]     --> src/cpu.rs:3244:13
[INFO] [stdout]      |
[INFO] [stdout] 3244 |         let opcode_cmp = 0x2800 | offset;
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opcode_cmp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opcode_sub`
[INFO] [stdout]     --> src/cpu.rs:3246:13
[INFO] [stdout]      |
[INFO] [stdout] 3246 |         let opcode_sub = 0x3800 | offset;
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opcode_sub`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu.rs:3923:13
[INFO] [stdout]      |
[INFO] [stdout] 3923 |         let mut cpu = CPU::new(&vram, &palette, &oam);
[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: `cpu`
[INFO] [stdout]     --> src/cpu.rs:3923:13
[INFO] [stdout]      |
[INFO] [stdout] 3923 |         let mut cpu = CPU::new(&vram, &palette, &oam);
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu.rs:4188:13
[INFO] [stdout]      |
[INFO] [stdout] 4188 |         let mut cpu = CPU::new(&vram, &palette, &oam);
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/debugger.rs:522:37
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn format_opcode_thumb(opcode: u16, cpu: &CPU) -> String {
[INFO] [stdout]     |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/debugger.rs:625:17
[INFO] [stdout]     |
[INFO] [stdout] 625 | fn format_sound(cpu: &mut CPU) -> String {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/disassembler.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout] 265 |         _ => ("???".to_string(), "???".to_string()),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/disassembler.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout]  23 |         0x00..=0x3F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 154 |         0x40..=0x7F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 203 |         0x80..=0x9F => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 233 |         0xA0..=0xBF => {
[INFO] [stdout]     |         ----------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 265 |         _ => ("???".to_string(), "???".to_string()),
[INFO] [stdout]     |         ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/disassembler.rs:158:21
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 let mut offset = opcode & 0xFFF;
[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/disassembler.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |             let mut mnemonic = match load {
[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/disassembler.rs:217:17
[INFO] [stdout]     |
[INFO] [stdout] 217 |             let mut mnemonic = match (load, pre, up) {
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]   --> src/disassembler.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let cond = ((opcode >> 28) & 0xF) as u8;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_cond`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/disassembler.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                 let i = (opcode & 0x2000000) != 0;
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pre_index`
[INFO] [stdout]    --> src/disassembler.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |                 let pre_index = (opcode & (1 << 24)) != 0;
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pre_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rlist`
[INFO] [stdout]    --> src/disassembler.rs:204:17
[INFO] [stdout]     |
[INFO] [stdout] 204 |             let rlist = opcode & 0xFFFF;
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_rlist`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rn`
[INFO] [stdout]    --> src/disassembler.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let rn = ((opcode >> 16) & 0xF) as u8;
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_rn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_back`
[INFO] [stdout]    --> src/disassembler.rs:207:17
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let write_back = (opcode & 0x200000) != 0;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_back`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `psr`
[INFO] [stdout]    --> src/disassembler.rs:208:17
[INFO] [stdout]     |
[INFO] [stdout] 208 |             let psr = (opcode & 0x400000) != 0;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_psr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mnemonic`
[INFO] [stdout]    --> src/disassembler.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |             let mut mnemonic = match load {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mnemonic`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mosaic`
[INFO] [stdout]    --> src/renderer.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     let mosaic = (msg.control & 0x40) != 0x00;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_mosaic`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prio`
[INFO] [stdout]    --> src/renderer.rs:737:13
[INFO] [stdout]     |
[INFO] [stdout] 737 |         let prio = obj.get_priority();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_prio`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_handle`
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let window_handle = thread::spawn(move || {
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PC_BACKTRACE` is never used
[INFO] [stdout]  --> src/backtrace.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub static mut PC_BACKTRACE: VecDeque<(u32, u32, bool, String, String)> = VecDeque::new();
[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 `replace_registers_in_string` is never used
[INFO] [stdout]  --> src/backtrace.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn replace_registers_in_string(cpu: &CPU, str: &String) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_mode`, `disable_irq`, and `operation_ldrh_strh` are never used
[INFO] [stdout]     --> src/cpu.rs:644:8
[INFO] [stdout]      |
[INFO] [stdout]  586 | impl CPU {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  644 |     fn set_mode(&mut self, mode: u8) {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  837 |     fn disable_irq(&mut self, disable: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2852 |     fn operation_ldrh_strh(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/debugger.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout]    |     ----- ^^^  ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 36 -     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout] 36 +     Delay((), ()), // (Break after X, counter of hits)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Default` and `Conditional` are never constructed
[INFO] [stdout]   --> src/debugger.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub enum Breakpoint {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 35 |     Default,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 36 |     Delay(u32, u32), // (Break after X, counter of hits)
[INFO] [stdout] 37 |     Conditional(Box<dyn Fn() -> bool>),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `IO` and `LOG` are never constructed
[INFO] [stdout]   --> src/debugger.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum ViewState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 41 |     RAM,
[INFO] [stdout] 42 |     IO,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 43 |     LOG,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Quit`, `Reset`, and `Back` are never constructed
[INFO] [stdout]   --> src/debugger.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum DebuggerEvent {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 48 |     None,
[INFO] [stdout] 49 |     Quit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 50 |     Reset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 51 |     Back,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GAME` is never constructed
[INFO] [stdout]   --> src/debugger.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub enum InputMode {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 56 |     GAME,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputMode` 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 `MGBA_REG_DEBUG_ENABLE` is never used
[INFO] [stdout]   --> src/debugger.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub const MGBA_REG_DEBUG_ENABLE: usize = 0x04FFF780;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MGBA_REG_DEBUG_FLAGS` is never used
[INFO] [stdout]   --> src/debugger.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const MGBA_REG_DEBUG_FLAGS: usize = 0x04FFF700;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MGBA_REG_DEBUG_STRING` is never used
[INFO] [stdout]   --> src/debugger.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub const MGBA_REG_DEBUG_STRING: usize = 0x04FFF600;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `input_mode` are never read
[INFO] [stdout]    --> src/debugger.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct Debugger {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 131 |     pub opcode: u32,
[INFO] [stdout] 132 |     pub state: ViewState,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub input_mode: InputMode,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]    --> src/debugger.rs:379:12
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl Debugger {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 379 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_stack` is never used
[INFO] [stdout]    --> src/debugger.rs:388:4
[INFO] [stdout]     |
[INFO] [stdout] 388 | fn format_stack(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_rom` is never used
[INFO] [stdout]    --> src/debugger.rs:407:4
[INFO] [stdout]     |
[INFO] [stdout] 407 | fn format_rom(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_regs` is never used
[INFO] [stdout]    --> src/debugger.rs:441:4
[INFO] [stdout]     |
[INFO] [stdout] 441 | fn format_regs(cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_memory` is never used
[INFO] [stdout]    --> src/debugger.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn format_memory(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_opcode_thumb` is never used
[INFO] [stdout]    --> src/debugger.rs:522:4
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn format_opcode_thumb(opcode: u16, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_opcode_arm` is never used
[INFO] [stdout]    --> src/debugger.rs:537:4
[INFO] [stdout]     |
[INFO] [stdout] 537 | fn format_opcode_arm(opcode: u32, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_debugger_state` is never used
[INFO] [stdout]    --> src/debugger.rs:552:4
[INFO] [stdout]     |
[INFO] [stdout] 552 | fn format_debugger_state(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_dma` is never used
[INFO] [stdout]    --> src/debugger.rs:578:4
[INFO] [stdout]     |
[INFO] [stdout] 578 | fn format_dma(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_interrupt` is never used
[INFO] [stdout]    --> src/debugger.rs:596:4
[INFO] [stdout]     |
[INFO] [stdout] 596 | fn format_interrupt(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_sound` is never used
[INFO] [stdout]    --> src/debugger.rs:625:4
[INFO] [stdout]     |
[INFO] [stdout] 625 | fn format_sound(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_lcd` is never used
[INFO] [stdout]    --> src/debugger.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn format_lcd(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_serial` is never used
[INFO] [stdout]    --> src/debugger.rs:699:4
[INFO] [stdout]     |
[INFO] [stdout] 699 | fn format_serial(cpu: &mut CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_view_ram` is never used
[INFO] [stdout]    --> src/debugger.rs:728:4
[INFO] [stdout]     |
[INFO] [stdout] 728 | fn draw_view_ram<B: Backend>(f: &mut Frame<B>, cpu: &mut CPU, area: Rect) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_view_io` is never used
[INFO] [stdout]    --> src/debugger.rs:762:4
[INFO] [stdout]     |
[INFO] [stdout] 762 | fn draw_view_io<B: Backend>(f: &mut Frame<B>, cpu: &mut CPU, area: Rect) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rlist_to_string` is never used
[INFO] [stdout]  --> src/disassembler.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn rlist_to_string(rlist: u8, str: &mut String) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_arm` is never used
[INFO] [stdout]   --> src/disassembler.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn disassemble_arm(opcode: u32, pc: u32) -> (String, String) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_thumb` is never used
[INFO] [stdout]    --> src/disassembler.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn disassemble_thumb(opcode: u16) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RAM`, `Object`, and `Full` are never constructed
[INFO] [stdout]   --> src/game_window.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Dump {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 21 |     Video,
[INFO] [stdout] 22 |     RAM,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 23 |     Palette,
[INFO] [stdout] 24 |     Object,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 25 |     Full,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dump` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pause` is never constructed
[INFO] [stdout]   --> src/game_window.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum WindowEvent {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Pause(bool),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WindowEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/lcd.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl LCD {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn set_dispcnt(&mut self, val: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_dispcnt_mode(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_background_control(&mut self, n: u8, val: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn get_window_dimensions(&self, n: u8) -> (u16, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_winin(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_winout(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_mosaic(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_bldcnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_bldalpha(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_bldy(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fill` is never read
[INFO] [stdout]   --> src/renderer.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct ObjectAttributes {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fill: i16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_obj_affine` is never used
[INFO] [stdout]   --> src/renderer.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn get_obj_affine(oam: &Vec<u8>, n: usize) -> [ObjectAttributes; 4] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_rect_argb` is never used
[INFO] [stdout]    --> src/renderer.rs:402:4
[INFO] [stdout]     |
[INFO] [stdout] 402 | fn draw_rect_argb(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_draw_background` is never used
[INFO] [stdout]    --> src/renderer.rs:851:8
[INFO] [stdout]     |
[INFO] [stdout] 851 | pub fn test_draw_background(texture: &mut Texture, width: usize, height: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_u16` is never used
[INFO] [stdout]   --> src/serial.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Serial {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn read_u16(&self, addr: u32) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sound` is never constructed
[INFO] [stdout]  --> src/sound.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Sound {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.65s
[INFO] running `Command { std: "docker" "inspect" "73919952a98894fde8f6ed7323313375b2c29bf4c89a373862af7d08febae3a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "73919952a98894fde8f6ed7323313375b2c29bf4c89a373862af7d08febae3a9", kill_on_drop: false }`
[INFO] [stdout] 73919952a98894fde8f6ed7323313375b2c29bf4c89a373862af7d08febae3a9
