void GBAConfigMap(const struct GBAConfig* config, struct GBAOptions* opts) { _lookupCharValue(config, "bios", &opts->bios); _lookupCharValue(config, "shader", &opts->shader); _lookupIntValue(config, "logLevel", &opts->logLevel); _lookupIntValue(config, "frameskip", &opts->frameskip); _lookupIntValue(config, "volume", &opts->volume); _lookupIntValue(config, "rewindBufferCapacity", &opts->rewindBufferCapacity); _lookupIntValue(config, "rewindBufferInterval", &opts->rewindBufferInterval); _lookupFloatValue(config, "fpsTarget", &opts->fpsTarget); unsigned audioBuffers; if (_lookupUIntValue(config, "audioBuffers", &audioBuffers)) { opts->audioBuffers = audioBuffers; } _lookupUIntValue(config, "sampleRate", &opts->sampleRate); int fakeBool; if (_lookupIntValue(config, "useBios", &fakeBool)) { opts->useBios = fakeBool; } if (_lookupIntValue(config, "audioSync", &fakeBool)) { opts->audioSync = fakeBool; } if (_lookupIntValue(config, "videoSync", &fakeBool)) { opts->videoSync = fakeBool; } if (_lookupIntValue(config, "lockAspectRatio", &fakeBool)) { opts->lockAspectRatio = fakeBool; } if (_lookupIntValue(config, "resampleVideo", &fakeBool)) { opts->resampleVideo = fakeBool; } if (_lookupIntValue(config, "suspendScreensaver", &fakeBool)) { opts->suspendScreensaver = fakeBool; } if (_lookupIntValue(config, "mute", &fakeBool)) { opts->mute = fakeBool; } if (_lookupIntValue(config, "skipBios", &fakeBool)) { opts->skipBios = fakeBool; } if (_lookupIntValue(config, "rewindEnable", &fakeBool)) { opts->rewindEnable = fakeBool; } _lookupIntValue(config, "fullscreen", &opts->fullscreen); _lookupIntValue(config, "width", &opts->width); _lookupIntValue(config, "height", &opts->height); char* idleOptimization = 0; if (_lookupCharValue(config, "idleOptimization", &idleOptimization)) { if (strcasecmp(idleOptimization, "ignore") == 0) { opts->idleOptimization = IDLE_LOOP_IGNORE; } else if (strcasecmp(idleOptimization, "remove") == 0) { opts->idleOptimization = IDLE_LOOP_REMOVE; } else if (strcasecmp(idleOptimization, "detect") == 0) { opts->idleOptimization = IDLE_LOOP_DETECT; } free(idleOptimization); } }
bool GBAConfigGetUIntValue(const struct GBAConfig* config, const char* key, unsigned* value) { return _lookupUIntValue(config, key, value); }