From 935129baede8dba930a5daabf7f3ad39873f19d0 Mon Sep 17 00:00:00 2001 From: sigil-03 Date: Thu, 6 Nov 2025 16:54:46 -0700 Subject: [PATCH] insert coin noise works but crashes at end --- ch32v-insert-coin/audio/coin3.raw | Bin 0 -> 7999 bytes ch32v-insert-coin/audio/coin4.raw | Bin 0 -> 7164 bytes ch32v-insert-coin/audio/coin5.raw | Bin 0 -> 6224 bytes ch32v-insert-coin/src/app.rs | 2 +- .../src/insert_coin/services/dac.rs | 6 +++++- ch32v-insert-coin/src/main.rs | 2 +- 6 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 ch32v-insert-coin/audio/coin3.raw create mode 100644 ch32v-insert-coin/audio/coin4.raw create mode 100644 ch32v-insert-coin/audio/coin5.raw diff --git a/ch32v-insert-coin/audio/coin3.raw b/ch32v-insert-coin/audio/coin3.raw new file mode 100644 index 0000000000000000000000000000000000000000..8c590d9611af6e92db2156177783344b25d97ae2 GIT binary patch literal 7999 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 literal 0 HcmV?d00001 diff --git a/ch32v-insert-coin/audio/coin5.raw b/ch32v-insert-coin/audio/coin5.raw new file mode 100644 index 0000000000000000000000000000000000000000..922bb2cc6a704c38f152b3f470fbf90d286690a3 GIT binary patch literal 6224 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
  • g+8qH~Evu@8&aoXMuE zJ-GPAt|(e?C5UZJR0)^?7ewjkX3^t)UL>&#dNue!jl_TKjY7Xz-sTaegDZJwHGHi;w>w_rJK=f64zHJn%m@0sR{Q literal 0 HcmV?d00001 diff --git a/ch32v-insert-coin/src/app.rs b/ch32v-insert-coin/src/app.rs index 00b764e..9703585 100644 --- a/ch32v-insert-coin/src/app.rs +++ b/ch32v-insert-coin/src/app.rs @@ -470,7 +470,7 @@ impl App { if self.services.sample_player.need_service() { self.services.sample_player.service(); - let out = self.services.sample_player.get_amplitude() / 3; + let out = self.services.sample_player.get_amplitude() / 2; self.interfaces .pwm_core .write_amplitude(ch32_hal::timer::Channel::Ch4, out as u8); diff --git a/ch32v-insert-coin/src/insert_coin/services/dac.rs b/ch32v-insert-coin/src/insert_coin/services/dac.rs index d262a14..0a3b364 100644 --- a/ch32v-insert-coin/src/insert_coin/services/dac.rs +++ b/ch32v-insert-coin/src/insert_coin/services/dac.rs @@ -59,6 +59,10 @@ impl<'a> TickService for DacService<'a> { fn service(&self) { let mut tc = self.service_data.borrow_mut(); tc.ticks_remaining = tc.ticks_per_service; - self.set_amplitude(self.dpcm_decoder.borrow_mut().output_next()); + if (self.dpcm_decoder.borrow().is_done()) { + self.set_amplitude(0); + } else { + self.set_amplitude(self.dpcm_decoder.borrow_mut().output_next()); + } } } diff --git a/ch32v-insert-coin/src/main.rs b/ch32v-insert-coin/src/main.rs index c14a77a..d29f7d5 100644 --- a/ch32v-insert-coin/src/main.rs +++ b/ch32v-insert-coin/src/main.rs @@ -265,7 +265,7 @@ fn app_main(mut p: hal::Peripherals) -> ! { let dac_tick_per_service = tick_rate_hz / dac_sample_rate_hz; let dac_service_data = TickServiceData::new(dac_tick_per_service); - let coin_sound = include_bytes!("../audio/coin.raw"); + let coin_sound = include_bytes!("../audio/coin5.raw"); // let coin_sound = include_bytes!("../audio/coin2.raw"); let sample_player = DacService::new(ch32_hal::timer::Channel::Ch4, dac_service_data);