Выпущена новая версия эмулятора, т.к. у версии 25.0 есть серьезные проблемы с производительностью, а в версии 24.7 недоработки в генераторе шума.
Данная версия является доработкой версии 24.7, в которой сделан генератор шума как в версии 25.0.
Так же выпущена новая версия прошивки для TurboSound
I think I’ve found a bug. The masking of the SRAM registers appears broken from V24.3 onwards. The read-back value contains all 8 bits of the value written.
This patch fixes it:
@@ -154,12 +154,12 @@
in SREGSave,SREG ; save SREG // 1 cycle
and BusOut1,CC0 // 1 cycle
or BusData,BusOut1 ; construct register value from 2 ports // 1 cycle
— mov BusOut1,BusData // 1 cycle
— com BusOut1 ; invert register value // 1 cycle
— std Z+0x20,BusOut1 ; put inverted register value to SRAM for read mode // 2 cycle
ld BusOut2,Z ; Load register mask from SRAM // 2 cycle
and BusData,BusOut2 ; apply register mask // 1 cycle
+ mov BusOut1,BusData // 1 cycle
+ com BusOut1 ; invert register value // 1 cycle
+ std Z+0x20,BusOut1 ; put inverted register value to SRAM for read mode // 2 cycle
mov BusOut2,BusOut1 // 1 cycle
and BusOut2,CC0 // 1 cycle
Thanks! But it is not a bug, the value should be the same as it was written to the register. The bug was in previous versions. The mask is applied only for internal logic but not for register values.
Thanks for the reply. My reason for thinking it’s a bug is the detection utility at https://www.bytedelight.com/?p=6327. It writes the value 31 to register 1 and reads it back. If the value has changed to 15 then it reports an AY-3-8912. Without masking it reads 31 and reports the AVR-AY as a YM2149. Unfortunately I am still waiting to get a real AY-3-8912 to test this fully!