diff --git a/src/apu.rs b/src/apu.rs index 19b4f45..8851570 100644 --- a/src/apu.rs +++ b/src/apu.rs @@ -17,7 +17,7 @@ const CHANNEL_COUNT: usize = 2; const SAMPLE_INCREMENT: u64 = SAMPLE_RATE as u64; #[derive(Default, Debug, Clone)] -pub(crate) struct Apu { +pub struct Apu { pub(crate) ctrl: SoundControl, /// Tone & Sweep pub(crate) ch1: Channel1, @@ -102,7 +102,7 @@ impl Apu { } } - pub(crate) fn set_audio_src(&mut self, sender: AudioSender) { + pub fn set_audio_sender(&mut self, sender: AudioSender) { self.sender = Some(sender); } diff --git a/src/bus.rs b/src/bus.rs index 7f99a55..2056acd 100644 --- a/src/bus.rs +++ b/src/bus.rs @@ -1,4 +1,3 @@ -use crate::apu::gen::AudioSender; use crate::apu::Apu; use crate::cartridge::Cartridge; use crate::high_ram::HighRam; @@ -16,12 +15,12 @@ const BOOT_ROM_SIZE: usize = 0x100; pub struct Bus { boot: Option<[u8; BOOT_ROM_SIZE]>, // Boot ROM is 256b long cartridge: Option, - pub ppu: Ppu, + pub(crate) ppu: Ppu, work_ram: WorkRam, var_ram: VariableWorkRam, pub(crate) timer: Timer, int: Interrupt, - apu: Apu, + pub(crate) apu: Apu, high_ram: HighRam, serial: Serial, pub(crate) joypad: Joypad, @@ -75,10 +74,6 @@ impl Bus { &mut self.apu } - pub(crate) fn pass_audio_src(&mut self, sender: AudioSender) { - self.apu.set_audio_src(sender) - } - pub(crate) fn clock(&mut self) { self.ppu.clock(); self.timer.clock(); diff --git a/src/cpu.rs b/src/cpu.rs index 818b9d5..69ca081 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -1,4 +1,4 @@ -use crate::apu::gen::AudioSender; +use crate::apu::Apu; use crate::bus::{Bus, BusIo}; use crate::instruction::{Cycle, Instruction}; use crate::interrupt::{InterruptEnable, InterruptFlag}; @@ -45,10 +45,6 @@ impl Cpu { }) } - pub fn set_audio_src(&mut self, sender: AudioSender) { - self.bus.pass_audio_src(sender) - } - pub(crate) fn ime(&self) -> ImeState { self.ime } @@ -174,6 +170,10 @@ impl Cpu { &self.bus.ppu } + pub fn apu_mut(&mut self) -> &mut Apu { + &mut self.bus.apu + } + pub(crate) fn joypad_mut(&mut self) -> &mut Joypad { &mut self.bus.joypad } diff --git a/src/main.rs b/src/main.rs index c84df98..6cd7452 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use clap::{crate_authors, crate_description, crate_name, crate_version, App, Arg use gb::{AudioMPSC, Cycle, Egui, GB_HEIGHT, GB_WIDTH}; use gilrs::Gilrs; use pixels::{Pixels, SurfaceTexture}; -use rodio::{OutputStream, Sink}; +use rodio::OutputStream; use std::time::Instant; use winit::dpi::LogicalSize; use winit::event::{Event, VirtualKeyCode}; @@ -67,7 +67,7 @@ fn main() -> Result<()> { }; let (send, recv) = AudioMPSC::init(); - game_boy.set_audio_src(send); + game_boy.apu_mut().set_audio_sender(send); // Initialize Audio let (_stream, stream_handle) = OutputStream::try_default().expect("Initialized Audio");