int sceLedInit(void) { int i; memset(&leds, 0, 0xF0); g_00000F40 = 2; leds[LED_TYPE_MS].gpioPort = 6; leds[LED_TYPE_MS].unk2 = 0; leds[LED_TYPE_WLAN].gpioPort = 7; leds[LED_TYPE_WLAN].unk2 = 1; int model = sceKernelGetModel(); if((model - 1 < 2) || model == 4) { leds[LED_TYPE_WLAN].unk1 = 1; } if(((model - 4) < 2) || model == 7 || model == 9) { //loc_0000022C leds[LED_TYPE_BT].gpioPort = 24; leds[LED_TYPE_BT].unk2 = 3; if(model == 4) leds[LED_TYPE_BT].unk1 = 1; g_00000F40 = 3; } if(g_00000F40 >= 0) { for(i = 0; i < g_00000F40; i++) { //loc_000000D4 if(sceGpioGetPortMode(leds[i].gpioPort) == 2) { //loc_00000210 sceGpioSetPortMode(leds[i].gpioPort, 0); if(leds[i].unk1 == 0) { //loc_000001AC sceGpioPortClear(1 << leds[i].gpioPort); continue; } } else if(i == LED_TYPE_BT) { //loc_000001BC int gpioPort = sceGpioPortRead(); int btStatus = sceSysconGetBtPowerStatus(); if(((btStatus == 0) ? 0 : (((gpioPort >> leds[i].gpioPort) & 1) ^ leds[i].unk1)) != 0) { //loc_000001FC sceLedSetMode(2, 1, 0); continue; } else { if(leds[i].unk1 == 0) { //loc_000001AC sceGpioPortClear(1 << leds[i].gpioPort); //since i is 2 then this is 160, but I wanted it to be uniform continue; } } } else { if(leds[i].unk1 == 0)
int sceHibariUnk13() { return !(sceGpioPortRead() & 1); }