repo: yaxgbc
commit: 40a16ac4509ba9cb53240c2d6a4123b5635ad83d aka no-gods-no-, run: 831
status: error in 9.974s
  description: callback error: stack traceback:
	[C]: in ?
	[C]: in field 'run'
	[string "goodfile"]:2: in main chunk
  deployed: false
    
artifacts
Thu, 11 Jul 2024 19:27:32 +0000
step:
git clone log (stdout)

Thu, 11 Jul 2024 19:27:32 +0000
step:
git clone log (stderr)
Cloning into 'tmpdir'...
warning: redirecting to https://github.com/iximeow/yaxgbc.git/
Thu, 11 Jul 2024 19:27:32 +0000
step:
git checkout log (stdout)

Thu, 11 Jul 2024 19:27:32 +0000
step:
git checkout log (stderr)
Note: switching to '40a16ac4509ba9cb53240c2d6a4123b5635ad83d'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 40a16ac switches to control oam or background or window display
Thu, 11 Jul 2024 19:27:33 +0000
step:
cargo build log (stdout)

Thu, 11 Jul 2024 19:27:33 +0000
step:
cargo build log (stderr)
warning: unused manifest key: dependencies.rodio.default-feature
   Compiling libc v0.2.139
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.6
   Compiling autocfg v1.1.0
   Compiling cfg-if v1.0.0
   Compiling version_check v0.9.4
   Compiling parking_lot_core v0.9.8
   Compiling bitflags v1.3.2
   Compiling scopeguard v1.2.0
   Compiling smallvec v1.11.0
   Compiling proc-macro2 v0.4.30
   Compiling pkg-config v0.3.27
   Compiling arrayvec v0.7.4
   Compiling lazy_static v1.4.0
   Compiling unicode-xid v0.1.0
   Compiling once_cell v1.17.0
   Compiling syn v1.0.107
   Compiling ttf-parser v0.19.1
   Compiling log v0.4.19
   Compiling ab_glyph_rasterizer v0.1.8
   Compiling syn v0.15.44
   Compiling nohash-hasher v0.2.0
   Compiling byteorder v1.5.0
   Compiling miniquad v0.3.16
   Compiling tinyvec_macros v0.1.1
   Compiling cpal v0.15.2
   Compiling hashbrown v0.12.3
   Compiling os_str_bytes v6.4.1
   Compiling dasp_sample v0.11.0
   Compiling heck v0.4.0
   Compiling webbrowser v0.5.5
   Compiling ppv-lite86 v0.2.17
   Compiling encoding_rs v0.8.33
   Compiling either v1.8.0
   Compiling termcolor v1.1.3
   Compiling textwrap v0.16.0
   Compiling hound v3.5.1
   Compiling pin-project-lite v0.2.13
   Compiling claxon v0.4.3
   Compiling tinyvec v1.6.0
   Compiling windows-targets v0.42.2
   Compiling quad-url v0.1.1
   Compiling bytes v1.5.0
   Compiling strsim v0.10.0
   Compiling windows v0.46.0
   Compiling itertools v0.10.5
   Compiling hex v0.4.3
   Compiling proc-macro-error-attr v1.0.4
   Compiling ahash v0.8.3
   Compiling lock_api v0.4.10
   Compiling num-traits v0.2.15
   Compiling proc-macro-error v1.0.4
   Compiling indexmap v1.9.2
   Compiling ogg v0.8.0
   Compiling tokio v1.28.2
   Compiling clap_lex v0.2.4
   Compiling alsa-sys v0.3.1
   Compiling quote v0.6.13
   Compiling quote v1.0.32
   Compiling syn v2.0.28
   Compiling lewton v0.10.2
   Compiling yaxpeax-arch v0.2.7
   Compiling nix v0.24.3
   Compiling getrandom v0.2.8
   Compiling num_cpus v1.16.0
   Compiling signal-hook-registry v1.4.1
   Compiling socket2 v0.4.9
   Compiling atty v0.2.14
   Compiling mio v0.8.8
   Compiling rand_core v0.6.4
   Compiling parking_lot v0.12.1
   Compiling rand_chacha v0.3.1
   Compiling alsa v0.7.1
   Compiling rand v0.8.5
   Compiling owned_ttf_parser v0.19.0
   Compiling ab_glyph v0.2.21
   Compiling num_enum v0.2.3
   Compiling yaxpeax-sm83 v0.2.0 (https://www.github.com/iximeow/yaxpeax-sm83.git?rev=8332b3750cd3f42ca83d02347afc560b37992a69#8332b375)
   Compiling bytemuck_derive v1.4.1
   Compiling tokio-macros v2.1.0
   Compiling clap_derive v3.2.18
   Compiling bytemuck v1.13.1
   Compiling symphonia-core v0.5.3
   Compiling emath v0.21.0
   Compiling ecolor v0.21.0
   Compiling epaint v0.21.0
   Compiling clap v3.2.23
   Compiling symphonia-metadata v0.5.3
   Compiling egui v0.21.0
   Compiling symphonia-bundle-mp3 v0.5.3
   Compiling symphonia v0.5.3
   Compiling rodio v0.17.3
   Compiling egui-miniquad v0.14.0
   Compiling yaxpeax-gbc v0.2.10 (/home/iximeow/nvme0/ci_working_dir/tmpdir)
warning: unused import: `Decoder`
  --> src/main.rs:13:20
   |
13 | use yaxpeax_arch::{Decoder, ReadError};
   |                    ^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unnecessary parentheses around assigned value
  --> src/apu.rs:89:35
   |
89 |                 let period_step = (value & 0x07);
   |                                   ^            ^
   |
   = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
   |
89 -                 let period_step = (value & 0x07);
89 +                 let period_step = value & 0x07;
   |

warning: unnecessary parentheses around assigned value
   --> src/apu.rs:223:46
    |
223 |                 self.channel_4_clock_shift = (value >> 4);
    |                                              ^          ^
    |
help: remove these parentheses
    |
223 -                 self.channel_4_clock_shift = (value >> 4);
223 +                 self.channel_4_clock_shift = value >> 4;
    |

warning: unused import: `crate::Cpu`
    --> src/cpu.rs:1376:13
     |
1376 |         use crate::Cpu;
     |             ^^^^^^^^^^

warning: unused import: `crate::FlatMapper`
    --> src/cpu.rs:1377:13
     |
1377 |         use crate::FlatMapper;
     |             ^^^^^^^^^^^^^^^^^

warning: unused import: `crate::MemoryMapping`
    --> src/cpu.rs:1378:13
     |
1378 |         use crate::MemoryMapping;
     |             ^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::cpu::DecorateExt`
  --> src/main.rs:19:5
   |
19 | use crate::cpu::DecorateExt;
   |     ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `std::fmt::Write`
 --> src/frontend/gui.rs:2:5
  |
2 | use std::fmt::Write;
  |     ^^^^^^^^^^^^^^^

warning: unused imports: `AtomicBool`, `Ordering`
 --> src/frontend/gui.rs:4:25
  |
4 | use std::sync::atomic::{AtomicBool, Ordering};
  |                         ^^^^^^^^^^  ^^^^^^^^

warning: unused imports: `LCDC`, `LY`
 --> src/frontend/gui.rs:6:42
  |
6 | use crate::{STAT, SCX, SCY, IF, IE, GBC, LCDC, LY, LYC, WX, WY};
  |                                          ^^^^  ^^

warning: unused import: `egui::Vec2`
  --> src/frontend/gui.rs:12:5
   |
12 | use egui::Vec2;
   |     ^^^^^^^^^^

warning: unnecessary parentheses around `if` condition
   --> src/main.rs:542:12
    |
542 |         if (self.lcdc & 0b0000_1000 == 0) {
    |            ^                            ^
    |
help: remove these parentheses
    |
542 -         if (self.lcdc & 0b0000_1000 == 0) {
542 +         if self.lcdc & 0b0000_1000 == 0 {
    |

warning: unnecessary parentheses around `if` condition
   --> src/main.rs:810:32
    |
810 | ...                   if (self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority) {
    |                          ^                                                                         ^
    |
help: remove these parentheses
    |
810 -                             if (self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority) {
810 +                             if self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority {
    |

warning: unnecessary parentheses around assigned value
    --> src/main.rs:1097:42
     |
1097 |                         let tile_xoffs = (line_x % 8);
     |                                          ^          ^
     |
help: remove these parentheses
     |
1097 -                         let tile_xoffs = (line_x % 8);
1097 +                         let tile_xoffs = line_x % 8;
     |

warning: unnecessary parentheses around assigned value
    --> src/main.rs:1498:52
     |
1498 |                 self.state.management_bits[reg] |= (value & 0b0011_0000);
     |                                                    ^                   ^
     |
help: remove these parentheses
     |
1498 -                 self.state.management_bits[reg] |= (value & 0b0011_0000);
1498 +                 self.state.management_bits[reg] |= value & 0b0011_0000;
     |

warning: unreachable statement
    --> src/cpu.rs:1062:9
     |
1060 |         return;
     |         ------ any code following this expression is unreachable
1061 |
1062 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
     |
     = note: `#[warn(unreachable_code)]` on by default

warning: unreachable statement
    --> src/cpu.rs:1081:9
     |
1079 |           return;
     |           ------ any code following this expression is unreachable
1080 |
1081 | /         if self.branch_trace.len() > TRACE_DEPTH {
1082 | |             self.branch_trace.pop_back();
1083 | |         }
     | |_________^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1129:9
     |
1127 |           return;
     |           ------ any code following this expression is unreachable
1128 |
1129 | /         if self.branch_trace.len() > TRACE_DEPTH {
1130 | |             self.branch_trace.pop_back();
1131 | |         }
     | |_________^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1166:9
     |
1164 |         return;
     |         ------ any code following this expression is unreachable
1165 |
1166 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1188:9
     |
1186 |         return;
     |         ------ any code following this expression is unreachable
1187 |
1188 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

warning: unreachable statement
    --> src/main.rs:1630:17
     |
1629 |                         panic!("unhandled write {:04x}", reg);
     |                         ------------------------------------- any code following this expression is unreachable
1630 |                 self.state.management_bits[reg] = value;
     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

warning: unused import: `Write`
 --> src/main.rs:6:16
  |
6 | use std::fmt::{Write as FmtWrite};
  |                ^^^^^

warning: unused variable: `word`
   --> src/cpu.rs:101:32
    |
101 |     fn on_word_read(&mut self, word: u8) {
    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
    |
    = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `storage`
    --> src/cpu.rs:1058:51
     |
1058 |     fn trace_int<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16, int_bit: u8) {
     |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage`

warning: unused variable: `from`
    --> src/cpu.rs:1058:91
     |
1058 |     fn trace_int<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16, int_bit: u8) {
     |                                                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_from`

warning: unused variable: `to`
    --> src/cpu.rs:1058:102
     |
1058 |     fn trace_int<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16, int_bit: u8) {
     |                                                                                                      ^^ help: if this is intentional, prefix it with an underscore: `_to`

warning: unused variable: `int_bit`
    --> src/cpu.rs:1058:111
     |
1058 |     fn trace_int<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16, int_bit: u8) {
     |                                                                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_int_bit`

warning: unused variable: `call_kind`
    --> src/cpu.rs:1101:38
     |
1101 |             Some(CallRecord { addrs, call_kind }) => {
     |                                      ^^^^^^^^^ help: try ignoring the field: `call_kind: _`

warning: unused variable: `storage`
    --> src/cpu.rs:1077:52
     |
1077 |     fn trace_reti<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage`

warning: unused variable: `from`
    --> src/cpu.rs:1077:92
     |
1077 |     fn trace_reti<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_from`

warning: unused variable: `to`
    --> src/cpu.rs:1077:103
     |
1077 |     fn trace_reti<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                                       ^^ help: if this is intentional, prefix it with an underscore: `_to`

warning: unused variable: `storage`
    --> src/cpu.rs:1125:51
     |
1125 |     fn trace_ret<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage`

warning: unused variable: `from`
    --> src/cpu.rs:1125:91
     |
1125 |     fn trace_ret<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_from`

warning: unused variable: `to`
    --> src/cpu.rs:1125:102
     |
1125 |     fn trace_ret<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                                      ^^ help: if this is intentional, prefix it with an underscore: `_to`

warning: unused variable: `storage`
    --> src/cpu.rs:1162:52
     |
1162 |     fn trace_call<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage`

warning: unused variable: `from`
    --> src/cpu.rs:1162:92
     |
1162 |     fn trace_call<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                            ^^^^ help: if this is intentional, prefix it with an underscore: `_from`

warning: unused variable: `to`
    --> src/cpu.rs:1162:103
     |
1162 |     fn trace_call<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                                       ^^ help: if this is intentional, prefix it with an underscore: `_to`

warning: unused variable: `storage`
    --> src/cpu.rs:1184:54
     |
1184 |     fn trace_branch<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_storage`

warning: unused variable: `from`
    --> src/cpu.rs:1184:94
     |
1184 |     fn trace_branch<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_from`

warning: unused variable: `to`
    --> src/cpu.rs:1184:105
     |
1184 |     fn trace_branch<'storage: 'env, 'env>(&mut self, storage: &'env MemoryMapping<'storage>, from: u16, to: u16) {
     |                                                                                                         ^^ help: if this is intentional, prefix it with an underscore: `_to`

warning: variable does not need to be mutable
    --> src/cpu.rs:1321:13
     |
1321 |         let mut buf = [
     |             ----^^^
     |             |
     |             help: remove this `mut`
     |
     = note: `#[warn(unused_mut)]` on by default

warning: variable does not need to be mutable
    --> src/cpu.rs:1358:13
     |
1358 |         let mut lcd = crate::Lcd::new();
     |             ----^^^
     |             |
     |             help: remove this `mut`

warning: variable does not need to be mutable
    --> src/cpu.rs:1359:13
     |
1359 |         let mut apu = crate::Apu::new();
     |             ----^^^
     |             |
     |             help: remove this `mut`

warning: unreachable pattern
    --> src/cpu.rs:1699:9
     |
1699 |         0xff0f => Some("IE"),
     |         ^^^^^^
     |
     = note: `#[warn(unreachable_patterns)]` on by default

warning: variable does not need to be mutable
  --> src/frontend/tui.rs:10:13
   |
10 |         let mut gb = gb_state.lock().unwrap();
   |             ----^^
   |             |
   |             help: remove this `mut`

warning: unused variable: `dpi_scale`
  --> src/frontend/gui.rs:73:13
   |
73 |         let dpi_scale = ctx.dpi_scale();
   |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dpi_scale`

warning: unused variable: `y`
   --> src/frontend/gui.rs:172:13
    |
172 |         for y in 0..SCREEN_HEIGHT {
    |             ^ help: if this is intentional, prefix it with an underscore: `_y`

warning: unused variable: `x`
   --> src/frontend/gui.rs:173:17
    |
173 |             for x in 0..SCREEN_WIDTH {
    |                 ^ help: if this is intentional, prefix it with an underscore: `_x`

warning: unused variable: `y`
   --> src/frontend/gui.rs:185:21
    |
185 |                 for y in 0..OAM_DEBUG_PANEL_HEIGHT {
    |                     ^ help: if this is intentional, prefix it with an underscore: `_y`

warning: unused variable: `x`
   --> src/frontend/gui.rs:187:25
    |
187 |                     for x in 0..OAM_DEBUG_PANEL_WIDTH {
    |                         ^ help: if this is intentional, prefix it with an underscore: `_x`

warning: variable does not need to be mutable
   --> src/frontend/gui.rs:215:13
    |
215 |         let mut vertex_buffers = vec![self.vertex_buffer];
    |             ----^^^^^^^^^^^^^^
    |             |
    |             help: remove this `mut`

warning: variable does not need to be mutable
   --> src/frontend/gui.rs:216:13
    |
216 |         let mut images = vec![texture];
    |             ----^^^^^^
    |             |
    |             help: remove this `mut`

warning: unused variable: `conf`
   --> src/frontend/gui.rs:314:9
    |
314 |     let conf = miniquad::conf::Conf {
    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_conf`

warning: variable does not need to be mutable
   --> src/frontend/gui.rs:324:55
    |
324 |     miniquad::start(miniquad::conf::Conf::default(), |mut ctx| {
    |                                                       ----^^^
    |                                                       |
    |                                                       help: remove this `mut`

warning: unused variable: `i`
  --> src/main.rs:93:13
   |
93 |     let mut i = 0;
   |             ^ help: if this is intentional, prefix it with an underscore: `_i`

warning: unused variable: `clock_total`
  --> src/main.rs:94:13
   |
94 |     let mut clock_total = 0;
   |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clock_total`

warning: variable does not need to be mutable
  --> src/main.rs:93:9
   |
93 |     let mut i = 0;
   |         ----^
   |         |
   |         help: remove this `mut`

warning: variable does not need to be mutable
  --> src/main.rs:94:9
   |
94 |     let mut clock_total = 0;
   |         ----^^^^^^^^^^^
   |         |
   |         help: remove this `mut`

warning: unused variable: `obj_x`
   --> src/main.rs:677:17
    |
677 |             let obj_x = 42 + 2 + (i % 8 + 4) * (12 + 2);
    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_obj_x`

warning: unused variable: `obj_y`
   --> src/main.rs:678:17
    |
678 |             let obj_y = 1 + (i / 8) * (12 + 1);
    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_obj_y`

warning: unused variable: `tile_addr`
   --> src/main.rs:694:17
    |
694 |             let tile_addr = tile_index as usize * 16;
    |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_addr`

warning: variable does not need to be mutable
   --> src/main.rs:705:25
    |
705 |                     let mut tile_addr = bank + tile_index as usize * 16;
    |                         ----^^^^^^^^^
    |                         |
    |                         help: remove this `mut`

warning: variable does not need to be mutable
   --> src/main.rs:706:25
    |
706 |                     let mut tile_line = y_addr;
    |                         ----^^^^^^^^^
    |                         |
    |                         help: remove this `mut`

warning: value assigned to `screen_time` is never read
   --> src/main.rs:776:13
    |
776 |             screen_time -= screen_time % Self::SCREEN_TIME;
    |             ^^^^^^^^^^^
    |
    = help: maybe it is overwritten before being read?
    = note: `#[warn(unused_assignments)]` on by default

warning: unused variable: `tile_base`
    --> src/main.rs:1040:25
     |
1040 |                     let tile_base = self.background_tile_base();
     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_base`

warning: unused variable: `window_tile_base`
    --> src/main.rs:1041:25
     |
1041 |                     let window_tile_base = self.window_tile_base();
     |                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_tile_base`

warning: unused variable: `window_y_offset`
    --> src/main.rs:1066:98
     |
1066 |                         let (line_x, tile_data, attributes) = window_coords.and_then(|(window_y, window_y_offset)| {
     |                                                                                                  ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_y_offset`

warning: variable does not need to be mutable
    --> src/main.rs:1355:29
     |
1355 |                         let mut res = self.state.management_bits[reg];
     |                             ----^^^
     |                             |
     |                             help: remove this `mut`

warning: unused variable: `pc_before`
    --> src/main.rs:2200:13
     |
2200 |         let pc_before = self.cpu.pc;
     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pc_before`

warning: variable does not need to be mutable
    --> src/main.rs:3006:13
     |
3006 |         let mut memory = MemoryMapping {
     |             ----^^^^^^
     |             |
     |             help: remove this `mut`

warning: unreachable pattern
    --> src/main.rs:3076:9
     |
3076 |         0x110 => Some("NR10"),
     |         ^^^^^

warning: unreachable pattern
    --> src/main.rs:3095:9
     |
3095 |         0x13f => Some("WAVE_RAM_END"),
     |         ^^^^^

warning: constant `CLOCKS_PER_FRAME` is never used
  --> src/main.rs:95:11
   |
95 |     const CLOCKS_PER_FRAME: u64 = 4_190_000 / 60;
   |           ^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: fields `next_line` and `next_draw_time` are never read
   --> src/main.rs:248:5
    |
232 | struct Lcd {
    |        --- fields in this struct
...
248 |     next_line: u64,
    |     ^^^^^^^^^
249 |     next_draw_time: u64,
    |     ^^^^^^^^^^^^^^

warning: associated items `VBLANK_TIME`, `sprite_double_size`, and `sprite_enable` are never used
   --> src/main.rs:360:11
    |
357 | impl Lcd {
    | -------- associated items in this implementation
...
360 |     const VBLANK_TIME: u64 = 4560; // vblank is 10 scan lines
    |           ^^^^^^^^^^^
...
577 |     fn sprite_double_size(&self) -> bool {
    |        ^^^^^^^^^^^^^^^^^^
...
581 |     fn sprite_enable(&self) -> bool {
    |        ^^^^^^^^^^^^^

warning: associated function `read_at` is never used
    --> src/main.rs:1171:8
     |
1170 | impl<'a> BankReader<'a> {
     | ----------------------- associated function in this implementation
1171 |     fn read_at(data: &'a dyn MemoryBanks, addr: u16) -> Self {
     |        ^^^^^^^

warning: enum `GBState` is never used
    --> src/main.rs:1642:6
     |
1642 | enum GBState {
     |      ^^^^^^^

warning: constant `WAVE_RAM_START` is never used
    --> src/main.rs:1730:7
     |
1730 | const WAVE_RAM_START: usize = 0x130;
     |       ^^^^^^^^^^^^^^

warning: constant `WAVE_RAM_END` is never used
    --> src/main.rs:1731:7
     |
1731 | const WAVE_RAM_END: usize = 0x13f;
     |       ^^^^^^^^^^^^

warning: function `dump_mem_region` is never used
    --> src/main.rs:1859:4
     |
1859 | fn dump_mem_region(mem_map: &dyn MemoryBanks, start: u16, words: u16, width: u16) {
     |    ^^^^^^^^^^^^^^^

warning: fields `battery`, `timer`, and `rumble` are never read
    --> src/main.rs:2405:5
     |
2401 | struct CartridgeFeatures {
     |        ----------------- fields in this struct
...
2405 |     battery: bool,
     |     ^^^^^^^
2406 |     timer: bool,
     |     ^^^^^
2407 |     rumble: bool,
     |     ^^^^^^
     |
     = note: `CartridgeFeatures` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: field `features` is never read
    --> src/main.rs:2472:5
     |
2470 | struct GBCCart {
     |        ------- field in this struct
2471 |     cgb: bool,
2472 |     features: CartridgeFeatures,
     |     ^^^^^^^^

warning: fields `channel_active`, `channel_2_pace`, and `channel_4_wavelength` are never read
  --> src/apu.rs:22:5
   |
6  | pub struct Apu {
   |            --- fields in this struct
...
22 |     channel_active: [bool; 4],
   |     ^^^^^^^^^^^^^^
...
45 |     channel_2_pace: i8,
   |     ^^^^^^^^^^^^^^
...
79 |     channel_4_wavelength: u16,
   |     ^^^^^^^^^^^^^^^^^^^^

warning: method `set_nr52` is never used
   --> src/apu.rs:741:8
    |
83  | impl Apu {
    | -------- method in this implementation
...
741 |     fn set_nr52(&mut self, v: u8) {
    |        ^^^^^^^^

warning: method `flag_z` is never used
    --> src/cpu.rs:1262:8
     |
1040 | impl Cpu {
     | -------- method in this implementation
...
1262 |     fn flag_z(&self) -> bool {
     |        ^^^^^^

warning: field `memory` is never read
    --> src/cpu.rs:1638:5
     |
1636 | pub(crate) struct DecoratedInstruction<'instr, 'data> {
     |                   -------------------- field in this struct
1637 |     cpu: &'instr Cpu,
1638 |     memory: &'instr MemoryMapping<'data>,
     |     ^^^^^^

warning: function `execute_test` is never used
    --> src/cpu.rs:1351:8
     |
1351 |     fn execute_test(cpu: &mut Cpu, program: &[u8]) {
     |        ^^^^^^^^^^^^

warning: function `run` is never used
 --> src/timer.rs:2:8
  |
2 | pub fn run(tx: std::sync::mpsc::Sender<()>) {
  |        ^^^

warning: function `with_test_mapping` is never used
    --> src/main.rs:2984:8
     |
2984 |     fn with_test_mapping(f: impl Fn(MemoryMapping) -> U) -> U {
     |        ^^^^^^^^^^^^^^^^^

warning: `yaxpeax-gbc` (bin "yaxgbc") generated 89 warnings (run `cargo fix --bin "yaxgbc"` to apply 61 suggestions)
    Finished dev [unoptimized + debuginfo] target(s) in 8.14s
Thu, 11 Jul 2024 19:27:41 +0000
step:
cargo test log (stdout)

Thu, 11 Jul 2024 19:27:41 +0000
step:
cargo test log (stderr)
warning: unused manifest key: dependencies.rodio.default-feature
   Compiling yaxpeax-gbc v0.2.10 (/home/iximeow/nvme0/ci_working_dir/tmpdir)
warning: unused import: `Decoder`
  --> src/main.rs:13:20
   |
13 | use yaxpeax_arch::{Decoder, ReadError};
   |                    ^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unnecessary parentheses around assigned value
  --> src/apu.rs:89:35
   |
89 |                 let period_step = (value & 0x07);
   |                                   ^            ^
   |
   = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
   |
89 -                 let period_step = (value & 0x07);
89 +                 let period_step = value & 0x07;
   |

warning: unnecessary parentheses around assigned value
   --> src/apu.rs:223:46
    |
223 |                 self.channel_4_clock_shift = (value >> 4);
    |                                              ^          ^
    |
help: remove these parentheses
    |
223 -                 self.channel_4_clock_shift = (value >> 4);
223 +                 self.channel_4_clock_shift = value >> 4;
    |

warning: unused import: `crate::FlatMapper`
    --> src/cpu.rs:1377:13
     |
1377 |         use crate::FlatMapper;
     |             ^^^^^^^^^^^^^^^^^

warning: unused import: `crate::MemoryMapping`
    --> src/cpu.rs:1378:13
     |
1378 |         use crate::MemoryMapping;
     |             ^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::cpu::DecorateExt`
  --> src/main.rs:19:5
   |
19 | use crate::cpu::DecorateExt;
   |     ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `std::fmt::Write`
 --> src/frontend/gui.rs:2:5
  |
2 | use std::fmt::Write;
  |     ^^^^^^^^^^^^^^^

warning: unused imports: `AtomicBool`, `Ordering`
 --> src/frontend/gui.rs:4:25
  |
4 | use std::sync::atomic::{AtomicBool, Ordering};
  |                         ^^^^^^^^^^  ^^^^^^^^

warning: unused imports: `LCDC`, `LY`
 --> src/frontend/gui.rs:6:42
  |
6 | use crate::{STAT, SCX, SCY, IF, IE, GBC, LCDC, LY, LYC, WX, WY};
  |                                          ^^^^  ^^

warning: unused import: `egui::Vec2`
  --> src/frontend/gui.rs:12:5
   |
12 | use egui::Vec2;
   |     ^^^^^^^^^^

warning: unnecessary parentheses around `if` condition
   --> src/main.rs:542:12
    |
542 |         if (self.lcdc & 0b0000_1000 == 0) {
    |            ^                            ^
    |
help: remove these parentheses
    |
542 -         if (self.lcdc & 0b0000_1000 == 0) {
542 +         if self.lcdc & 0b0000_1000 == 0 {
    |

warning: unnecessary parentheses around `if` condition
   --> src/main.rs:810:32
    |
810 | ...                   if (self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority) {
    |                          ^                                                                         ^
    |
help: remove these parentheses
    |
810 -                             if (self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority) {
810 +                             if self.oam_pixels[px].bg_priority || self.background_pixels[px].bg_priority {
    |

warning: unnecessary parentheses around assigned value
    --> src/main.rs:1097:42
     |
1097 |                         let tile_xoffs = (line_x % 8);
     |                                          ^          ^
     |
help: remove these parentheses
     |
1097 -                         let tile_xoffs = (line_x % 8);
1097 +                         let tile_xoffs = line_x % 8;
     |

warning: unnecessary parentheses around assigned value
    --> src/main.rs:1498:52
     |
1498 |                 self.state.management_bits[reg] |= (value & 0b0011_0000);
     |                                                    ^                   ^
     |
help: remove these parentheses
     |
1498 -                 self.state.management_bits[reg] |= (value & 0b0011_0000);
1498 +                 self.state.management_bits[reg] |= value & 0b0011_0000;
     |

warning: unreachable statement
    --> src/cpu.rs:1062:9
     |
1060 |         return;
     |         ------ any code following this expression is unreachable
1061 |
1062 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
     |
     = note: `#[warn(unreachable_code)]` on by default

warning: unreachable statement
    --> src/cpu.rs:1081:9
     |
1079 |           return;
     |           ------ any code following this expression is unreachable
1080 |
1081 | /         if self.branch_trace.len() > TRACE_DEPTH {
1082 | |             self.branch_trace.pop_back();
1083 | |         }
     | |_________^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1129:9
     |
1127 |           return;
     |           ------ any code following this expression is unreachable
1128 |
1129 | /         if self.branch_trace.len() > TRACE_DEPTH {
1130 | |             self.branch_trace.pop_back();
1131 | |         }
     | |_________^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1166:9
     |
1164 |         return;
     |         ------ any code following this expression is unreachable
1165 |
1166 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

warning: unreachable statement
    --> src/cpu.rs:1188:9
     |
1186 |         return;
     |         ------ any code following this expression is unreachable
1187 |
1188 |         let from_linear = storage.recursive_translate(from);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

warning: unreachable statement
    --> src/main.rs:1630:17
     |
1629 |                         panic!("unhandled write {:04x}", reg);
     |                         ------------------------------------- any code following this expression is unreachable
1630 |                 self.state.management_bits[reg] = value;
     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3019:20
     |
3019 |             memory.ram[0x000_000] = 0x00;
     |                    ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3019 |             memory.state.ram[0x000_000] = 0x00;
     |                    ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3021:20
     |
3021 |             memory.ram[0x000_000] = 0xaa;
     |                    ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3021 |             memory.state.ram[0x000_000] = 0xaa;
     |                    ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3024:20
     |
3024 |             memory.ram[0x000_001] = 0xff;
     |                    ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3024 |             memory.state.ram[0x000_001] = 0xff;
     |                    ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3026:31
     |
3026 |             assert_eq!(memory.ram[0x000_001], 0xab);
     |                               ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3026 |             assert_eq!(memory.state.ram[0x000_001], 0xab);
     |                               ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3028:20
     |
3028 |             memory.ram[0x001_001] = 0xff;
     |                    ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3028 |             memory.state.ram[0x001_001] = 0xff;
     |                    ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3030:31
     |
3030 |             assert_eq!(memory.ram[0x001_001], 0xab);
     |                               ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3030 |             assert_eq!(memory.state.ram[0x001_001], 0xab);
     |                               ++++++

error[E0609]: no field `management_bits` on type `MemoryMapping<'_>`
    --> src/main.rs:3032:20
     |
3032 |             memory.management_bits[SVBK] = 0x01;
     |                    ^^^^^^^^^^^^^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3032 |             memory.state.management_bits[SVBK] = 0x01;
     |                    ++++++

error[E0609]: no field `management_bits` on type `MemoryMapping<'_>`
    --> src/main.rs:3035:31
     |
3035 |             assert_eq!(memory.management_bits[SVBK], 0x03);
     |                               ^^^^^^^^^^^^^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3035 |             assert_eq!(memory.state.management_bits[SVBK], 0x03);
     |                               ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3039:20
     |
3039 |             memory.ram[0x003_001] = 0xff;
     |                    ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3039 |             memory.state.ram[0x003_001] = 0xff;
     |                    ++++++

error[E0609]: no field `ram` on type `MemoryMapping<'_>`
    --> src/main.rs:3041:31
     |
3041 |             assert_eq!(memory.ram[0x003_001], 0xab);
     |                               ^^^ unknown field
     |
     = note: available fields are: `cart`, `state`, `verbose`, `trace_io`
help: one of the expressions' fields has a field of the same name
     |
3041 |             assert_eq!(memory.state.ram[0x003_001], 0xab);
     |                               ++++++

warning: unused import: `Write`
 --> src/main.rs:6:16
  |
6 | use std::fmt::{Write as FmtWrite};
  |                ^^^^^

For more information about this error, try `rustc --explain E0609`.
warning: `yaxpeax-gbc` (bin "yaxgbc" test) generated 21 warnings
error: could not compile `yaxpeax-gbc` (bin "yaxgbc" test) due to 10 previous errors; 21 warnings emitted

metrics

nameivorytower
x86_64 Matisse @ 3.500GHz