[NGP] Ogre Battle Gaiden - missing, incorrect DAC speech [message #5822] |
Fri, 29 March 2019 21:31 |
|
Game isn't playing pcm correctly: fight it out, liberation, thank you, boo boo, lucky. Usually bad static which can keep wailing away well after the clip should normally stop.
Some odd core glitch from NEOPOP days randomly resets the ram playback ptr and sometimes the ram counter also.
https://github.com/libretro/beetle-ngp-libretro/issues/48
A temporary hackfix for playback.
https://github.com/libretro/beetle-ngp-libretro/pull/59
|
|
Re: [NGP] Ogre Battle Gaiden - missing, incorrect DAC speech [message #5827 is a reply to message #5822 ] |
Sun, 07 April 2019 16:34 |
|
https://github.com/libretro/beetle-ngp-libretro/issues/48#issuecomment-480631136
"trinemark" |
While the hack works, this is the fix we need:
void interrupt(uint8_t index, uint8_t level)
{
push32(pc);
push16(sr);
//Up the IFF
if (level < 7) level++;
setStatusIFF(level);
//Access the interrupt vector table to find the jump destination
pc = loadL(0x6FB8 + index * 4);
}
We are supposed to raise the firing interrupt by 1, not the actual current IFF. This will prevent game from firing IRQs inside the DAC IRQ routine, which breaks the speech.
As I do not know the interrupt levels, I am hesitant to submit an actual fix to the repo.
|
|
|