chore(bus): implement read/write blocks when dma is active

This commit is contained in:
2021-06-05 20:53:35 -05:00
parent 2e42513d71
commit b7b213b6b9
4 changed files with 28 additions and 21 deletions

View File

@@ -4,10 +4,10 @@ use crate::GB_WIDTH;
use dma::DmaProcess;
use std::collections::VecDeque;
use std::convert::TryInto;
use self::types::{
pub use types::PpuMode;
use types::{
BackgroundPalette, GrayShade, LCDControl, LCDStatus, ObjectFlags, ObjectPalette,
ObjectPaletteId, ObjectSize, Pixels, PpuMode, RenderPriority, TileDataAddress,
ObjectPaletteId, ObjectSize, Pixels, RenderPriority, TileDataAddress,
};
pub(crate) mod dma;
@@ -188,7 +188,7 @@ impl Ppu {
}
fn scan_oam(&mut self) {
if self.scan_state.mode() == OamScanMode::Scan {
if self.scan_state.mode() == OamScanMode::Scan && self.dma.is_active() {
if !self.window_stat.coincidence() && self.scan_state.count() == 0 {
// Determine whether we should draw the window next frame
self.window_stat