Closed mithrendal closed 4 years ago
😃 Oh yes, I remember.
I don't argue at all against a general slow motion mode in "VirtualC64 reloaded". I already though about adding such a feature, because I think many games would be easier if the machine run slower.
We could also have a special release "VirtualC64 evil". On startup, it asks the user for his age and if he types in a really large numbe (e.g., a number as high as our age 🤓), it display something like 😱 and automatically switches to grandpa mode (0.25 MHz or something).
OK, maybe the "evil" version won't be a great market hit, but the "reloaded" version with adjustable CPU frequency will 😎.
With some effort put into the audio engine, one could also compensate the speed change. Audio would be played slower, too.
code in place ...
watched octopus constantly it executes 50 or above frames but video drops a lot of frames now maybe only 10 frames per second or so scroll text is jumping not fluently after 20 seconds watching I moved the mouse somewhere in the dock ... that gave it the rest ... poor old macbook ... octopus completely freezed .. no sound ... no animation here a picture
then after another 15 second it lived up from alone again ... my theory: it fell so far behind the target that it only executed the doExecute() ... see the browser message it brings this when the wasm comes not back from cooperative multitasking ...when it lived up again the music was on a completely different position of the melody ... which means that the emulation did execute in that 15 second sleep phase but during that time no sound and no video...
I will try another game ... less demanding
played fort apocalypse for 2 minutes or so no problems 50hz constantly executed hit reset button --> freeze
time[ms]=1024.000000, audio samples=45056, frames [executed=55, skipped=0]
time[ms]=1005.000000, audio samples=44544, frames [executed=51, skipped=0]
time[ms]=1001.000000, audio samples=44032, frames [executed=50, skipped=0]
time[ms]=1002.000000, audio samples=44032, frames [executed=50, skipped=0]
time[ms]=1014.000000, audio samples=44544, frames [executed=51, skipped=0]
vC64 message=MSG_NO_CARTRIDGE, data=0
vC64 message=MSG_PAL, data=0
vC64 message=MSG_NO_CARTRIDGE, data=0
vC64 message=MSG_CART_SWITCH, data=0
vC64 message=MSG_IEC_BUS_IDLE, data=0
vC64 message=MSG_VC1541_ATTACHED, data=1
vC64 message=MSG_VC1541_RED_LED_OFF, data=1
vC64 message=MSG_VC1541_MOTOR_OFF, data=1
vC64 message=MSG_VC1541_NO_DISK, data=1
vC64 message=MSG_DISK_SAVED, data=1
vC64 message=MSG_VC1541_DETACHED, data=2
vC64 message=MSG_VC1541_RED_LED_OFF, data=2
vC64 message=MSG_VC1541_MOTOR_OFF, data=2
vC64 message=MSG_VC1541_NO_DISK, data=2
vC64 message=MSG_DISK_SAVED, data=2
vC64 message=MSG_VC1530_NO_TAPE, data=0
vC64 message=MSG_VC1530_PROGRESS, data=0
vC64 message=MSG_WARP_OFF, data=0
vC64 message=MSG_ALWAYS_WARP_OFF, data=0
lost sync target=9917.481875, total_executed=9900
time[ms]=1253.000000, audio samples=55296, frames [executed=46, skipped=0]
vC64 message=MSG_IEC_BUS_BUSY, data=0
vC64 message=MSG_IEC_BUS_IDLE, data=0
vC64 message=MSG_VC1541_RED_LED_ON, data=1
vC64 message=MSG_VC1541_MOTOR_ON, data=1
vC64 message=MSG_VC1541_HEAD_DOWN, data=1
vC64 message=MSG_VC1541_RED_LED_OFF, data=1
vC64 message=MSG_VC1541_MOTOR_OFF, data=1
vC64 message=MSG_IEC_BUS_BUSY, data=0
vC64 message=MSG_IEC_BUS_IDLE, data=0
... when it woke up again this here
time[ms]=80343.000000, audio samples=0, frames [executed=9917, skipped=0]
time[ms]=1002.000000, audio samples=3587584, frames [executed=0, skipped=0]
wow who told it to execute 9917 frames at once ... and look what the SDL audio handle read 3587584 samples but I did not hear anything ... look at time[ms]=80343 it means it was 80 seconds off SDL did not call one single frame or any audio in that time (cooperative multitasking)
something is wrong with the new code ... I swear I only changed these lines
C64 *c64 = (C64 *)thisC64;
while(total_executed_frame_count < (unsigned long)round(targetFrameCount)) {
executed_frame_count++;
total_executed_frame_count++;
c64->executeOneFrame();
}
found the bug ... in the reset logic
//lost the sync
if(targetFrameCount-total_executed_frame_count > 8)
{
printf("lost sync target=%lf, total_executed=%lu\n", targetFrameCount, total_executed_frame_count);
//reset timer
start_time=now;
total_executed_frame_count=0;
targetFrameCount=0.0; <--- this line was missing
}
now it works ... no more freezes also fort apocalypse no freezes anymore .. ... but octopus is very choppy now ... that means due to heavy emulation in octopus the FPS is down to 15fps or so ... Hmm before was 40 fps with audio buffer was underrunning a lot ... what do you think now ?
time[ms]=1004.000000, audio samples=44100, frames [executed=50, rendered=15]
look when I do this double targetFrameCount = elapsedTimeInSeconds * 40.125;
I get this time[ms]=1018.000000, audio samples=45056, frames [executed=41, rendered=44]
cool thing now I get it... its a trade off ... my old war ship has only a certain amount of computational power which is not enough for octopus at 50/50 and there is one setting to balance it ... like you predicted ... cool
same old scenario 30 seconds blue screen ... 30 seconds fort apocalypse
constructing C64 ... vC64.html:1:368
C64: Creating virtual C64[0x17f3a88] vC64.html:1:528
SIDBridge: Setting clock frequency to 985249 vC64.html:1:528
ReSID: Setting clock frequency to 985249 cycles per second. vC64.html:1:528
Drive1: Duration a CPU cycle is 10149 1/10 nsec. vC64.html:1:528
Drive2: Duration a CPU cycle is 10149 1/10 nsec. vC64.html:1:528
C64: Resetting virtual C64[0x17f3a88] vC64.html:1:528
C64: Setting PC to FCE2 vC64.html:1:528
adding a listener to C64 message queue... vC64.html:1:368
...
set SID to freq= 44100 vC64.html:1:368
SIDBridge: Changing sample rate from 44100 to 44100 vC64.html:1:528
ReSID: Setting sample rate to 44100 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 44100 vC64.html:1:528
...
lost sync target=44.861875, total_executed=0 vC64.html:1:368
time[ms]=2848.000000, audio samples=0, frames [executed=0, rendered=0] vC64.html:1:368
vC64 message=MSG_IEC_BUS_BUSY, data=0 vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 0 w: 12038) vC64.html:1:528
SIDBridge: elapsed 3.134000 vC64.html:1:528
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 8192 w: 8520) vC64.html:1:528
SIDBridge: elapsed 0.058000 vC64.html:1:528
vC64 message=MSG_IEC_BUS_IDLE, data=0 vC64.html:1:368
time[ms]=1015.000000, audio samples=38912, frames [executed=50, rendered=24] vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_ON, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_ON, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_HEAD_DOWN, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_OFF, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_OFF, data=1 vC64.html:1:368
vC64 message=MSG_IEC_BUS_BUSY, data=0 vC64.html:1:368
vC64 message=MSG_IEC_BUS_IDLE, data=0 vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1018.000000, audio samples=45056, frames [executed=51, rendered=56] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1001.000000, audio samples=44544, frames [executed=51, rendered=53] vC64.html:1:368
time[ms]=1016.000000, audio samples=44544, frames [executed=51, rendered=56] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=50] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1014.000000, audio samples=45056, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1001.000000, audio samples=44544, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1017.000000, audio samples=44544, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1000.000000, audio samples=44032, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1004.000000, audio samples=44544, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1017.000000, audio samples=45056, frames [executed=51, rendered=59] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=60] vC64.html:1:368
time[ms]=1014.000000, audio samples=44544, frames [executed=51, rendered=57] vC64.html:1:368
time[ms]=1009.000000, audio samples=44544, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1016.000000, audio samples=45056, frames [executed=51, rendered=52] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1015.000000, audio samples=44544, frames [executed=51, rendered=57] vC64.html:1:368
time[ms]=1016.000000, audio samples=45056, frames [executed=51, rendered=59] vC64.html:1:368
time[ms]=1000.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1006.000000, audio samples=44544, frames [executed=51, rendered=57] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1032.000000, audio samples=45568, frames [executed=51, rendered=34] vC64.html:1:368
time[ms]=1031.000000, audio samples=45568, frames [executed=52, rendered=35] vC64.html:1:368
SIDBridge: SID RINGBUFFER OVERFLOW (r: 5632 w: 5125) vC64.html:1:528
SIDBridge: elapsed 31.741000 vC64.html:1:528
SIDBridge: Changing sample rate from 44100 to 43915 vC64.html:1:528
ReSID: Setting sample rate to 43915 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 43915 vC64.html:1:528
time[ms]=1054.000000, audio samples=45056, frames [executed=50, rendered=31] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=53, rendered=37] vC64.html:1:368
time[ms]=1007.000000, audio samples=44544, frames [executed=51, rendered=37] vC64.html:1:368
time[ms]=1015.000000, audio samples=44544, frames [executed=51, rendered=52] vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 9216 w: 9494) vC64.html:1:528
SIDBridge: elapsed 3.406000 vC64.html:1:528
load file=Fort_Apocalypse_(Synapse_Software_1982).crt len=16480 vC64.html:1:368
isCRT vC64.html:1:368
CRTFile: readFromBuffer: checksum = d1f1e72a365a4cb6 vC64.html:1:528
CRTFile: CRT fingerprint: d1f1e72a365a4cb6 vC64.html:1:528
Cartridge: Fort Apocalypse vC64.html:1:528
Header: 00000040 bytes long (normally 0x40) vC64.html:1:528
Type: 5 vC64.html:1:528
Game: 1 vC64.html:1:528
Exrom: 0 vC64.html:1:528
CRTFile: CRT file imported successfully (2 chips) vC64.html:1:528
Cartridge: Creating cartridge at address 0x1bea520... vC64.html:1:528
vC64 message=MSG_CARTRIDGE, data=0 vC64.html:1:368
Expansion port: Cartridge attached to expansion port vC64.html:1:528
Cartridge vC64.html:1:528
--------- vC64.html:1:528
Cartridge type: 5 vC64.html:1:528
Game line in CRT file: 1 vC64.html:1:528
Exrom line in CRT file: 0 vC64.html:1:528
Number of Rom packets: 2 vC64.html:1:528
Chip 0: 8 KB starting at $8000 vC64.html:1:528
Chip 1: 8 KB starting at $8000 vC64.html:1:528
<empty string> vC64.html:1:528
C64: Resetting virtual C64[0x17f3a88] vC64.html:1:528
C64 memory: Grabbing reset vector from source 2 vC64.html:1:528
C64: Setting PC to FCE2 vC64.html:1:528
vC64 message=MSG_PAL, data=0 vC64.html:1:368
vC64 message=MSG_CARTRIDGE, data=0 vC64.html:1:368
vC64 message=MSG_CART_SWITCH, data=0 vC64.html:1:368
vC64 message=MSG_IEC_BUS_IDLE, data=0 vC64.html:1:368
vC64 message=MSG_VC1541_ATTACHED, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_OFF, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_OFF, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_NO_DISK, data=1 vC64.html:1:368
vC64 message=MSG_DISK_SAVED, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_DETACHED, data=2 vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_OFF, data=2 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_OFF, data=2 vC64.html:1:368
vC64 message=MSG_VC1541_NO_DISK, data=2 vC64.html:1:368
vC64 message=MSG_DISK_SAVED, data=2 vC64.html:1:368
vC64 message=MSG_VC1530_NO_TAPE, data=0 vC64.html:1:368
vC64 message=MSG_VC1530_PROGRESS, data=0 vC64.html:1:368
vC64 message=MSG_WARP_OFF, data=0 vC64.html:1:368
vC64 message=MSG_ALWAYS_WARP_OFF, data=0 vC64.html:1:368
time[ms]=1101.000000, audio samples=46080, frames [executed=51, rendered=25] vC64.html:1:368
vC64 message=MSG_IEC_BUS_BUSY, data=0 vC64.html:1:368
vC64 message=MSG_IEC_BUS_IDLE, data=0 vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_ON, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_ON, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_HEAD_DOWN, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_RED_LED_OFF, data=1 vC64.html:1:368
vC64 message=MSG_VC1541_MOTOR_OFF, data=1 vC64.html:1:368
vC64 message=MSG_IEC_BUS_BUSY, data=0 vC64.html:1:368
time[ms]=1032.000000, audio samples=48128, frames [executed=55, rendered=50] vC64.html:1:368
vC64 message=MSG_IEC_BUS_IDLE, data=0 vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=51, rendered=54] vC64.html:1:368
time[ms]=1003.000000, audio samples=44544, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=52] vC64.html:1:368
time[ms]=1014.000000, audio samples=44544, frames [executed=51, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=53] vC64.html:1:368
time[ms]=1003.000000, audio samples=44544, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1014.000000, audio samples=44544, frames [executed=51, rendered=53] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=55] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1012.000000, audio samples=45056, frames [executed=51, rendered=60] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=55] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1014.000000, audio samples=44544, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=53] vC64.html:1:368
time[ms]=1013.000000, audio samples=45056, frames [executed=51, rendered=59] vC64.html:1:368
time[ms]=1004.000000, audio samples=44032, frames [executed=50, rendered=54] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=51, rendered=55] vC64.html:1:368
time[ms]=1020.000000, audio samples=45056, frames [executed=50, rendered=54] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=51, rendered=56] vC64.html:1:368
SIDBridge: SID RINGBUFFER UNDERFLOW (r: 10240 w: 10518) vC64.html:1:528
SIDBridge: elapsed 30.665000 vC64.html:1:528
SIDBridge: Changing sample rate from 43915 to 44106 vC64.html:1:528
ReSID: Setting sample rate to 44106 samples per second. vC64.html:1:528
FastSID: Setting sample rate to 44106 vC64.html:1:528
time[ms]=1021.000000, audio samples=44544, frames [executed=51, rendered=50] vC64.html:1:368
time[ms]=1011.000000, audio samples=45056, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=55] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1035.000000, audio samples=45568, frames [executed=50, rendered=52] vC64.html:1:368
time[ms]=1016.000000, audio samples=45056, frames [executed=53, rendered=53] vC64.html:1:368
time[ms]=1000.000000, audio samples=44032, frames [executed=50, rendered=55] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1003.000000, audio samples=44544, frames [executed=51, rendered=51] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1013.000000, audio samples=44544, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44544, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44544, frames [executed=51, rendered=56] vC64.html:1:368
time[ms]=1014.000000, audio samples=44544, frames [executed=50, rendered=61] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=54] vC64.html:1:368
time[ms]=1001.000000, audio samples=44544, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1004.000000, audio samples=44032, frames [executed=50, rendered=54] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1013.000000, audio samples=45056, frames [executed=51, rendered=53] vC64.html:1:368
time[ms]=1005.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1016.000000, audio samples=45056, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=57] vC64.html:1:368
time[ms]=1013.000000, audio samples=45056, frames [executed=51, rendered=58] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=54] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=55] vC64.html:1:368
time[ms]=1015.000000, audio samples=44544, frames [executed=51, rendered=59] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=51, rendered=55] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=60] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=56] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1014.000000, audio samples=45056, frames [executed=51, rendered=57] vC64.html:1:368
time[ms]=1001.000000, audio samples=44032, frames [executed=50, rendered=59] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=50] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1013.000000, audio samples=44544, frames [executed=51, rendered=60] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1002.000000, audio samples=44544, frames [executed=50, rendered=53] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=51, rendered=55] vC64.html:1:368
time[ms]=1002.000000, audio samples=44032, frames [executed=50, rendered=53] vC64.html:1:368
time[ms]=1014.000000, audio samples=45056, frames [executed=51, rendered=60] vC64.html:1:368
time[ms]=1003.000000, audio samples=44032, frames [executed=50, rendered=58] vC64.html:1:368
time[ms]=1004.000000, audio samples=44032, frames [executed=50, rendered=52] vC64.html:1:368
wow that is clean now 😎... you can see when it comes under stress (file dialog) when rendered frames goes down🤓 ...
very good now ... lets clean up a bit and then push it
wow that is clean now ...
Yeah, Baby! Crisp and clean! Push it, push it! 😎
to check the last consumer🤗 of mach_absolute_time I enabled
c64->sid.setDebugLevel(2);
when running vc64web ... this interestingly logs overflows in the sid every second or so 😳
when vc64web is halted it logs many many underruns per second ... watch out for MSG_HALT where the underruns wave begins
Question for the underruns... does that mean that when I put the c64web to halt, that I have to stop reading samples from the SID in my web audio stream ?
Question for the overruns ... does the web Audio has to read more often or a larger amount to prevent these ?
is it ok when I only read mono samples like in the current implementation?
Is the the over and underruns a bad thing that has to be corrected or should I just don't care about it ? Sound for my ears is fine anyway...
What is strange though is that the core periodcally likes to change sample rate from ... well ... 44100 to 44100 🙄... why did it want to do that ?🤔
SIDBridge: Changing sample rate from 44100 to 44100 vC64.html:1:528 ReSID: Setting sample rate to 44100 samples per second. vC64.html:1:528 FastSID: Setting sample rate to 44100 vC64.html:1:528