Skip to content

Commit

Permalink
WIP int hte
Browse files Browse the repository at this point in the history
  • Loading branch information
alloncm committed Sep 6, 2021
1 parent 0c518ac commit ff498ca
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 10 deletions.
13 changes: 5 additions & 8 deletions lib_gb/src/ppu/fifo/background_fetcher.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
use crate::{mmu::vram::VRam, utils::{bit_masks::*, vec2::Vec2}};
use super::{fetcher_state_machine::FetcherStateMachine, fetching_state::*};

const FIFO_SIZE:u8 = 8;
const SPRITE_WIDTH:u8 = 8;
use crate::{mmu::vram::VRam, utils::{bit_masks::*, fixed_size_queue::FixedSizeQueue, vec2::Vec2}};
use super::{FIFO_SIZE, SPRITE_WIDTH, fetcher_state_machine::FetcherStateMachine, fetching_state::*};

pub struct BackgroundFetcher{
pub fifo:Vec<u8>,
pub fifo:FixedSizeQueue<u8, FIFO_SIZE>,
pub window_line_counter:u8,

current_x_pos:u8,
Expand All @@ -20,7 +17,7 @@ impl BackgroundFetcher{
BackgroundFetcher{
fetcher_state_machine:FetcherStateMachine::new(state_machine),
current_x_pos:0,
fifo:Vec::<u8>::with_capacity(FIFO_SIZE as usize),
fifo:FixedSizeQueue::<u8, FIFO_SIZE>::new(),
window_line_counter:0,
rendered_window:false,
rendering_window:false,
Expand Down Expand Up @@ -92,7 +89,7 @@ impl BackgroundFetcher{
FetchingState::Push=>{
let low_data = self.fetcher_state_machine.data.low_tile_data.expect("State machine is corrupted, No Low data on Push");
let high_data = self.fetcher_state_machine.data.high_tile_data.expect("State machine is corrupted, No High data on Push");
if self.fifo.is_empty(){
if self.fifo.len() == 0{
if lcd_control & BIT_0_MASK == 0{
for _ in 0..SPRITE_WIDTH{
//When the baclkground is off pushes 0
Expand Down
5 changes: 4 additions & 1 deletion lib_gb/src/ppu/fifo/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
pub mod background_fetcher;
pub mod sprite_fetcher;
mod fetching_state;
mod fetcher_state_machine;
mod fetcher_state_machine;

pub const FIFO_SIZE:usize = 8;
pub const SPRITE_WIDTH:u8 = 8;
32 changes: 31 additions & 1 deletion lib_gb/src/utils/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
use std::mem::MaybeUninit;

pub mod vec2;
pub mod memory_registers;
pub mod bit_masks;
pub mod fixed_size_queue;

pub const GB_FREQUENCY:u32 = 4_194_304;

pub fn create_default_array<T:Default,const SIZE:usize>()->[T;SIZE]{
let mut data: [MaybeUninit<T>; SIZE] = unsafe{MaybeUninit::uninit().assume_init()};

for elem in &mut data[..]{
*elem = MaybeUninit::new(T::default());
}
unsafe{
let casted_data = std::ptr::read(&data as *const [MaybeUninit<T>;SIZE] as *const [T;SIZE]);
std::mem::forget(data);
// std::mem::forget(data);
return casted_data;
}
}
pub fn create_array<T, F:Fn()->T,const SIZE:usize>(func:F)->[T;SIZE]{
let mut data: [MaybeUninit<T>; SIZE] = unsafe{MaybeUninit::uninit().assume_init()};

pub const GB_FREQUENCY:u32 = 4_194_304;
for elem in &mut data[..]{
*elem = MaybeUninit::new(func());
}
unsafe{
let casted_data = std::ptr::read(&data as *const [MaybeUninit<T>;SIZE] as *const [T;SIZE]);
std::mem::forget(data);
// std::mem::forget(data);
return casted_data;
}
}

0 comments on commit ff498ca

Please sign in to comment.