ver0.38
・スリープモード対応
・ソフトキーボードのキー入力が早すぎたのを修正(Ver0.37高速化でエンバグ)
・menuの[Reset with HELP key]でシステムセットアップメニューに
入れなくなっていたのを修正(Ver0.37高速化でエンバグ)
NP2 for PSP v0.38バイナリNP21 for PSP v0.38バイナリ
NP2/NP21 for PSP v0.38ソース
Ver0.37からのソース差分は以下な感じ
Index: psp/taskmng.c
===================================================================
--- psp/taskmng.c (revision 57)
+++ psp/taskmng.c (working copy)
@@ -637,6 +637,7 @@
// リセット後、しばらくHELPキーを押す
if (help_key_sending > 0) {
keystat_senddata(0x3f);
+ sceDisplayWaitVblankStart();
if (--help_key_sending == 0) {
keystat_senddata(0x3f | 0x80);
}
@@ -743,6 +744,7 @@
}
if (mouse_mode == pc98skbd) {
+ sceDisplayWaitVblankStart();
redraw |= skbd_mode(beingdown, beingup, button_down, &psppad);
goto done; //ソフトキーボードモードならここで終了
}
Index: psp/np2.c
===================================================================
--- psp/np2.c (revision 57)
+++ psp/np2.c (working copy)
@@ -155,7 +155,7 @@
}
}
-int exit_callback(void)
+int exit_callback(int arg1, int arg2, void *common)
{
exit_proc();
@@ -163,20 +163,25 @@
return 0;
}
-void power_callback(int unknown, int pwrflags)
+volatile int suspending = 0;
+
+int power_callback(int unknown, int pwrflags, void *common)
{
- int cbid;
- char *p;
+ if (pwrflags &
+ (PSP_POWER_CB_POWER_SWITCH | PSP_POWER_CB_SUSPENDING)) {
+ suspending = 1;
+ sceKernelSignalSema(exit_sem,1); // unlock
+ }
- if(pwrflags & PSP_POWER_CB_POWER_SWITCH){
- exit_proc();
+ if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE) {
+ sceKernelWaitSema(exit_sem, 1, 0); // lock
+ suspending = 0;
}
- cbid = sceKernelCreateCallback("Power Callback", power_callback, NULL);
- scePowerRegisterCallback(0, cbid);
+ return 0;
}
-int CallbackThread(void *arg)
+int CallbackThread(SceSize args, void *argp)
{
int cbid;
@@ -314,6 +319,10 @@
sceKernelWaitSema(exit_sem, 1, 0); // lock
while(taskmng_isavail()) {
+ if (suspending == 1) {
+ sceDisplayWaitVblankStart();
+ continue;
+ }
taskmng_rol();
if (menuvram) {
// menuを出している時は、emulationを停止する
@@ -376,7 +385,7 @@
}
sceKernelSignalSema(exit_sem,1); // unlock
- exit_callback();
+ exit_callback(0, 0, 0);
np2main_err5:
pccore_term();
pc98マウスモード時の△□ボタンはまだ効きません。実装忘れた...
スリープモードは、PSP-2000/5.50 GEN-D3とPSP go/6.20TN-Dにて確認しています。
更新お疲れ様です!
お礼にアフィぽちりました。
snesの方にも手を出していますが、NP2も忘れていませんので、よろしくお願いしますです。