This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
rustboyadvance-ng/src/core/dma.rs

75 lines
1.8 KiB
Rust
Raw Normal View History

// use super::arm7tdmi::{Addr, Bus};
// use super::ioregs::consts::*;
// use super::sysbus::SysBus;
// use super::{EmuIoDev, Interrupt};
// #[allow(non_camel_case_types)]
// #[derive(Debug)]
// pub struct DmaChannel {
// src_ioreg: Addr, /* Source Address register */
// dst_ioreg: Addr, /* Destination Address register */
// wc_ioreg: Addr, /* Word Count 14bit */
// }
// #[derive(Debug, Primitive)]
// enum DmaAddrControl {
// Increment = 0,
// Decrement = 1,
// Fixed = 2,
// IncrementReloadProhibited = 3,
// }
// #[derive(Debug)]
// enum DmaTransferType {
// Xfer16bit,
// Xfer32bit,
// }
// #[derive(Debug, Primitive)]
// enum DmaStartTiming {
// Immediately = 0,
// VBlank = 1,
// HBlank = 2,
// Special = 3,
// }
// #[derive(Debug)]
// struct DmaControl {
// dst_addr_ctl: DmaAddrControl,
// src_addr_ctl: DmaAddrControl,
// repeat: bool,
// xfer: DmaTransferType,
// start_timing: DmaStartTiming,
// irq_upon_end_of_wc: bool,
// enable: bool,
// }
// impl DmaChannel {
// pub fn new(src_ioreg: Addr, dst_ioreg: Addr, wc_ioreg: Addr) -> DmaChannel {
// DmaChannel {
// src_ioreg,
// dst_ioreg,
// wc_ioreg,
// }
// }
// // fn src_addr(&self, sysbus: &SysBus) -> Addr {
// // sysbus.ioregs.read_32(self.src_ioreg - IO_BASE) as Addr
// // }
// // fn dst_addr(&self, sysbus: &SysBus) -> Addr {
// // sysbus.ioregs.read_32(self.dst_ioreg - IO_BASE) as Addr
// // }
// // fn word_count(&self, sysbus: &SysBus) -> usize {
// // sysbus.ioregs.read_reg(self.wc_ioreg) as usize
// // }
// }
// impl EmuIoDev for DmaChannel {
// fn step(&mut self, cycles: usize, sysbus: &mut SysBus) -> (usize, Option<Interrupt>) {
// // TODO
// (0, None)
// }
// }