En PAlib está mamado, y viendo el código puedo asegurarte que en libnds también lo está ;)
En PAlib sólo tienes que hacer PA_CheckLid(), función que devolverá 0 si la consola no estuvo cerrada, y 1 en caso de si haberlo estado y haber sido reabierta. Este es su código:
u8 PA_CheckLid(void) {
if (!PA_LidClosed()) return 0;
else {
u16 power_cr = POWER_CR; // backup the power...
POWER_CR = 0; // Shutdown everything :p
// Wait for the lid to be opened again...
while(PA_LidClosed()) PA_WaitForVBL();
// Return the power !
POWER_CR = power_cr;
return 1;
}
}
PA_WaitForVBL supongo que sabes lo que es... Vale pues quizás te estés preguntando qué es PA_LidClosed, pues aquí tienes el código:
#define PA_LidClosed() (IPC->buttons>>7)
Espero que te sirva
Un saludo!