Gizmondo port updated to 1.51b
authornotaz <notasas@gmail.com>
Sun, 10 Aug 2008 10:18:36 +0000 (10:18 +0000)
committernotaz <notasas@gmail.com>
Sun, 10 Aug 2008 10:18:36 +0000 (10:18 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@567 be3aeb3a-fb24-0410-a615-afba39da0efa

base_readme.txt
common/common.h
common/config.c
pandora/asm_utils.s
pandora/emu.c

index 3cb98b0..6f8551b 100644 (file)
@@ -369,6 +369,10 @@ Well known way to improve the GP2X performance. You must restart the emulator
 for the change of this option to take effect.\r
 \r
 #endif\r
+@@1. "Disable idle loop patching"\r
+Idle loop patching is used to improve performance, but may cause compatibility\r
+problems in some rare cases. Try disabling this if your game has problems.\r
+\r
 \r
 Sega/Mega CD options \r
 --------------------\r
@@ -449,6 +453,9 @@ There are 3 options:
 @@3. "Set to unscaled centered"\r
 Adjust the resizing options to set game image to it's original size.\r
 \r
+@@3. "Set to 4:3 scaled"\r
+Scale the image up, but keep 4:3 aspect, by adding black borders.\r
+\r
 @@3. "Set to fullscreen"\r
 Adjust the resizing options to make the game image fullscreen.\r
 \r
@@ -645,6 +652,11 @@ Additional thanks
 \r
 Changelog\r
 ---------\r
+1.51b\r
+  * Fixed a crash when uncompressed savestate is loaded.\r
+  * Fixed an idle loop detection related hanging problem.\r
+  * PSP: fixed another palette related regression.\r
+\r
 1.51a\r
   * Fixed a sync problem between main and sub 68k. Should fix the hanging\r
     problem for some games.\r
index 72bd17d..4945f5e 100644 (file)
@@ -41,11 +41,33 @@ void menu_flip(void);
 
 #elif defined(__GIZ__)
 
-// TODO
-//#include "../gizmondo/giz.h"
-#define SCREEN_WIDTH 321
-#define SCREEN_BUFFER menu_screen
-extern unsigned char *menu_screen;
+#include "../gizmondo/giz.h"
+
+#define BTN_NORTH BTN_STOP
+#define BTN_SOUTH BTN_PLAY
+#define BTN_WEST  BTN_REW
+#define BTN_EAST  BTN_FWD
+
+unsigned long wait_for_input(unsigned int interesting);
+void menu_draw_begin(int use_bgbuff);
+void menu_darken_bg(void *dst, const void *src, int pixels, int darker);
+void menu_draw_end(void);
+
+#define SCREEN_WIDTH  321
+#define SCREEN_HEIGHT 240
+#define SCREEN_BUFFER ((giz_screen != NULL) ? giz_screen : menu_screen)
+extern void *menu_screen;
+extern void *giz_screen;
+
+#define read_buttons(which) \
+       wait_for_input(which)
+#define read_buttons_async(which) 0
+#define menu_draw_begin() \
+       menu_draw_begin(1)
+#define clear_screen() \
+       memset(SCREEN_BUFFER, 0, SCREEN_WIDTH*SCREEN_HEIGHT*2)
+#define darken_screen() \
+       menu_darken_bg(menu_screen, menu_screen, SCREEN_WIDTH*SCREEN_HEIGHT, 0)
 
 // ------------------------------------
 
index 55b1eae..eb6cedb 100644 (file)
@@ -785,7 +785,7 @@ static void parse(const char *var, const char *val)
                        ret = custom_read(me, var, val);
                }
        }
-       if (!ret) lprintf("config_readsect: unhandled var: %s\n", var);
+       if (!ret) lprintf("config_readsect: unhandled var: \"%s\"\n", var);
 }
 
 
index a117d2d..7d57c54 100644 (file)
@@ -1,6 +1,14 @@
 @ vim:filetype=armasm
 
 
+.global cache_flush_d_inval_i
+
+cache_flush_d_inval_i:
+    mov     r2, #0x0  @ must be 0 ???
+    swi     0x9f0002
+    bx      lr
+
+
 .global clut_line @ void *dest, void *src, unsigned short *pal, int pixels_mask
 
 clut_line:
index 7c2af03..633d027 100644 (file)
@@ -135,12 +135,13 @@ void emu_Deinit(void)
 void emu_prepareDefaultConfig(void)\r
 {\r
        memset(&defaultConfig, 0, sizeof(defaultConfig));\r
-       defaultConfig.EmuOpt    = 0x9f | 0x00700; // | <- ram_tmng, confirm_save, cd_leds\r
+       defaultConfig.EmuOpt    = 0x8f | 0x00600; // | <- confirm_save, cd_leds\r
        defaultConfig.s_PicoOpt  = 0x0f | POPT_EXT_FM|POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_SVP_DRC;\r
        defaultConfig.s_PicoOpt |= POPT_ACC_SPRITES|POPT_EN_MCD_GFX;\r
        defaultConfig.s_PicoOpt &= ~POPT_EN_SVP_DRC; // crashes :(\r
+       defaultConfig.EmuOpt    &= ~8; // no save gzip\r
        defaultConfig.s_PsndRate = 44100;\r
-       defaultConfig.s_PicoRegion = 0; // auto\r
+       defaultConfig.s_PicoRegion = 0;\r
        defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP\r
        defaultConfig.s_PicoCDBuffers = 0;\r
        defaultConfig.Frameskip = 0;\r
@@ -938,6 +939,7 @@ void emu_Loop(void)
                        }\r
                        bench_fps += frames_shown;\r
                        sprintf(fpsbuff, "%3i/%3i/%3i", frames_shown, bench_fps_s, (bf[0]+bf[1]+bf[2]+bf[3])>>2);\r
+                       printf("%s\n", fpsbuff);\r
 #else\r
                        if (currentConfig.EmuOpt & 2) {\r
                                sprintf(fpsbuff, "%3i/%3i", frames_shown, frames_done);\r