From 94bc7f7401283e8f22adea4d556a28efabbdf6d1 Mon Sep 17 00:00:00 2001 From: shokre Date: Sat, 21 Oct 2023 06:43:19 +0200 Subject: [PATCH] fix: fix wav loading --- orao/cpu.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/orao/cpu.py b/orao/cpu.py index ee7b7b0..e4275ab 100755 --- a/orao/cpu.py +++ b/orao/cpu.py @@ -85,7 +85,7 @@ class CPU(object): def get_word(self, addr): return 256 * self.get_byte(addr + 1) + self.get_byte(addr) - def get_filename(self): return 'wav/{0}.WAV'.format(str(self.memory[592:602]).rstrip()) + def get_filename(self): return 'wav/{0}.WAV'.format(str(self.memory[592:602], 'ASCII').rstrip()) def speaker(self): self.flipflop ^= 1 @@ -95,14 +95,18 @@ class CPU(object): self.sndbuf += [255] * self.samples + [0] * self.samples self.last_sound_cycles = self.cycles + def tape_load_gen(self): + for i in wave.open(self.get_filename()).readframes(2 ** 24): + for j in 2 * [i]: + yield 255 * (j > 128) + def get_byte(self, addr): if addr == 0x87FF: # Adresa ulaza kasetofona if not self.tape: - self.tape = (255*(ord(j)>128) for i in \ - wave.open(self.get_filename()).readframes(2**24) for j in 2*i) + self.tape = self.tape_load_gen() try: - return self.tape.next() + return next(self.tape) except StopIteration: self.tape = None