diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2023-10-22 09:00:16 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2023-10-22 09:00:16 +0530 |
commit | eb6adb4b212cd55f8e6a553ecdcffa2f8a7cc63a (patch) | |
tree | a744ce43eeb5c2ff758ccc9d02750489b04bafc2 /src/chip8.cpp | |
parent | 689fa26e124cebb42518ed7ca14185d80fff20b9 (diff) |
Implement sound
Diffstat (limited to 'src/chip8.cpp')
-rw-r--r-- | src/chip8.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/chip8.cpp b/src/chip8.cpp index 485d061..1d46c49 100644 --- a/src/chip8.cpp +++ b/src/chip8.cpp @@ -1,9 +1,11 @@ #include "chip8.hpp" +#include "platform.hpp" #include <fstream> #include <iostream> #include <cstdint> -#include <chrono> +#include <thread> +#include <mutex> const uint32_t FONTSET_START_ADDRESS = 0x050; const uint32_t ROM_START_ADDRESS = 0x200; @@ -124,15 +126,24 @@ void Chip8::Cycle() { // Decode and Execute ((*this).*(table[(opcode & 0xF000u) >> 12u]))(); - - // Decrement delay timer - if (delayTimer > 0) { - delayTimer--; - } +} - if (soundTimer > 0) { - --soundTimer; - } +void Chip8::TimerUpdateThread(Platform* platform) { + while (true) { + std::this_thread::sleep_for(std::chrono::milliseconds(16)); + + std::lock_guard<std::mutex> lock(timerMutex); + if (delayTimer > 0) { + delayTimer--; + } + + if (soundTimer > 0) { + soundTimer--; + platform->StartBeep(); + } else { + platform->StopBeep(); + } + } } void Chip8::LoadROM(const char* filename) { |