From 3cd888d99149c6bb608d1c03fd697074a7f8617d Mon Sep 17 00:00:00 2001 From: Alex Janka Date: Thu, 9 Feb 2023 12:14:55 +1100 Subject: [PATCH] oam dma transfers --- src/processor/memory.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/processor/memory.rs b/src/processor/memory.rs index 8926cf2..1692957 100644 --- a/src/processor/memory.rs +++ b/src/processor/memory.rs @@ -6,6 +6,8 @@ use crate::{ use minifb::Key; use std::io::{stdout, Write}; +use super::SplitRegister; + pub(crate) mod rom; pub(crate) type Address = u16; @@ -260,6 +262,17 @@ impl Memory { // read-only addresses println!("BANNED write: {:#X} to {:#X}", data, address); } + 0xFF46 => { + if data > 0xDF { + panic!("dma transfer out of bounds: {:#X}", data); + } + let mut addr: u16 = 0x0; + addr.set_high(data); + for l in 0x0..0xA0 { + addr.set_low(l); + self.oam[l as usize] = self.get(addr); + } + } _ => { self.io[addr_l] = data; // panic!("passed non-io address to io handler!");