From 5d239ae7a46330845af01f9e5f429e78a099fbd9 Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 10 Aug 2008 10:18:36 +0000 Subject: [PATCH] Gizmondo port updated to 1.51b git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@567 be3aeb3a-fb24-0410-a615-afba39da0efa --- base_readme.txt | 12 ++++++++++++ common/common.h | 32 +++++++++++++++++++++++++++----- common/config.c | 2 +- pandora/asm_utils.s | 8 ++++++++ pandora/emu.c | 6 ++++-- 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/base_readme.txt b/base_readme.txt index 3cb98b0..6f8551b 100644 --- a/base_readme.txt +++ b/base_readme.txt @@ -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. #endif +@@1. "Disable idle loop patching" +Idle loop patching is used to improve performance, but may cause compatibility +problems in some rare cases. Try disabling this if your game has problems. + Sega/Mega CD options -------------------- @@ -449,6 +453,9 @@ There are 3 options: @@3. "Set to unscaled centered" Adjust the resizing options to set game image to it's original size. +@@3. "Set to 4:3 scaled" +Scale the image up, but keep 4:3 aspect, by adding black borders. + @@3. "Set to fullscreen" Adjust the resizing options to make the game image fullscreen. @@ -645,6 +652,11 @@ Additional thanks Changelog --------- +1.51b + * Fixed a crash when uncompressed savestate is loaded. + * Fixed an idle loop detection related hanging problem. + * PSP: fixed another palette related regression. + 1.51a * Fixed a sync problem between main and sub 68k. Should fix the hanging problem for some games. diff --git a/common/common.h b/common/common.h index 72bd17d..4945f5e 100644 --- a/common/common.h +++ b/common/common.h @@ -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) // ------------------------------------ diff --git a/common/config.c b/common/config.c index 55b1eae..eb6cedb 100644 --- a/common/config.c +++ b/common/config.c @@ -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); } diff --git a/pandora/asm_utils.s b/pandora/asm_utils.s index a117d2d..7d57c54 100644 --- a/pandora/asm_utils.s +++ b/pandora/asm_utils.s @@ -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: diff --git a/pandora/emu.c b/pandora/emu.c index 7c2af03..633d027 100644 --- a/pandora/emu.c +++ b/pandora/emu.c @@ -135,12 +135,13 @@ void emu_Deinit(void) void emu_prepareDefaultConfig(void) { memset(&defaultConfig, 0, sizeof(defaultConfig)); - defaultConfig.EmuOpt = 0x9f | 0x00700; // | <- ram_tmng, confirm_save, cd_leds + defaultConfig.EmuOpt = 0x8f | 0x00600; // | <- confirm_save, cd_leds defaultConfig.s_PicoOpt = 0x0f | POPT_EXT_FM|POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_SVP_DRC; defaultConfig.s_PicoOpt |= POPT_ACC_SPRITES|POPT_EN_MCD_GFX; defaultConfig.s_PicoOpt &= ~POPT_EN_SVP_DRC; // crashes :( + defaultConfig.EmuOpt &= ~8; // no save gzip defaultConfig.s_PsndRate = 44100; - defaultConfig.s_PicoRegion = 0; // auto + defaultConfig.s_PicoRegion = 0; defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP defaultConfig.s_PicoCDBuffers = 0; defaultConfig.Frameskip = 0; @@ -938,6 +939,7 @@ void emu_Loop(void) } bench_fps += frames_shown; sprintf(fpsbuff, "%3i/%3i/%3i", frames_shown, bench_fps_s, (bf[0]+bf[1]+bf[2]+bf[3])>>2); + printf("%s\n", fpsbuff); #else if (currentConfig.EmuOpt & 2) { sprintf(fpsbuff, "%3i/%3i", frames_shown, frames_done); -- 2.39.2