all repos — mgba @ 9992282b1c35d8321dc44cd0ea4c11e27a42e8b0

mGBA Game Boy Advance Emulator

GBA: Add constant for invalid idle loop address
Jeffrey Pfau jeffrey@endrift.com
Thu, 29 Jan 2015 00:25:15 -0800
commit

9992282b1c35d8321dc44cd0ea4c11e27a42e8b0

parent

eb4f33e23a5b21cbb2159780dac3c4791ea209e4

4 files changed, 60 insertions(+), 58 deletions(-)

jump to
M src/gba/gba-overrides.csrc/gba/gba-overrides.c

@@ -12,102 +12,102 @@ #include "util/configuration.h"

static const struct GBACartridgeOverride _overrides[] = { // Boktai: The Sun is in Your Hand - { "U3IJ", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, - { "U3IE", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, - { "U3IP", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, + { "U3IJ", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, + { "U3IE", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, + { "U3IP", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, // Boktai 2: Solar Boy Django - { "U32J", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, - { "U32E", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, - { "U32P", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, + { "U32J", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, + { "U32E", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, + { "U32P", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, // Drill Dozer - { "V49J", SAVEDATA_SRAM, GPIO_RUMBLE, -1 }, - { "V49E", SAVEDATA_SRAM, GPIO_RUMBLE, -1 }, + { "V49J", SAVEDATA_SRAM, GPIO_RUMBLE, IDLE_LOOP_NONE }, + { "V49E", SAVEDATA_SRAM, GPIO_RUMBLE, IDLE_LOOP_NONE }, // Final Fantasy Tactics Advance { "AFXE", SAVEDATA_FLASH512, GPIO_NONE, 0x8000428 }, // Koro Koro Puzzle - Happy Panechu! - { "KHPJ", SAVEDATA_EEPROM, GPIO_TILT, -1 }, + { "KHPJ", SAVEDATA_EEPROM, GPIO_TILT, IDLE_LOOP_NONE }, // Mega Man Battle Network { "AREE", SAVEDATA_SRAM, GPIO_NONE, 0x800032E }, // Pokemon Ruby - { "AXVJ", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVE", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVP", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVI", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVS", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVD", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXVF", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, + { "AXVJ", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVE", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVP", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVI", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVS", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVD", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXVF", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, // Pokemon Sapphire - { "AXPJ", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPE", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPP", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPI", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPS", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPD", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "AXPF", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, + { "AXPJ", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPE", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPP", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPI", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPS", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPD", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "AXPF", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, // Pokemon Emerald - { "BPEJ", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPEE", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPEP", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPEI", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPES", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPED", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, - { "BPEF", SAVEDATA_FLASH1M, GPIO_RTC, -1 }, + { "BPEJ", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPEE", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPEP", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPEI", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPES", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPED", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, + { "BPEF", SAVEDATA_FLASH1M, GPIO_RTC, IDLE_LOOP_NONE }, // Pokemon Mystery Dungeon - { "B24J", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "B24E", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "B24P", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "B24U", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, + { "B24J", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "B24E", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "B24P", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "B24U", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, // Pokemon FireRed - { "BPRJ", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "BPRE", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "BPRP", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, + { "BPRJ", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "BPRE", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "BPRP", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, // Pokemon LeafGreen - { "BPGJ", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "BPGE", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "BPGP", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, + { "BPGJ", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "BPGE", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "BPGP", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, // RockMan EXE 4.5 - Real Operation - { "BR4J", SAVEDATA_FLASH512, GPIO_RTC, -1 }, + { "BR4J", SAVEDATA_FLASH512, GPIO_RTC, IDLE_LOOP_NONE }, // Shin Bokura no Taiyou: Gyakushuu no Sabata - { "U33J", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, -1 }, + { "U33J", SAVEDATA_EEPROM, GPIO_RTC | GPIO_LIGHT_SENSOR, IDLE_LOOP_NONE }, // Super Mario Advance 4 - { "AX4J", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "AX4E", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, - { "AX4P", SAVEDATA_FLASH1M, GPIO_NONE, -1 }, + { "AX4J", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "AX4E", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, + { "AX4P", SAVEDATA_FLASH1M, GPIO_NONE, IDLE_LOOP_NONE }, // Top Gun - Combat Zones - { "A2YE", SAVEDATA_FORCE_NONE, GPIO_NONE, -1 }, + { "A2YE", SAVEDATA_FORCE_NONE, GPIO_NONE, IDLE_LOOP_NONE }, // Wario Ware Twisted - { "RZWJ", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, -1 }, - { "RZWE", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, -1 }, - { "RZWP", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, -1 }, + { "RZWJ", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, IDLE_LOOP_NONE }, + { "RZWE", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, IDLE_LOOP_NONE }, + { "RZWP", SAVEDATA_SRAM, GPIO_RUMBLE | GPIO_GYRO, IDLE_LOOP_NONE }, // Yoshi's Universal Gravitation - { "KYGJ", SAVEDATA_EEPROM, GPIO_TILT, -1 }, - { "KYGE", SAVEDATA_EEPROM, GPIO_TILT, -1 }, - { "KYGP", SAVEDATA_EEPROM, GPIO_TILT, -1 }, + { "KYGJ", SAVEDATA_EEPROM, GPIO_TILT, IDLE_LOOP_NONE }, + { "KYGE", SAVEDATA_EEPROM, GPIO_TILT, IDLE_LOOP_NONE }, + { "KYGP", SAVEDATA_EEPROM, GPIO_TILT, IDLE_LOOP_NONE }, - { { 0, 0, 0, 0 }, 0, 0, -1 } + { { 0, 0, 0, 0 }, 0, 0, IDLE_LOOP_NONE } }; bool GBAOverrideFind(const struct Configuration* config, struct GBACartridgeOverride* override) { override->savetype = SAVEDATA_AUTODETECT; override->hardware = GPIO_NONE; - override->idleLoop = -1; + override->idleLoop = IDLE_LOOP_NONE; bool found; if (override->id[0] == 'F') {

@@ -203,7 +203,7 @@ } else {

ConfigurationClearValue(config, sectionName, "hardware"); } - if (override->idleLoop != 0xFFFFFFFF) { + if (override->idleLoop != IDLE_LOOP_NONE) { ConfigurationSetUIntValue(config, sectionName, "idleLoop", override->idleLoop); } else { ConfigurationClearValue(config, sectionName, "idleLoop");

@@ -239,7 +239,7 @@ GBAGPIOInitTilt(&gba->memory.gpio);

} } - if (override->idleLoop != 0xFFFFFFFF) { + if (override->idleLoop != IDLE_LOOP_NONE) { gba->idleLoop = override->idleLoop; if (gba->idleOptimization == IDLE_LOOP_DETECT) { gba->idleOptimization = IDLE_LOOP_REMOVE;
M src/gba/gba-overrides.hsrc/gba/gba-overrides.h

@@ -10,6 +10,8 @@ #include "util/common.h"

#include "gba-savedata.h" +#define IDLE_LOOP_NONE 0xFFFFFFFF + struct GBACartridgeOverride { char id[4]; enum SavedataType savetype;
M src/gba/gba.csrc/gba/gba.c

@@ -77,7 +77,7 @@

gba->biosChecksum = GBAChecksum(gba->memory.bios, SIZE_BIOS); gba->idleOptimization = IDLE_LOOP_REMOVE; - gba->idleLoop = -1; + gba->idleLoop = IDLE_LOOP_NONE; gba->lastJump = 0; gba->idleDetectionStep = 0; gba->idleDetectionFailures = 0;
M src/platform/qt/GamePakView.cppsrc/platform/qt/GamePakView.cpp

@@ -59,7 +59,7 @@ m_override = (GBACartridgeOverride) {

"", static_cast<SavedataType>(m_ui.savetype->currentIndex() - 1), GPIO_NO_OVERRIDE, - 0xFFFFFFFF + IDLE_LOOP_NONE }; if (!m_ui.hwAutodetect->isChecked()) {