usbloadergx/source/settings/CGameSettings.h
Cyan cd3b443f4e * Improved GameCube controller functions (patch by Dynamit)
R+Z=Screenshot, X=Gameinfo window, Y=Covers download
* Added Classic Controller and GameCube Controller support
  in GameInfo window: 
  Right stick=3D Cover movement, X=Flip 3DCover 180°, L/R=Zoom
* Added Wifi6 and wifi10 pictures for GameInfo window.
  (Thanks OriginalHamster)
* Added device priority selection for GameCube listing
  in global Loader settings (SD->USB, or USB->SD)
* Added a "Use global" language setting for Gamecube games.
* Added support for USB devices with modified MBR's signature
  to prevent WiiU's format message.
* Prevent Rockband cursor display on GameCube and WiiWare
  games with "band" in the title (Crach bandicoot, Beach
  Bandits, etc.)
* Added Dol's Video mode patcher in Loader/Game settings,
  for games which couldn't be forced. (MadWorld, MotoGP08,
  Mario Party 8, etc.)
    ♦ Region patch = Patches the dol's known video modes
            to the region selected in "Video mode" setting,
            but keep interlace/progressive references.
    ♦ ON = Patch all dol's known video modes to the one
            selected in "Video mode" setting.
    ♦ ALL = Patch all dol's found video mode patterns 
            (even unknown video modes) to the one selected 
            in "Video mode" setting.

* DML: Updated DM(L) version detection up to v2.10
* DML: Automatically enable PADHook if Screenshot setting
       is enabled
* DML: Fixed a bug where multiple video modes could be set
       at the same time
* DEVO: Added a prompt if trying to launch a game from a 
        non FAT32 partition.
* DEVO: Added Direct Mapping Buttons setting (Devo r200+)
* DEVO: Added support for Language setting

* Language files updated: Chinese, French
2013-08-18 14:30:39 +00:00

142 lines
3.9 KiB
C++

#ifndef _GAME_SETTINGS_H_
#define _GAME_SETTINGS_H_
#include <string>
#include <stdio.h>
#include <gctypes.h>
#include <vector>
#include "usbloader/disc.h"
typedef struct _GameCFG
{
char id[7];
short video;
short videoPatchDol;
short aspectratio;
short language;
short ocarina;
short vipatch;
short ios;
short parentalcontrol;
short errorfix002;
short iosreloadblock;
short loadalternatedol;
u32 alternatedolstart;
short patchcountrystrings;
std::string alternatedolname;
short returnTo;
short sneekVideoPatch;
short NandEmuMode;
std::string NandEmuPath;
short Hooktype;
short WiirdDebugger;
short GameCubeMode;
short DMLVideo;
short DMLProgPatch;
short DMLNMM;
short DMLActivityLED;
short DMLPADHOOK;
short DMLNoDisc2;
short DMLWidescreen;
short DMLScreenshot;
short DMLJPNPatch;
short DMLDebug;
short DEVOMCEmulation;
short DEVOWidescreen;
short DEVOActivityLED;
short DEVOFZeroAX;
short DEVOTimerFix;
short DEVODButtons;
short Locked;
void operator=(const struct _GameCFG &game)
{
memcpy(this->id, game.id, sizeof(game.id));
this->video = game.video;
this->videoPatchDol = game.videoPatchDol;
this->aspectratio = game.aspectratio;
this->language = game.language;
this->ocarina = game.ocarina;
this->vipatch = game.vipatch;
this->ios = game.ios;
this->parentalcontrol = game.parentalcontrol;
this->errorfix002 = game.errorfix002;
this->iosreloadblock = game.iosreloadblock;
this->loadalternatedol = game.loadalternatedol;
this->alternatedolstart = game.alternatedolstart;
this->patchcountrystrings = game.patchcountrystrings;
this->alternatedolname = game.alternatedolname;
this->returnTo = game.returnTo;
this->sneekVideoPatch = game.sneekVideoPatch;
this->NandEmuMode = game.NandEmuMode;
this->NandEmuPath = game.NandEmuPath;
this->Hooktype = game.Hooktype;
this->WiirdDebugger = game.WiirdDebugger;
this->GameCubeMode = game.GameCubeMode;
this->DMLVideo = game.DMLVideo;
this->DMLProgPatch = game.DMLProgPatch;
this->DMLNMM = game.DMLNMM;
this->DMLActivityLED = game.DMLActivityLED;
this->DMLPADHOOK = game.DMLPADHOOK;
this->DMLNoDisc2 = game.DMLNoDisc2;
this->DMLWidescreen = game.DMLWidescreen;
this->DMLScreenshot = game.DMLScreenshot;
this->DMLJPNPatch = game.DMLJPNPatch;
this->DMLDebug = game.DMLDebug;
this->DEVOMCEmulation = game.DEVOMCEmulation;
this->DEVOWidescreen = game.DEVOWidescreen;
this->DEVOActivityLED = game.DEVOActivityLED;
this->DEVOFZeroAX = game.DEVOFZeroAX;
this->DEVOTimerFix = game.DEVOTimerFix;
this->DEVODButtons = game.DEVODButtons;
this->Locked = game.Locked;
}
} GameCFG;
class CGameSettings
{
public:
//!Constructor
CGameSettings();
//!Destructor
~CGameSettings();
//!Load
bool Load(const char * path);
//!Save
bool Save();
//!AddGame
bool AddGame(const GameCFG & NewGame);
//!Reset
bool RemoveAll();
//!Overload Reset for one Game
bool Remove(const char * id);
bool Remove(const u8 * id) { return Remove((const char *) id); }
bool Remove(const struct discHdr * game) { if(!game) return false; else return Remove(game->id); }
//!Get GameCFG
GameCFG * GetGameCFG(const char * id);
//!Overload
GameCFG * GetGameCFG(const u8 * id) { return GetGameCFG((const char *) id); }
//!Overload
GameCFG * GetGameCFG(const struct discHdr * game) { if(!game) return NULL; else return GetGameCFG(game->id); }
//!Quick settings to PEGI conversion
static int GetPartenalPEGI(int parentalsetting);
//!Set the default configuration block
void SetDefault(GameCFG &game);
protected:
bool ReadGameID(const char * src, char * GameID, int size);
bool SetSetting(GameCFG & game, const char *name, const char *value);
bool ValidVersion(FILE * file);
//!Find the config file in the default paths
bool FindConfig();
void ParseLine(char *line);
void TrimLine(std::string &dest, const char *src, char stopChar);
std::string ConfigPath;
std::vector<GameCFG> GameList;
GameCFG DefaultConfig;
};
extern CGameSettings GameSettings;
#endif