Skip to content

Commit

Permalink
Remove Suzy buffering
Browse files Browse the repository at this point in the history
  • Loading branch information
LLeny committed Dec 15, 2024
1 parent 373252b commit 0099f0b
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 142 deletions.
3 changes: 1 addition & 2 deletions src/consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ A page mode op-code read takes 4 ticks, a normal read or write to RAM takes 5 ti
pub const RAM_NORMAL_READ_TICKS: i8 = 4;
pub const RAM_NORMAL_WRITE_TICKS: i8 = 4;
pub const RAM_PAGE_READ_TICKS: i8 = 3;
pub const RAM_DMA_READ_TICKS: i8 = 3;

pub const MIKEY_TIMER_READ_TICKS: u16 = 5;
pub const MIKEY_TIMER_WRITE_TICKS: u16 = 5;
Expand All @@ -47,7 +46,7 @@ Suzy Hardware(read) 9 15

pub const SUZY_WRITE_TICKS: u16 = 5;
pub const SUZY_READ_TICKS: u16 = 11; // ~~
pub const SUZY_DATA_BUFFER_LEN: u16 = 8;
pub const SUZY_DATA_BUFFER_LEN: u16 = 1;
// "The longest process is 30 ticks. Adding the overhead of accepting the bus request and releasing the bus grant brings the total to 40 ticks."
pub const SUZY_BUS_GRANT_TICKS: u16 = 10;
/* "
Expand Down
17 changes: 2 additions & 15 deletions src/suzy/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ pub enum SuzyTask {
EndSprite,
Multiply,
Divide,
SpriteDataPeek,
}

#[derive(Serialize, Deserialize)]
Expand Down Expand Up @@ -326,7 +325,7 @@ impl Suzy {
return;
}
let mem_access_count = self.renderer.sprite_end(&mut self.registers, dma_ram);
self.registers.set_task_ticks_delay(mem_access_count * RAM_DMA_READ_TICKS as u16);
self.registers.set_task_ticks_delay(mem_access_count * RAM_PAGE_READ_TICKS as u16);
self.registers.set_task(SuzyTask::SpriteGo);
}
SuzyTask::Multiply => {
Expand All @@ -338,19 +337,7 @@ impl Suzy {
divide(&mut self.registers);
self.registers.reset_task();
trace!("< Divide");
}
SuzyTask::SpriteDataPeek => {
if !self.has_bus(bus) {
return;
}
let mut data: Vec<u8> = vec!();
for _ in 0..SUZY_DATA_BUFFER_LEN {
data.push(dma_ram.get(self.renderer.scb_curr_adr()));
self.renderer.inc_scb_curr_adr();
}
self.renderer.push_sprite_data(&data);
self.registers.set_task(SuzyTask::SpriteGo);
}
}
_ => self.registers.reset_task(),
}
}
Expand Down
5 changes: 0 additions & 5 deletions src/suzy/registers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -445,11 +445,6 @@ impl SuzyRegisters {
self.task_step = self.task_step + 1;
}

pub fn scb_peek_sprite_data(&mut self) {
self.set_task(SuzyTask::SpriteDataPeek);
self.set_task_ticks_delay(RAM_DMA_READ_TICKS as u16 * SUZY_DATA_BUFFER_LEN);
}

pub fn tmp_cd(&self) -> u16 {
self.tmp_cd
}
Expand Down
Loading

0 comments on commit 0099f0b

Please sign in to comment.