[INFO] cloning repository https://github.com/gigiwotou/fd2_freebuff
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gigiwotou/fd2_freebuff" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgigiwotou%2Ffd2_freebuff", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgigiwotou%2Ffd2_freebuff'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0919a9a89a621be45cea00606130954b5680da00
[INFO] testing gigiwotou/fd2_freebuff against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgigiwotou%2Ffd2_freebuff" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/gigiwotou/fd2_freebuff
[INFO] finished tweaking git repo https://github.com/gigiwotou/fd2_freebuff
[INFO] tweaked toml for git repo https://github.com/gigiwotou/fd2_freebuff written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gigiwotou/fd2_freebuff on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gigiwotou/fd2_freebuff 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded minifb v0.28.0
[INFO] [stderr]   Downloaded sdl2 v0.38.0
[INFO] [stderr]   Downloaded sdl2-sys v0.38.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993
[INFO] running `Command { std: "docker" "start" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling xcursor v0.3.10
[INFO] [stderr]    Compiling raw-window-handle v0.6.2
[INFO] [stderr]    Compiling dlib v0.5.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]    Compiling minifb v0.28.0
[INFO] [stderr]    Compiling nix v0.24.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling wayland-commons v0.29.5
[INFO] [stderr]    Compiling wayland-cursor v0.29.5
[INFO] [stderr]    Compiling fd2 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `rol16` is never used
[INFO] [stdout]   --> src/crypto.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn rol16(value: u16, shift: u32) -> u16 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prng_next` is never used
[INFO] [stdout]   --> src/crypto.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn prng_next(game: &mut GameState) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xor_crypt` is never used
[INFO] [stdout]   --> src/crypto.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn xor_crypt(data: &mut [u8]) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `checksum` is never used
[INFO] [stdout]   --> src/crypto.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn checksum(data: &[u8], total_length: usize) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPRITE_OFFSET_REC_SIZE` is never used
[INFO] [stdout]   --> src/data_tables.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const SPRITE_OFFSET_REC_SIZE: usize = 23;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANIM_FRAME_REC_SIZE` is never used
[INFO] [stdout]   --> src/data_tables.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const ANIM_FRAME_REC_SIZE: usize = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAR_ATTR_REC_SIZE` is never used
[INFO] [stdout]   --> src/data_tables.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const CHAR_ATTR_REC_SIZE: usize = 20;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MOVE_PATH_REC_SIZE` is never used
[INFO] [stdout]   --> src/data_tables.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const MOVE_PATH_REC_SIZE: usize = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NPC_ATTR_REC_SIZE` is never used
[INFO] [stdout]   --> src/data_tables.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const NPC_ATTR_REC_SIZE: usize = 31;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpriteOffset` is never constructed
[INFO] [stdout]   --> src/data_tables.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SpriteOffset {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_bytes` is never used
[INFO] [stdout]   --> src/data_tables.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl SpriteOffset {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 56 |     /// Parse from 23-byte raw data.
[INFO] [stdout] 57 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sprite_offset` is never used
[INFO] [stdout]   --> src/data_tables.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn get_sprite_offset(table: &[u8], index: usize) -> Option<&[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnimFrame` is never constructed
[INFO] [stdout]   --> src/data_tables.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct AnimFrame {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_bytes` is never used
[INFO] [stdout]    --> src/data_tables.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl AnimFrame {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 107 |     /// Parse from 7-byte raw data.
[INFO] [stdout] 108 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_anim_frame` is never used
[INFO] [stdout]    --> src/data_tables.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn get_anim_frame(table: &[u8], index: usize) -> Option<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharAttr` is never constructed
[INFO] [stdout]    --> src/data_tables.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub struct CharAttr {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_bytes` is never used
[INFO] [stdout]    --> src/data_tables.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl CharAttr {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 153 |     /// Parse from 20-byte raw data.
[INFO] [stdout] 154 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_char_attr` is never used
[INFO] [stdout]    --> src/data_tables.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn get_char_attr(table: &[u8], index: usize) -> Option<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_move_path` is never used
[INFO] [stdout]    --> src/data_tables.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn get_move_path(table: &[u8], index: usize) -> Option<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_npc_attr` is never used
[INFO] [stdout]    --> src/data_tables.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn get_npc_attr(table: &[u8], index: usize) -> Option<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileEntry` is never constructed
[INFO] [stdout]    --> src/data_tables.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub struct TileEntry {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_field_data` is never used
[INFO] [stdout]    --> src/data_tables.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn parse_field_data(data: &mut [u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameState` is never constructed
[INFO] [stdout]  --> src/game_state.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct GameState {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `read_tick` are never used
[INFO] [stdout]   --> src/game_state.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl GameState {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 47 |     /// Create a new game state with default values matching the original game's initialization.
[INFO] [stdout] 48 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn read_tick(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_opcode` is never used
[INFO] [stdout]   --> src/rle.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn decode_opcode(byte: u8) -> (u8, usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RleMode` is never used
[INFO] [stdout]   --> src/rle.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum RleMode {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `standard`, `fill`, and `palette_offset` are never used
[INFO] [stdout]   --> src/rle.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl RleMode {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 57 |     /// Create Standard mode (value_1 == -1).
[INFO] [stdout] 58 |     pub fn standard() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn fill(value: u8) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn palette_offset(value_1: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode` is never used
[INFO] [stdout]   --> src/rle.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn rle_decode(
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_transparent` is never used
[INFO] [stdout]    --> src/rle.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | pub fn rle_decode_tile_24_transparent(src: &[u8], dst: &mut [u8], dst_stride: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_marker_fill` is never used
[INFO] [stdout]    --> src/rle.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 | pub fn rle_decode_tile_24_marker_fill(src: &[u8], dst: &mut [u8], dst_stride: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_palette_map` is never used
[INFO] [stdout]    --> src/rle.rs:383:8
[INFO] [stdout]     |
[INFO] [stdout] 383 | pub fn rle_decode_tile_24_palette_map(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_palette_offset` is never used
[INFO] [stdout]    --> src/rle.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub fn rle_decode_tile_24_palette_offset(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TileMode` is never used
[INFO] [stdout]    --> src/rle.rs:414:6
[INFO] [stdout]     |
[INFO] [stdout] 414 | enum TileMode<'a> {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_impl` is never used
[INFO] [stdout]    --> src/rle.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn rle_decode_tile_24_impl(src: &[u8], dst: &mut [u8], dst_stride: usize, mode: TileMode) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_pixel` is never used
[INFO] [stdout]    --> src/rle.rs:528:4
[INFO] [stdout]     |
[INFO] [stdout] 528 | fn map_pixel(pixel: u8, mode: &TileMode) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_write` is never used
[INFO] [stdout]    --> src/rle.rs:543:4
[INFO] [stdout]     |
[INFO] [stdout] 543 | fn should_write(op_type: u8, _mode: &TileMode) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpritePixelDecoder` is never constructed
[INFO] [stdout]   --> src/sprite.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct SpritePixelDecoder<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `next_pixel`, `is_exhausted`, `position`, and `remaining_repeats` are never used
[INFO] [stdout]    --> src/sprite.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl<'a> SpritePixelDecoder<'a> {
[INFO] [stdout]     | ------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn new(data: &'a [u8]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn next_pixel(&mut self) -> Option<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn is_exhausted(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn position(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn remaining_repeats(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_sprite_header` is never used
[INFO] [stdout]    --> src/sprite.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn parse_sprite_header(data: &[u8]) -> Option<(u16, u16)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 46.85s
[INFO] running `Command { std: "docker" "inspect" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling fd2 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: struct `AnimFrame` is never constructed
[INFO] [stdout]   --> src/data_tables.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct AnimFrame {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_bytes` is never used
[INFO] [stdout]    --> src/data_tables.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl AnimFrame {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 107 |     /// Parse from 7-byte raw data.
[INFO] [stdout] 108 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharAttr` is never constructed
[INFO] [stdout]    --> src/data_tables.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub struct CharAttr {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_bytes` is never used
[INFO] [stdout]    --> src/data_tables.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl CharAttr {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 153 |     /// Parse from 20-byte raw data.
[INFO] [stdout] 154 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileEntry` is never constructed
[INFO] [stdout]    --> src/data_tables.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub struct TileEntry {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game_state.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct GameState {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub vga_stride: u16, // word_627A3: display buffer row width (320 or 456)
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub copy_width: u16, // count_0
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub palette_anim_last_tick: u32,  // word_60000: last tick when palette animation updated
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub palette_anim_frame: u8,      // byte_60002: current animation frame index (0-15)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub palette_anim_data: [u8; 768],// unk_60003: 16 frames × 16 colors × 3 bytes (R,G,B)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub tile_anim_last_tick: u32,    // dword_539F4: last tick for 20-step tile animation
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     pub tile_anim_step: u32,        // dword_53C1F: tile animation step counter (0-19)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub tile_anim_locked_frame: i32, // dword_51A93: -1=auto cycle, other=locked frame
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub flip_last_tick: u32,        // dword_53A00: last tick for flip toggle
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     pub flip_flag: u8,              // dword_53A40 (low byte): toggles 0/1 each tick
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fullframe_last_tick: u32,   // dword_539F8: last tick for full-frame anim
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub fullframe_frame_idx: u32,   // dword_539FC: current full-frame index (0-15)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub scene_index: u16,           // n17: current scene/map index
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub tick_offset: std::time::Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_tick` is never used
[INFO] [stdout]   --> src/game_state.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl GameState {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn read_tick(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PaletteOffset` is never constructed
[INFO] [stdout]   --> src/rle.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum RleMode {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 53 |     PaletteOffset { base_hi: u8, base_lo: u8 },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RleMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `standard` and `palette_offset` are never used
[INFO] [stdout]   --> src/rle.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl RleMode {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 57 |     /// Create Standard mode (value_1 == -1).
[INFO] [stdout] 58 |     pub fn standard() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn palette_offset(value_1: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rle_decode_tile_24_palette_map` is never used
[INFO] [stdout]    --> src/rle.rs:383:8
[INFO] [stdout]     |
[INFO] [stdout] 383 | pub fn rle_decode_tile_24_palette_map(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PaletteMap` is never constructed
[INFO] [stdout]    --> src/rle.rs:417:5
[INFO] [stdout]     |
[INFO] [stdout] 414 | enum TileMode<'a> {
[INFO] [stdout]     |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 417 |     PaletteMap { palette: &'a [u8] },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TileMode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.92s
[INFO] running `Command { std: "docker" "inspect" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: struct `AnimFrame` is never constructed
[INFO] [stderr]   --> src/data_tables.rs:98:12
[INFO] [stderr]    |
[INFO] [stderr] 98 | pub struct AnimFrame {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_bytes` is never used
[INFO] [stderr]    --> src/data_tables.rs:108:12
[INFO] [stderr]     |
[INFO] [stderr] 106 | impl AnimFrame {
[INFO] [stderr]     | -------------- associated function in this implementation
[INFO] [stderr] 107 |     /// Parse from 7-byte raw data.
[INFO] [stderr] 108 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CharAttr` is never constructed
[INFO] [stderr]    --> src/data_tables.rs:140:12
[INFO] [stderr]     |
[INFO] [stderr] 140 | pub struct CharAttr {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_bytes` is never used
[INFO] [stderr]    --> src/data_tables.rs:154:12
[INFO] [stderr]     |
[INFO] [stderr] 152 | impl CharAttr {
[INFO] [stderr]     | ------------- associated function in this implementation
[INFO] [stderr] 153 |     /// Parse from 20-byte raw data.
[INFO] [stderr] 154 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TileEntry` is never constructed
[INFO] [stderr]    --> src/data_tables.rs:235:12
[INFO] [stderr]     |
[INFO] [stderr] 235 | pub struct TileEntry {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/game_state.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct GameState {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 12 |     pub vga_stride: u16, // word_627A3: display buffer row width (320 or 456)
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 19 |     pub copy_width: u16, // count_0
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub palette_anim_last_tick: u32,  // word_60000: last tick when palette animation updated
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 23 |     pub palette_anim_frame: u8,      // byte_60002: current animation frame index (0-15)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 24 |     pub palette_anim_data: [u8; 768],// unk_60003: 16 frames × 16 colors × 3 bytes (R,G,B)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub tile_anim_last_tick: u32,    // dword_539F4: last tick for 20-step tile animation
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 28 |     pub tile_anim_step: u32,        // dword_53C1F: tile animation step counter (0-19)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 29 |     pub tile_anim_locked_frame: i32, // dword_51A93: -1=auto cycle, other=locked frame
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub flip_last_tick: u32,        // dword_53A00: last tick for flip toggle
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 33 |     pub flip_flag: u8,              // dword_53A40 (low byte): toggles 0/1 each tick
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 36 |     pub fullframe_last_tick: u32,   // dword_539F8: last tick for full-frame anim
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 37 |     pub fullframe_frame_idx: u32,   // dword_539FC: current full-frame index (0-15)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 40 |     pub scene_index: u16,           // n17: current scene/map index
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 43 |     pub tick_offset: std::time::Instant,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `read_tick` is never used
[INFO] [stderr]   --> src/game_state.rs:74:12
[INFO] [stderr]    |
[INFO] [stderr] 46 | impl GameState {
[INFO] [stderr]    | -------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 74 |     pub fn read_tick(&self) -> u32 {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `PaletteOffset` is never constructed
[INFO] [stderr]   --> src/rle.rs:53:5
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub enum RleMode {
[INFO] [stderr]    |          ------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 53 |     PaletteOffset { base_hi: u8, base_lo: u8 },
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RleMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `standard` and `palette_offset` are never used
[INFO] [stderr]   --> src/rle.rs:58:12
[INFO] [stderr]    |
[INFO] [stderr] 56 | impl RleMode {
[INFO] [stderr]    | ------------ associated functions in this implementation
[INFO] [stderr] 57 |     /// Create Standard mode (value_1 == -1).
[INFO] [stderr] 58 |     pub fn standard() -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 71 |     pub fn palette_offset(value_1: u16) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rle_decode_tile_24_palette_map` is never used
[INFO] [stderr]    --> src/rle.rs:383:8
[INFO] [stderr]     |
[INFO] [stderr] 383 | pub fn rle_decode_tile_24_palette_map(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `PaletteMap` is never constructed
[INFO] [stderr]    --> src/rle.rs:417:5
[INFO] [stderr]     |
[INFO] [stderr] 414 | enum TileMode<'a> {
[INFO] [stderr]     |      -------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 417 |     PaletteMap { palette: &'a [u8] },
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `TileMode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `fd2` (bin "fd2" test) generated 11 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/fd2-7fcc973a573f7c6f)
[INFO] [stdout] running 36 tests
[INFO] [stdout] test data_tables::tests::test_npc_attr_lookup ... ok
[INFO] [stdout] test crypto::tests::test_xor_crypt_roundtrip ... ok
[INFO] [stdout] test data_tables::tests::test_parse_field_data ... ok
[INFO] [stdout] test data_tables::tests::test_sprite_offset_lookup ... ok
[INFO] [stdout] test rle::tests::test_rle_decode_with_skip ... ok
[INFO] [stdout] test rle::tests::test_rle_decode_standard_basic ... ok
[INFO] [stdout] test crypto::tests::test_rol16 ... ok
[INFO] [stdout] test crypto::tests::test_checksum_full_range ... ok
[INFO] [stdout] test crypto::tests::test_checksum_basic ... ok
[INFO] [stdout] test crypto::tests::test_xor_crypt_empty ... ok
[INFO] [stdout] test crypto::tests::test_prng_deterministic ... ok
[INFO] [stdout] test rle::tests::test_decode_opcode ... ok
[INFO] [stdout] test data_tables::tests::test_anim_frame_lookup ... ok
[INFO] [stdout] test rle::tests::test_rle_decode_fill_mode ... ok
[INFO] [stdout] test data_tables::tests::test_char_attr_lookup ... ok
[INFO] [stdout] test data_tables::tests::test_move_path_invalid_low_index ... ok
[INFO] [stdout] test data_tables::tests::test_sprite_offset_parse ... ok
[INFO] [stdout] test rle::tests::test_tile_24_palette_offset ... ok
[INFO] [stdout] test sprite::tests::test_consecutive_repeats ... ok
[INFO] [stdout] test sprite::tests::test_full_sprite_decode_simulation ... ok
[INFO] [stdout] test sprite::tests::test_min_repeat_0xc2 ... ok
[INFO] [stdout] test sprite::tests::test_parse_sprite_header ... ok
[INFO] [stdout] test sprite::tests::test_parse_sprite_header_too_short ... ok
[INFO] [stdout] test sprite::tests::test_position_tracking ... ok
[INFO] [stdout] test sprite::tests::test_repeat_zero_pixel ... ok
[INFO] [stdout] test sprite::tests::test_truncated_repeat_marker ... ok
[INFO] [stdout] test sprite::tests::test_escape_for_high_pixel_values ... ok
[INFO] [stdout] test rle::tests::test_tile_24_marker_fill ... ok
[INFO] [stdout] test rle::tests::test_tile_24_transparent ... ok
[INFO] [stdout] test sprite::tests::test_mixed_literal_and_repeat ... ok
[INFO] [stdout] test sprite::tests::test_single_literal_pixels ... ok
[INFO] [stdout] test sprite::tests::test_max_repeat_0xff ... ok
[INFO] [stdout] test sprite::tests::test_escape_encoding_0xc1 ... ok
[INFO] [stdout] test sprite::tests::test_zero_pixel_literal ... ok
[INFO] [stdout] test sprite::tests::test_boundary_0xc0_literal ... ok
[INFO] [stdout] test sprite::tests::test_empty_data ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993", kill_on_drop: false }`
[INFO] [stdout] 5d83612fe9947f92e5cd276b695b151cd7a5d5f2b7e557d9b8d820cedf4f4993
