[INFO] cloning repository https://github.com/leirn/rustaplex
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/leirn/rustaplex" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleirn%2Frustaplex", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleirn%2Frustaplex'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6c6a0d1878eadc58b350701d6227d1d0e026ed31
[INFO] checking leirn/rustaplex against master#01706e1a34c87656fcbfce198608f4cd2ac6461a for pr-135272
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleirn%2Frustaplex" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/leirn/rustaplex on toolchain 01706e1a34c87656fcbfce198608f4cd2ac6461a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/leirn/rustaplex
[INFO] finished tweaking git repo https://github.com/leirn/rustaplex
[INFO] tweaked toml for git repo https://github.com/leirn/rustaplex written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/leirn/rustaplex 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" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3b2a8c605eefb540793e782e740e9b9679fadb3f178f859610feefc41afafe70
[INFO] running `Command { std: "docker" "start" "-a" "3b2a8c605eefb540793e782e740e9b9679fadb3f178f859610feefc41afafe70", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b2a8c605eefb540793e782e740e9b9679fadb3f178f859610feefc41afafe70", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b2a8c605eefb540793e782e740e9b9679fadb3f178f859610feefc41afafe70", kill_on_drop: false }`
[INFO] [stdout] 3b2a8c605eefb540793e782e740e9b9679fadb3f178f859610feefc41afafe70
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ae1c2d4e24cacd521c3a90ba737570919c79b95b7670700b4f935fd6055542e7
[INFO] running `Command { std: "docker" "start" "-a" "ae1c2d4e24cacd521c3a90ba737570919c79b95b7670700b4f935fd6055542e7", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.1.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.69
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]    Compiling version-compare v0.1.0
[INFO] [stderr]    Compiling libc v0.2.149
[INFO] [stderr]     Checking memchr v2.6.4
[INFO] [stderr]    Compiling rustix v0.38.18
[INFO] [stderr]     Checking utf8parse v0.2.1
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking regex-syntax v0.8.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking anstyle v1.0.4
[INFO] [stderr]     Checking anstyle-query v1.0.0
[INFO] [stderr]     Checking bitflags v2.4.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.10
[INFO] [stderr]     Checking clap_lex v0.5.1
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking anstyle-parse v0.2.2
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]    Compiling sdl2 v0.35.2
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking termcolor v1.3.0
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking log v0.4.20
[INFO] [stderr]     Checking anstream v0.6.4
[INFO] [stderr]    Compiling sdl2-sys v0.35.2
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]     Checking clap_builder v4.4.6
[INFO] [stderr]     Checking aho-corasick v1.1.2
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]    Compiling syn v2.0.38
[INFO] [stderr]     Checking is-terminal v0.4.9
[INFO] [stderr]     Checking regex-automata v0.4.1
[INFO] [stderr]     Checking regex v1.10.0
[INFO] [stderr]    Compiling clap_derive v4.4.2
[INFO] [stderr]     Checking env_logger v0.10.0
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]     Checking clap v4.4.6
[INFO] [stderr]     Checking rustaplex v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]   --> src/game/globals.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::default;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Palette`
[INFO] [stdout]   --> src/game/graphics.rs:21:27
[INFO] [stdout]    |
[INFO] [stdout] 21 | use sdl2::pixels::{Color, Palette};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_SCREEN_PIXEL` should have an upper camel case name
[INFO] [stdout]     --> src/game/graphics.rs:1321:5
[INFO] [stdout]      |
[INFO] [stdout] 1321 |     G_SCREEN_PIXEL,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GScreenPixel`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_PANEL_RENDERED_BITMAP_DATA` should have an upper camel case name
[INFO] [stdout]     --> src/game/graphics.rs:1322:5
[INFO] [stdout]      |
[INFO] [stdout] 1322 |     G_PANEL_RENDERED_BITMAP_DATA,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GPanelRenderedBitmapData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]   --> src/game/globals.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::default;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Palette`
[INFO] [stdout]   --> src/game/graphics.rs:21:27
[INFO] [stdout]    |
[INFO] [stdout] 21 | use sdl2::pixels::{Color, Palette};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_SCREEN_PIXEL` should have an upper camel case name
[INFO] [stdout]     --> src/game/graphics.rs:1321:5
[INFO] [stdout]      |
[INFO] [stdout] 1321 |     G_SCREEN_PIXEL,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GScreenPixel`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_PANEL_RENDERED_BITMAP_DATA` should have an upper camel case name
[INFO] [stdout]     --> src/game/graphics.rs:1322:5
[INFO] [stdout]      |
[INFO] [stdout] 1322 |     G_PANEL_RENDERED_BITMAP_DATA,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GPanelRenderedBitmapData`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/game/demo.rs:131:60
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |                                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_length`
[INFO] [stdout]    --> src/game/demo.rs:131:72
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |                                                                        ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `number_of_demo_bytes_read` is never read
[INFO] [stdout]    --> src/game/demo.rs:207:21
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let mut number_of_demo_bytes_read = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/game/graphics.rs:937:13
[INFO] [stdout]     |
[INFO] [stdout] 937 |         for i in 0..(K_FULL_SCREEN_FRAMEBUFFER_LENGTH - copy_offset) {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title2_palette`
[INFO] [stdout]    --> src/game/graphics.rs:942:13
[INFO] [stdout]     |
[INFO] [stdout] 942 |         let title2_palette = Graphics::convert_palette_data_to_palette(G_TITLE2_PALETTE_DATA);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_title2_palette`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `final_width`
[INFO] [stdout]     --> src/game/graphics.rs:1185:17
[INFO] [stdout]      |
[INFO] [stdout] 1185 |             let final_width =
[INFO] [stdout]      |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_final_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effects_type`
[INFO] [stdout]    --> src/game/sounds.rs:285:37
[INFO] [stdout]     |
[INFO] [stdout] 285 |     fn play_sound_effect(&mut self, effects_type: SoundEffect) {}
[INFO] [stdout]     |                                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effects_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chunk`
[INFO] [stdout]    --> src/game/sounds.rs:307:13
[INFO] [stdout]     |
[INFO] [stdout] 307 |         let chunk: RWops<'static> = sdl2::rwops::RWops::from_file(filename, "r").unwrap();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/game/sounds.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         for i in 0..SOUND_EFFECT_COUNT {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `level_number_forced_to_load`
[INFO] [stdout]    --> src/game/mod.rs:294:17
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_level_number_forced_to_load`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `level_number_forced_to_load` is never read
[INFO] [stdout]    --> src/game/mod.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |             let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_player_level_state`
[INFO] [stdout]    --> src/game/mod.rs:965:13
[INFO] [stdout]     |
[INFO] [stdout] 965 |         let current_player_level_state = current_player_entry.level_state;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_player_level_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:962:13
[INFO] [stdout]     |
[INFO] [stdout] 962 |         let mut current_player_entry =
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_player_name` is never read
[INFO] [stdout]     --> src/game/mod.rs:1063:17
[INFO] [stdout]      |
[INFO] [stdout] 1063 |         let mut prev_player_name = String::from("");
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_player_name` is never read
[INFO] [stdout]     --> src/game/mod.rs:1076:17
[INFO] [stdout]      |
[INFO] [stdout] 1076 |         let mut next_player_name = String::from("");
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `message` is never read
[INFO] [stdout]     --> src/game/mod.rs:1367:17
[INFO] [stdout]      |
[INFO] [stdout] 1367 |         let mut message = String::new();
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `number_of_changes` is never read
[INFO] [stdout]     --> src/game/mod.rs:1452:17
[INFO] [stdout]      |
[INFO] [stdout] 1452 |         let mut number_of_changes: u8 = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `menu_screen_pixels`
[INFO] [stdout]     --> src/game/mod.rs:1592:13
[INFO] [stdout]      |
[INFO] [stdout] 1592 |         let menu_screen_pixels = self.graphics.video.borrow_mut().get_screen_pixels(); // Appel en double?
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_menu_screen_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/game/mod.rs:1604:13
[INFO] [stdout]      |
[INFO] [stdout] 1604 |         let mut k_animation_duration: u32 = K_NUMBER_OF_STEPS * 1000 / 70; // ~571 ms
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `color` is never read
[INFO] [stdout]     --> src/game/mod.rs:1701:17
[INFO] [stdout]      |
[INFO] [stdout] 1701 |         let mut color = 0;
[INFO] [stdout]      |                 ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/game/demo.rs:131:60
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |                                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_length`
[INFO] [stdout]    --> src/game/demo.rs:131:72
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |                                                                        ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mouse_x` is never read
[INFO] [stdout]     --> src/game/mod.rs:2041:17
[INFO] [stdout]      |
[INFO] [stdout] 2041 |         let mut mouse_x = 0;
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mouse_y` is never read
[INFO] [stdout]     --> src/game/mod.rs:2042:17
[INFO] [stdout]      |
[INFO] [stdout] 2042 |         let mut mouse_y = 0;
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `average_time_string`
[INFO] [stdout]     --> src/game/mod.rs:2273:13
[INFO] [stdout]      |
[INFO] [stdout] 2273 |         let average_time_string = "000.0";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_average_time_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `number_of_demo_bytes_read` is never read
[INFO] [stdout]    --> src/game/demo.rs:207:21
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let mut number_of_demo_bytes_read = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_suffix` is never read
[INFO] [stdout]     --> src/game/mod.rs:3380:17
[INFO] [stdout]      |
[INFO] [stdout] 3380 |         let mut current_suffix = "AT";
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `number_of_something` is assigned to, but never used
[INFO] [stdout]     --> src/game/mod.rs:3959:17
[INFO] [stdout]      |
[INFO] [stdout] 3959 | ...   let mut number_of_something = 0; // this is bx, just counts the number of tiles so technically is same as cx at this point… probabl...
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_number_of_something` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `max_scroll_y` is never read
[INFO] [stdout]     --> src/game/mod.rs:4168:17
[INFO] [stdout]      |
[INFO] [stdout] 4168 |         let mut max_scroll_y = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/game/graphics.rs:937:13
[INFO] [stdout]     |
[INFO] [stdout] 937 |         for i in 0..(K_FULL_SCREEN_FRAMEBUFFER_LENGTH - copy_offset) {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/game/mod.rs:4151:13
[INFO] [stdout]      |
[INFO] [stdout] 4151 |         let mut max_scroll_x = (K_LEVEL_BITMAP_WIDTH - K_SCREEN_WIDTH) as i32;
[INFO] [stdout]      |             ----^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title2_palette`
[INFO] [stdout]    --> src/game/graphics.rs:942:13
[INFO] [stdout]     |
[INFO] [stdout] 942 |         let title2_palette = Graphics::convert_palette_data_to_palette(G_TITLE2_PALETTE_DATA);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_title2_palette`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matches`
[INFO] [stdout]   --> src/main.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let matches = child.join().unwrap();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `final_width`
[INFO] [stdout]     --> src/game/graphics.rs:1185:17
[INFO] [stdout]      |
[INFO] [stdout] 1185 |             let final_width =
[INFO] [stdout]      |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_final_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ScalingMode` is more private than the item `game::video::Video::<'_>::get_scaling_mode`
[INFO] [stdout]    --> src/game/video.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn get_scaling_mode(&self) -> ScalingMode {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `game::video::Video::<'_>::get_scaling_mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ScalingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/game/video.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout] 28  | enum ScalingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ScalingMode` is more private than the item `game::video::Video::<'_>::set_scaling_mode`
[INFO] [stdout]    --> src/game/video.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn set_scaling_mode(&mut self, mode: ScalingMode) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `game::video::Video::<'_>::set_scaling_mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ScalingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/game/video.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout] 28  | enum ScalingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fun_level` is never used
[INFO] [stdout]     --> src/game/mod.rs:2863:8
[INFO] [stdout]      |
[INFO] [stdout] 169  | impl Game<'_> {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2863 |     fn fun_level(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game/animation.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout] 2  | pub struct MurphyAnimationDescriptor {
[INFO] [stdout]    |            ------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5  |     animation_coordinates_offset: i16, // word_510F0 -> 0x0DE0 -> seems like an offset from the destination position in dimensions of the...
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6  |     animation_coordinates_offset_increment: i16, // word_510F2 -> this increases the offset above frame by frame
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7  |     width: u16,                                  // word_510F4
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 8  |     height: u16,                                 // word_510F6
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 9  |     animation_index: u16, // word_510F8; -> memory address in someBinaryData_5142E, looks like a list of coordinates of frames in MOVING.DAT
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     speed_x: i16,         // word_510FA; -> applied to Murphy X position... speedX?
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     speed_y: i16,         // word_510FC; -> applied to Murphy Y position... speedY?
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 12 |     current_frame: u16, // Not used in the original code, I will use it to keep track of the current animation frame
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MurphyAnimationDescriptor` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/game/animation.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MURPHY_ANIMATION_DESCRIPTOR` is never used
[INFO] [stdout]   --> src/game/animation.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const K_MURPHY_ANIMATION_DESCRIPTOR: [MurphyAnimationDescriptor; 51] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MURPHY_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]    --> src/game/animation.rs:585:11
[INFO] [stdout]     |
[INFO] [stdout] 585 | pub const K_MURPHY_ANIMATION_FRAME_COORDINATES: [&[Point]; 37] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_BUG_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1011:11
[INFO] [stdout]      |
[INFO] [stdout] 1011 | pub const K_BUG_FRAME_COORDINATES: [Point; 16] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ZONK_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1032:11
[INFO] [stdout]      |
[INFO] [stdout] 1032 | pub const K_ZONK_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ZONK_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1043:11
[INFO] [stdout]      |
[INFO] [stdout] 1043 | pub const K_ZONK_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1054:11
[INFO] [stdout]      |
[INFO] [stdout] 1054 | pub const K_INFOTRON_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1065:11
[INFO] [stdout]      |
[INFO] [stdout] 1065 | pub const K_INFOTRON_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_REGULAR_EXPLOSION_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1076:11
[INFO] [stdout]      |
[INFO] [stdout] 1076 | pub const K_REGULAR_EXPLOSION_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_EXPLOSION_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1087:11
[INFO] [stdout]      |
[INFO] [stdout] 1087 | pub const K_INFOTRON_EXPLOSION_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_SNIK_SNAK_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1099:11
[INFO] [stdout]      |
[INFO] [stdout] 1099 | pub const K_SNIK_SNAK_ANIMATION_FRAME_COORDINATES: [Point; 48] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ELECTRON_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1151:11
[INFO] [stdout]      |
[INFO] [stdout] 1151 | pub const K_ELECTRON_ANIMATION_FRAME_COORDINATES: [Point; 48] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `k_original_demo_file_sizes`, `k_original_demo_first_file_chunks`, `g_current_demo_level_name`, `recording_demo_message`, and `g_demo_recording_just_started` are never read
[INFO] [stdout]   --> src/game/demo.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct DemoManager {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     k_original_demo_file_sizes: [u16; K_NUMBER_OF_DEMOS],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     k_original_demo_first_file_chunks: [FirstOriginalDemoFileChunk; K_NUMBER_OF_DEMOS],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     g_current_demo_level_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |
[INFO] [stdout] 47 |     recording_demo_message: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     pub g_demo_recording_just_started: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_level_number_from_original_demo_file` is never used
[INFO] [stdout]    --> src/game/demo.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl DemoManager {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `level_number` and `first_user_inputs` are never read
[INFO] [stdout]    --> src/game/demo.rs:257:9
[INFO] [stdout]     |
[INFO] [stdout] 256 | struct FirstOriginalDemoFileChunk {
[INFO] [stdout]     |        -------------------------- fields in this struct
[INFO] [stdout] 257 |     pub level_number: u8,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 258 |     pub first_user_inputs: [u8; 3],
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FirstOriginalDemoFileChunk` has derived impls for the traits `Default` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_BASE_DEMO_SIZE` is never used
[INFO] [stdout]    --> src/game/demo.rs:262:7
[INFO] [stdout]     |
[INFO] [stdout] 262 | const K_MAX_BASE_DEMO_SIZE: usize = 1 + K_MAX_DEMO_INPUT_STEPS + 1;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseDemo` is never constructed
[INFO] [stdout]    --> src/game/demo.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | struct BaseDemo {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_DEMO_SIGNATURE_LENGTH` is never used
[INFO] [stdout]    --> src/game/demo.rs:277:7
[INFO] [stdout]     |
[INFO] [stdout] 277 | const K_MAX_DEMO_SIGNATURE_LENGTH: usize = 511;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_DEMO_SIGNATURE_SIZE` is never used
[INFO] [stdout]    --> src/game/demo.rs:278:7
[INFO] [stdout]     |
[INFO] [stdout] 278 | const K_MAX_DEMO_SIGNATURE_SIZE: usize = K_MAX_DEMO_SIGNATURE_LENGTH + 1;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoFile` is never constructed
[INFO] [stdout]    --> src/game/demo.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | struct DemoFile {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game/game_states.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub struct GameStates {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub g_explosion_timers: Box<[u8; K_LEVEL_DATA_LENGTH]>,                   // 0x2434
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub g_is_gravity_enabled: u8, // byte_5101C -> 1 = turn on, anything else (0) = turn off
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub g_are_zonks_frozen: u8, // byte_51035 -> 2 = turn on, anything else (0) = turn off  (1=off!)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub g_number_of_info_trons: u8, // 0xd26 -> byte_51036 -> this seems to be _inside_ of fileLevelData when a level is read
[INFO] [stdout] 14 |     pub g_number_of_special_ports: u8, // 0xd27 -> byte_51037 this seems to be _inside_ of fileLevelData when a level is read, and it's n...
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub g_random_seed: u16,            // word_51076
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub g_level_failed: bool,                    // byte_510BA
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub g_toggle_game_panel_key_auto_repeat_counter: u8, // byte_510C2 -> 0DB2
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub g_murphy_previous_location: i32, // word_510C7
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub g_is_murphy_updated: bool,            // word_510CF
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub g_previous_user_input_was_none: bool, // byte_510D3 -> used to detect when to release the red disk
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 38 |     pub g_are_enemies_frozen: bool, // byte_510D7 -> 1 = turn on, anything else (0) = turn off
[INFO] [stdout] 39 |     pub g_scratch_gravity: bool, // byte_510D8 -> not sure what scratch gravity means exactly, but can be 0 (off) or 1 (on)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub g_demo_current_input_index: u16, // word_510DF
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     pub g_demo_current_input: u8, // byte_510E1 -> 0xDD1
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub g_demo_current_input_repeat_counter: u8, // -> 0xDD2 -> byte_510E2
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub g_demo_index_or_demo_level_number: u16, // word_510E6
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub g_murphy_counter_to_start_push_animation: u16, // word_510EE -> also used in the "release red disk" animation
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub g_current_murphy_animation: MurphyAnimationDescriptor, // -> starts at 0x0DE0
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/game/gamecontroller.rs:5:12
[INFO] [stdout]    |
[INFO] [stdout] 4  | impl GameController {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 5  |     pub fn get_game_controller_y(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 8  |     pub fn get_game_controller_x(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn get_game_controller_a(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn get_game_controller_b(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn get_game_controller_button_a(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn get_game_controller_button_b(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn get_game_controller_button_y(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_game_controller_button_x(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn get_game_controller_confirm_button(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_game_controller_cancel_button(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get_game_controller_button_right_shoulder(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_game_controller_button_left_shoulder(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_LIST_LEVEL_NAME_LENGTH` is never used
[INFO] [stdout]   --> src/game/globals.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const K_LIST_LEVEL_NAME_LENGTH: usize = 28; // In the list of levels, every level is 28 bytes long and looks like "001
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_LEVEL_LIST_DATA_LENGTH` is never used
[INFO] [stdout]   --> src/game/globals.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const K_LEVEL_LIST_DATA_LENGTH: usize = K_NUMBER_OF_LEVELS * K_LIST_LEVEL_NAME_LENGTH;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/game/globals.rs:78:5
[INFO] [stdout]     |
[INFO] [stdout] 75  | pub enum LevelTileType {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 78  |     Zonk = 1,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 79  |     Base = 2,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     Exit = 7,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 85  |     OrangeDisk = 8,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 86  |     PortRight = 9,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 87  |     PortDown = 10,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 88  |     PortLeft = 11,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 89  |     PortUp = 12,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 90  |     SportRight = 13,
[INFO] [stdout] 91  |     SportDown = 14,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 92  |     SportLeft = 15,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95  |     YellowDisk = 18,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 96  |     Terminal = 19,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 97  |     RedDisk = 20,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 98  |     PortVertical = 21,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 99  |     PortHorizontal = 22,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     Port4Way = 23,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 101 |     Electron = 24,
[INFO] [stdout] 102 |     Bug = 25,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     Hardware3 = 29,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 107 |     Hardware4 = 30,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 108 |     Explosion = 31,
[INFO] [stdout] 109 |     Hardware6 = 32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 110 |     Hardware7 = 33,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 111 |     Hardware8 = 34,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 112 |     Hardware9 = 35,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 113 |     Hardware10 = 36,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LevelTileType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position`, `gravity`, `freeze_zonks`, `freeze_enemies`, and `unused` are never read
[INFO] [stdout]    --> src/game/globals.rs:282:9
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub struct SpecialPortInfo {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub position: u16,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 283 |
[INFO] [stdout] 284 |     pub gravity: u8,        // 1 = turn on, anything else (0) = turn off
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 285 |     pub freeze_zonks: u8,   // 2 = turn on, anything else (0) = turn off  (1=off!)
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 286 |     pub freeze_enemies: u8, // 1 = turn on, anything else (0) = turn off
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 287 |     pub unused: u8,         // Doesn't matter: is ignored.
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpecialPortInfo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Normal` is never constructed
[INFO] [stdout]    --> src/game/globals.rs:312:5
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub enum FastModeType {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 311 |     None,
[INFO] [stdout] 312 |     Normal,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_text_with_chars8_font` is never used
[INFO] [stdout]    --> src/game/graphics.rs:819:12
[INFO] [stdout]     |
[INFO] [stdout] 60  | impl Graphics<'_> {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub fn draw_text_with_chars8_font(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Menu` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1232:5
[INFO] [stdout]      |
[INFO] [stdout] 1230 | pub enum BitmapType {
[INFO] [stdout]      |          ---------- variant in this enum
[INFO] [stdout] 1231 |     Background,
[INFO] [stdout] 1232 |     Menu,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `BitmapType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_SCREEN_PIXEL` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1321:5
[INFO] [stdout]      |
[INFO] [stdout] 1320 | pub enum DrawTextBuffer {
[INFO] [stdout]      |          -------------- variant in this enum
[INFO] [stdout] 1321 |     G_SCREEN_PIXEL,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GameDimmedPalette` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1332:5
[INFO] [stdout]      |
[INFO] [stdout] 1325 | pub enum PaletteType {
[INFO] [stdout]      |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1332 |     GameDimmedPalette,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/input.rs:19:8
[INFO] [stdout]     |
[INFO] [stdout] 11  | impl Input {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19  |     fn is_up_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24  |     pub fn is_down_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29  |     pub fn is_left_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34  |     pub fn is_right_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39  |     pub fn is_action_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |     pub fn is_menu_confirm_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54  |     pub fn is_menu_cancel_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60  |     pub fn is_exit_level_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68  |     pub fn is_pause_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn is_toggle_game_panel_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79  |     pub fn is_show_number_of_red_disks_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn is_increase_game_speed_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn is_decrease_game_speed_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn is_rotate_level_set_ascending_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_rotate_level_set_descending_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_any_f1_to_f10_keys_pressed` is never used
[INFO] [stdout]    --> src/game/keyboard.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl Keys {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn is_any_f1_to_f10_keys_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_AUDIO_BUFFER_SIZE` is never used
[INFO] [stdout]   --> src/game/sounds.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const K_AUDIO_BUFFER_SIZE: u32 = 512;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_SAMPLE_RATE` is never used
[INFO] [stdout]   --> src/game/sounds.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const K_SAMPLE_RATE: u32 = 44100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_NUMBER_OF_CHANNELS` is never used
[INFO] [stdout]   --> src/game/sounds.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const K_NUMBER_OF_CHANNELS: u32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/game/sounds.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum SoundEffect {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 60 |     Explosion,
[INFO] [stdout] 61 |     Infotron,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 62 |     Push,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 63 |     Fall,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 64 |     Bug,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 65 |     Base,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 66 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 67 |     Count,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sdl_context`, `g_current_sound_channel`, and `g_music` are never read
[INFO] [stdout]   --> src/game/sounds.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Sounds<'a> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 71 |     sdl_context: Rc<RefCell<sdl2::Sdl>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     g_current_sound_channel: i32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     g_is_audio_initialized: bool,
[INFO] [stdout] 80 |     g_music: Option<Music<'a>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/sounds.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl Sounds<'_> {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 105 |     pub fn sound_shutdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn play_infotron_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn play_push_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn play_fall_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn play_bug_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn play_base_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn play_exit_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap16` is never used
[INFO] [stdout]   --> src/game/utils.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn swap16(value: u16) -> u16 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ScalingModeAspectFill`, `ScalingModeIntegerFactor`, `ScalingModeFullscreen`, `ScalingModeAspectCorrect`, and `ScalingModeCount` are never constructed
[INFO] [stdout]   --> src/game/video.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum ScalingMode {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 29 |     ScalingModeAspectFit,
[INFO] [stdout] 30 |     ScalingModeAspectFill,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     ScalingModeIntegerFactor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     ScalingModeFullscreen,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     ScalingModeAspectCorrect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     ScalingModeCount,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScalingMode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTURE_ASPECT_RATIO` is never used
[INFO] [stdout]   --> src/game/video.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const TEXTURE_ASPECT_RATIO: f64 = K_SCREEN_WIDTH as f64 / K_SCREEN_HEIGHT as f64;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `g_scaling_mode` is never read
[INFO] [stdout]   --> src/game/video.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Video<'a> {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 40 |     g_renderer: sdl2::render::Canvas<sdl2::video::Window>,
[INFO] [stdout] 41 |     g_scaling_mode: ScalingMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_window_viewport`, `get_scaling_mode`, `set_scaling_mode`, `toggle_fullscreen`, `set_fullscreen_mode`, and `get_fullscreen_mode` are never used
[INFO] [stdout]    --> src/game/video.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout] 46  | impl Video<'_> {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn update_window_viewport(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn get_scaling_mode(&self) -> ScalingMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn set_scaling_mode(&mut self, mode: ScalingMode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn toggle_fullscreen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn set_fullscreen_mode(&mut self, fullscreen: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     fn get_fullscreen_mode(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused comparison that must be used
[INFO] [stdout]    --> src/game/mod.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |             current_suffix == "IN";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ the comparison produces a value
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let _ = current_suffix == "IN";
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused comparison that must be used
[INFO] [stdout]    --> src/game/mod.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             current_suffix == "AV";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ the comparison produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 112 |             let _ = current_suffix == "AV";
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_5A19B` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     byte_5A19B: bool,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_5_a19_b`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_58D47` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     byte_58D47: u8,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_58_d47`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_59B83` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 151 |     byte_59B83: bool,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_59_b83`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sub_4C407` should have a snake case name
[INFO] [stdout]     --> src/game/mod.rs:1506:8
[INFO] [stdout]      |
[INFO] [stdout] 1506 |     fn sub_4C407(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^ help: convert the identifier to snake case: `sub_4_c407`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `word_5A33C` should have a snake case name
[INFO] [stdout]   --> src/game/demo.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub word_5A33C: u16,
[INFO] [stdout]    |         ^^^^^^^^^^ help: convert the identifier to snake case: `word_5_a33_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `effects_type`
[INFO] [stdout]    --> src/game/sounds.rs:285:37
[INFO] [stdout]     |
[INFO] [stdout] 285 |     fn play_sound_effect(&mut self, effects_type: SoundEffect) {}
[INFO] [stdout]     |                                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effects_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chunk`
[INFO] [stdout]    --> src/game/sounds.rs:307:13
[INFO] [stdout]     |
[INFO] [stdout] 307 |         let chunk: RWops<'static> = sdl2::rwops::RWops::from_file(filename, "r").unwrap();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/game/sounds.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         for i in 0..SOUND_EFFECT_COUNT {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `level_number_forced_to_load`
[INFO] [stdout]    --> src/game/mod.rs:294:17
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_level_number_forced_to_load`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `level_number_forced_to_load` is never read
[INFO] [stdout]    --> src/game/mod.rs:297:21
[INFO] [stdout]     |
[INFO] [stdout] 297 |             let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let mut level_number_forced_to_load = 0_u8;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_player_level_state`
[INFO] [stdout]    --> src/game/mod.rs:965:13
[INFO] [stdout]     |
[INFO] [stdout] 965 |         let current_player_level_state = current_player_entry.level_state;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_player_level_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/mod.rs:962:13
[INFO] [stdout]     |
[INFO] [stdout] 962 |         let mut current_player_entry =
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_player_name` is never read
[INFO] [stdout]     --> src/game/mod.rs:1063:17
[INFO] [stdout]      |
[INFO] [stdout] 1063 |         let mut prev_player_name = String::from("");
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `next_player_name` is never read
[INFO] [stdout]     --> src/game/mod.rs:1076:17
[INFO] [stdout]      |
[INFO] [stdout] 1076 |         let mut next_player_name = String::from("");
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `message` is never read
[INFO] [stdout]     --> src/game/mod.rs:1367:17
[INFO] [stdout]      |
[INFO] [stdout] 1367 |         let mut message = String::new();
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `number_of_changes` is never read
[INFO] [stdout]     --> src/game/mod.rs:1452:17
[INFO] [stdout]      |
[INFO] [stdout] 1452 |         let mut number_of_changes: u8 = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `menu_screen_pixels`
[INFO] [stdout]     --> src/game/mod.rs:1592:13
[INFO] [stdout]      |
[INFO] [stdout] 1592 |         let menu_screen_pixels = self.graphics.video.borrow_mut().get_screen_pixels(); // Appel en double?
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_menu_screen_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/game/mod.rs:1604:13
[INFO] [stdout]      |
[INFO] [stdout] 1604 |         let mut k_animation_duration: u32 = K_NUMBER_OF_STEPS * 1000 / 70; // ~571 ms
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `color` is never read
[INFO] [stdout]     --> src/game/mod.rs:1701:17
[INFO] [stdout]      |
[INFO] [stdout] 1701 |         let mut color = 0;
[INFO] [stdout]      |                 ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mouse_x` is never read
[INFO] [stdout]     --> src/game/mod.rs:2041:17
[INFO] [stdout]      |
[INFO] [stdout] 2041 |         let mut mouse_x = 0;
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `mouse_y` is never read
[INFO] [stdout]     --> src/game/mod.rs:2042:17
[INFO] [stdout]      |
[INFO] [stdout] 2042 |         let mut mouse_y = 0;
[INFO] [stdout]      |                 ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `average_time_string`
[INFO] [stdout]     --> src/game/mod.rs:2273:13
[INFO] [stdout]      |
[INFO] [stdout] 2273 |         let average_time_string = "000.0";
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_average_time_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_suffix` is never read
[INFO] [stdout]     --> src/game/mod.rs:3380:17
[INFO] [stdout]      |
[INFO] [stdout] 3380 |         let mut current_suffix = "AT";
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `number_of_something` is assigned to, but never used
[INFO] [stdout]     --> src/game/mod.rs:3959:17
[INFO] [stdout]      |
[INFO] [stdout] 3959 | ...   let mut number_of_something = 0; // this is bx, just counts the number of tiles so technically is same as cx at this point… probabl...
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_number_of_something` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `max_scroll_y` is never read
[INFO] [stdout]     --> src/game/mod.rs:4168:17
[INFO] [stdout]      |
[INFO] [stdout] 4168 |         let mut max_scroll_y = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/game/mod.rs:4151:13
[INFO] [stdout]      |
[INFO] [stdout] 4151 |         let mut max_scroll_x = (K_LEVEL_BITMAP_WIDTH - K_SCREEN_WIDTH) as i32;
[INFO] [stdout]      |             ----^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matches`
[INFO] [stdout]   --> src/main.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let matches = child.join().unwrap();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ScalingMode` is more private than the item `game::video::Video::<'_>::get_scaling_mode`
[INFO] [stdout]    --> src/game/video.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn get_scaling_mode(&self) -> ScalingMode {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `game::video::Video::<'_>::get_scaling_mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ScalingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/game/video.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout] 28  | enum ScalingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ScalingMode` is more private than the item `game::video::Video::<'_>::set_scaling_mode`
[INFO] [stdout]    --> src/game/video.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn set_scaling_mode(&mut self, mode: ScalingMode) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `game::video::Video::<'_>::set_scaling_mode` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `ScalingMode` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/game/video.rs:28:1
[INFO] [stdout]     |
[INFO] [stdout] 28  | enum ScalingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fun_level` is never used
[INFO] [stdout]     --> src/game/mod.rs:2863:8
[INFO] [stdout]      |
[INFO] [stdout] 169  | impl Game<'_> {
[INFO] [stdout]      | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2863 |     fn fun_level(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game/animation.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout] 2  | pub struct MurphyAnimationDescriptor {
[INFO] [stdout]    |            ------------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5  |     animation_coordinates_offset: i16, // word_510F0 -> 0x0DE0 -> seems like an offset from the destination position in dimensions of the...
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6  |     animation_coordinates_offset_increment: i16, // word_510F2 -> this increases the offset above frame by frame
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7  |     width: u16,                                  // word_510F4
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 8  |     height: u16,                                 // word_510F6
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 9  |     animation_index: u16, // word_510F8; -> memory address in someBinaryData_5142E, looks like a list of coordinates of frames in MOVING.DAT
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     speed_x: i16,         // word_510FA; -> applied to Murphy X position... speedX?
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 11 |     speed_y: i16,         // word_510FC; -> applied to Murphy Y position... speedY?
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 12 |     current_frame: u16, // Not used in the original code, I will use it to keep track of the current animation frame
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MurphyAnimationDescriptor` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/game/animation.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Point {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MURPHY_ANIMATION_DESCRIPTOR` is never used
[INFO] [stdout]   --> src/game/animation.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const K_MURPHY_ANIMATION_DESCRIPTOR: [MurphyAnimationDescriptor; 51] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MURPHY_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]    --> src/game/animation.rs:585:11
[INFO] [stdout]     |
[INFO] [stdout] 585 | pub const K_MURPHY_ANIMATION_FRAME_COORDINATES: [&[Point]; 37] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_BUG_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1011:11
[INFO] [stdout]      |
[INFO] [stdout] 1011 | pub const K_BUG_FRAME_COORDINATES: [Point; 16] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ZONK_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1032:11
[INFO] [stdout]      |
[INFO] [stdout] 1032 | pub const K_ZONK_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ZONK_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1043:11
[INFO] [stdout]      |
[INFO] [stdout] 1043 | pub const K_ZONK_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1054:11
[INFO] [stdout]      |
[INFO] [stdout] 1054 | pub const K_INFOTRON_SLIDE_LEFT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1065:11
[INFO] [stdout]      |
[INFO] [stdout] 1065 | pub const K_INFOTRON_SLIDE_RIGHT_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_REGULAR_EXPLOSION_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1076:11
[INFO] [stdout]      |
[INFO] [stdout] 1076 | pub const K_REGULAR_EXPLOSION_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_INFOTRON_EXPLOSION_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1087:11
[INFO] [stdout]      |
[INFO] [stdout] 1087 | pub const K_INFOTRON_EXPLOSION_ANIMATION_FRAME_COORDINATES: [Point; 8] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_SNIK_SNAK_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1099:11
[INFO] [stdout]      |
[INFO] [stdout] 1099 | pub const K_SNIK_SNAK_ANIMATION_FRAME_COORDINATES: [Point; 48] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_ELECTRON_ANIMATION_FRAME_COORDINATES` is never used
[INFO] [stdout]     --> src/game/animation.rs:1151:11
[INFO] [stdout]      |
[INFO] [stdout] 1151 | pub const K_ELECTRON_ANIMATION_FRAME_COORDINATES: [Point; 48] = [
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `k_original_demo_file_sizes`, `k_original_demo_first_file_chunks`, `g_current_demo_level_name`, `recording_demo_message`, and `g_demo_recording_just_started` are never read
[INFO] [stdout]   --> src/game/demo.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct DemoManager {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     k_original_demo_file_sizes: [u16; K_NUMBER_OF_DEMOS],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     k_original_demo_first_file_chunks: [FirstOriginalDemoFileChunk; K_NUMBER_OF_DEMOS],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     g_current_demo_level_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |
[INFO] [stdout] 47 |     recording_demo_message: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     pub g_demo_recording_just_started: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_level_number_from_original_demo_file` is never used
[INFO] [stdout]    --> src/game/demo.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl DemoManager {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn get_level_number_from_original_demo_file(&self, file: File, file_length: u64) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `level_number` and `first_user_inputs` are never read
[INFO] [stdout]    --> src/game/demo.rs:257:9
[INFO] [stdout]     |
[INFO] [stdout] 256 | struct FirstOriginalDemoFileChunk {
[INFO] [stdout]     |        -------------------------- fields in this struct
[INFO] [stdout] 257 |     pub level_number: u8,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 258 |     pub first_user_inputs: [u8; 3],
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FirstOriginalDemoFileChunk` has derived impls for the traits `Default` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_BASE_DEMO_SIZE` is never used
[INFO] [stdout]    --> src/game/demo.rs:262:7
[INFO] [stdout]     |
[INFO] [stdout] 262 | const K_MAX_BASE_DEMO_SIZE: usize = 1 + K_MAX_DEMO_INPUT_STEPS + 1;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseDemo` is never constructed
[INFO] [stdout]    --> src/game/demo.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | struct BaseDemo {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_DEMO_SIGNATURE_LENGTH` is never used
[INFO] [stdout]    --> src/game/demo.rs:277:7
[INFO] [stdout]     |
[INFO] [stdout] 277 | const K_MAX_DEMO_SIGNATURE_LENGTH: usize = 511;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_MAX_DEMO_SIGNATURE_SIZE` is never used
[INFO] [stdout]    --> src/game/demo.rs:278:7
[INFO] [stdout]     |
[INFO] [stdout] 278 | const K_MAX_DEMO_SIGNATURE_SIZE: usize = K_MAX_DEMO_SIGNATURE_LENGTH + 1;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DemoFile` is never constructed
[INFO] [stdout]    --> src/game/demo.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | struct DemoFile {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game/game_states.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub struct GameStates {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub g_explosion_timers: Box<[u8; K_LEVEL_DATA_LENGTH]>,                   // 0x2434
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub g_is_gravity_enabled: u8, // byte_5101C -> 1 = turn on, anything else (0) = turn off
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub g_are_zonks_frozen: u8, // byte_51035 -> 2 = turn on, anything else (0) = turn off  (1=off!)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub g_number_of_info_trons: u8, // 0xd26 -> byte_51036 -> this seems to be _inside_ of fileLevelData when a level is read
[INFO] [stdout] 14 |     pub g_number_of_special_ports: u8, // 0xd27 -> byte_51037 this seems to be _inside_ of fileLevelData when a level is read, and it's n...
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub g_random_seed: u16,            // word_51076
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub g_level_failed: bool,                    // byte_510BA
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub g_toggle_game_panel_key_auto_repeat_counter: u8, // byte_510C2 -> 0DB2
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub g_murphy_previous_location: i32, // word_510C7
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub g_is_murphy_updated: bool,            // word_510CF
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub g_previous_user_input_was_none: bool, // byte_510D3 -> used to detect when to release the red disk
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 38 |     pub g_are_enemies_frozen: bool, // byte_510D7 -> 1 = turn on, anything else (0) = turn off
[INFO] [stdout] 39 |     pub g_scratch_gravity: bool, // byte_510D8 -> not sure what scratch gravity means exactly, but can be 0 (off) or 1 (on)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub g_demo_current_input_index: u16, // word_510DF
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |     pub g_demo_current_input: u8, // byte_510E1 -> 0xDD1
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub g_demo_current_input_repeat_counter: u8, // -> 0xDD2 -> byte_510E2
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     pub g_demo_index_or_demo_level_number: u16, // word_510E6
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub g_murphy_counter_to_start_push_animation: u16, // word_510EE -> also used in the "release red disk" animation
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub g_current_murphy_animation: MurphyAnimationDescriptor, // -> starts at 0x0DE0
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/game/gamecontroller.rs:5:12
[INFO] [stdout]    |
[INFO] [stdout] 4  | impl GameController {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 5  |     pub fn get_game_controller_y(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 8  |     pub fn get_game_controller_x(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn get_game_controller_a(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn get_game_controller_b(&mut self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn get_game_controller_button_a(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn get_game_controller_button_b(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn get_game_controller_button_y(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_game_controller_button_x(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn get_game_controller_confirm_button(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_game_controller_cancel_button(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get_game_controller_button_right_shoulder(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_game_controller_button_left_shoulder(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_LIST_LEVEL_NAME_LENGTH` is never used
[INFO] [stdout]   --> src/game/globals.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const K_LIST_LEVEL_NAME_LENGTH: usize = 28; // In the list of levels, every level is 28 bytes long and looks like "001
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_LEVEL_LIST_DATA_LENGTH` is never used
[INFO] [stdout]   --> src/game/globals.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const K_LEVEL_LIST_DATA_LENGTH: usize = K_NUMBER_OF_LEVELS * K_LIST_LEVEL_NAME_LENGTH;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/game/globals.rs:78:5
[INFO] [stdout]     |
[INFO] [stdout] 75  | pub enum LevelTileType {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 78  |     Zonk = 1,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 79  |     Base = 2,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     Exit = 7,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 85  |     OrangeDisk = 8,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 86  |     PortRight = 9,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 87  |     PortDown = 10,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 88  |     PortLeft = 11,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 89  |     PortUp = 12,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 90  |     SportRight = 13,
[INFO] [stdout] 91  |     SportDown = 14,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 92  |     SportLeft = 15,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95  |     YellowDisk = 18,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 96  |     Terminal = 19,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 97  |     RedDisk = 20,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 98  |     PortVertical = 21,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 99  |     PortHorizontal = 22,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     Port4Way = 23,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 101 |     Electron = 24,
[INFO] [stdout] 102 |     Bug = 25,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     Hardware3 = 29,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 107 |     Hardware4 = 30,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 108 |     Explosion = 31,
[INFO] [stdout] 109 |     Hardware6 = 32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 110 |     Hardware7 = 33,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 111 |     Hardware8 = 34,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 112 |     Hardware9 = 35,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 113 |     Hardware10 = 36,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LevelTileType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position`, `gravity`, `freeze_zonks`, `freeze_enemies`, and `unused` are never read
[INFO] [stdout]    --> src/game/globals.rs:282:9
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub struct SpecialPortInfo {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub position: u16,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 283 |
[INFO] [stdout] 284 |     pub gravity: u8,        // 1 = turn on, anything else (0) = turn off
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 285 |     pub freeze_zonks: u8,   // 2 = turn on, anything else (0) = turn off  (1=off!)
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 286 |     pub freeze_enemies: u8, // 1 = turn on, anything else (0) = turn off
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 287 |     pub unused: u8,         // Doesn't matter: is ignored.
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpecialPortInfo` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Normal` is never constructed
[INFO] [stdout]    --> src/game/globals.rs:312:5
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub enum FastModeType {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 311 |     None,
[INFO] [stdout] 312 |     Normal,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_text_with_chars8_font` is never used
[INFO] [stdout]    --> src/game/graphics.rs:819:12
[INFO] [stdout]     |
[INFO] [stdout] 60  | impl Graphics<'_> {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub fn draw_text_with_chars8_font(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Menu` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1232:5
[INFO] [stdout]      |
[INFO] [stdout] 1230 | pub enum BitmapType {
[INFO] [stdout]      |          ---------- variant in this enum
[INFO] [stdout] 1231 |     Background,
[INFO] [stdout] 1232 |     Menu,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `BitmapType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `G_SCREEN_PIXEL` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1321:5
[INFO] [stdout]      |
[INFO] [stdout] 1320 | pub enum DrawTextBuffer {
[INFO] [stdout]      |          -------------- variant in this enum
[INFO] [stdout] 1321 |     G_SCREEN_PIXEL,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GameDimmedPalette` is never constructed
[INFO] [stdout]     --> src/game/graphics.rs:1332:5
[INFO] [stdout]      |
[INFO] [stdout] 1325 | pub enum PaletteType {
[INFO] [stdout]      |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1332 |     GameDimmedPalette,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/input.rs:19:8
[INFO] [stdout]     |
[INFO] [stdout] 11  | impl Input {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19  |     fn is_up_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24  |     pub fn is_down_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29  |     pub fn is_left_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34  |     pub fn is_right_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39  |     pub fn is_action_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |     pub fn is_menu_confirm_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54  |     pub fn is_menu_cancel_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60  |     pub fn is_exit_level_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68  |     pub fn is_pause_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn is_toggle_game_panel_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79  |     pub fn is_show_number_of_red_disks_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn is_increase_game_speed_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn is_decrease_game_speed_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn is_rotate_level_set_ascending_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_rotate_level_set_descending_button_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_any_f1_to_f10_keys_pressed` is never used
[INFO] [stdout]    --> src/game/keyboard.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 73  | impl Keys {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn is_any_f1_to_f10_keys_pressed(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_AUDIO_BUFFER_SIZE` is never used
[INFO] [stdout]   --> src/game/sounds.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const K_AUDIO_BUFFER_SIZE: u32 = 512;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_SAMPLE_RATE` is never used
[INFO] [stdout]   --> src/game/sounds.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const K_SAMPLE_RATE: u32 = 44100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K_NUMBER_OF_CHANNELS` is never used
[INFO] [stdout]   --> src/game/sounds.rs:47:7
[INFO] [stdout]    |
[INFO] [stdout] 47 | const K_NUMBER_OF_CHANNELS: u32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/game/sounds.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum SoundEffect {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 60 |     Explosion,
[INFO] [stdout] 61 |     Infotron,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 62 |     Push,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 63 |     Fall,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 64 |     Bug,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 65 |     Base,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 66 |     Exit,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 67 |     Count,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sdl_context`, `g_current_sound_channel`, and `g_music` are never read
[INFO] [stdout]   --> src/game/sounds.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Sounds<'a> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 71 |     sdl_context: Rc<RefCell<sdl2::Sdl>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     g_current_sound_channel: i32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 79 |     g_is_audio_initialized: bool,
[INFO] [stdout] 80 |     g_music: Option<Music<'a>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/sounds.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl Sounds<'_> {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 105 |     pub fn sound_shutdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn play_infotron_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn play_push_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn play_fall_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn play_bug_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn play_base_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn play_exit_sound(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `swap16` is never used
[INFO] [stdout]   --> src/game/utils.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn swap16(value: u16) -> u16 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ScalingModeAspectFill`, `ScalingModeIntegerFactor`, `ScalingModeFullscreen`, `ScalingModeAspectCorrect`, and `ScalingModeCount` are never constructed
[INFO] [stdout]   --> src/game/video.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum ScalingMode {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] 29 |     ScalingModeAspectFit,
[INFO] [stdout] 30 |     ScalingModeAspectFill,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     ScalingModeIntegerFactor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     ScalingModeFullscreen,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     ScalingModeAspectCorrect,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     ScalingModeCount,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScalingMode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTURE_ASPECT_RATIO` is never used
[INFO] [stdout]   --> src/game/video.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const TEXTURE_ASPECT_RATIO: f64 = K_SCREEN_WIDTH as f64 / K_SCREEN_HEIGHT as f64;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `g_scaling_mode` is never read
[INFO] [stdout]   --> src/game/video.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Video<'a> {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 40 |     g_renderer: sdl2::render::Canvas<sdl2::video::Window>,
[INFO] [stdout] 41 |     g_scaling_mode: ScalingMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_window_viewport`, `get_scaling_mode`, `set_scaling_mode`, `toggle_fullscreen`, `set_fullscreen_mode`, and `get_fullscreen_mode` are never used
[INFO] [stdout]    --> src/game/video.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout] 46  | impl Video<'_> {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn update_window_viewport(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn get_scaling_mode(&self) -> ScalingMode {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn set_scaling_mode(&mut self, mode: ScalingMode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn toggle_fullscreen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     fn set_fullscreen_mode(&mut self, fullscreen: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     fn get_fullscreen_mode(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused comparison that must be used
[INFO] [stdout]    --> src/game/mod.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |             current_suffix == "IN";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ the comparison produces a value
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let _ = current_suffix == "IN";
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused comparison that must be used
[INFO] [stdout]    --> src/game/mod.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             current_suffix == "AV";
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ the comparison produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 112 |             let _ = current_suffix == "AV";
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_5A19B` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     byte_5A19B: bool,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_5_a19_b`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_58D47` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     byte_58D47: u8,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_58_d47`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `byte_59B83` should have a snake case name
[INFO] [stdout]    --> src/game/mod.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 151 |     byte_59B83: bool,
[INFO] [stdout]     |     ^^^^^^^^^^ help: convert the identifier to snake case: `byte_59_b83`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sub_4C407` should have a snake case name
[INFO] [stdout]     --> src/game/mod.rs:1506:8
[INFO] [stdout]      |
[INFO] [stdout] 1506 |     fn sub_4C407(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^ help: convert the identifier to snake case: `sub_4_c407`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `word_5A33C` should have a snake case name
[INFO] [stdout]   --> src/game/demo.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub word_5A33C: u16,
[INFO] [stdout]    |         ^^^^^^^^^^ help: convert the identifier to snake case: `word_5_a33_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.54s
[INFO] running `Command { std: "docker" "inspect" "ae1c2d4e24cacd521c3a90ba737570919c79b95b7670700b4f935fd6055542e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ae1c2d4e24cacd521c3a90ba737570919c79b95b7670700b4f935fd6055542e7", kill_on_drop: false }`
[INFO] [stdout] ae1c2d4e24cacd521c3a90ba737570919c79b95b7670700b4f935fd6055542e7
