Thanks for nominating some more sample programs - the attached patch is a little hacky (the test in ula.c should be a little smarter) but seems to take care of Rana Rama and La Abadia del Crimen for me, does it also work for you?
The bottom line is that we need to mix in the tape sound as it is generated externally not by the ROM, but the ROM routines that are writing sound to the beeper need to not overwrite the tape part.
I don't want to lean on tape_is_playing() as there are occasions where a short beep tune is played while the tape is running (e.g. on some Ultimate titles).
Please let me know if you see any issues with the committed version of the fix.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Looks good. I guess extra parentheses were for this gcc warning...
peripherals/ula.c: In function ‘ula_write’:
peripherals/ula.c:125:41: warning: suggest parentheses around operand of ‘!’ or change ‘|’ to ‘||’ or ‘!’ to ‘~’ [-Wparentheses]
(!!(b & 0x10) << 1) + ( !(b & 0x8) | tape_microphone ) );
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Apparently broken since [r4021]. The tape_microphone variable is 0 while loading the custom data block.
Related
Commit: [r4021]
I guess this happens as we currently only output sound when the border colour changes, rana rama has a black border throughout the turbo block loader.
That's not the case:
La Abadía del Crimen has a flashing border but does not have sound either.
AMC and Extreme have a black border but they do have sound.
Thanks for nominating some more sample programs - the attached patch is a little hacky (the test in ula.c should be a little smarter) but seems to take care of Rana Rama and La Abadia del Crimen for me, does it also work for you?
I tried the patch with Fuse 1.1.1. It seems to work fine now, thanks!
Committed a proposed fix in [r5358].
The bottom line is that we need to mix in the tape sound as it is generated externally not by the ROM, but the ROM routines that are writing sound to the beeper need to not overwrite the tape part.
I don't want to lean on tape_is_playing() as there are occasions where a short beep tune is played while the tape is running (e.g. on some Ultimate titles).
Please let me know if you see any issues with the committed version of the fix.
It seems to work fine, thanks!
Looks good. I guess extra parentheses were for this gcc warning...
Thanks Sergio, addressed in [r5359].
Related
Commit: [r5359]