From 2bc750cf8d804d8c60b3245a75571ca2cece00db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Freitas?= Date: Thu, 22 Aug 2024 19:26:29 +0100 Subject: [PATCH] Remove nightly features --- Cargo.toml | 2 +- fpt-cli/Cargo.toml | 2 +- fpt-cli/src/lib.rs | 4 ++-- fpt-cli/src/main.rs | 4 ++-- fpt/src/lib.rs | 6 +++--- fpt/src/lr35902.rs | 21 +++++++++++++++++---- fpt/src/ppu/tile.rs | 5 ++--- rust-toolchain.toml | 3 ++- 8 files changed, 30 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 441d500..e4ff9f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,6 @@ resolver = "2" members = [ "fpt", - "fpt-egui", + #"fpt-egui", "fpt-cli", ] diff --git a/fpt-cli/Cargo.toml b/fpt-cli/Cargo.toml index f93ef2a..12e544c 100644 --- a/fpt-cli/Cargo.toml +++ b/fpt-cli/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" default-run = "main" [dependencies] -clap = { version = "4.4.6", features = ["derive"] } +clap = { version = "4.0", features = ["derive"] } fpt = { path = "../fpt" } rustyline = "13.0.0" diff --git a/fpt-cli/src/lib.rs b/fpt-cli/src/lib.rs index aa2bdf7..5c41a69 100644 --- a/fpt-cli/src/lib.rs +++ b/fpt-cli/src/lib.rs @@ -1,2 +1,2 @@ -#![feature(array_chunks)] -#![feature(iter_intersperse)] +//#![feature(array_chunks)] +//#![feature(iter_intersperse)] diff --git a/fpt-cli/src/main.rs b/fpt-cli/src/main.rs index fe46acc..9840210 100644 --- a/fpt-cli/src/main.rs +++ b/fpt-cli/src/main.rs @@ -1,5 +1,5 @@ -#![feature(array_chunks)] -#![feature(iter_intersperse)] +//#![feature(array_chunks)] +//#![feature(iter_intersperse)] use std::fs; diff --git a/fpt/src/lib.rs b/fpt/src/lib.rs index 6a956cd..dbcbef0 100644 --- a/fpt/src/lib.rs +++ b/fpt/src/lib.rs @@ -1,6 +1,6 @@ -#![feature(bigint_helper_methods)] -#![feature(array_chunks)] -#![feature(iter_intersperse)] +//#![feature(bigint_helper_methods)] +//#![feature(array_chunks)] +//#![feature(iter_intersperse)] use std::collections::VecDeque; diff --git a/fpt/src/lr35902.rs b/fpt/src/lr35902.rs index 7f5e34a..aaf44c2 100644 --- a/fpt/src/lr35902.rs +++ b/fpt/src/lr35902.rs @@ -11,6 +11,19 @@ use crate::{bw, memory}; pub mod instructions; +fn carrying_add(x:u8, y:u8, carry: bool) -> (u8, bool) { + let carry: u8 = carry as u8; + let half_adder = x ^ y ; + let sum = half_adder ^ carry; + let carry = (carry & half_adder) | (x & y); + (sum, carry == 1) +} + +// yolo +fn borrowing_sub(x:u8, y:u8, borrow:bool) -> (u8, bool) { + carrying_add(x, !y, !borrow) +} + #[derive(Clone, PartialEq)] pub struct LR35902 { af: u16, @@ -403,9 +416,9 @@ impl LR35902 { self.set_c_flag(overflow); result } - + fn addc8(&mut self, x: u8, y: u8) -> u8 { - let (result, overflow) = x.carrying_add(y, self.c_flag()); + let (result, overflow) = carrying_add(x, y, self.c_flag()); self.set_z_flag(result == 0); self.set_n_flag(false); self.set_h_flag(self.half_carryc8(x, y, self.c_flag() as u8)); @@ -424,10 +437,10 @@ impl LR35902 { } fn subc8(&mut self, x: u8, y: u8) -> u8 { - let (result, overflow) = x.borrowing_sub(y, self.c_flag()); + let (result, overflow) = borrowing_sub(x, y, self.c_flag()); self.set_z_flag(result == 0); self.set_n_flag(true); - self.set_h_flag((x & 0x0f).borrowing_sub(y & 0x0f, self.c_flag()).1); + self.set_h_flag(borrowing_sub(x & 0x0f, y & 0x0f, self.c_flag()).1); self.set_c_flag(overflow); result } diff --git a/fpt/src/ppu/tile.rs b/fpt/src/ppu/tile.rs index 39fe15a..cb9e8cd 100644 --- a/fpt/src/ppu/tile.rs +++ b/fpt/src/ppu/tile.rs @@ -103,11 +103,10 @@ pub fn write_pgm_screenshot(frame: &Frame, filename: &str) { write!(file, "P2\n# Game Boy screenshot: {filename}\n160 144\n3\n").unwrap(); // Our Game Boy's framebuffer seems to have a direct correspondence to this! - for line in frame.array_chunks::<160>() { + for line in frame.chunks(160) { let pgm_line = line .iter() - .map(|p| (b'3' - *p) as char) // ASCII from '0' to '3' - .intersperse(' ') + .map(|p| String::from((b'3' - *p) as char) + " ") // ASCII from '0' to '3' .collect::() + "\n"; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 5ff21ea..fb2b8b0 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,5 @@ [toolchain] -channel = "nightly-2024-06-11" +#channel = "nightly-2024-01-01" +channel = "stable" components = [ "rustfmt", "rustc-dev" , "clippy"] profile = "minimal"