From 888eb26f8b372b355dc34a231a2d2dcf9e6e8dd4 Mon Sep 17 00:00:00 2001 From: John Willis Date: Wed, 16 Apr 2008 12:51:56 +0000 Subject: Small cleanup of the GP2X backend. Still a few odd things I need to glance at (like it is not working ;-)). svn-id: r31515 --- backends/platform/gp2x/events.cpp | 56 ++++++++---------------------- backends/platform/gp2x/gp2x-common.h | 26 +++++++------- backends/platform/gp2x/gp2x.cpp | 67 ++++++++++++++++++++++++++++++------ 3 files changed, 84 insertions(+), 65 deletions(-) (limited to 'backends') diff --git a/backends/platform/gp2x/events.cpp b/backends/platform/gp2x/events.cpp index b68c2619cc..bf3e331edd 100644 --- a/backends/platform/gp2x/events.cpp +++ b/backends/platform/gp2x/events.cpp @@ -308,33 +308,6 @@ bool OSystem_GP2X::pollEvent(Common::Event &event) { case SDL_KEYDOWN:{ b = event.kbd.flags = SDLModToOSystemKeyFlags(SDL_GetModState()); - // Alt-Return and Alt-Enter toggle full screen mode - if (b == Common::KBD_ALT && (ev.key.keysym.sym == SDLK_RETURN - || ev.key.keysym.sym == SDLK_KP_ENTER)) { - setFullscreenMode(!_fullscreen); - break; - } - - // Alt-S: Create a screenshot - if (b == Common::KBD_ALT && ev.key.keysym.sym == 's') { - char filename[20]; - - for (int n = 0;; n++) { - SDL_RWops *file; - - sprintf(filename, "scummvm%05d.bmp", n); - file = SDL_RWFromFile(filename, "r"); - if (!file) - break; - SDL_RWclose(file); - } - if (saveScreenshot(filename)) - printf("Saved '%s'\n", filename); - else - printf("Could not save screenshot!\n"); - break; - } - const bool event_complete = remapKey(ev,event); if (event_complete) @@ -452,9 +425,6 @@ bool OSystem_GP2X::pollEvent(Common::Event &event) { event.kbd.keycode = Common::KEYCODE_PERIOD; event.kbd.ascii = mapKey(SDLK_PERIOD, ev.key.keysym.mod, 0); } -// event.kbd.keycode = Common::KEYCODE_PERIOD; -// event.kbd.ascii = mapKey(SDLK_PERIOD, ev.key.keysym.mod, 0); - break; case GP2X_BUTTON_Y: if (GP2X_BUTTON_STATE_L == TRUE) { @@ -491,27 +461,29 @@ bool OSystem_GP2X::pollEvent(Common::Event &event) { // } // break; case GP2X_BUTTON_VOLUP: - if (GP2X_BUTTON_STATE_L == TRUE) { - displayMessageOnOSD("Setting CPU Speed at 230MHz"); - GP2X_setCpuspeed(200); + //if (GP2X_BUTTON_STATE_L == TRUE) { + // displayMessageOnOSD("Setting CPU Speed at 230MHz"); + // GP2X_setCpuspeed(200); //event.kbd.keycode = Common::KEYCODE_PLUS; //event.kbd.ascii = mapKey(SDLK_PLUS, ev.key.keysym.mod, 0); - } else { + //} else { GP2X_mixer_move_volume(1); displayMessageOnOSD("Increasing Volume"); - } + //} break; + case GP2X_BUTTON_VOLDOWN: - if (GP2X_BUTTON_STATE_L == TRUE) { - displayMessageOnOSD("Setting CPU Speed at 60MHz"); - GP2X_setCpuspeed(60); + //if (GP2X_BUTTON_STATE_L == TRUE) { + // displayMessageOnOSD("Setting CPU Speed at 60MHz"); + // GP2X_setCpuspeed(60); //event.kbd.keycode = Common::KEYCODE_MINUS; //event.kbd.ascii = mapKey(SDLK_MINUS, ev.key.keysym.mod, 0); - } else { + //} else { GP2X_mixer_move_volume(0); displayMessageOnOSD("Decreasing Volume"); - } + //} break; + } } return true; @@ -541,8 +513,8 @@ bool OSystem_GP2X::pollEvent(Common::Event &event) { event.kbd.ascii = mapKey(SDLK_PERIOD, ev.key.keysym.mod, 0); break; case GP2X_BUTTON_Y: -// event.kbd.keycode = Common::KEYCODE_SPACE; -// event.kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0); + event.kbd.keycode = Common::KEYCODE_SPACE; + event.kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0); break; case GP2X_BUTTON_START: event.kbd.keycode = Common::KEYCODE_RETURN; diff --git a/backends/platform/gp2x/gp2x-common.h b/backends/platform/gp2x/gp2x-common.h index 7f70f2d301..e8e128a249 100644 --- a/backends/platform/gp2x/gp2x-common.h +++ b/backends/platform/gp2x/gp2x-common.h @@ -148,9 +148,9 @@ public: void updateCD(); // Quit - virtual void quit(); // overloaded by CE backend + void quit(); - virtual void getTimeAndDate(struct tm &t) const; + void getTimeAndDate(struct tm &t) const; virtual Common::TimerManager *getTimerManager(); // Mutex handling @@ -175,17 +175,17 @@ public: void colorToRGB(OverlayColor color, uint8 &r, uint8 &g, uint8 &b); - virtual const GraphicsMode *getSupportedGraphicsModes() const; - virtual int getDefaultGraphicsMode() const; - virtual bool setGraphicsMode(int mode); - virtual int getGraphicsMode() const; + const GraphicsMode *getSupportedGraphicsModes() const; + int getDefaultGraphicsMode() const; + bool setGraphicsMode(int mode); + int getGraphicsMode() const; - virtual bool openCD(int drive); - virtual int getOutputSampleRate() const; + bool openCD(int drive); + int getOutputSampleRate() const; - virtual bool hasFeature(Feature f); - virtual void setFeatureState(Feature f, bool enable); - virtual bool getFeatureState(Feature f); + bool hasFeature(Feature f); + void setFeatureState(Feature f, bool enable); + bool getFeatureState(Feature f); void displayMessageOnOSD(const char *msg); @@ -367,6 +367,8 @@ protected: MutexRef _graphicsMutex; Common::SaveFileManager *_savefile; + FilesystemFactory *getFilesystemFactory(); + Audio::Mixer *_mixer; SDL_TimerID _timerID; @@ -396,7 +398,7 @@ protected: void setZoomOnMouse(); // GP2X: On > 240 high games zooms on the mouse + radius. - virtual bool saveScreenshot(const char *filename); + bool saveScreenshot(const char *filename); int effectiveScreenHeight() const { return (_adjustAspectRatio ? 240 : _screenHeight) * _scaleFactor; } diff --git a/backends/platform/gp2x/gp2x.cpp b/backends/platform/gp2x/gp2x.cpp index 3ebb982921..06c28d8f99 100644 --- a/backends/platform/gp2x/gp2x.cpp +++ b/backends/platform/gp2x/gp2x.cpp @@ -32,12 +32,14 @@ #include "backends/platform/gp2x/gp2x-hw.h" #include "backends/platform/gp2x/gp2x-mem.h" #include "common/config-manager.h" +#include "common/file.h" #include "common/util.h" #include "base/main.h" #include "backends/saves/default/default-saves.h" #include "backends/timer/default/default-timer.h" #include "backends/plugins/posix/posix-provider.h" +#include "backends/fs/posix/posix-fs-factory.h" // for getFilesystemFactory() #include "sound/mixer.h" #include @@ -46,7 +48,7 @@ #include #include #include -#include +#include // for getTimeAndDate() // Disable for normal serial logging. #define DUMP_STDOUT @@ -55,7 +57,11 @@ #include "config.h" #endif -#define SAMPLES_PER_SEC 11025 +#define SAMPLES_PER_SEC 11025 +//#define SAMPLES_PER_SEC 22050 +//#define SAMPLES_PER_SEC 44100 + + static Uint32 timer_handler(Uint32 interval, void *param) { ((DefaultTimerManager *)param)->handler(); @@ -63,10 +69,16 @@ static Uint32 timer_handler(Uint32 interval, void *param) { } int main(int argc, char *argv[]) { - extern OSystem *OSystem_GP2X_create(); - g_system = OSystem_GP2X_create(); + //extern OSystem *OSystem_GP2X_create(); + //g_system = OSystem_GP2X_create(); + g_system = new OSystem_GP2X(); assert(g_system); + // Check if Plugins are enabled (Using the hacked up GP2X provider) + #ifdef DYNAMIC_MODULES + PluginManager::instance().addPluginProvider(new GP2XPluginProvider()); + #endif + // Invoke the actual ScummVM main entry point: int res = scummvm_main(argc, argv); g_system->quit(); @@ -82,13 +94,13 @@ void OSystem_GP2X::initBackend() { ConfMan.setInt("joystick_num", 0); int joystick_num = ConfMan.getInt("joystick_num"); - uint32 sdlFlags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER; + uint32 sdlFlags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_EVENTTHREAD; - if (ConfMan.hasKey("disable_sdl_parachute")) - sdlFlags |= SDL_INIT_NOPARACHUTE; + //if (ConfMan.hasKey("disable_sdl_parachute")) + // sdlFlags |= SDL_INIT_NOPARACHUTE; - if (joystick_num > -1) - sdlFlags |= SDL_INIT_JOYSTICK; + //if (joystick_num > -1) + // sdlFlags |= SDL_INIT_JOYSTICK; if (SDL_Init(sdlFlags) == -1) { error("Could not initialize SDL: %s", SDL_GetError()); @@ -120,6 +132,21 @@ void OSystem_GP2X::initBackend() { ConfMan.registerDefault("savepath", savePath); + // Setup default extra data path for engine data files to be workingdir/engine-data + + char enginedataPath[PATH_MAX+1]; + + strcpy(enginedataPath, workDirName); + strcat(enginedataPath, "/engine-data"); + printf("Current engine-data directory: %s\n", enginedataPath); + //struct stat sb; + if (stat(enginedataPath, &sb) == -1) + if (errno == ENOENT) // Create the dir if it does not exist + if (mkdir(enginedataPath, 0755) != 0) + warning("mkdir for '%s' failed!", enginedataPath); + + Common::File::addDefaultDirectory(enginedataPath); + // Note: Review and clean this, it's OTT at the moment. #if defined(DUMP_STDOUT) @@ -316,6 +343,10 @@ Common::SaveFileManager *OSystem_GP2X::getSavefileManager() { return _savefile; } +FilesystemFactory *OSystem_GP2X::getFilesystemFactory() { + return &POSIXFilesystemFactory::instance(); +} + //void OSystem_GP2X::setTimerCallback(TimerProc callback, int timer) { // SDL_SetTimer(timer, (SDL_TimerCallback) callback); //} @@ -374,9 +405,23 @@ void OSystem_GP2X::quit() { SDL_JoystickClose(_joystick); //CloseRam(); GP2X_device_deinit(); + + SDL_RemoveTimer(_timerID); + SDL_CloseAudio(); + + free(_dirtyChecksums); + free(_currentPalette); + free(_cursorPalette); + free(_mouseData); + + delete _savefile; + delete _mixer; + delete _timer; + SDL_Quit(); - //chdir("/usr/gp2x"); - //execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL); + + delete getEventManager(); + exit(0); } -- cgit v1.2.3