sketching, reading

This commit is contained in:
Theron 2019-12-04 20:57:05 -06:00
parent ac416cc722
commit d0896707bd
5 changed files with 71 additions and 5 deletions

View File

@ -1,7 +1,24 @@
impl super::DMC {
pub fn new() -> Self {
super::DMC {
sample: 0,
}
}
pub fn control(&mut self, value: u8) {
}
pub fn direct_load(&mut self, value: u8) {
}
pub fn sample_address(&mut self, value: u8) {
}
pub fn sample_length(&mut self, value: u8) {
}
}

View File

@ -46,7 +46,7 @@ struct Noise {
}
struct DMC {
sample: u16,
}
impl Apu {
@ -91,16 +91,21 @@ impl Apu {
0x4015 => self.control(value),
0x4016 => (),
0x4017 => self.frame_counter(value),
_ => panic!("bad address written: 0x{:X}", address),
}
}
fn mix(&self) -> f32 {
let square_out = self.square_table[self.square1.sample + self.square2.sample as usize];
let tnd_out = self.tnd_table[(3*self.triangle.sample)+(2*self.noise.sample)+self.dmc.sample as usize];
let square_out = self.square_table[(self.square1.sample + self.square2.sample) as usize];
let tnd_out = self.tnd_table[((3*self.triangle.sample)+(2*self.noise.sample) + self.dmc.sample) as usize];
square_out + tnd_out
}
fn frame_counter(value: u8) {
fn frame_counter(&mut self, value: u8) {
}
fn control(&mut self, value: u8) {
}
}

View File

@ -19,6 +19,17 @@ impl super::Noise {
self.linear_feedback_sr >>= 1;
self.linear_feedback_sr |= feedback << 14;
}
pub fn envelope(&mut self, value: u8) {
}
pub fn loop_noise(&mut self, value: u8) {
}
pub fn load_length_counter(&mut self, value: u8) {
}
}
// When the timer clocks the shift register, the following actions occur in order:

View File

@ -8,6 +8,27 @@ impl super::Square {
length_counter: 0,
envelope: 0,
sweep: 0,
sample: 0,
}
}
pub fn clock(&mut self) {
}
pub fn duty(&mut self, value: u8) {
}
pub fn sweep(&mut self, value: u8) {
}
pub fn timer_low(&mut self, value: u8) {
}
pub fn timer_high(&mut self, value: u8) {
}
}

View File

@ -6,4 +6,16 @@ impl super::Triangle {
linear_counter: 0,
}
}
pub fn timer_low(&mut self, value: u8) {
}
pub fn timer_high(&mut self, value: u8) {
}
pub fn counter(&mut self, value: u8) {
}
}