Skip to content
Snippets Groups Projects
Commit 2f7de414 authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

Merge branch 'joamag/wave-form' into 'master'

Dupport for waveform plotting

See merge request !20
parents 8376919f 8d87d9ef
No related branches found
No related tags found
1 merge request!20Support for waveform plotting
Pipeline #2407 passed
......@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
* Support for CGB flag parsing
* Waveform plotting support
### Changed
......@@ -18,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
* Major JoyPad issue with Action/Select read in register
* Small issue with channel 3 audio and DAC disable
## [0.7.2] - 2023-03-04
......
......@@ -606,6 +606,18 @@ export class GameboyEmulator extends EmulatorBase implements Emulator {
};
}
get audioOutput(): Record<string, number> {
const output = this.gameBoy?.audio_all_output();
if (!output) return {};
return {
master: output[0],
ch1: output[1],
ch2: output[2],
ch3: output[3],
ch4: 0
};
}
get palette(): string | undefined {
const paletteObj = PALETTES[this.paletteIndex];
return paletteObj.name;
......
......@@ -348,6 +348,18 @@ impl Apu {
self.ch1_output + self.ch2_output + self.ch3_output
}
pub fn ch1_output(&self) -> u8 {
self.ch1_output
}
pub fn ch2_output(&self) -> u8 {
self.ch2_output
}
pub fn ch3_output(&self) -> u8 {
self.ch3_output
}
pub fn audio_buffer(&self) -> &VecDeque<u8> {
&self.audio_buffer
}
......@@ -526,7 +538,7 @@ impl Apu {
return;
}
if self.ch3_enabled {
if self.ch3_enabled && self.ch3_dac {
let wave_index = self.ch3_position >> 1;
let mut output = self.wave_ram[wave_index as usize];
output = if (self.ch3_position & 0x01) == 0x01 {
......
......@@ -189,6 +189,31 @@ impl GameBoy {
buffer
}
pub fn audio_output(&self) -> u8 {
self.apu_i().output()
}
pub fn audio_all_output(&self) -> Vec<u8> {
vec![
self.audio_output(),
self.audio_ch1_output(),
self.audio_ch2_output(),
self.audio_ch3_output(),
]
}
pub fn audio_ch1_output(&self) -> u8 {
self.apu_i().ch1_output()
}
pub fn audio_ch2_output(&self) -> u8 {
self.apu_i().ch2_output()
}
pub fn audio_ch3_output(&self) -> u8 {
self.apu_i().ch3_output()
}
pub fn cartridge_eager(&mut self) -> Cartridge {
self.mmu().rom().clone()
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment