[INFO] cloning repository https://github.com/Thoughts-with-friends/lunaris
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Thoughts-with-friends/lunaris" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThoughts-with-friends%2Flunaris", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThoughts-with-friends%2Flunaris'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 994a66fc3e2316fdf5cc8ff1d7a9a948b9b9907c
[INFO] checking Thoughts-with-friends/lunaris against master#625b63f9e148d511e187c71e5f70643ee62c77fb for pr-146972-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThoughts-with-friends%2Flunaris" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Thoughts-with-friends/lunaris
[INFO] finished tweaking git repo https://github.com/Thoughts-with-friends/lunaris
[INFO] tweaked toml for git repo https://github.com/Thoughts-with-friends/lunaris written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Thoughts-with-friends/lunaris on toolchain 625b63f9e148d511e187c71e5f70643ee62c77fb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+625b63f9e148d511e187c71e5f70643ee62c77fb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Thoughts-with-friends/lunaris 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" "+625b63f9e148d511e187c71e5f70643ee62c77fb" "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 annotate-snippets v0.11.5
[INFO] [stderr]   Downloaded wayland-protocols-plasma v0.3.9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+625b63f9e148d511e187c71e5f70643ee62c77fb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7989931ef9183c4e98ed85488e86a7918b54dd3c4097699cf9928ce4d7ea4558
[INFO] running `Command { std: "docker" "start" "-a" "7989931ef9183c4e98ed85488e86a7918b54dd3c4097699cf9928ce4d7ea4558", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7989931ef9183c4e98ed85488e86a7918b54dd3c4097699cf9928ce4d7ea4558", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7989931ef9183c4e98ed85488e86a7918b54dd3c4097699cf9928ce4d7ea4558", kill_on_drop: false }`
[INFO] [stdout] 7989931ef9183c4e98ed85488e86a7918b54dd3c4097699cf9928ce4d7ea4558
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+625b63f9e148d511e187c71e5f70643ee62c77fb" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f07e912da4fca0a824f8801b28b470a162fdbcf1198e54612719ecc05f3eb812
[INFO] running `Command { std: "docker" "start" "-a" "f07e912da4fca0a824f8801b28b470a162fdbcf1198e54612719ecc05f3eb812", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling cc v1.2.44
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking scoped-tls v1.0.1
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling naga v23.1.0
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]    Compiling ash v0.38.0+1.3.281
[INFO] [stderr]     Checking hashbrown v0.16.0
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]     Checking indexmap v2.12.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]    Compiling wgpu-hal v23.0.1
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking unicode-xid v0.2.6
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking hexf-parse v0.2.1
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling wgpu-core v23.0.1
[INFO] [stderr]     Checking wgpu-types v23.0.0
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking glow v0.14.2
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]     Checking renderdoc-sys v1.1.0
[INFO] [stderr]    Compiling winit v0.30.12
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling wgpu v23.0.1
[INFO] [stderr]     Checking as-raw-xcb-connection v1.0.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking winnow v0.7.13
[INFO] [stderr]     Checking annotate-snippets v0.11.5
[INFO] [stderr]     Checking free_bios v0.1.0 (/opt/rustwide/workdir/core/free_bios)
[INFO] [stderr]     Checking mem_const v0.1.0 (/opt/rustwide/workdir/core/mem_const)
[INFO] [stderr]     Checking arm9 v0.1.0 (/opt/rustwide/workdir/core/arm9)
[INFO] [stderr]     Checking audio v0.1.0 (/opt/rustwide/workdir/core/audio)
[INFO] [stderr]     Checking cpu v0.1.0 (/opt/rustwide/workdir/core/cpu)
[INFO] [stdout] warning: type alias `InterpreterFunc` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type InterpreterFunc = fn();
[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 `data_processing` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | const fn data_processing() {}
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multiply` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | const fn multiply() {}
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_halfword` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | const fn store_halfword() {}
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `undefined` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | const fn undefined() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_doubleword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | const fn store_doubleword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_halfword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | const fn load_halfword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_signed_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | const fn load_signed_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_signed_halfword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | const fn load_signed_halfword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multiply_long` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | const fn multiply_long() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `saturated_op` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | const fn saturated_op() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `signed_halfword_multiply` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | const fn signed_halfword_multiply() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | const fn swap() {}
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch_exchange` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | const fn branch_exchange() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blx_reg` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | const fn blx_reg() {}
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_leading_zeros` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | const fn count_leading_zeros() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_word` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | const fn store_word() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_word` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | const fn load_word() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | const fn store_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | const fn load_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_block` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | const fn store_block() {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_block` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | const fn load_block() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | const fn branch() {}
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch_link` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | const fn branch_link() {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coprocessor_reg_transfer` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | const fn coprocessor_reg_transfer() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swi` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | const fn swi() {}
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `arm_table` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | static arm_table: [InterpreterFunc; 4096] = [
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `arm_table` should have an upper case name
[INFO] [stdout]   --> core/cpu/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | static arm_table: [InterpreterFunc; 4096] = [
[INFO] [stdout]    |        ^^^^^^^^^ help: convert the identifier to upper case: `ARM_TABLE`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stdout] warning: type alias `InterpreterFunc` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type InterpreterFunc = fn();
[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 `data_processing` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | const fn data_processing() {}
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multiply` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | const fn multiply() {}
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_halfword` is never used
[INFO] [stdout]  --> core/cpu/src/lib.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | const fn store_halfword() {}
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `undefined` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | const fn undefined() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_doubleword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | const fn store_doubleword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_halfword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | const fn load_halfword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_signed_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | const fn load_signed_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_signed_halfword` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | const fn load_signed_halfword() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multiply_long` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | const fn multiply_long() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `saturated_op` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | const fn saturated_op() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `signed_halfword_multiply` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | const fn signed_halfword_multiply() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | const fn swap() {}
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch_exchange` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | const fn branch_exchange() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blx_reg` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | const fn blx_reg() {}
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_leading_zeros` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | const fn count_leading_zeros() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_word` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | const fn store_word() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_word` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | const fn load_word() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | const fn store_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_byte` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | const fn load_byte() {}
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_block` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | const fn store_block() {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_block` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | const fn load_block() {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | const fn branch() {}
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch_link` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | const fn branch_link() {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coprocessor_reg_transfer` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | const fn coprocessor_reg_transfer() {}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swi` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | const fn swi() {}
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `arm_table` is never used
[INFO] [stdout]   --> core/cpu/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | static arm_table: [InterpreterFunc; 4096] = [
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static variable `arm_table` should have an upper case name
[INFO] [stdout]   --> core/cpu/src/lib.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | static arm_table: [InterpreterFunc; 4096] = [
[INFO] [stdout]    |        ^^^^^^^^^ help: convert the identifier to upper case: `ARM_TABLE`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking arm7 v0.1.0 (/opt/rustwide/workdir/core/arm7)
[INFO] [stdout] warning: type `NDS_DMA` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/dma.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct NDS_DMA {
[INFO] [stdout]     |            ^^^^^^^ help: convert the identifier to upper camel case: `NdsDma`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> core/arm7/src/emulator.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GBA_SLOT` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 186 |     GBA_SLOT = 13,
[INFO] [stdout]     |     ^^^^^^^^ help: convert the identifier to upper camel case: `GbaSlot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_EMPTY` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     IPC_FIFO_EMPTY,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoEmpty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_NEMPTY` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     IPC_FIFO_NEMPTY,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoNempty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_TRANSFER` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     CART_TRANSFER,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartTransfer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_IREQ_MC` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     CART_IREQ_MC,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartIreqMc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GEOMETRY_FIFO` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     GEOMETRY_FIFO,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GeometryFifo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UNFOLD_SCREEN` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     UNFOLD_SCREEN,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UnfoldScreen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VCOUNT_MATCH` should have an upper camel case name
[INFO] [stdout]  --> core/arm7/src/interrupts.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     VCOUNT_MATCH,
[INFO] [stdout]   |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `VcountMatch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GBA_SLOT` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     GBA_SLOT,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `GbaSlot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_EMPTY` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     IPC_FIFO_EMPTY,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoEmpty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_NEMPTY` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     IPC_FIFO_NEMPTY,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoNempty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_TRANSFER` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CART_TRANSFER,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartTransfer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_IREQ_MC` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     CART_IREQ_MC,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartIreqMc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GEOMETRY_FIFO` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     GEOMETRY_FIFO,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GeometryFifo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UNFOLD_SCREEN` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     UNFOLD_SCREEN,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UnfoldScreen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> core/arm7/src/ipc.rs:30:18
[INFO] [stdout]    |
[INFO] [stdout] 30 |         value |= ((self.output & 0xF) as u16);
[INFO] [stdout]    |                  ^                          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         value |= ((self.output & 0xF) as u16);
[INFO] [stdout] 30 +         value |= (self.output & 0xF) as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> core/arm7/src/spu.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout] 114 |         value |= ((self.master_volume & 0x7F) as u16);
[INFO] [stdout]     |                  ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 114 -         value |= ((self.master_volume & 0x7F) as u16);
[INFO] [stdout] 114 +         value |= (self.master_volume & 0x7F) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> core/arm7/src/spu.rs:291:66
[INFO] [stdout]     |
[INFO] [stdout] 291 |                 self.channels[channel_idx].channel_cnt.volume |= ((byte as u32) << shift);
[INFO] [stdout]     |                                                                  ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 291 -                 self.channels[channel_idx].channel_cnt.volume |= ((byte as u32) << shift);
[INFO] [stdout] 291 +                 self.channels[channel_idx].channel_cnt.volume |= (byte as u32) << shift;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NDS_DMA` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/dma.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct NDS_DMA {
[INFO] [stdout]     |            ^^^^^^^ help: convert the identifier to upper camel case: `NdsDma`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> core/arm7/src/emulator.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GBA_SLOT` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 186 |     GBA_SLOT = 13,
[INFO] [stdout]     |     ^^^^^^^^ help: convert the identifier to upper camel case: `GbaSlot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_EMPTY` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     IPC_FIFO_EMPTY,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoEmpty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_NEMPTY` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     IPC_FIFO_NEMPTY,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoNempty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_TRANSFER` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     CART_TRANSFER,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartTransfer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_IREQ_MC` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     CART_IREQ_MC,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartIreqMc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GEOMETRY_FIFO` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     GEOMETRY_FIFO,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GeometryFifo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UNFOLD_SCREEN` should have an upper camel case name
[INFO] [stdout]    --> core/arm7/src/emulator.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     UNFOLD_SCREEN,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UnfoldScreen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `VCOUNT_MATCH` should have an upper camel case name
[INFO] [stdout]  --> core/arm7/src/interrupts.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     VCOUNT_MATCH,
[INFO] [stdout]   |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `VcountMatch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GBA_SLOT` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     GBA_SLOT,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `GbaSlot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_EMPTY` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     IPC_FIFO_EMPTY,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoEmpty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `IPC_FIFO_NEMPTY` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     IPC_FIFO_NEMPTY,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `IpcFifoNempty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_TRANSFER` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CART_TRANSFER,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartTransfer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CART_IREQ_MC` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     CART_IREQ_MC,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CartIreqMc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GEOMETRY_FIFO` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     GEOMETRY_FIFO,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GeometryFifo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UNFOLD_SCREEN` should have an upper camel case name
[INFO] [stdout]   --> core/arm7/src/interrupts.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     UNFOLD_SCREEN,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UnfoldScreen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> core/arm7/src/ipc.rs:30:18
[INFO] [stdout]    |
[INFO] [stdout] 30 |         value |= ((self.output & 0xF) as u16);
[INFO] [stdout]    |                  ^                          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         value |= ((self.output & 0xF) as u16);
[INFO] [stdout] 30 +         value |= (self.output & 0xF) as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> core/arm7/src/spu.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout] 114 |         value |= ((self.master_volume & 0x7F) as u16);
[INFO] [stdout]     |                  ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 114 -         value |= ((self.master_volume & 0x7F) as u16);
[INFO] [stdout] 114 +         value |= (self.master_volume & 0x7F) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> core/arm7/src/spu.rs:291:66
[INFO] [stdout]     |
[INFO] [stdout] 291 |                 self.channels[channel_idx].channel_cnt.volume |= ((byte as u32) << shift);
[INFO] [stdout]     |                                                                  ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 291 -                 self.channels[channel_idx].channel_cnt.volume |= ((byte as u32) << shift);
[INFO] [stdout] 291 +                 self.channels[channel_idx].channel_cnt.volume |= (byte as u32) << shift;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> core/arm7/src/cp15.rs:284:56
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn mrc(&self, operation: i32, source_reg: i32, info: i32, operand_reg: i32) -> u32 {
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> core/arm7/src/cp15.rs:301:9
[INFO] [stdout]     |
[INFO] [stdout] 301 |         info: i32,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:377:33
[INFO] [stdout]     |
[INFO] [stdout] 377 |     pub fn read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:383:37
[INFO] [stdout]     |
[INFO] [stdout] 383 |     pub fn read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:389:33
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:395:34
[INFO] [stdout]     |
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:395:48
[INFO] [stdout]     |
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:401:38
[INFO] [stdout]     |
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `halfword`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:401:52
[INFO] [stdout]     |
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_halfword`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:407:34
[INFO] [stdout]     |
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:407:48
[INFO] [stdout]     |
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_byte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bios`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:437:34
[INFO] [stdout]     |
[INFO] [stdout] 437 |     pub fn load_bios7(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_bios`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bios`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:443:34
[INFO] [stdout]     |
[INFO] [stdout] 443 |     pub fn load_bios9(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_bios`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rom_name`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:454:32
[INFO] [stdout]     |
[INFO] [stdout] 454 |     pub fn load_rom(&mut self, rom_name: &str) -> Result<(), String> {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rom_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:632:41
[INFO] [stdout]     |
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |                                         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:632:49
[INFO] [stdout]     |
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |                                                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> core/arm7/src/cp15.rs:284:56
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn mrc(&self, operation: i32, source_reg: i32, info: i32, operand_reg: i32) -> u32 {
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> core/arm7/src/cp15.rs:301:9
[INFO] [stdout]     |
[INFO] [stdout] 301 |         info: i32,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:377:33
[INFO] [stdout]     |
[INFO] [stdout] 377 |     pub fn read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:383:37
[INFO] [stdout]     |
[INFO] [stdout] 383 |     pub fn read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:389:33
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:395:34
[INFO] [stdout]     |
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:395:48
[INFO] [stdout]     |
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:401:38
[INFO] [stdout]     |
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `halfword`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:401:52
[INFO] [stdout]     |
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_halfword`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:407:34
[INFO] [stdout]     |
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte`
[INFO] [stdout]    --> core/arm7/src/cpu.rs:407:48
[INFO] [stdout]     |
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_byte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bios`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:437:34
[INFO] [stdout]     |
[INFO] [stdout] 437 |     pub fn load_bios7(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_bios`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bios`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:443:34
[INFO] [stdout]     |
[INFO] [stdout] 443 |     pub fn load_bios9(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_bios`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rom_name`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:454:32
[INFO] [stdout]     |
[INFO] [stdout] 454 |     pub fn load_rom(&mut self, rom_name: &str) -> Result<(), String> {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rom_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:632:41
[INFO] [stdout]     |
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |                                         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> core/arm7/src/emulator.rs:632:49
[INFO] [stdout]     |
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |                                                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> core/arm7/src/wifi.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn set_w_bb_cnt(&mut self, value: u16) {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BIOS` is never constructed
[INFO] [stdout]  --> core/arm7/src/bios.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct BIOS;
[INFO] [stdout]   |            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/bios.rs:10:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl BIOS {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]   9 |     /// Creates a new BIOS instance.
[INFO] [stdout]  10 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  16 |     fn get_opcode(&self, cpu: &mut ARMCPU) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     fn div(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     fn cpu_set(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     fn get_crc16(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn swi7(&self, arm7: &mut ARMCPU) -> i32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn swi9(&self, arm9: &mut ARMCPU) -> i32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CartCommand` is never used
[INFO] [stdout]  --> core/arm7/src/cartridge.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CartCommand {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl CartCommand {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 26 |     /// Convert numeric value to CartCommand
[INFO] [stdout] 27 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuxSpiCommand` is never used
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum AuxSpiCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl AuxSpiCommand {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 62 |     /// Convert numeric value to AuxSpiCommand
[INFO] [stdout] 63 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegRomCtrl` is never constructed
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct RegRomCtrl {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl RegRomCtrl {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 103 |     /// Create new ROM control register
[INFO] [stdout] 104 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn get(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegAuxSpiCnt` is never constructed
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct RegAuxSpiCnt {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:189:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl RegAuxSpiCnt {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 188 |     /// Create new auxiliary SPI control register
[INFO] [stdout] 189 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NDSCart` is never constructed
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct NDSCart {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:311:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl NDSCart {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 310 |     /// Create new cartridge controller
[INFO] [stdout] 311 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn load_database(&mut self, _file_name: &str) -> Result<usize, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn load_rom(&mut self, _file_name: &str) -> Result<usize, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub fn save_check(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn read_command(&self, index: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn receive_command(&mut self, command: u8, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn run(&mut self, _cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn debug_encrypt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     pub fn direct_read(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn direct_read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn direct_read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn get_romctrl(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn get_output(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn get_auxspicnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn read_auxspidata(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn set_hi_auxspicnt(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub fn set_auxspicnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     pub fn set_auxspidata(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     pub fn set_romctrl(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn set_lo_key2_seed0(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 470 |     pub fn set_lo_key2_seed1(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     pub fn set_hi_key2_seed0(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub fn set_hi_key2_seed1(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     fn key1_encrypt(&mut self, _data: &mut [u32]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     fn key1_decrypt(&mut self, _data: &mut [u32]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     fn apply_keycode(&mut self, _modulo: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 502 |     fn init_keycode(&mut self, _idcode: u32, _level: i32, _modulo: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ControlReg` is never constructed
[INFO] [stdout]  --> core/arm7/src/cp15.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ControlReg {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_values`, and `set_values` are never used
[INFO] [stdout]   --> core/arm7/src/cp15.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl ControlReg {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 35 |     /// Create new control register with defaults
[INFO] [stdout] 36 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn get_values(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn set_values(&mut self, reg: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CP15` is never constructed
[INFO] [stdout]    --> core/arm7/src/cp15.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct CP15 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/cp15.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl CP15 {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 148 |     /// Create new CP15 controller
[INFO] [stdout] 149 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn power_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn link_with_cpu(&mut self, _arm9: Arc<Mutex<ARMCPU>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn get_itcm_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn get_dtcm_base(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn get_dtcm_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn dtcm_write_only(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn write_byte(&mut self, address: u32, byte: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn mrc(&self, operation: i32, source_reg: i32, info: i32, operand_reg: i32) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn mcr(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn get_control(&self) -> &ControlReg {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn get_control_mut(&mut self) -> &mut ControlReg {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn invalidate_icache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn invalidate_dcache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_SP` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const REG_SP: usize = 13;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_LR` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const REG_LR: usize = 14;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_PC` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const REG_PC: usize = 15;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PSRMode` is never used
[INFO] [stdout]   --> core/arm7/src/cpu.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum PSRMode {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cpu.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl PSRMode {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 30 |     /// Convert numeric value to PSRMode
[INFO] [stdout] 31 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PSRFlags` is never constructed
[INFO] [stdout]   --> core/arm7/src/cpu.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct PSRFlags {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cpu.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl PSRFlags {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  69 |     /// Create new PSR flags with default values
[INFO] [stdout]  70 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn set(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ARMCPU` is never constructed
[INFO] [stdout]    --> core/arm7/src/cpu.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub struct ARMCPU {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/cpu.rs:203:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl ARMCPU {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 202 |     /// Create a new ARM CPU instance
[INFO] [stdout] 203 |     pub fn new(cpu_id: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn power_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn direct_boot(&mut self, entry_point: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn execute(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn run(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn jump(&mut self, new_addr: u32, change_thumb_state: bool) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn handle_undefined(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn handle_irq(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn halt(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn handle_swi(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn print_info(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn update_reg_mode(&mut self, _new_mode: PSRMode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_timestamp(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn cycles_ran(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn get_pc(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn get_current_instr(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_register(&self, id: usize) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn get_cpsr(&self) -> PSRFlags {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn set_register(&mut self, id: usize, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn set_cpsr(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub fn read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 415 |     pub fn add_n32_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn add_s32_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn add_n16_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn add_s16_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn add_n32_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     pub fn add_s32_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn add_n16_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn add_s16_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn add_internal_cycles(&mut self, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     pub fn add_cop_cycles(&mut self, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 491 |     pub fn and(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn orr(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub fn eor(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn add(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn sub(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub fn adc(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn sbc(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 560 |     pub fn cmp(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 567 |     pub fn cmn(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     pub fn tst(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 580 |     pub fn teq(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn mov(&mut self, dest: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     pub fn mul(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 603 |     pub fn bic(&mut self, dest: usize, src: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub fn mvn(&mut self, dest: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 621 |     pub fn mrs(&mut self, _instruction: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn msr(&mut self, _instruction: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn set_zero(&mut self, cond: bool) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn set_neg(&mut self, cond: bool) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 643 |     pub fn set_zero_neg_flags(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     fn set_cv_add_flags(&mut self, a: u32, b: u32, result: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 659 |     fn set_cv_sub_flags(&mut self, a: u32, b: u32, result: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn spsr_to_cpsr(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 679 |     pub fn lsl(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn lsr(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 713 |     pub fn asr(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 735 |     pub fn rrx(&mut self, value: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 744 |     pub fn rotr32(&mut self, n: u32, c: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DmaCnt` is never constructed
[INFO] [stdout]  --> core/arm7/src/dma.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct DmaCnt {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]   --> core/arm7/src/dma.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl DmaCnt {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 24 |     /// Create new DMA control register
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DmaChannel` is never constructed
[INFO] [stdout]   --> core/arm7/src/dma.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct DmaChannel {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> core/arm7/src/dma.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl DmaChannel {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 105 |     /// Create new DMA channel
[INFO] [stdout] 106 |     pub fn new(index: u32, is_arm9: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NDS_DMA` is never constructed
[INFO] [stdout]    --> core/arm7/src/dma.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct NDS_DMA {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/dma.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl NDS_DMA {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 146 |     /// Create new DMA controller
[INFO] [stdout] 147 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn dma_event(&mut self, index: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn update_dma(&mut self, index: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn handle_event(&mut self, _event: &crate::emulator::SchedulerEvent) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn read_source(&self, index: usize) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn read_len(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn read_cnt(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn write_source(&mut self, index: usize, source: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn write_dest(&mut self, index: usize, dest: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn write_len(&mut self, index: usize, len: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn write_cnt(&mut self, index: usize, cnt: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn write_len_cnt(&mut self, index: usize, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn hblank_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn gamecart_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub fn gxfifo_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyInputReg` is never constructed
[INFO] [stdout]   --> core/arm7/src/emulator.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct KeyInputReg {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_value` and `set_value` are never used
[INFO] [stdout]   --> core/arm7/src/emulator.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl KeyInputReg {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 36 |     /// Get the current key input register value (bit-packed format)
[INFO] [stdout] 37 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExtKeyInReg` is never constructed
[INFO] [stdout]   --> core/arm7/src/emulator.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct ExtKeyInReg {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_value` and `set_value` are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl ExtKeyInReg {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout]  97 |     /// Get the extended key input register value
[INFO] [stdout]  98 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PowCnt2Reg` is never constructed
[INFO] [stdout]    --> core/arm7/src/emulator.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct PowCnt2Reg {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_value` and `set_value` are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl PowCnt2Reg {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 134 |     /// Get the power control register value
[INFO] [stdout] 135 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchedulerEvent` is never constructed
[INFO] [stdout]    --> core/arm7/src/emulator.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct SchedulerEvent {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Interrupt` is never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:172:10
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub enum Interrupt {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BiosMem` is never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:198:10
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub enum BiosMem<const BIOS_SIZE: usize> {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Emulator` is never constructed
[INFO] [stdout]    --> core/arm7/src/emulator.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct Emulator {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout] 346 | impl Emulator {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 347 |     /// Create a new emulator instance with default values
[INFO] [stdout] 348 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn init(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn load_firmware(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn load_bios7(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn load_bios9(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub fn load_save_database(&mut self, _name: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     pub fn load_rom(&mut self, rom_name: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn direct_boot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 513 |     pub fn debug(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn run(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     pub fn requesting_interrupt(&self, cpu_id: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 532 |     pub fn write_spidata7(&mut self, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn get_timestamp(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 544 |     pub fn get_upper_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn get_lower_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub fn set_upper_screen(&mut self, _buffer: &[u32]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn set_lower_screen(&mut self, _buffer: &[u32]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn frame_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn display_swapped(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn dma_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn hblank_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn gamecart_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 591 |     pub fn gxfifo_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     pub fn check_gxfifo_dma(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     pub fn add_gpu_event(&mut self, event_id: u32, relative_time: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 614 |     pub fn add_dma_event(&mut self, event_id: u32, relative_time: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     pub fn calculate_system_timestamp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn hle_bios(&mut self, _cpu_id: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 645 |     pub fn arm9_read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 650 |     pub fn arm9_read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 655 |     pub fn arm9_read_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 660 |     pub fn arm9_write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub fn arm9_write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 670 |     pub fn arm9_write_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 677 |     pub fn cart_copy_keybuffer(&self, _buffer: &mut [u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     pub fn cart_write_header(&mut self, _address: u32, _halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 689 |     pub fn request_interrupt7(&mut self, _id: Interrupt) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 694 |     pub fn request_interrupt9(&mut self, _id: Interrupt) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn arm7_has_cart_rights(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 710 |     pub fn button_up_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 715 |     pub fn button_down_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 720 |     pub fn button_left_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn button_right_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 730 |     pub fn button_start_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 735 |     pub fn button_select_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 740 |     pub fn button_a_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 745 |     pub fn button_b_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 750 |     pub fn button_x_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 755 |     pub fn button_y_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 760 |     pub fn button_l_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 765 |     pub fn button_r_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 770 |     pub fn button_up_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn button_down_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 780 |     pub fn button_left_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 785 |     pub fn button_right_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 790 |     pub fn button_start_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 795 |     pub fn button_select_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 800 |     pub fn button_a_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 805 |     pub fn button_b_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 810 |     pub fn button_x_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 815 |     pub fn button_y_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 820 |     pub fn button_l_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 825 |     pub fn button_r_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn read_byte_internal(&self, address: u32) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 840 |     fn read_halfword_internal(&self, address: u32) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 846 |     fn read_word_internal(&self, address: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     fn write_byte_internal(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 867 |     fn write_halfword_internal(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 872 |     fn write_word_internal(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     fn check_fifo7_interrupt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 883 |     fn check_fifo9_interrupt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 888 |     fn start_division(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     fn start_sqrt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FirmwareCommand` is never used
[INFO] [stdout]   --> core/arm7/src/firmware.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum FirmwareCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/firmware.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl FirmwareCommand {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 21 |     /// Convert numeric value to FirmwareCommand
[INFO] [stdout] 22 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Firmware` is never constructed
[INFO] [stdout]   --> core/arm7/src/firmware.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct Firmware {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/firmware.rs:55:15
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl Firmware {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  54 |     /// Firmware size in bytes (256 KB)
[INFO] [stdout]  55 |     pub const SIZE: usize = 1024 * 256;
[INFO] [stdout]     |               ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn load_firmware(&mut self, file_name: &str) -> Result<usize, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     fn read_u16(&self, offset: usize) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     fn write_u16(&mut self, offset: usize, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn create_crc(data: &[u8], length: usize, mut start: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn verify_crc(&self, start: u32, offset: usize, length: usize, crc_offset: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn transfer_data(&mut self, input: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn deselect(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_byte(&self, address: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn set_byte(&mut self, address: usize, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn get_status(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_status(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn get_firmware(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn get_firmware_mut(&mut self) -> &mut [u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn crc_update(mut crc: u16, byte: u8) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn get_user_data(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn set_user_data(&mut self, value: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DispStatReg` is never constructed
[INFO] [stdout]  --> core/arm7/src/gpu.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct DispStatReg {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]   --> core/arm7/src/gpu.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl DispStatReg {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 27 |     /// Create new display status register
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VramBankCnt` is never constructed
[INFO] [stdout]   --> core/arm7/src/gpu.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct VramBankCnt {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/arm7/src/gpu.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | impl VramBankCnt {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 95 |     /// Create new VRAM bank configuration
[INFO] [stdout] 96 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PowCnt1Reg` is never constructed
[INFO] [stdout]    --> core/arm7/src/gpu.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PowCnt1Reg {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl PowCnt1Reg {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 129 |     /// Create new power control register
[INFO] [stdout] 130 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_A_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:183:11
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub const VRAM_A_SIZE: usize = 128 * 1024; // 128KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_B_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:184:11
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub const VRAM_B_SIZE: usize = 128 * 1024; // 128KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_C_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:185:11
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub const VRAM_C_SIZE: usize = 128 * 1024; // 128KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_D_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:186:11
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub const VRAM_D_SIZE: usize = 128 * 1024; // 128KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_E_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:187:11
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub const VRAM_E_SIZE: usize = 64 * 1024; // 64KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_F_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:188:11
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub const VRAM_F_SIZE: usize = 16 * 1024; // 16KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_G_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:189:11
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub const VRAM_G_SIZE: usize = 16 * 1024; // 16KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_H_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:190:11
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub const VRAM_H_SIZE: usize = 32 * 1024; // 32KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_I_SIZE` is never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:191:11
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub const VRAM_I_SIZE: usize = 16 * 1024; // 16KB
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GPU` is never constructed
[INFO] [stdout]    --> core/arm7/src/gpu.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct GPU {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 261 | impl GPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 262 |     /// Create new GPU instance
[INFO] [stdout] 263 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn get_cycles(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn run_3d(&mut self, _cycles: u64) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn handle_event(&mut self, _event: &crate::emulator::SchedulerEvent) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn get_upper_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn get_lower_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn start_frame(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn end_frame(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn check_gxfifo_dma(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn check_gxfifo_irq(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn is_frame_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn display_swapped(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn read_arm7_u16(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn read_arm7_u32(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn write_arm7_u32(&mut self, address: u32, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 462 |     pub fn write_arm7_u8(&mut self, address: u32, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn read_palette_a(&self, address: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn read_palette_b(&self, address: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn write_palette_a(&mut self, address: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     pub fn write_palette_b(&mut self, address: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 525 |     pub fn get_dispstat7(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     pub fn get_dispstat9(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn set_dispstat7(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn set_dispstat9(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub fn get_vcount(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn get_powcnt1(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 555 |     pub fn set_powcnt1(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 560 |     pub fn get_vramcnt_a(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn set_vramcnt_a(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn get_vramcnt_b(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn set_vramcnt_b(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     pub fn get_vramcnt_c(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 587 |     pub fn set_vramcnt_c(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 593 |     pub fn get_vramcnt_d(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn set_vramcnt_d(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub fn get_vramcnt_e(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 609 |     pub fn set_vramcnt_e(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn get_vramcnt_f(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn set_vramcnt_f(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn get_vramcnt_g(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 631 |     pub fn set_vramcnt_g(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 637 |     pub fn get_vramcnt_h(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 642 |     pub fn set_vramcnt_h(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn get_vramcnt_i(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     pub fn set_vramcnt_i(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 659 |     pub fn set_upper_buffer(&mut self, buffer: Vec<u32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |     pub fn set_lower_buffer(&mut self, buffer: Vec<u32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     pub fn write_gxfifo(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 676 |     pub fn set_clear_color(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 681 |     pub fn set_clear_depth(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     pub fn set_mtx_mode(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 691 |     pub fn mtx_push(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn mtx_pop(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn mtx_identity(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 706 |     pub fn mtx_mult_4x4(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub fn mtx_mult_4x3(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     pub fn mtx_mult_3x3(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn mtx_trans(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn color(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     pub fn vtx_16(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn set_polygon_attr(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn set_teximage_param(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn set_toon_table(&mut self, _address: u32, _color: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     pub fn begin_vtxs(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn swap_buffers(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 761 |     pub fn viewport(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     pub fn set_gxstat(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 773 |     fn draw_bg_txt_line(&mut self, _index: usize, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     fn draw_bg_extended_line(&mut self, _index: usize, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     fn draw_sprite_line(&mut self, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     fn draw_scanline(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Interrupt` is never used
[INFO] [stdout]  --> core/arm7/src/interrupts.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub enum Interrupt {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IpcSync` is never constructed
[INFO] [stdout]  --> core/arm7/src/ipc.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct IpcSync {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `read`, `receive_input`, and `write` are never used
[INFO] [stdout]   --> core/arm7/src/ipc.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl IpcSync {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 17 |     /// Create new IPC sync register
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn read(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn receive_input(&mut self, halfword: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn write(&mut self, halfword: u16) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IpcFifo` is never constructed
[INFO] [stdout]   --> core/arm7/src/ipc.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct IpcFifo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/ipc.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl IpcFifo {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  82 |     /// Create new IPC FIFO
[INFO] [stdout]  83 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn read_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn write_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn read_queue(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn write_queue(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn receive_not_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn receive_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn send_queue_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn receive_queue_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn clear_error(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPC` is never constructed
[INFO] [stdout]    --> core/arm7/src/ipc.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct IPC {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/ipc.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl IPC {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 222 |     /// Create new IPC system
[INFO] [stdout] 223 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn arm7_read_sync(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn arm7_write_sync(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn arm7_read_fifo(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn arm7_write_fifo(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn arm7_read_fifo_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn arm7_write_fifo_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn arm9_read_sync(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn arm9_write_sync(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn arm9_read_fifo(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn arm9_write_fifo(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn arm9_read_fifo_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn arm9_write_fifo_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn arm7_should_irq_receive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn arm7_should_irq_send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn arm9_should_irq_receive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn arm9_should_irq_send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `arm7_read_word`, `arm7_read_halfword`, and `arm7_read_byte` are never used
[INFO] [stdout]    --> core/arm7/src/read_arm7.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl Emulator {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  11 |     pub fn arm7_read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn arm7_read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn arm7_read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Alarm` is never constructed
[INFO] [stdout]  --> core/arm7/src/rtc.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Alarm {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/arm7/src/rtc.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Alarm {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 16 |     /// Create new alarm
[INFO] [stdout] 17 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RealTimeClock` is never constructed
[INFO] [stdout]   --> core/arm7/src/rtc.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct RealTimeClock {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/rtc.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl RealTimeClock {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  81 |     /// Create new RTC
[INFO] [stdout]  82 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn init(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn interpret_input(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn read(&self) -> u16 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn write(&mut self, mut value: u16, is_byte: bool) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_year(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn get_month(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_day(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn get_day_of_week(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_hour(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn get_minute(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn get_second(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn set_year(&mut self, year: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn set_month(&mut self, month: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_day(&mut self, day: u8) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn set_day_of_week(&mut self, dow: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn set_hour(&mut self, hour: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn set_minute(&mut self, minute: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn set_second(&mut self, second: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn get_alarm1(&self) -> Alarm {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn set_alarm1(&mut self, alarm: Alarm) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn get_alarm2(&self) -> Alarm {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_alarm2(&mut self, alarm: Alarm) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn get_stat1(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn set_stat1(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn get_stat2(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn set_stat2(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn tick_second(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     fn tick_minute(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     fn tick_hour(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn tick_day(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     fn tick_month(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     fn tick_year(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn to_bcd(value: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn from_bcd(value: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegSpiCnt` is never constructed
[INFO] [stdout]  --> core/arm7/src/spi.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RegSpiCnt {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]   --> core/arm7/src/spi.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl RegSpiCnt {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 26 |     /// Create new SPI control register
[INFO] [stdout] 27 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SPIBus` is never constructed
[INFO] [stdout]   --> core/arm7/src/spi.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct SPIBus {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/spi.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl SPIBus {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  95 |     /// Create new SPI bus
[INFO] [stdout]  96 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn init(&mut self, firmware_path: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn read_spidata(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn write_spidata(&mut self, data: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_spicnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn set_spicnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelCntReg` is never constructed
[INFO] [stdout]  --> core/arm7/src/spu.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ChannelCntReg {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/arm7/src/spu.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl ChannelCntReg {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 26 |     /// Create new channel control register
[INFO] [stdout] 27 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundChannel` is never constructed
[INFO] [stdout]   --> core/arm7/src/spu.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct SoundChannel {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/arm7/src/spu.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl SoundChannel {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 63 |     /// Create new sound channel
[INFO] [stdout] 64 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundCntReg` is never constructed
[INFO] [stdout]   --> core/arm7/src/spu.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct SoundCntReg {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl SoundCntReg {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  99 |     /// Create new sound control register
[INFO] [stdout] 100 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SndCapture` is never constructed
[INFO] [stdout]    --> core/arm7/src/spu.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct SndCapture {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `set` are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl SndCapture {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 166 |     /// Create new capture settings
[INFO] [stdout] 167 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get(&self) -> u8 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn set(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SPU` is never constructed
[INFO] [stdout]    --> core/arm7/src/spu.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct SPU {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:236:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl SPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 235 |     /// Create new SPU instance
[INFO] [stdout] 236 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub fn read_channel_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn write_channel_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn write_channel_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn write_channel_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn get_soundcnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn get_soundbias(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn get_sndcap0(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn get_sndcap1(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn set_soundcnt_lo(&mut self, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn set_soundcnt_hi(&mut self, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn set_soundcnt(&mut self, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn set_soundbias(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn set_sndcap0(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn set_sndcap1(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn get_channel(&self, index: usize) -> Option<&SoundChannel> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn get_channel_mut(&mut self, index: usize) -> Option<&mut SoundChannel> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Divisor` is never used
[INFO] [stdout]  --> core/arm7/src/timers.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Divisor {
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `value` and `from_value` are never used
[INFO] [stdout]   --> core/arm7/src/timers.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Divisor {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 18 |     /// Get the divisor value as integer
[INFO] [stdout] 19 |     pub fn value(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimerReg` is never constructed
[INFO] [stdout]   --> core/arm7/src/timers.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TimerReg {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_control`, and `set_control` are never used
[INFO] [stdout]   --> core/arm7/src/timers.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl TimerReg {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 60 |     /// Create new timer register
[INFO] [stdout] 61 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_control(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn set_control(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NDSTiming` is never constructed
[INFO] [stdout]    --> core/arm7/src/timers.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct NDSTiming {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/timers.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl NDSTiming {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 118 |     /// Create new timing system
[INFO] [stdout] 119 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn run_timers9(&mut self, cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn run_timers7(&mut self, cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn run_timer(&mut self, cycles: i32, index: usize) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn overflow(&mut self, index: usize) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn read_lo(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn read_hi(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn write(&mut self, value: u32, index: usize) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn write_lo(&mut self, value: u16, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn write_hi(&mut self, value: u16, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn get_counter(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn set_counter(&mut self, index: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn get_reload(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn set_reload(&mut self, index: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn is_enabled(&self, index: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn get_timer(&self, index: usize) -> Option<&TimerReg> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn get_timer_mut(&mut self, index: usize) -> Option<&mut TimerReg> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TouchScreen` is never constructed
[INFO] [stdout]  --> core/arm7/src/touchscreen.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct TouchScreen {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `power_on`, `press_event`, `transfer_data`, and `deselect` are never used
[INFO] [stdout]    --> core/arm7/src/touchscreen.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl TouchScreen {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn power_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn press_event(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn transfer_data(&mut self, input: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn deselect(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WiFi` is never constructed
[INFO] [stdout]  --> core/arm7/src/wifi.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct WiFi {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/wifi.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl WiFi {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  30 |     /// Create new WiFi controller
[INFO] [stdout]  31 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn set_w_power_us(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn get_w_power_us(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn set_w_bb_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn set_w_bb_write(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_w_bb_read(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn set_w_bb_mode(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn get_w_bb_mode(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn set_w_bb_power(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get_w_bb_power(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn set_w_rf_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_w_rf_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_w_rf_busy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_w_bb_busy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn bb_read(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn bb_write(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn power_off(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `arm7_write_word`, `arm7_write_halfword`, and `arm7_write_byte` are never used
[INFO] [stdout]    --> core/arm7/src/write_arm7.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl Emulator {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout]   7 |     pub fn arm7_write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn arm7_write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn arm7_write_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> core/arm7/src/bios.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 cpu.write_word(dest, v);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 let _ = cpu.write_word(dest, v);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> core/arm7/src/bios.rs:63:17
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 cpu.write_halfword(dest, v);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 let _ = cpu.write_halfword(dest, v);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> core/arm7/src/rtc.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 self.interpret_input();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 let _ = self.interpret_input();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> core/arm7/src/wifi.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn set_w_bb_cnt(&mut self, value: u16) {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_opcode`, `div`, `cpu_set`, `get_crc16`, `swi7`, and `swi9` are never used
[INFO] [stdout]    --> core/arm7/src/bios.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl BIOS {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  16 |     fn get_opcode(&self, cpu: &mut ARMCPU) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     fn div(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     fn cpu_set(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     fn get_crc16(&self, cpu: &mut ARMCPU) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn swi7(&self, arm7: &mut ARMCPU) -> i32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn swi9(&self, arm9: &mut ARMCPU) -> i32 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum CartCommand {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     Dummy = 1,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     /// Get cartridge header
[INFO] [stdout] 12 |     GetHeader = 2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 13 |     /// Get chip ID
[INFO] [stdout] 14 |     GetChipId = 3,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 15 |     /// Enable KEY1 encryption
[INFO] [stdout] 16 |     EnableKey1 = 4,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 17 |     /// Enable KEY2 encryption
[INFO] [stdout] 18 |     EnableKey2 = 5,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 19 |     /// Get secure area block
[INFO] [stdout] 20 |     GetSecureAreaBlock = 6,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     /// Read ROM data
[INFO] [stdout] 22 |     ReadRom = 7,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CartCommand` 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: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl CartCommand {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 26 |     /// Convert numeric value to CartCommand
[INFO] [stdout] 27 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WriteMem`, `ReadMem`, `ReadStatusReg`, `PageWrite`, `WriteHi`, and `ReadHi` are never constructed
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum AuxSpiCommand {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 48 |     WriteMem = 1,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 49 |     /// Read from memory
[INFO] [stdout] 50 |     ReadMem = 2,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 51 |     /// Read status register
[INFO] [stdout] 52 |     ReadStatusReg = 3,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// Page write operation
[INFO] [stdout] 54 |     PageWrite = 4,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 55 |     /// Write high address
[INFO] [stdout] 56 |     WriteHi = 5,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 57 |     /// Read high address
[INFO] [stdout] 58 |     ReadHi = 6,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuxSpiCommand` 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: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl AuxSpiCommand {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 62 |     /// Convert numeric value to AuxSpiCommand
[INFO] [stdout] 63 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/cartridge.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct RegRomCtrl {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 80 |     /// KEY1 gap clocks (timing parameter)
[INFO] [stdout] 81 |     pub key1_gap: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 82 |     /// KEY2 data enabled
[INFO] [stdout] 83 |     pub key2_data_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     /// Apply KEY2 seed
[INFO] [stdout] 85 |     pub key2_apply_seed: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     /// KEY2 gap setting
[INFO] [stdout] 87 |     pub key2_gap: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 88 |     /// KEY2 command enabled
[INFO] [stdout] 89 |     pub key2_cmd_enabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 90 |     /// Word ready signal
[INFO] [stdout] 91 |     pub word_ready: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 92 |     /// Block size (transfer size)
[INFO] [stdout] 93 |     pub block_size: u32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 94 |     /// Use slow transfer timing
[INFO] [stdout] 95 |     pub slow_transfer: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 96 |     /// KEY1 gap uses clock cycles
[INFO] [stdout] 97 |     pub key1_gap_clocks: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 98 |     /// Block transfer in progress
[INFO] [stdout] 99 |     pub block_busy: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RegRomCtrl` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl RegRomCtrl {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn get(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bandwidth`, `hold_chipselect`, `is_busy`, `serial_transfer`, `irq_after_transfer`, and `enabled` are never read
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct RegAuxSpiCnt {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 173 |     /// Baud rate divider
[INFO] [stdout] 174 |     pub bandwidth: u32,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 175 |     /// Hold chip select after transfer
[INFO] [stdout] 176 |     pub hold_chipselect: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |     /// Transfer in progress
[INFO] [stdout] 178 |     pub is_busy: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 179 |     /// Serial transfer mode
[INFO] [stdout] 180 |     pub serial_transfer: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     /// Generate interrupt after transfer
[INFO] [stdout] 182 |     pub irq_after_transfer: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     /// SPI enabled
[INFO] [stdout] 184 |     pub enabled: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RegAuxSpiCnt` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl RegAuxSpiCnt {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct NDSCart {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 241 |     /// Emulator reference
[INFO] [stdout] 242 |     emulator_ptr: *mut crate::emulator::Emulator,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     key1_buffer: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 246 |     /// Encryption mode (0=normal, 1=encrypted)
[INFO] [stdout] 247 |     cmd_encrypt_mode: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     rom: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 251 |     /// Save database
[INFO] [stdout] 252 |     save_database: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 253 |     /// ROM filename
[INFO] [stdout] 254 |     rom_name: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 255 |     /// SPI save data (8MB)
[INFO] [stdout] 256 |     spi_save: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 257 |     /// Save size in bytes
[INFO] [stdout] 258 |     save_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 259 |     /// Save type
[INFO] [stdout] 260 |     save_type: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 261 |     /// Save data has been modified
[INFO] [stdout] 262 |     dirty_save: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 263 |     /// Database size
[INFO] [stdout] 264 |     database_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 265 |     /// ROM size
[INFO] [stdout] 266 |     rom_size: u64,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     command_buffer: [u8; 8],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 270 |     /// Data output from cartridge
[INFO] [stdout] 271 |     data_output: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 272 |     /// Current index in ROM data
[INFO] [stdout] 273 |     rom_data_index: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 274 |     /// Current command being executed
[INFO] [stdout] 275 |     command_id: CartCommand,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     secure_area_index: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     cycles_left: i32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 282 |     /// Bytes remaining to transfer
[INFO] [stdout] 283 |     bytes_left: i32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     romctrl: RegRomCtrl,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 287 |     /// Auxiliary SPI control register
[INFO] [stdout] 288 |     auxspicnt: RegAuxSpiCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 289 |     /// Current SPI command
[INFO] [stdout] 290 |     spi_cmd: AuxSpiCommand,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 291 |     /// SPI data byte
[INFO] [stdout] 292 |     spi_data: u8,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 293 |     /// SPI command parameters
[INFO] [stdout] 294 |     spi_params: i32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 295 |     /// SPI address for read/write
[INFO] [stdout] 296 |     spi_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 297 |     /// SPI write enabled flag
[INFO] [stdout] 298 |     spi_write_enabled: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     encrypt_seed0: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 302 |     /// Encryption seed 1
[INFO] [stdout] 303 |     encrypt_seed1: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     keycode: [u32; 3],
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/cartridge.rs:346:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl NDSCart {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 346 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn load_database(&mut self, _file_name: &str) -> Result<usize, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn load_rom(&mut self, _file_name: &str) -> Result<usize, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     pub fn save_check(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn read_command(&self, index: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn receive_command(&mut self, command: u8, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn run(&mut self, _cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn debug_encrypt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     pub fn direct_read(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn direct_read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn direct_read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn get_romctrl(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn get_output(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn get_auxspicnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     pub fn read_auxspidata(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn set_hi_auxspicnt(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub fn set_auxspicnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     pub fn set_auxspidata(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     pub fn set_romctrl(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn set_lo_key2_seed0(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 470 |     pub fn set_lo_key2_seed1(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     pub fn set_hi_key2_seed0(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub fn set_hi_key2_seed1(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     fn key1_encrypt(&mut self, _data: &mut [u32]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     fn key1_decrypt(&mut self, _data: &mut [u32]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 497 |     fn apply_keycode(&mut self, _modulo: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 502 |     fn init_keycode(&mut self, _idcode: u32, _level: i32, _modulo: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/cp15.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ControlReg {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 10 |     /// MMU/Protection Unit enable
[INFO] [stdout] 11 |     pub mmu_pu_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 12 |     /// Data/Unified cache enable
[INFO] [stdout] 13 |     pub data_unified_cache_on: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     /// Big endian mode (vs little endian)
[INFO] [stdout] 15 |     pub is_big_endian: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 16 |     /// Instruction cache enable
[INFO] [stdout] 17 |     pub instruction_cache_on: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// High exception vector (0x0000 vs 0xFFFF0000)
[INFO] [stdout] 19 |     pub high_exception_vector: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Predictable cache replacement algorithm
[INFO] [stdout] 21 |     pub predictable_cache_replacement: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     /// Pre-ARMv5 mode compatibility
[INFO] [stdout] 23 |     pub pre_armv5_mode: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     /// Data TCM enable
[INFO] [stdout] 25 |     pub dtcm_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 26 |     /// Data TCM write-only mode
[INFO] [stdout] 27 |     pub dtcm_write_only: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     /// Instruction TCM enable
[INFO] [stdout] 29 |     pub itcm_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 30 |     /// Instruction TCM write-only mode
[INFO] [stdout] 31 |     pub itcm_write_only: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ControlReg` 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: methods `get_values` and `set_values` are never used
[INFO] [stdout]   --> core/arm7/src/cp15.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl ControlReg {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn get_values(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn set_values(&mut self, reg: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/cp15.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct CP15 {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 116 |     /// Emulator reference
[INFO] [stdout] 117 |     emulator: Option<Arc<Mutex<crate::emulator::Emulator>>>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 118 |     /// ARM9 CPU reference
[INFO] [stdout] 119 |     arm9: Option<Arc<Mutex<ARMCPU>>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     control: ControlReg,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     itcm_data: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 126 |     /// Data TCM data register
[INFO] [stdout] 127 |     dtcm_data: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     itcm_size: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 131 |     /// Data TCM base address (cached value)
[INFO] [stdout] 132 |     dtcm_base: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 133 |     /// Data TCM size (cached value)
[INFO] [stdout] 134 |     dtcm_size: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     itcm: Vec<u8>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 138 |     /// Data TCM memory (16 KB)
[INFO] [stdout] 139 |     dtcm: Vec<u8>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     dcache: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 143 |     /// Instruction cache (8 KB)
[INFO] [stdout] 144 |     icache: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/cp15.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl CP15 {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn power_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn link_with_cpu(&mut self, _arm9: Arc<Mutex<ARMCPU>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn get_itcm_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn get_dtcm_base(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn get_dtcm_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn dtcm_write_only(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn read_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn write_byte(&mut self, address: u32, byte: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn mrc(&self, operation: i32, source_reg: i32, info: i32, operand_reg: i32) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn mcr(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn get_control(&self) -> &ControlReg {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn get_control_mut(&mut self) -> &mut ControlReg {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn invalidate_icache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn invalidate_dcache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_SP` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const REG_SP: usize = 13;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_LR` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const REG_LR: usize = 14;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REG_PC` is never used
[INFO] [stdout]  --> core/arm7/src/cpu.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const REG_PC: usize = 15;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `User`, `Fiq`, `Irq`, `Abort`, `Undefined`, and `System` are never constructed
[INFO] [stdout]   --> core/arm7/src/cpu.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum PSRMode {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 13 |     /// User mode
[INFO] [stdout] 14 |     User = 0x10,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     /// FIQ (Fast Interrupt) mode
[INFO] [stdout] 16 |     Fiq = 0x11,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 17 |     /// IRQ (Interrupt) mode
[INFO] [stdout] 18 |     Irq = 0x12,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Abort = 0x17,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 23 |     /// Undefined instruction mode
[INFO] [stdout] 24 |     Undefined = 0x1B,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 25 |     /// System mode
[INFO] [stdout] 26 |     System = 0x1F,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PSRMode` 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: associated function `from_value` is never used
[INFO] [stdout]   --> core/arm7/src/cpu.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl PSRMode {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 30 |     /// Convert numeric value to PSRMode
[INFO] [stdout] 31 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/cpu.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct PSRFlags {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 48 |     /// Negative flag (result was negative)
[INFO] [stdout] 49 |     pub negative: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 50 |     /// Zero flag (result was zero)
[INFO] [stdout] 51 |     pub zero: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 52 |     /// Carry flag (carry out or borrow)
[INFO] [stdout] 53 |     pub carry: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 54 |     /// Overflow flag (signed arithmetic overflow)
[INFO] [stdout] 55 |     pub overflow: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 56 |     /// Sticky overflow flag
[INFO] [stdout] 57 |     pub sticky_overflow: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 58 |     /// IRQ interrupt disabled
[INFO] [stdout] 59 |     pub irq_disabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// FIQ interrupt disabled
[INFO] [stdout] 61 |     pub fiq_disabled: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Thumb mode enabled
[INFO] [stdout] 63 |     pub thumb_on: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 64 |     /// Current processor mode
[INFO] [stdout] 65 |     pub mode: PSRMode,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PSRFlags` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/cpu.rs:85:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl PSRFlags {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn set(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/cpu.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub struct ARMCPU {
[INFO] [stdout]     |            ------ fields in this struct
[INFO] [stdout] 141 |     /// Reference to parent emulator
[INFO] [stdout] 142 |     emulator_ptr: *mut crate::emulator::Emulator,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 143 |     /// CP15 system control coprocessor
[INFO] [stdout] 144 |     cp15: Option<Box<dyn std::any::Any>>, // Placeholder for CP15 implementation
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     sp_svc: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 152 |     /// Stack pointer for IRQ mode
[INFO] [stdout] 153 |     sp_irq: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 154 |     /// Stack pointer for FIQ mode
[INFO] [stdout] 155 |     sp_fiq: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 156 |     /// Stack pointer for abort mode
[INFO] [stdout] 157 |     sp_abt: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 158 |     /// Stack pointer for undefined mode
[INFO] [stdout] 159 |     sp_und: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     lr_svc: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 163 |     /// Link register for IRQ mode
[INFO] [stdout] 164 |     lr_irq: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 165 |     /// Link register for FIQ mode
[INFO] [stdout] 166 |     lr_fiq: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 167 |     /// Link register for abort mode
[INFO] [stdout] 168 |     lr_abt: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 169 |     /// Link register for undefined mode
[INFO] [stdout] 170 |     lr_und: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     fiq_regs: [u32; 5],
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     spsr: [PSRFlags; 0x20],
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     exception_base: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     last_timestamp: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 190 |     /// Currently executing instruction
[INFO] [stdout] 191 |     current_instr: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     code_waitstates: [[i32; 4]; 16],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 198 |     data_waitstates: [[i32; 4]; 16],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/cpu.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl ARMCPU {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn power_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn direct_boot(&mut self, entry_point: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn execute(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn run(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn jump(&mut self, new_addr: u32, change_thumb_state: bool) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn handle_undefined(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn handle_irq(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn halt(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn handle_swi(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn print_info(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn update_reg_mode(&mut self, _new_mode: PSRMode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_timestamp(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn cycles_ran(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn get_pc(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn get_current_instr(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_register(&self, id: usize) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn get_cpsr(&self) -> PSRFlags {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn set_register(&mut self, id: usize, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn set_cpsr(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub fn read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub fn write_word(&mut self, address: u32, word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub fn write_halfword(&mut self, address: u32, halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn write_byte(&mut self, address: u32, byte: u8) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 415 |     pub fn add_n32_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn add_s32_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn add_n16_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn add_s16_code(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn add_n32_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     pub fn add_s32_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn add_n16_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn add_s16_data(&mut self, address: u32, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 479 |     pub fn add_internal_cycles(&mut self, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     pub fn add_cop_cycles(&mut self, cycles: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 491 |     pub fn and(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn orr(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub fn eor(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn add(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn sub(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub fn adc(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub fn sbc(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 560 |     pub fn cmp(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 567 |     pub fn cmn(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     pub fn tst(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 580 |     pub fn teq(&mut self, x: u32, y: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn mov(&mut self, dest: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     pub fn mul(&mut self, dest: usize, src: usize, operand: u32, set_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 603 |     pub fn bic(&mut self, dest: usize, src: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub fn mvn(&mut self, dest: usize, operand: u32, alter_flags: bool) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 621 |     pub fn mrs(&mut self, _instruction: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn msr(&mut self, _instruction: u32) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 633 |     pub fn set_zero(&mut self, cond: bool) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn set_neg(&mut self, cond: bool) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 643 |     pub fn set_zero_neg_flags(&mut self, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 649 |     fn set_cv_add_flags(&mut self, a: u32, b: u32, result: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 659 |     fn set_cv_sub_flags(&mut self, a: u32, b: u32, result: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn spsr_to_cpsr(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 679 |     pub fn lsl(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn lsr(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 713 |     pub fn asr(&mut self, value: u32, shift: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 735 |     pub fn rrx(&mut self, value: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 744 |     pub fn rotr32(&mut self, n: u32, c: u32, alter_flags: bool) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/dma.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct DmaCnt {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout]  7 |     /// Destination address control (0=increment, 1=decrement, 2=fixed, 3=reload)
[INFO] [stdout]  8 |     pub dest_control: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]  9 |     /// Source address control (0=increment, 1=decrement, 2=fixed)
[INFO] [stdout] 10 |     pub source_control: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     /// Repeat the transfer when complete
[INFO] [stdout] 12 |     pub repeat: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 13 |     /// Use 32-bit transfers instead of 16-bit
[INFO] [stdout] 14 |     pub word_transfer: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 15 |     /// Start timing (0=immediate, 1=VBLANK, 2=HBLANK, 3=sync/special)
[INFO] [stdout] 16 |     pub timing: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 17 |     /// Generate interrupt when transfer completes
[INFO] [stdout] 18 |     pub irq_after_transfer: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     /// Enable this DMA channel
[INFO] [stdout] 20 |     pub enabled: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DmaCnt` 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: methods `get` and `set` are never used
[INFO] [stdout]   --> core/arm7/src/dma.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl DmaCnt {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/dma.rs:80:9
[INFO] [stdout]     |
[INFO] [stdout]  78 | pub struct DmaChannel {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout]  79 |     /// Source address (user-controlled)
[INFO] [stdout]  80 |     pub source: u32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]  81 |     /// Source address (internal working copy)
[INFO] [stdout]  82 |     pub internal_source: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub destination: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]  86 |     /// Destination address (internal working copy)
[INFO] [stdout]  87 |     pub internal_dest: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub length: u32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]  91 |     /// Transfer length (internal working copy)
[INFO] [stdout]  92 |     pub internal_len: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub cnt: DmaCnt,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub index: u32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub is_arm9: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DmaChannel` 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: fields `emulator_ptr`, `dmas`, `active_dma7`, `active_dma9`, and `active_dmas` are never read
[INFO] [stdout]    --> core/arm7/src/dma.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct NDS_DMA {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] 130 |     /// Emulator reference
[INFO] [stdout] 131 |     emulator_ptr: *mut crate::emulator::Emulator,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     dmas: [DmaChannel; 8],
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     active_dma7: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 138 |     /// Currently active ARM9 DMA channel
[INFO] [stdout] 139 |     active_dma9: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     active_dmas: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/dma.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl NDS_DMA {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn dma_event(&mut self, index: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn update_dma(&mut self, index: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn handle_event(&mut self, _event: &crate::emulator::SchedulerEvent) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn read_source(&self, index: usize) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn read_len(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn read_cnt(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn write_source(&mut self, index: usize, source: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn write_dest(&mut self, index: usize, dest: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn write_len(&mut self, index: usize, len: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn write_cnt(&mut self, index: usize, cnt: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn write_len_cnt(&mut self, index: usize, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn hblank_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn gamecart_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub fn gxfifo_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/emulator.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct KeyInputReg {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 23 |     pub button_a: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 24 |     pub button_b: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 25 |     pub select: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 26 |     pub start: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 27 |     pub right: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 28 |     pub left: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 29 |     pub up: bool,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 30 |     pub down: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 31 |     pub button_r: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 32 |     pub button_l: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyInputReg` 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: methods `get_value` and `set_value` are never used
[INFO] [stdout]   --> core/arm7/src/emulator.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl KeyInputReg {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 36 |     /// Get the current key input register value (bit-packed format)
[INFO] [stdout] 37 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `button_x`, `button_y`, `pen`, and `hinge` are never read
[INFO] [stdout]   --> core/arm7/src/emulator.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct ExtKeyInReg {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 90 |     pub button_x: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 91 |     pub button_y: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 92 |     pub pen: bool,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 93 |     pub hinge: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExtKeyInReg` 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: methods `get_value` and `set_value` are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl ExtKeyInReg {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout]  97 |     /// Get the extended key input register value
[INFO] [stdout]  98 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `speakers`, `wifi`, `led`, and `cartridge` are never read
[INFO] [stdout]    --> core/arm7/src/emulator.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct PowCnt2Reg {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 127 |     pub speakers: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 128 |     pub wifi: bool,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 129 |     pub led: bool,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 130 |     pub cartridge: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PowCnt2Reg` 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: methods `get_value` and `set_value` are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl PowCnt2Reg {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 134 |     /// Get the power control register value
[INFO] [stdout] 135 |     pub fn get_value(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn set_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event_id` and `timestamp` are never read
[INFO] [stdout]    --> core/arm7/src/emulator.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct SchedulerEvent {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 164 |     /// Event identifier (GPU event, DMA event, etc.)
[INFO] [stdout] 165 |     pub event_id: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 166 |     /// Timestamp when event should fire
[INFO] [stdout] 167 |     pub timestamp: u64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SchedulerEvent` 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: enum `Interrupt` is never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:172:10
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub enum Interrupt {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `User` is never constructed
[INFO] [stdout]    --> core/arm7/src/emulator.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub enum BiosMem<const BIOS_SIZE: usize> {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] 199 |     /// len: BIOS_SIZE
[INFO] [stdout] 200 |     User(Vec<u8>),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/emulator.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct Emulator {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 241 |     pub cycle_count: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 242 |     pub arm7: ARMCPU,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 243 |     pub arm9: ARMCPU,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 244 |     pub bios: BIOS,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 245 |     pub arm9_cp15: CP15,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 246 |     pub cart: NDSCart,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 247 |     pub dma: NDS_DMA,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 248 |     pub gpu: GPU,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 249 |     pub rtc: RealTimeClock,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 250 |     pub spi: SPIBus,
[INFO] [stdout] 251 |     pub spu: SPU,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 252 |     pub timers: NDSTiming,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 253 |     pub wifi: WiFi,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub main_ram: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 257 |     /// Shared CPU WRAM (32KB)
[INFO] [stdout] 258 |     pub shared_wram: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 259 |     /// ARM7-only WRAM (64KB)
[INFO] [stdout] 260 |     pub arm7_wram: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 261 |
[INFO] [stdout] 262 |     pub arm9_bios: BiosMem<BIOS9_SIZE>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 263 |     pub arm7_bios: BiosMem<BIOS7_SIZE>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub vram: Vec<u8>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 267 |     /// VRAM palette memory
[INFO] [stdout] 268 |     pub palette_ram: Vec<u8>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 269 |     /// OAM (Object Attribute Memory)
[INFO] [stdout] 270 |     pub oam: Vec<u8>,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub key_input: KeyInputReg,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 274 |     /// Input state - extended buttons
[INFO] [stdout] 275 |     pub ext_key_in: ExtKeyInReg,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 276 |     /// Power control register
[INFO] [stdout] 277 |     pub pow_cnt2: PowCnt2Reg,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub dma_fill: [u32; 4],
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 281 |     /// Serial I/O control register
[INFO] [stdout] 282 |     pub siocnt: u16,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 283 |     /// External memory control
[INFO] [stdout] 284 |     pub rcnt: u16,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 285 |     pub exmemcnt: u16,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 286 |     pub wramcnt: u8,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub divcnt: u16,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 290 |     pub div_numer: u64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 291 |     pub div_denom: u64,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 292 |     pub div_result: u64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 293 |     pub div_remresult: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub sqrtcnt: u16,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 297 |     pub sqrt_result: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 298 |     pub sqrt_param: u64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub postflg7: u8,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 302 |     pub postflg9: u8,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub biosprot: u32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub hstep_even: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub cycles: i32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub total_timestamp: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 315 |     /// Last ARM9 execution timestamp
[INFO] [stdout] 316 |     pub last_arm9_timestamp: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 317 |     /// Last ARM7 execution timestamp
[INFO] [stdout] 318 |     pub last_arm7_timestamp: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub scheduled_events: VecDeque<SchedulerEvent>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub ipcsync_nds9: IpcSync,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 339 |     pub ipcsync_nds7: IpcSync,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fifo7: IpcFifo,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 343 |     pub fifo9: IpcFifo,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/emulator.rs:425:12
[INFO] [stdout]     |
[INFO] [stdout] 346 | impl Emulator {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn init(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn load_firmware(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 437 |     pub fn load_bios7(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     pub fn load_bios9(&mut self, bios: &[u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub fn load_save_database(&mut self, _name: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     pub fn load_rom(&mut self, rom_name: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn direct_boot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 513 |     pub fn debug(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn run(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn get_timestamp(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 544 |     pub fn get_upper_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn get_lower_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub fn set_upper_screen(&mut self, _buffer: &[u32]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     pub fn set_lower_screen(&mut self, _buffer: &[u32]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn frame_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn display_swapped(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn dma_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 581 |     pub fn hblank_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn gamecart_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 591 |     pub fn gxfifo_dma_request(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     pub fn check_gxfifo_dma(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     pub fn add_gpu_event(&mut self, event_id: u32, relative_time: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 614 |     pub fn add_dma_event(&mut self, event_id: u32, relative_time: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     pub fn calculate_system_timestamp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     pub fn touchscreen_press(&mut self, x: i32, y: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 638 |     pub fn hle_bios(&mut self, _cpu_id: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 645 |     pub fn arm9_read_word(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 650 |     pub fn arm9_read_halfword(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 655 |     pub fn arm9_read_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 660 |     pub fn arm9_write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub fn arm9_write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 670 |     pub fn arm9_write_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 677 |     pub fn cart_copy_keybuffer(&self, _buffer: &mut [u8]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 682 |     pub fn cart_write_header(&mut self, _address: u32, _halfword: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 689 |     pub fn request_interrupt7(&mut self, _id: Interrupt) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 694 |     pub fn request_interrupt9(&mut self, _id: Interrupt) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn arm7_has_cart_rights(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 710 |     pub fn button_up_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 715 |     pub fn button_down_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 720 |     pub fn button_left_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 725 |     pub fn button_right_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 730 |     pub fn button_start_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 735 |     pub fn button_select_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 740 |     pub fn button_a_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 745 |     pub fn button_b_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 750 |     pub fn button_x_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 755 |     pub fn button_y_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 760 |     pub fn button_l_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 765 |     pub fn button_r_pressed(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 770 |     pub fn button_up_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn button_down_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 780 |     pub fn button_left_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 785 |     pub fn button_right_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 790 |     pub fn button_start_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 795 |     pub fn button_select_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 800 |     pub fn button_a_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 805 |     pub fn button_b_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 810 |     pub fn button_x_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 815 |     pub fn button_y_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 820 |     pub fn button_l_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 825 |     pub fn button_r_released(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn read_byte_internal(&self, address: u32) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 840 |     fn read_halfword_internal(&self, address: u32) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 846 |     fn read_word_internal(&self, address: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 852 |     fn write_byte_internal(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 867 |     fn write_halfword_internal(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 872 |     fn write_word_internal(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     fn check_fifo7_interrupt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 883 |     fn check_fifo9_interrupt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 888 |     fn start_division(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 896 |     fn start_sqrt(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `emulator` is never read
[INFO] [stdout]   --> core/arm7/src/firmware.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct Firmware {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 35 |     /// Emulator reference
[INFO] [stdout] 36 |     emulator: Option<Arc<Mutex<crate::emulator::Emulator>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/firmware.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl Firmware {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn deselect(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn get_byte(&self, address: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn set_byte(&mut self, address: usize, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn get_status(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_status(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn get_firmware(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn get_firmware_mut(&mut self) -> &mut [u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn crc_update(mut crc: u16, byte: u8) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn get_user_data(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn set_user_data(&mut self, value: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/gpu.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct DispStatReg {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 10 |     /// Currently in VBLANK period
[INFO] [stdout] 11 |     pub is_vblank: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 12 |     /// Currently in HBLANK period
[INFO] [stdout] 13 |     pub is_hblank: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 14 |     /// VCOUNTER matches VCOUNTER setting
[INFO] [stdout] 15 |     pub is_vcounter: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 16 |     /// Interrupt on VBLANK enable
[INFO] [stdout] 17 |     pub irq_on_vblank: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Interrupt on HBLANK enable
[INFO] [stdout] 19 |     pub irq_on_hblank: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Interrupt on VCOUNTER enable
[INFO] [stdout] 21 |     pub irq_on_vcounter: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     /// Current line counter comparison value
[INFO] [stdout] 23 |     pub vcounter: u16,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DispStatReg` 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: methods `get` and `set` are never used
[INFO] [stdout]   --> core/arm7/src/gpu.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl DispStatReg {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mst`, `offset`, and `enabled` are never read
[INFO] [stdout]   --> core/arm7/src/gpu.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct VramBankCnt {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 86 |     /// Master select mode for this bank
[INFO] [stdout] 87 |     pub mst: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 88 |     /// Offset within mode
[INFO] [stdout] 89 |     pub offset: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 90 |     /// Is this bank enabled
[INFO] [stdout] 91 |     pub enabled: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VramBankCnt` 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: fields `lcd_enable`, `engine_a`, `rendering_3d`, `geometry_3d`, `engine_b`, and `swap_display` are never read
[INFO] [stdout]    --> core/arm7/src/gpu.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct PowCnt1Reg {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 114 |     /// LCD display enable
[INFO] [stdout] 115 |     pub lcd_enable: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 116 |     /// Engine A power (2D upper screen)
[INFO] [stdout] 117 |     pub engine_a: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 118 |     /// 3D rendering enable
[INFO] [stdout] 119 |     pub rendering_3d: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 120 |     /// 3D geometry enable
[INFO] [stdout] 121 |     pub geometry_3d: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 122 |     /// Engine B power (2D lower screen)
[INFO] [stdout] 123 |     pub engine_b: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 124 |     /// Swap upper/lower display screens
[INFO] [stdout] 125 |     pub swap_display: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PowCnt1Reg` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl PowCnt1Reg {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/gpu.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct GPU {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 196 |     /// Emulator reference
[INFO] [stdout] 197 |     emulator_ptr: *mut crate::emulator::Emulator,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     engine_a_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 201 |     /// 2D Engine B (lower screen)
[INFO] [stdout] 202 |     engine_b_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 203 |     /// 3D Engine enabled
[INFO] [stdout] 204 |     engine_3d_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     frame_complete: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 208 |     /// Number of frames skipped for frame skip
[INFO] [stdout] 209 |     frames_skipped: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     cycles: u64,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     vram_a: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 216 |     vram_b: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 217 |     vram_c: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 218 |     vram_d: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 219 |     vram_e: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 220 |     vram_f: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 221 |     vram_g: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 222 |     vram_h: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 223 |     vram_i: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     palette_a: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 227 |     /// Palette memory for engine B (1024 bytes)
[INFO] [stdout] 228 |     palette_b: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     oam: Vec<u8>,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     dispstat7: DispStatReg,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 235 |     /// Display status register for ARM9
[INFO] [stdout] 236 |     dispstat9: DispStatReg,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     vcount: u16,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     vramcnt_a: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 243 |     vramcnt_b: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 244 |     vramcnt_c: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 245 |     vramcnt_d: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 246 |     vramcnt_e: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 247 |     vramcnt_f: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 248 |     vramcnt_g: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 249 |     vramcnt_h: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 250 |     vramcnt_i: VramBankCnt,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     powcnt1: PowCnt1Reg,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     upper_framebuffer: Arc<Mutex<Vec<u32>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 257 |     /// Lower screen framebuffer (256x192 pixels)
[INFO] [stdout] 258 |     lower_framebuffer: Arc<Mutex<Vec<u32>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/gpu.rs:314:12
[INFO] [stdout]     |
[INFO] [stdout] 261 | impl GPU {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn get_cycles(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn run_3d(&mut self, _cycles: u64) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn handle_event(&mut self, _event: &crate::emulator::SchedulerEvent) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn get_upper_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn get_lower_frame(&self) -> Vec<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn start_frame(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn end_frame(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn check_gxfifo_dma(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn check_gxfifo_irq(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn is_frame_complete(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn display_swapped(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     pub fn read_arm7_u16(&self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn read_arm7_u32(&self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn write_arm7_u32(&mut self, address: u32, value: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 462 |     pub fn write_arm7_u8(&mut self, address: u32, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn read_palette_a(&self, address: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn read_palette_b(&self, address: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn write_palette_a(&mut self, address: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     pub fn write_palette_b(&mut self, address: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 525 |     pub fn get_dispstat7(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     pub fn get_dispstat9(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn set_dispstat7(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn set_dispstat9(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 545 |     pub fn get_vcount(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn get_powcnt1(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 555 |     pub fn set_powcnt1(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 560 |     pub fn get_vramcnt_a(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub fn set_vramcnt_a(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn get_vramcnt_b(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn set_vramcnt_b(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 582 |     pub fn get_vramcnt_c(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 587 |     pub fn set_vramcnt_c(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 593 |     pub fn get_vramcnt_d(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn set_vramcnt_d(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 604 |     pub fn get_vramcnt_e(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 609 |     pub fn set_vramcnt_e(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn get_vramcnt_f(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn set_vramcnt_f(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn get_vramcnt_g(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 631 |     pub fn set_vramcnt_g(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 637 |     pub fn get_vramcnt_h(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 642 |     pub fn set_vramcnt_h(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 648 |     pub fn get_vramcnt_i(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     pub fn set_vramcnt_i(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 659 |     pub fn set_upper_buffer(&mut self, buffer: Vec<u32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |     pub fn set_lower_buffer(&mut self, buffer: Vec<u32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     pub fn write_gxfifo(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 676 |     pub fn set_clear_color(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 681 |     pub fn set_clear_depth(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     pub fn set_mtx_mode(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 691 |     pub fn mtx_push(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     pub fn mtx_pop(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub fn mtx_identity(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 706 |     pub fn mtx_mult_4x4(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub fn mtx_mult_4x3(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     pub fn mtx_mult_3x3(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn mtx_trans(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     pub fn color(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     pub fn vtx_16(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn set_polygon_attr(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 741 |     pub fn set_teximage_param(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn set_toon_table(&mut self, _address: u32, _color: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     pub fn begin_vtxs(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn swap_buffers(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 761 |     pub fn viewport(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     pub fn set_gxstat(&mut self, _word: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 773 |     fn draw_bg_txt_line(&mut self, _index: usize, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 778 |     fn draw_bg_extended_line(&mut self, _index: usize, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 783 |     fn draw_sprite_line(&mut self, _engine_a: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     fn draw_scanline(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Interrupt` is never used
[INFO] [stdout]  --> core/arm7/src/interrupts.rs:1:10
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub enum Interrupt {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `input`, `output`, and `irq_enable` are never read
[INFO] [stdout]   --> core/arm7/src/ipc.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct IpcSync {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout]  8 |     /// Input data from other CPU
[INFO] [stdout]  9 |     pub input: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 10 |     /// Output data to other CPU
[INFO] [stdout] 11 |     pub output: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 12 |     /// Enable interrupt on receive
[INFO] [stdout] 13 |     pub irq_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpcSync` 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: methods `read`, `receive_input`, and `write` are never used
[INFO] [stdout]   --> core/arm7/src/ipc.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl IpcSync {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn read(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn receive_input(&mut self, halfword: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn write(&mut self, halfword: u16) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/ipc.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct IpcFifo {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 58 |     /// Queue for sending data to other CPU
[INFO] [stdout] 59 |     pub send_queue: VecDeque<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 60 |     /// Queue for receiving data from other CPU
[INFO] [stdout] 61 |     pub receive_queue: VecDeque<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub recent_word: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub send_empty_irq: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     /// Request to empty send queue
[INFO] [stdout] 69 |     pub request_empty_irq: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     /// Receive queue not empty IRQ enable
[INFO] [stdout] 71 |     pub receive_nempty_irq: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     /// Request not empty IRQ
[INFO] [stdout] 73 |     pub request_nempty_irq: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub error: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 77 |     /// FIFO enabled
[INFO] [stdout] 78 |     pub enabled: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpcFifo` 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]    --> core/arm7/src/ipc.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl IpcFifo {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn read_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn write_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn read_queue(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn write_queue(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn send_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn receive_not_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn receive_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn send_queue_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn receive_queue_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn clear_error(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IPC` is never constructed
[INFO] [stdout]    --> core/arm7/src/ipc.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub struct IPC {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/ipc.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl IPC {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 222 |     /// Create new IPC system
[INFO] [stdout] 223 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn arm7_read_sync(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn arm7_write_sync(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn arm7_read_fifo(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn arm7_write_fifo(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn arm7_read_fifo_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn arm7_write_fifo_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn arm9_read_sync(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn arm9_write_sync(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn arm9_read_fifo(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn arm9_write_fifo(&mut self, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn arm9_read_fifo_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn arm9_write_fifo_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn arm7_should_irq_receive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn arm7_should_irq_send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn arm9_should_irq_receive(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn arm9_should_irq_send_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `arm7_read_word`, `arm7_read_halfword`, and `arm7_read_byte` are never used
[INFO] [stdout]    --> core/arm7/src/read_arm7.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl Emulator {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  11 |     pub fn arm7_read_word(&mut self, address: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn arm7_read_halfword(&mut self, address: u32) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn arm7_read_byte(&mut self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `day_of_week`, `hour`, and `minute` are never read
[INFO] [stdout]   --> core/arm7/src/rtc.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Alarm {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  7 |     /// Day of week (0=Sunday, 6=Saturday)
[INFO] [stdout]  8 |     pub day_of_week: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     /// Hour (0-23)
[INFO] [stdout] 10 |     pub hour: u8,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 11 |     /// Minute (0-59)
[INFO] [stdout] 12 |     pub minute: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Alarm` 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 fields are never read
[INFO] [stdout]   --> core/arm7/src/rtc.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct RealTimeClock {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 35 |     /// Status register 1
[INFO] [stdout] 36 |     stat1_reg: u8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 37 |     /// Status register 2
[INFO] [stdout] 38 |     stat2_reg: u8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     year: u8,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 42 |     /// Current month (1-12)
[INFO] [stdout] 43 |     month: u8,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 44 |     /// Current day (1-31)
[INFO] [stdout] 45 |     day: u8,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 46 |     /// Current day of week (0=Sunday, 6=Saturday)
[INFO] [stdout] 47 |     day_of_week: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     hour: u8,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 51 |     /// Current minute (0-59)
[INFO] [stdout] 52 |     minute: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 53 |     /// Current second (0-59)
[INFO] [stdout] 54 |     second: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     alarm1: Alarm,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 58 |     /// Alarm 2 settings
[INFO] [stdout] 59 |     alarm2: Alarm,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     io_reg: u16,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 64 |     /// Internal output buffer for serial data
[INFO] [stdout] 65 |     internal_output: [u8; 7],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     /// Current command being processed
[INFO] [stdout] 67 |     command: u32,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 68 |     /// Input data accumulator
[INFO] [stdout] 69 |     input: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 70 |     /// Current bit position in input
[INFO] [stdout] 71 |     input_bit_num: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 72 |     /// Index in input buffer
[INFO] [stdout] 73 |     input_index: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 74 |     /// Current bit position in output
[INFO] [stdout] 75 |     output_bit_num: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 76 |     /// Index in output buffer
[INFO] [stdout] 77 |     output_index: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> core/arm7/src/rtc.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl RealTimeClock {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn init(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn interpret_input(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn read(&self) -> u16 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn write(&mut self, mut value: u16, is_byte: bool) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_year(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn get_month(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn get_day(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn get_day_of_week(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_hour(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn get_minute(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn get_second(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn set_year(&mut self, year: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn set_month(&mut self, month: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn set_day(&mut self, day: u8) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn set_day_of_week(&mut self, dow: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn set_hour(&mut self, hour: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn set_minute(&mut self, minute: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn set_second(&mut self, second: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn get_alarm1(&self) -> Alarm {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn set_alarm1(&mut self, alarm: Alarm) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn get_alarm2(&self) -> Alarm {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_alarm2(&mut self, alarm: Alarm) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn get_stat1(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn set_stat1(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn get_stat2(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn set_stat2(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn tick_second(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     fn tick_minute(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     fn tick_hour(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn tick_day(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     fn tick_month(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     fn tick_year(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn to_bcd(value: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn from_bcd(value: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/spu.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct ChannelCntReg {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout]  7 |     /// Volume level (0-127)
[INFO] [stdout]  8 |     pub volume: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]  9 |     /// Frequency divider
[INFO] [stdout] 10 |     pub divider: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 11 |     /// Hold last sample when stopped
[INFO] [stdout] 12 |     pub hold_sample: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 13 |     /// Panning (0=left, 64=center, 127=right)
[INFO] [stdout] 14 |     pub panning: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     /// Wave duty cycle for generators
[INFO] [stdout] 16 |     pub wave_duty: u32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 17 |     /// Repeat mode (0=manual, 1=loop, 3=one-shot)
[INFO] [stdout] 18 |     pub repeat_mode: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 19 |     /// Audio format (0=PCM8, 1=PCM16, 2=ADPCM, 3=PSG)
[INFO] [stdout] 20 |     pub format: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 21 |     /// Channel is currently playing
[INFO] [stdout] 22 |     pub busy: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelCntReg` 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: fields `channel_cnt`, `sound_source`, `sound_timer`, `sound_pnt`, and `sound_len` are never read
[INFO] [stdout]   --> core/arm7/src/spu.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct SoundChannel {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 50 |     /// Channel control register
[INFO] [stdout] 51 |     pub channel_cnt: ChannelCntReg,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 52 |     /// Source address in memory
[INFO] [stdout] 53 |     pub sound_source: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 54 |     /// Playback timer/frequency
[INFO] [stdout] 55 |     pub sound_timer: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 56 |     /// Current playback position
[INFO] [stdout] 57 |     pub sound_pnt: u16,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 58 |     /// Length of audio data
[INFO] [stdout] 59 |     pub sound_len: u16,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SoundChannel` 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: fields `master_volume`, `left_output`, `right_output`, `output_ch1_mixer`, `output_ch3_mixer`, and `master_enable` are never read
[INFO] [stdout]   --> core/arm7/src/spu.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct SoundCntReg {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 84 |     /// Master volume (0-127)
[INFO] [stdout] 85 |     pub master_volume: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 86 |     /// Left output volume
[INFO] [stdout] 87 |     pub left_output: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 88 |     /// Right output volume
[INFO] [stdout] 89 |     pub right_output: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 90 |     /// Mix channel 1 to output
[INFO] [stdout] 91 |     pub output_ch1_mixer: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     /// Mix channel 3 to output
[INFO] [stdout] 93 |     pub output_ch3_mixer: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     /// Master audio enable
[INFO] [stdout] 95 |     pub master_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SoundCntReg` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl SoundCntReg {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get(&self) -> u16 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn set(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> core/arm7/src/spu.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct SndCapture {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 149 |     /// Add channel to capture
[INFO] [stdout] 150 |     pub add_to_channel: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     /// Capture source (0=mixer, 1=channel)
[INFO] [stdout] 152 |     pub capture_source: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 153 |     /// One-shot mode (not repeating)
[INFO] [stdout] 154 |     pub one_shot: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 155 |     /// Capture format is PCM8 (vs PCM16)
[INFO] [stdout] 156 |     pub capture_pcm8: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 157 |     /// Capture is active
[INFO] [stdout] 158 |     pub busy: bool,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 159 |     /// Destination address in memory
[INFO] [stdout] 160 |     pub destination: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 161 |     /// Capture length
[INFO] [stdout] 162 |     pub len: u16,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SndCapture` 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: methods `get` and `set` are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:180:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl SndCapture {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get(&self) -> u8 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn set(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `channels`, `soundcnt`, `sndcap0`, `sndcap1`, and `soundbias` are never read
[INFO] [stdout]    --> core/arm7/src/spu.rs:220:5
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct SPU {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 219 |     /// 16 audio channels
[INFO] [stdout] 220 |     channels: [SoundChannel; 16],
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     soundcnt: SoundCntReg,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     sndcap0: SndCapture,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 227 |     /// Capture 1 settings
[INFO] [stdout] 228 |     sndcap1: SndCapture,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     soundbias: u16,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/spu.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl SPU {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub fn read_channel_byte(&self, address: u32) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn write_channel_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn write_channel_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn write_channel_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 353 |     pub fn get_soundcnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     pub fn get_soundbias(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn get_sndcap0(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn get_sndcap1(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn set_soundcnt_lo(&mut self, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn set_soundcnt_hi(&mut self, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn set_soundcnt(&mut self, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn set_soundbias(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn set_sndcap0(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn set_sndcap1(&mut self, value: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn get_channel(&self, index: usize) -> Option<&SoundChannel> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn get_channel_mut(&mut self, index: usize) -> Option<&mut SoundChannel> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `F64`, `F256`, and `F1024` are never constructed
[INFO] [stdout]   --> core/arm7/src/timers.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum Divisor {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     F64 = 1,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     /// Divide by 256
[INFO] [stdout] 12 |     F256 = 2,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 13 |     /// Divide by 1024
[INFO] [stdout] 14 |     F1024 = 3,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Divisor` 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: associated items `value` and `from_value` are never used
[INFO] [stdout]   --> core/arm7/src/timers.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Divisor {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 18 |     /// Get the divisor value as integer
[INFO] [stdout] 19 |     pub fn value(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn from_value(val: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/timers.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TimerReg {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 43 |     /// Current counter value
[INFO] [stdout] 44 |     pub counter: u16,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 45 |     /// Value to reload counter on overflow
[INFO] [stdout] 46 |     pub reload_value: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 47 |     /// Cycles remaining before increment
[INFO] [stdout] 48 |     pub cycles_left: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 49 |     /// Clock frequency divisor
[INFO] [stdout] 50 |     pub clock_div: Divisor,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 51 |     /// Count up mode: increment when previous timer overflows
[INFO] [stdout] 52 |     pub count_up_timing: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// Generate interrupt on overflow
[INFO] [stdout] 54 |     pub irq_on_overflow: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     /// Timer enabled
[INFO] [stdout] 56 |     pub enabled: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimerReg` 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: methods `get_control` and `set_control` are never used
[INFO] [stdout]   --> core/arm7/src/timers.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl TimerReg {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn get_control(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn set_control(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `emulator_ptr`, `timer_clock_divs`, and `timers` are never read
[INFO] [stdout]    --> core/arm7/src/timers.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct NDSTiming {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 107 |     /// Emulator reference
[INFO] [stdout] 108 |     emulator_ptr: *mut crate::emulator::Emulator,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     timer_clock_divs: [i32; 4],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     timers: [TimerReg; 8],
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/timers.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl NDSTiming {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn run_timers9(&mut self, cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn run_timers7(&mut self, cycles: i32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn run_timer(&mut self, cycles: i32, index: usize) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     fn overflow(&mut self, index: usize) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn read_lo(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn read_hi(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn write(&mut self, value: u32, index: usize) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn write_lo(&mut self, value: u16, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn write_hi(&mut self, value: u16, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn get_counter(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn set_counter(&mut self, index: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn get_reload(&self, index: usize) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn set_reload(&mut self, index: usize, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn is_enabled(&self, index: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn get_timer(&self, index: usize) -> Option<&TimerReg> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn get_timer_mut(&mut self, index: usize) -> Option<&mut TimerReg> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> core/arm7/src/wifi.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct WiFi {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout]  8 |     /// Power control register (0x0236)
[INFO] [stdout]  9 |     w_power_us: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     w_bb_write: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 13 |     /// Baseband read register (0x015C)
[INFO] [stdout] 14 |     w_bb_read: u16,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 15 |     /// Baseband mode register (0x0160)
[INFO] [stdout] 16 |     w_bb_mode: u16,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 17 |     /// Baseband power register (0x0168)
[INFO] [stdout] 18 |     w_bb_power: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     w_rf_cnt: u16,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     bb_busy: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     /// RF busy flag
[INFO] [stdout] 26 |     rf_busy: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> core/arm7/src/wifi.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl WiFi {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn set_w_power_us(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn get_w_power_us(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn set_w_bb_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn set_w_bb_write(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_w_bb_read(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn set_w_bb_mode(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn get_w_bb_mode(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn set_w_bb_power(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get_w_bb_power(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn set_w_rf_cnt(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_w_rf_cnt(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_w_rf_busy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_w_bb_busy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn bb_read(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn bb_write(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn power_on(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn power_off(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `arm7_write_word`, `arm7_write_halfword`, and `arm7_write_byte` are never used
[INFO] [stdout]    --> core/arm7/src/write_arm7.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl Emulator {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout]   7 |     pub fn arm7_write_word(&mut self, address: u32, word: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn arm7_write_halfword(&mut self, address: u32, halfword: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn arm7_write_byte(&mut self, address: u32, byte: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> core/arm7/src/bios.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 cpu.write_word(dest, v);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 let _ = cpu.write_word(dest, v);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> core/arm7/src/bios.rs:63:17
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 cpu.write_halfword(dest, v);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 63 |                 let _ = cpu.write_halfword(dest, v);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> core/arm7/src/rtc.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 self.interpret_input();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |                 let _ = self.interpret_input();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking desk v0.1.0 (/opt/rustwide/workdir/gui/desk)
[INFO] [stdout] warning: struct `ReadableError` is never constructed
[INFO] [stdout]  --> gui/desk/src/error.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ReadableError {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_parse`, `from_context`, and `from_display` are never used
[INFO] [stdout]   --> gui/desk/src/error.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ReadableError {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 16 |     /// Constructs [`Self`] from parse error & input.
[INFO] [stdout] 17 |     pub fn from_parse(error: ParseError<&str, ContextError>, input: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn from_context<T>(error: ErrMode<ContextError>, input: T, err_pos: usize) -> Self
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn from_display<T, U>(message: T, input: U, err_pos: usize) -> Self
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_string` is never used
[INFO] [stdout]  --> gui/desk/src/hexdump.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn to_string<A>(bytes: A) -> String
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_bytes` is never used
[INFO] [stdout]   --> gui/desk/src/hexdump.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn to_bytes(hexdump: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_hexdump_pos` is never used
[INFO] [stdout]   --> gui/desk/src/hexdump.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const fn to_hexdump_pos(bytes_pos: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NdsHeader` is never constructed
[INFO] [stdout]   --> gui/desk/src/nds_header.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct NdsHeader {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_bytes` and `parser` are never used
[INFO] [stdout]    --> gui/desk/src/nds_header.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl NdsHeader {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout] 129 |     pub fn from_bytes(bytes: &[u8]) -> Result<Self, crate::error::ReadableError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn parser<'a>() -> impl Parser<&'a [u8], Self, ContextError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> gui/desk/src/main.rs:20:62
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn window_event(&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) {
[INFO] [stdout]    |                                                              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> gui/desk/src/main.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     event_loop.run_app(&mut app);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let _ = event_loop.run_app(&mut app);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> gui/desk/src/main.rs:20:62
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn window_event(&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) {
[INFO] [stdout]    |                                                              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> gui/desk/src/main.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     event_loop.run_app(&mut app);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let _ = event_loop.run_app(&mut app);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_parse` and `from_display` are never used
[INFO] [stdout]   --> gui/desk/src/error.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ReadableError {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 16 |     /// Constructs [`Self`] from parse error & input.
[INFO] [stdout] 17 |     pub fn from_parse(error: ParseError<&str, ContextError>, input: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn from_display<T, U>(message: T, input: U, err_pos: usize) -> Self
[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 `to_bytes` is never used
[INFO] [stdout]   --> gui/desk/src/hexdump.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn to_bytes(hexdump: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 09s
[INFO] running `Command { std: "docker" "inspect" "f07e912da4fca0a824f8801b28b470a162fdbcf1198e54612719ecc05f3eb812", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f07e912da4fca0a824f8801b28b470a162fdbcf1198e54612719ecc05f3eb812", kill_on_drop: false }`
[INFO] [stdout] f07e912da4fca0a824f8801b28b470a162fdbcf1198e54612719ecc05f3eb812
