Pārlūkot izejas kodu

some minor adjustments

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@304 be3aeb3a-fb24-0410-a615-afba39da0efa
notaz 16 gadi atpakaļ
vecāks
revīzija
7d0143a2de

+ 2 - 1
Pico/PicoInt.h

@@ -484,10 +484,11 @@ PICO_INTERNAL void z80_exit(void);
 #define EL_ANOMALY 0x8000 /* some unexpected conditions (during emulation) */
 
 #if EL_LOGMASK
+extern void lprintf(const char *fmt, ...);
 #define elprintf(w,f,...) \
 { \
 	if ((w) & EL_LOGMASK) \
-		printf("%05i:%03i: " f "\n",Pico.m.frame_count,Pico.m.scanline,##__VA_ARGS__); \
+		lprintf("%05i:%03i: " f "\n",Pico.m.frame_count,Pico.m.scanline,##__VA_ARGS__); \
 }
 #else
 #define elprintf(w,f,...)

+ 4 - 2
platform/base_readme.txt

@@ -636,10 +636,12 @@ Changelog
 1.35b
   * PSP: mp3 code should no longer fail on 1.5 firmware.
   + PSP: added gamma adjustment option.
-  + Added .cso format support. Useful for non-FMV games.
+  + Added .cso ISO format support. Useful for non-FMV games.
+  * It is now possile to force a region after the ROM is loaded.
   * Fixed a sram bug in memhandlers (fixes Shining in the Darkness saves).
   * PSP: fixed another bug in memhanlers, which crashed the emu for some games
-    (like NBA Jam).
+    (like NBA Jam and NHL 9x).
+  * Some other small tweaks I forgot about.
 
 1.35a
   * PSP: fixed a bug which prevented to load any ROMs after testing the BIOS.

+ 1 - 2
platform/common/lprintf.h

@@ -2,8 +2,7 @@
  #include <stdio.h>
  #define lprintf printf
 #elif defined(PSP)
- extern void lprintf_f(const char *fmt, ...);
- #define lprintf lprintf_f
+ extern void lprintf(const char *fmt, ...);
 #else
  #include "giz.h"
 #endif

+ 4 - 0
platform/gizmondo/menu.c

@@ -1211,6 +1211,10 @@ static void menu_options_save(void)
 	PicoOpt = currentConfig.PicoOpt;
 	PsndRate = currentConfig.PsndRate;
 	PicoRegionOverride = currentConfig.PicoRegion;
+	if (PicoRegionOverride) {
+		// force setting possibly changed..
+		Pico.m.pal = (PicoRegionOverride == 2 || PicoRegionOverride == 8) ? 1 : 0;
+	}
 	if (!(PicoOpt & 0x20)) {
 		// unbind XYZ MODE, just in case
 		unbind_action(0xf00);

+ 4 - 0
platform/gp2x/menu.c

@@ -1250,6 +1250,10 @@ static void menu_options_save(void)
 	PicoOpt = currentConfig.PicoOpt;
 	PsndRate = currentConfig.PsndRate;
 	PicoRegionOverride = currentConfig.PicoRegion;
+	if (PicoRegionOverride) {
+		// force setting possibly changed..
+		Pico.m.pal = (PicoRegionOverride == 2 || PicoRegionOverride == 8) ? 1 : 0;
+	}
 	if (!(PicoOpt & 0x20)) {
 		// unbind XYZ MODE, just in case
 		unbind_action(0xf00, -1, -1);

+ 1 - 0
platform/psp/emu.h

@@ -14,6 +14,7 @@ enum TPicoGameState {
 	PGS_ReloadRom,
 	PGS_Menu,
 	PGS_RestartRun,
+	PGS_Suspending,
 };
 
 extern char romFileName[];

+ 4 - 0
platform/psp/main.c

@@ -65,6 +65,10 @@ int pico_main(void)
 				}
 				break;
 
+			case PGS_Suspending:
+				psp_wait_suspend();
+				break;
+
 			case PGS_RestartRun:
 				engineState = PGS_Running;
 

+ 4 - 0
platform/psp/menu.c

@@ -1394,6 +1394,10 @@ static void menu_options_save(void)
 	PicoOpt = currentConfig.PicoOpt;
 	PsndRate = currentConfig.PsndRate;
 	PicoRegionOverride = currentConfig.PicoRegion;
+	if (PicoRegionOverride) {
+		// force setting possibly changed..
+		Pico.m.pal = (PicoRegionOverride == 2 || PicoRegionOverride == 8) ? 1 : 0;
+	}
 	if (!(PicoOpt & 0x20)) {
 		// unbind XYZ MODE, just in case
 		unbind_action(0xf00);

+ 19 - 4
platform/psp/psp.c

@@ -70,12 +70,21 @@ static int exit_callback(int arg1, int arg2, void *common)
 /* Power Callback */
 static int power_callback(int unknown, int pwrflags, void *common)
 {
+	static int old_state = PGS_Menu;
+
+	lprintf("power_callback: flags: 0x%08X\n", pwrflags);
+
 	/* check for power switch and suspending as one is manual and the other automatic */
-	if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING)
+	if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING || pwrflags & PSP_POWER_CB_STANDBY)
 	{
-		lprintf("power_callback: flags: 0x%08X: suspending\n", pwrflags);
-		engineState = PGS_Menu;
+		if (engineState != PGS_Suspending) {
+			old_state = engineState;
+			engineState = PGS_Suspending;
+		}
 	}
+	else if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE)
+		engineState = old_state;
+
 	//sceDisplayWaitVblankStart();
 	return 0;
 }
@@ -238,6 +247,12 @@ char *psp_get_status_line(void)
 	return buff;
 }
 
+void psp_wait_suspend(void)
+{
+	// probably should do something smarter here?
+	sceDisplayWaitVblankStart();
+}
+
 /* alt logging */
 #define LOG_FILE "log.txt"
 
@@ -251,7 +266,7 @@ typedef struct _log_entry
 static log_entry *le_root = NULL;
 #endif
 
-void lprintf_f(const char *fmt, ...)
+void lprintf(const char *fmt, ...)
 {
 	va_list vl;
 

+ 2 - 0
platform/psp/psp.h

@@ -43,6 +43,8 @@ int psp_set_cpu_clock(int clock);
 
 char *psp_get_status_line(void);
 
+void psp_wait_suspend(void);
+
 /* shorter btn names */
 #define BTN_UP       PSP_CTRL_UP
 #define BTN_LEFT     PSP_CTRL_LEFT