libnds: soundDisable() makes lid closing hang the ARM7
Posted: Fri Oct 28, 2011 7:50 pm
Hi,
This code:
has a problem after soundDisable() is called: if the lid is closed, the ARM7 hangs. I've done some debugging, and this ARM7 line appears to produce the problem:
I'm using the latest version of everything.
EDIT: libnds/source/arm7/system.c, line 64, function powerValueHandler():
This won't work because sound registers don't work when the sound HW is powered off. I'd suggest to add a check to only call swiChangeSoundBias() when REG_POWERCNT's bit0 is 1.
This code:
Code: Select all
#include <nds.h>
#include <stdio.h>
int main()
{
consoleDemoInit();
iprintf("Hello World!\n");
soundEnable();
int i;
for (i = 0; i < 60; i ++) swiWaitForVBlank();
soundDisable();
iprintf("Now try to close the lid!\n");
for(;;);
swiWaitForVBlank();
}
Code: Select all
void disableSound() { // libnds/source/arm7/audio.c, line 139
(...)
powerOff(POWER_SOUND);
}
EDIT: libnds/source/arm7/system.c, line 64, function powerValueHandler():
Code: Select all
swiChangeSoundBias(0,0x400);
(...)
swiChangeSoundBias(1,0x400);