From 06734c3af4cbe4e85e61f8e4e0ac83f707c585d2 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Mon, 22 Apr 2024 14:56:27 +0200 Subject: [PATCH] - [ONGOING] Berserk Mode! --- main.cpp | 7 +++++-- zx_tape.cpp | 6 ++++++ zx_tape.h | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 365130f..7b0cedf 100644 --- a/main.cpp +++ b/main.cpp @@ -86,10 +86,13 @@ int main(int argc, char *argv[]) z80debug::stop(); zxscreen::redraw(); } else { + if (z80::getPC()==0x05C8) zx_tape::go_berserk(); uint8_t dt = z80::step(); zx_tape::update(dt); - zx_ula::sound_update(dt); - zxscreen::refresh(dt); + if (!zx_tape::berserk()) { + zx_ula::sound_update(dt); + zxscreen::refresh(dt); + } } } } diff --git a/zx_tape.cpp b/zx_tape.cpp index 40eaa04..fff2913 100644 --- a/zx_tape.cpp +++ b/zx_tape.cpp @@ -33,6 +33,7 @@ namespace zx_tape bool playing = false; bool loaded = false; + bool berserk_mode = false; std::vector blocks; uint8_t current_block = 0; @@ -77,6 +78,7 @@ namespace zx_tape void stop() { playing = false; + berserk_mode = false; } void rewind() @@ -215,4 +217,8 @@ namespace zx_tape zx_ula::set_ear(pulse_level); } + + void go_berserk() { berserk_mode = true; } + const bool berserk() { return berserk_mode; } + } diff --git a/zx_tape.h b/zx_tape.h index a929b9c..ed40e4b 100644 --- a/zx_tape.h +++ b/zx_tape.h @@ -8,4 +8,6 @@ namespace zx_tape void stop(); void rewind(); void update(const uint8_t dt); + void go_berserk(); + const bool berserk(); }