GBA: Remove some magic numbers for main pointers and save types size
This commit is contained in:
parent
0697922179
commit
e912c359f6
|
@ -11,11 +11,11 @@ int eepromByte = 0;
|
||||||
int eepromBits = 0;
|
int eepromBits = 0;
|
||||||
int eepromAddress = 0;
|
int eepromAddress = 0;
|
||||||
|
|
||||||
uint8_t eepromData[0x2000];
|
uint8_t eepromData[SIZE_EEPROM_8K];
|
||||||
|
|
||||||
uint8_t eepromBuffer[16];
|
uint8_t eepromBuffer[16];
|
||||||
bool eepromInUse = false;
|
bool eepromInUse = false;
|
||||||
int eepromSize = 512;
|
int eepromSize = SIZE_EEPROM_512;
|
||||||
|
|
||||||
variable_desc eepromSaveData[] = {
|
variable_desc eepromSaveData[] = {
|
||||||
{ &eepromMode, sizeof(int) },
|
{ &eepromMode, sizeof(int) },
|
||||||
|
@ -23,7 +23,7 @@ variable_desc eepromSaveData[] = {
|
||||||
{ &eepromBits, sizeof(int) },
|
{ &eepromBits, sizeof(int) },
|
||||||
{ &eepromAddress, sizeof(int) },
|
{ &eepromAddress, sizeof(int) },
|
||||||
{ &eepromInUse, sizeof(bool) },
|
{ &eepromInUse, sizeof(bool) },
|
||||||
{ &eepromData[0], 512 },
|
{ &eepromData[0], SIZE_EEPROM_512 },
|
||||||
{ &eepromBuffer[0], 16 },
|
{ &eepromBuffer[0], 16 },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
@ -31,7 +31,7 @@ variable_desc eepromSaveData[] = {
|
||||||
void eepromInit()
|
void eepromInit()
|
||||||
{
|
{
|
||||||
eepromInUse = false;
|
eepromInUse = false;
|
||||||
eepromSize = 512;
|
eepromSize = SIZE_EEPROM_512;
|
||||||
memset(eepromData, 255, sizeof(eepromData));
|
memset(eepromData, 255, sizeof(eepromData));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ void eepromSaveGame(uint8_t*& data)
|
||||||
{
|
{
|
||||||
utilWriteDataMem(data, eepromSaveData);
|
utilWriteDataMem(data, eepromSaveData);
|
||||||
utilWriteIntMem(data, eepromSize);
|
utilWriteIntMem(data, eepromSize);
|
||||||
utilWriteMem(data, eepromData, 0x2000);
|
utilWriteMem(data, eepromData, SIZE_EEPROM_8K);
|
||||||
}
|
}
|
||||||
|
|
||||||
void eepromReadGame(const uint8_t*& data, int version)
|
void eepromReadGame(const uint8_t*& data, int version)
|
||||||
|
@ -56,10 +56,10 @@ void eepromReadGame(const uint8_t*& data, int version)
|
||||||
utilReadDataMem(data, eepromSaveData);
|
utilReadDataMem(data, eepromSaveData);
|
||||||
if (version >= SAVE_GAME_VERSION_3) {
|
if (version >= SAVE_GAME_VERSION_3) {
|
||||||
eepromSize = utilReadIntMem(data);
|
eepromSize = utilReadIntMem(data);
|
||||||
utilReadMem(eepromData, data, 0x2000);
|
utilReadMem(eepromData, data, SIZE_EEPROM_8K);
|
||||||
} else {
|
} else {
|
||||||
// prior to 0.7.1, only 4K EEPROM was supported
|
// prior to 0.7.1, only 4K EEPROM was supported
|
||||||
eepromSize = 512;
|
eepromSize = SIZE_EEPROM_512;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ void eepromSaveGame(gzFile gzFile)
|
||||||
{
|
{
|
||||||
utilWriteData(gzFile, eepromSaveData);
|
utilWriteData(gzFile, eepromSaveData);
|
||||||
utilWriteInt(gzFile, eepromSize);
|
utilWriteInt(gzFile, eepromSize);
|
||||||
utilGzWrite(gzFile, eepromData, 0x2000);
|
utilGzWrite(gzFile, eepromData, SIZE_EEPROM_8K);
|
||||||
}
|
}
|
||||||
|
|
||||||
void eepromReadGame(gzFile gzFile, int version)
|
void eepromReadGame(gzFile gzFile, int version)
|
||||||
|
@ -77,10 +77,10 @@ void eepromReadGame(gzFile gzFile, int version)
|
||||||
utilReadData(gzFile, eepromSaveData);
|
utilReadData(gzFile, eepromSaveData);
|
||||||
if (version >= SAVE_GAME_VERSION_3) {
|
if (version >= SAVE_GAME_VERSION_3) {
|
||||||
eepromSize = utilReadInt(gzFile);
|
eepromSize = utilReadInt(gzFile);
|
||||||
utilGzRead(gzFile, eepromData, 0x2000);
|
utilGzRead(gzFile, eepromData, SIZE_EEPROM_8K);
|
||||||
} else {
|
} else {
|
||||||
// prior to 0.7.1, only 4K EEPROM was supported
|
// prior to 0.7.1, only 4K EEPROM was supported
|
||||||
eepromSize = 512;
|
eepromSize = SIZE_EEPROM_512;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ void eepromReadGameSkip(gzFile gzFile, int version)
|
||||||
utilReadDataSkip(gzFile, eepromSaveData);
|
utilReadDataSkip(gzFile, eepromSaveData);
|
||||||
if (version >= SAVE_GAME_VERSION_3) {
|
if (version >= SAVE_GAME_VERSION_3) {
|
||||||
utilGzSeek(gzFile, sizeof(int), SEEK_CUR);
|
utilGzSeek(gzFile, sizeof(int), SEEK_CUR);
|
||||||
utilGzSeek(gzFile, 0x2000, SEEK_CUR);
|
utilGzSeek(gzFile, SIZE_EEPROM_8K, SEEK_CUR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -150,7 +150,7 @@ void eepromWrite(uint32_t /* address */, uint8_t value)
|
||||||
if (cpuDmaCount == 0x11 || cpuDmaCount == 0x51) {
|
if (cpuDmaCount == 0x11 || cpuDmaCount == 0x51) {
|
||||||
if (eepromBits == 0x11) {
|
if (eepromBits == 0x11) {
|
||||||
eepromInUse = true;
|
eepromInUse = true;
|
||||||
eepromSize = 0x2000;
|
eepromSize = SIZE_EEPROM_8K;
|
||||||
eepromAddress = ((eepromBuffer[0] & 0x3F) << 8) | ((eepromBuffer[1] & 0xFF));
|
eepromAddress = ((eepromBuffer[0] & 0x3F) << 8) | ((eepromBuffer[1] & 0xFF));
|
||||||
if (!(eepromBuffer[0] & 0x40)) {
|
if (!(eepromBuffer[0] & 0x40)) {
|
||||||
eepromBuffer[0] = bit;
|
eepromBuffer[0] = bit;
|
||||||
|
|
|
@ -18,11 +18,11 @@
|
||||||
#define FLASH_PROGRAM 8
|
#define FLASH_PROGRAM 8
|
||||||
#define FLASH_SETBANK 9
|
#define FLASH_SETBANK 9
|
||||||
|
|
||||||
uint8_t flashSaveMemory[FLASH_128K_SZ];
|
uint8_t flashSaveMemory[SIZE_FLASH1M];
|
||||||
|
|
||||||
int flashState = FLASH_READ_ARRAY;
|
int flashState = FLASH_READ_ARRAY;
|
||||||
int flashReadState = FLASH_READ_ARRAY;
|
int flashReadState = FLASH_READ_ARRAY;
|
||||||
int flashSize = 0x10000;
|
int flashSize = SIZE_FLASH512;
|
||||||
int flashDeviceID = 0x1b;
|
int flashDeviceID = 0x1b;
|
||||||
int flashManufacturerID = 0x32;
|
int flashManufacturerID = 0x32;
|
||||||
int flashBank = 0;
|
int flashBank = 0;
|
||||||
|
@ -30,7 +30,7 @@ int flashBank = 0;
|
||||||
static variable_desc flashSaveData[] = {
|
static variable_desc flashSaveData[] = {
|
||||||
{ &flashState, sizeof(int) },
|
{ &flashState, sizeof(int) },
|
||||||
{ &flashReadState, sizeof(int) },
|
{ &flashReadState, sizeof(int) },
|
||||||
{ &flashSaveMemory[0], 0x10000 },
|
{ &flashSaveMemory[0], SIZE_FLASH512 },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ static variable_desc flashSaveData2[] = {
|
||||||
{ &flashState, sizeof(int) },
|
{ &flashState, sizeof(int) },
|
||||||
{ &flashReadState, sizeof(int) },
|
{ &flashReadState, sizeof(int) },
|
||||||
{ &flashSize, sizeof(int) },
|
{ &flashSize, sizeof(int) },
|
||||||
{ &flashSaveMemory[0], 0x20000 },
|
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ static variable_desc flashSaveData3[] = {
|
||||||
{ &flashReadState, sizeof(int) },
|
{ &flashReadState, sizeof(int) },
|
||||||
{ &flashSize, sizeof(int) },
|
{ &flashSize, sizeof(int) },
|
||||||
{ &flashBank, sizeof(int) },
|
{ &flashBank, sizeof(int) },
|
||||||
{ &flashSaveMemory[0], 0x20000 },
|
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ void flashReadGameSkip(gzFile gzFile, int version)
|
||||||
void flashSetSize(int size)
|
void flashSetSize(int size)
|
||||||
{
|
{
|
||||||
// log("Setting flash size to %d\n", size);
|
// log("Setting flash size to %d\n", size);
|
||||||
if (size == 0x10000) {
|
if (size == SIZE_FLASH512) {
|
||||||
flashDeviceID = 0x1b;
|
flashDeviceID = 0x1b;
|
||||||
flashManufacturerID = 0x32;
|
flashManufacturerID = 0x32;
|
||||||
} else {
|
} else {
|
||||||
|
@ -118,8 +118,8 @@ void flashSetSize(int size)
|
||||||
}
|
}
|
||||||
// Added to make 64k saves compatible with 128k ones
|
// Added to make 64k saves compatible with 128k ones
|
||||||
// (allow wrongfuly set 64k saves to work for Pokemon games)
|
// (allow wrongfuly set 64k saves to work for Pokemon games)
|
||||||
if ((size == 0x20000) && (flashSize == 0x10000))
|
if ((size == SIZE_FLASH1M) && (flashSize == SIZE_FLASH512))
|
||||||
memcpy((uint8_t*)(flashSaveMemory + 0x10000), (uint8_t*)(flashSaveMemory), 0x10000);
|
memcpy((uint8_t*)(flashSaveMemory + SIZE_FLASH512), (uint8_t*)(flashSaveMemory), SIZE_FLASH512);
|
||||||
flashSize = size;
|
flashSize = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ void flashWrite(uint32_t address, uint8_t byte)
|
||||||
flashReadState = FLASH_READ_ARRAY;
|
flashReadState = FLASH_READ_ARRAY;
|
||||||
} else if (byte == 0xA0) {
|
} else if (byte == 0xA0) {
|
||||||
flashState = FLASH_PROGRAM;
|
flashState = FLASH_PROGRAM;
|
||||||
} else if (byte == 0xB0 && flashSize == 0x20000) {
|
} else if (byte == 0xB0 && flashSize == SIZE_FLASH1M) {
|
||||||
flashState = FLASH_SETBANK;
|
flashState = FLASH_SETBANK;
|
||||||
} else {
|
} else {
|
||||||
flashState = FLASH_READ_ARRAY;
|
flashState = FLASH_READ_ARRAY;
|
||||||
|
|
112
src/gba/GBA.cpp
112
src/gba/GBA.cpp
|
@ -75,11 +75,11 @@ static profile_segment* profilSegment = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BKPT_SUPPORT
|
#ifdef BKPT_SUPPORT
|
||||||
uint8_t freezeWorkRAM[WORK_RAM_SIZE];
|
uint8_t freezeWorkRAM[SIZE_WRAM];
|
||||||
uint8_t freezeInternalRAM[0x8000];
|
uint8_t freezeInternalRAM[SIZE_IRAM];
|
||||||
uint8_t freezeVRAM[0x18000];
|
uint8_t freezeVRAM[0x18000];
|
||||||
uint8_t freezePRAM[0x400];
|
uint8_t freezePRAM[SIZE_PRAM];
|
||||||
uint8_t freezeOAM[0x400];
|
uint8_t freezeOAM[SIZE_OAM];
|
||||||
bool debugger_last;
|
bool debugger_last;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -458,7 +458,7 @@ variable_desc saveGameStruct[] = {
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int romSize = ROM_SIZE;
|
static int romSize = SIZE_ROM;
|
||||||
|
|
||||||
#ifdef PROFILING
|
#ifdef PROFILING
|
||||||
void cpuProfil(profile_segment* seg)
|
void cpuProfil(profile_segment* seg)
|
||||||
|
@ -593,13 +593,13 @@ unsigned int CPUWriteState(uint8_t* data, unsigned size)
|
||||||
utilWriteIntMem(data, stopState);
|
utilWriteIntMem(data, stopState);
|
||||||
utilWriteIntMem(data, IRQTicks);
|
utilWriteIntMem(data, IRQTicks);
|
||||||
|
|
||||||
utilWriteMem(data, internalRAM, 0x8000);
|
utilWriteMem(data, internalRAM, SIZE_IRAM);
|
||||||
utilWriteMem(data, paletteRAM, 0x400);
|
utilWriteMem(data, paletteRAM, SIZE_PRAM);
|
||||||
utilWriteMem(data, workRAM, WORK_RAM_SIZE);
|
utilWriteMem(data, workRAM, SIZE_WRAM);
|
||||||
utilWriteMem(data, vram, 0x20000);
|
utilWriteMem(data, vram, SIZE_VRAM);
|
||||||
utilWriteMem(data, oam, 0x400);
|
utilWriteMem(data, oam, SIZE_OAM);
|
||||||
utilWriteMem(data, pix, 4 * 240 * 160);
|
utilWriteMem(data, pix, SIZE_PIX);
|
||||||
utilWriteMem(data, ioMem, 0x400);
|
utilWriteMem(data, ioMem, SIZE_IOMEM);
|
||||||
|
|
||||||
eepromSaveGame(data);
|
eepromSaveGame(data);
|
||||||
flashSaveGame(data);
|
flashSaveGame(data);
|
||||||
|
@ -643,13 +643,13 @@ bool CPUReadState(const uint8_t* data, unsigned size)
|
||||||
IRQTicks = 0;
|
IRQTicks = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
utilReadMem(internalRAM, data, 0x8000);
|
utilReadMem(internalRAM, data, SIZE_IRAM);
|
||||||
utilReadMem(paletteRAM, data, 0x400);
|
utilReadMem(paletteRAM, data, SIZE_PRAM);
|
||||||
utilReadMem(workRAM, data, WORK_RAM_SIZE);
|
utilReadMem(workRAM, data, SIZE_WRAM);
|
||||||
utilReadMem(vram, data, 0x20000);
|
utilReadMem(vram, data, SIZE_VRAM);
|
||||||
utilReadMem(oam, data, 0x400);
|
utilReadMem(oam, data, SIZE_OAM);
|
||||||
utilReadMem(pix, data, 4 * 240 * 160);
|
utilReadMem(pix, data, SIZE_PIX);
|
||||||
utilReadMem(ioMem, data, 0x400);
|
utilReadMem(ioMem, data, SIZE_IOMEM);
|
||||||
|
|
||||||
eepromReadGame(data, version);
|
eepromReadGame(data, version);
|
||||||
flashReadGame(data, version);
|
flashReadGame(data, version);
|
||||||
|
@ -705,13 +705,13 @@ static bool CPUWriteState(gzFile gzFile)
|
||||||
// new to version 0.8
|
// new to version 0.8
|
||||||
utilWriteInt(gzFile, IRQTicks);
|
utilWriteInt(gzFile, IRQTicks);
|
||||||
|
|
||||||
utilGzWrite(gzFile, internalRAM, 0x8000);
|
utilGzWrite(gzFile, internalRAM, SIZE_IRAM);
|
||||||
utilGzWrite(gzFile, paletteRAM, 0x400);
|
utilGzWrite(gzFile, paletteRAM, SIZE_PRAM);
|
||||||
utilGzWrite(gzFile, workRAM, WORK_RAM_SIZE);
|
utilGzWrite(gzFile, workRAM, SIZE_WRAM);
|
||||||
utilGzWrite(gzFile, vram, 0x20000);
|
utilGzWrite(gzFile, vram, SIZE_VRAM);
|
||||||
utilGzWrite(gzFile, oam, 0x400);
|
utilGzWrite(gzFile, oam, SIZE_OAM);
|
||||||
utilGzWrite(gzFile, pix, 4 * 241 * 162);
|
utilGzWrite(gzFile, pix, SIZE_PIX);
|
||||||
utilGzWrite(gzFile, ioMem, 0x400);
|
utilGzWrite(gzFile, ioMem, SIZE_IOMEM);
|
||||||
|
|
||||||
eepromSaveGame(gzFile);
|
eepromSaveGame(gzFile);
|
||||||
flashSaveGame(gzFile);
|
flashSaveGame(gzFile);
|
||||||
|
@ -819,16 +819,16 @@ static bool CPUReadState(gzFile gzFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
utilGzRead(gzFile, internalRAM, 0x8000);
|
utilGzRead(gzFile, internalRAM, SIZE_IRAM);
|
||||||
utilGzRead(gzFile, paletteRAM, 0x400);
|
utilGzRead(gzFile, paletteRAM, SIZE_PRAM);
|
||||||
utilGzRead(gzFile, workRAM, WORK_RAM_SIZE);
|
utilGzRead(gzFile, workRAM, SIZE_WRAM);
|
||||||
utilGzRead(gzFile, vram, 0x20000);
|
utilGzRead(gzFile, vram, SIZE_VRAM);
|
||||||
utilGzRead(gzFile, oam, 0x400);
|
utilGzRead(gzFile, oam, SIZE_OAM);
|
||||||
if (version < SAVE_GAME_VERSION_6)
|
if (version < SAVE_GAME_VERSION_6)
|
||||||
utilGzRead(gzFile, pix, 4 * 240 * 160);
|
utilGzRead(gzFile, pix, 4 * 240 * 160);
|
||||||
else
|
else
|
||||||
utilGzRead(gzFile, pix, 4 * 241 * 162);
|
utilGzRead(gzFile, pix, SIZE_PIX);
|
||||||
utilGzRead(gzFile, ioMem, 0x400);
|
utilGzRead(gzFile, ioMem, SIZE_IOMEM);
|
||||||
|
|
||||||
if (skipSaveGameBattery) {
|
if (skipSaveGameBattery) {
|
||||||
// skip eeprom data
|
// skip eeprom data
|
||||||
|
@ -1448,20 +1448,20 @@ void SetMapMasks()
|
||||||
|
|
||||||
int CPULoadRom(const char* szFile)
|
int CPULoadRom(const char* szFile)
|
||||||
{
|
{
|
||||||
romSize = ROM_SIZE;
|
romSize = SIZE_ROM;
|
||||||
if (rom != NULL) {
|
if (rom != NULL) {
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
||||||
|
|
||||||
rom = (uint8_t*)malloc(romSize);
|
rom = (uint8_t*)malloc(SIZE_ROM);
|
||||||
if (rom == NULL) {
|
if (rom == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"ROM");
|
"ROM");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
workRAM = (uint8_t*)calloc(1, WORK_RAM_SIZE);
|
workRAM = (uint8_t*)calloc(1, SIZE_WRAM);
|
||||||
if (workRAM == NULL) {
|
if (workRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"WRAM");
|
"WRAM");
|
||||||
|
@ -1513,35 +1513,35 @@ int CPULoadRom(const char* szFile)
|
||||||
temp++;
|
temp++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bios = (uint8_t*)calloc(1, 0x4000);
|
bios = (uint8_t*)calloc(1, SIZE_BIOS);
|
||||||
if (bios == NULL) {
|
if (bios == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"BIOS");
|
"BIOS");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
internalRAM = (uint8_t*)calloc(1, 0x8000);
|
internalRAM = (uint8_t*)calloc(1, SIZE_IRAM);
|
||||||
if (internalRAM == NULL) {
|
if (internalRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"IRAM");
|
"IRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
paletteRAM = (uint8_t*)calloc(1, 0x400);
|
paletteRAM = (uint8_t*)calloc(1, SIZE_PRAM);
|
||||||
if (paletteRAM == NULL) {
|
if (paletteRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"PRAM");
|
"PRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
vram = (uint8_t*)calloc(1, 0x20000);
|
vram = (uint8_t*)calloc(1, SIZE_VRAM);
|
||||||
if (vram == NULL) {
|
if (vram == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"VRAM");
|
"VRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
oam = (uint8_t*)calloc(1, 0x400);
|
oam = (uint8_t*)calloc(1, SIZE_OAM);
|
||||||
if (oam == NULL) {
|
if (oam == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"OAM");
|
"OAM");
|
||||||
|
@ -1556,7 +1556,7 @@ int CPULoadRom(const char* szFile)
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ioMem = (uint8_t*)calloc(1, 0x400);
|
ioMem = (uint8_t*)calloc(1, SIZE_IOMEM);
|
||||||
if (ioMem == NULL) {
|
if (ioMem == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"IO");
|
"IO");
|
||||||
|
@ -1574,20 +1574,20 @@ int CPULoadRom(const char* szFile)
|
||||||
|
|
||||||
int CPULoadRomData(const char* data, int size)
|
int CPULoadRomData(const char* data, int size)
|
||||||
{
|
{
|
||||||
romSize = ROM_SIZE;
|
romSize = SIZE_ROM;
|
||||||
if (rom != NULL) {
|
if (rom != NULL) {
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
|
||||||
|
|
||||||
rom = (uint8_t*)malloc(romSize);
|
rom = (uint8_t*)malloc(SIZE_ROM);
|
||||||
if (rom == NULL) {
|
if (rom == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"ROM");
|
"ROM");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
workRAM = (uint8_t*)calloc(1, WORK_RAM_SIZE);
|
workRAM = (uint8_t*)calloc(1, SIZE_WRAM);
|
||||||
if (workRAM == NULL) {
|
if (workRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"WRAM");
|
"WRAM");
|
||||||
|
@ -1606,35 +1606,35 @@ int CPULoadRomData(const char* data, int size)
|
||||||
temp++;
|
temp++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bios = (uint8_t*)calloc(1, 0x4000);
|
bios = (uint8_t*)calloc(1, SIZE_BIOS);
|
||||||
if (bios == NULL) {
|
if (bios == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"BIOS");
|
"BIOS");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
internalRAM = (uint8_t*)calloc(1, 0x8000);
|
internalRAM = (uint8_t*)calloc(1, SIZE_IRAM);
|
||||||
if (internalRAM == NULL) {
|
if (internalRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"IRAM");
|
"IRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
paletteRAM = (uint8_t*)calloc(1, 0x400);
|
paletteRAM = (uint8_t*)calloc(1, SIZE_PRAM);
|
||||||
if (paletteRAM == NULL) {
|
if (paletteRAM == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"PRAM");
|
"PRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
vram = (uint8_t*)calloc(1, 0x20000);
|
vram = (uint8_t*)calloc(1, SIZE_VRAM);
|
||||||
if (vram == NULL) {
|
if (vram == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"VRAM");
|
"VRAM");
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
oam = (uint8_t*)calloc(1, 0x400);
|
oam = (uint8_t*)calloc(1, SIZE_OAM);
|
||||||
if (oam == NULL) {
|
if (oam == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"OAM");
|
"OAM");
|
||||||
|
@ -1649,7 +1649,7 @@ int CPULoadRomData(const char* data, int size)
|
||||||
CPUCleanUp();
|
CPUCleanUp();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ioMem = (uint8_t*)calloc(1, 0x400);
|
ioMem = (uint8_t*)calloc(1, SIZE_IOMEM);
|
||||||
if (ioMem == NULL) {
|
if (ioMem == NULL) {
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"),
|
||||||
"IO");
|
"IO");
|
||||||
|
@ -3381,15 +3381,15 @@ void CPUReset()
|
||||||
// clean registers
|
// clean registers
|
||||||
memset(®[0], 0, sizeof(reg));
|
memset(®[0], 0, sizeof(reg));
|
||||||
// clean OAM
|
// clean OAM
|
||||||
memset(oam, 0, 0x400);
|
memset(oam, 0, SIZE_OAM);
|
||||||
// clean palette
|
// clean palette
|
||||||
memset(paletteRAM, 0, 0x400);
|
memset(paletteRAM, 0, SIZE_PRAM);
|
||||||
// clean picture
|
// clean picture
|
||||||
memset(pix, 0, 4 * 160 * 240);
|
memset(pix, 0, SIZE_PIX);
|
||||||
// clean vram
|
// clean vram
|
||||||
memset(vram, 0, 0x20000);
|
memset(vram, 0, SIZE_VRAM);
|
||||||
// clean io memory
|
// clean io memory
|
||||||
memset(ioMem, 0, 0x400);
|
memset(ioMem, 0, SIZE_IOMEM);
|
||||||
|
|
||||||
DISPCNT = 0x0080;
|
DISPCNT = 0x0080;
|
||||||
DISPSTAT = 0x0000;
|
DISPSTAT = 0x0000;
|
||||||
|
|
|
@ -27,6 +27,30 @@ enum {
|
||||||
GBA_SAVE_NONE
|
GBA_SAVE_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SIZE_SRAM = 32768,
|
||||||
|
SIZE_FLASH512 = 65536,
|
||||||
|
SIZE_FLASH1M = 131072,
|
||||||
|
SIZE_EEPROM_512 = 512,
|
||||||
|
SIZE_EEPROM_8K = 8192
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SIZE_ROM = 0x2000000,
|
||||||
|
SIZE_BIOS = 0x0004000,
|
||||||
|
SIZE_IRAM = 0x0008000,
|
||||||
|
SIZE_WRAM = 0x0040000,
|
||||||
|
SIZE_PRAM = 0x0000400,
|
||||||
|
SIZE_VRAM = 0x0020000,
|
||||||
|
SIZE_OAM = 0x0000400,
|
||||||
|
SIZE_IOMEM = 0x0000400,
|
||||||
|
#ifndef __LIBRETRO__
|
||||||
|
SIZE_PIX = (4 * 241 * 162)
|
||||||
|
#else
|
||||||
|
SIZE_PIX = (4 * 240 * 160)
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t* address;
|
uint8_t* address;
|
||||||
uint32_t mask;
|
uint32_t mask;
|
||||||
|
@ -162,9 +186,6 @@ extern struct EmulatedSystem GBASystem;
|
||||||
#define R14_FIQ 43
|
#define R14_FIQ 43
|
||||||
#define SPSR_FIQ 44
|
#define SPSR_FIQ 44
|
||||||
|
|
||||||
#define WORK_RAM_SIZE 0x40000
|
|
||||||
#define ROM_SIZE 0x2000000
|
|
||||||
|
|
||||||
#include "Cheats.h"
|
#include "Cheats.h"
|
||||||
#include "EEprom.h"
|
#include "EEprom.h"
|
||||||
#include "Flash.h"
|
#include "Flash.h"
|
||||||
|
|
|
@ -852,7 +852,7 @@ void BIOS_RegisterRamReset(uint32_t flags)
|
||||||
if (flags) {
|
if (flags) {
|
||||||
if (flags & 0x01) {
|
if (flags & 0x01) {
|
||||||
// clear work RAM
|
// clear work RAM
|
||||||
memset(workRAM, 0, WORK_RAM_SIZE);
|
memset(workRAM, 0, SIZE_WRAM);
|
||||||
}
|
}
|
||||||
if (flags & 0x02) {
|
if (flags & 0x02) {
|
||||||
// clear internal RAM
|
// clear internal RAM
|
||||||
|
|
|
@ -2575,14 +2575,14 @@ bool elfReadProgram(ELFHeader* eh, uint8_t* data, unsigned long data_size, int&
|
||||||
if (cpuIsMultiBoot) {
|
if (cpuIsMultiBoot) {
|
||||||
unsigned effective_address = address - 0x2000000;
|
unsigned effective_address = address - 0x2000000;
|
||||||
|
|
||||||
if (effective_address + section_size < WORK_RAM_SIZE) {
|
if (effective_address + section_size < SIZE_WRAM) {
|
||||||
memcpy(&workRAM[effective_address], source, section_size);
|
memcpy(&workRAM[effective_address], source, section_size);
|
||||||
size += section_size;
|
size += section_size;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned effective_address = address - 0x8000000;
|
unsigned effective_address = address - 0x8000000;
|
||||||
|
|
||||||
if (effective_address + section_size < ROM_SIZE) {
|
if (effective_address + section_size < SIZE_ROM) {
|
||||||
memcpy(&rom[effective_address], source, section_size);
|
memcpy(&rom[effective_address], source, section_size);
|
||||||
size += section_size;
|
size += section_size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -322,13 +322,15 @@ size_t retro_get_memory_size(unsigned id)
|
||||||
case RETRO_MEMORY_SAVE_RAM:
|
case RETRO_MEMORY_SAVE_RAM:
|
||||||
if ((saveType == GBA_SAVE_EEPROM) | (saveType == GBA_SAVE_EEPROM_SENSOR))
|
if ((saveType == GBA_SAVE_EEPROM) | (saveType == GBA_SAVE_EEPROM_SENSOR))
|
||||||
return eepromSize;
|
return eepromSize;
|
||||||
if ((saveType == GBA_SAVE_SRAM) | (saveType == GBA_SAVE_FLASH))
|
if (saveType == GBA_SAVE_FLASH)
|
||||||
return (saveType == GBA_SAVE_SRAM) ? 0x8000 : flashSize;
|
return flashSize;
|
||||||
|
if (saveType == GBA_SAVE_SRAM)
|
||||||
|
return SIZE_SRAM;
|
||||||
return 0;
|
return 0;
|
||||||
case RETRO_MEMORY_SYSTEM_RAM:
|
case RETRO_MEMORY_SYSTEM_RAM:
|
||||||
return 0x40000;
|
return SIZE_WRAM;
|
||||||
case RETRO_MEMORY_VIDEO_RAM:
|
case RETRO_MEMORY_VIDEO_RAM:
|
||||||
return 0x18000;
|
return SIZE_VRAM - 0x2000; // usuable vram is only 0x18000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type == IMAGE_GB) {
|
else if (type == IMAGE_GB) {
|
||||||
|
@ -746,8 +748,8 @@ static void load_image_preferences(void)
|
||||||
buffer[4] = 0;
|
buffer[4] = 0;
|
||||||
|
|
||||||
cpuSaveType = GBA_SAVE_AUTO;
|
cpuSaveType = GBA_SAVE_AUTO;
|
||||||
flashSize = 65536;
|
flashSize = SIZE_FLASH512;
|
||||||
eepromSize = 512;
|
eepromSize = SIZE_EEPROM_512;
|
||||||
rtcEnabled = false;
|
rtcEnabled = false;
|
||||||
mirroringEnable = false;
|
mirroringEnable = false;
|
||||||
|
|
||||||
|
@ -773,11 +775,11 @@ static void load_image_preferences(void)
|
||||||
|
|
||||||
unsigned size = gbaover[found_no].saveSize;
|
unsigned size = gbaover[found_no].saveSize;
|
||||||
if (cpuSaveType == GBA_SAVE_SRAM)
|
if (cpuSaveType == GBA_SAVE_SRAM)
|
||||||
flashSize = 32768;
|
flashSize = SIZE_SRAM;
|
||||||
else if (cpuSaveType == GBA_SAVE_FLASH)
|
else if (cpuSaveType == GBA_SAVE_FLASH)
|
||||||
flashSize = size ? size : 65536;
|
flashSize = (size == SIZE_FLASH1M) ? SIZE_FLASH1M : SIZE_FLASH512;
|
||||||
else if ((cpuSaveType == GBA_SAVE_EEPROM) || (cpuSaveType == GBA_SAVE_EEPROM_SENSOR))
|
else if ((cpuSaveType == GBA_SAVE_EEPROM) || (cpuSaveType == GBA_SAVE_EEPROM_SENSOR))
|
||||||
eepromSize = size ? size : 512;
|
eepromSize = (size == SIZE_EEPROM_8K) ? SIZE_EEPROM_8K : SIZE_EEPROM_512;
|
||||||
}
|
}
|
||||||
|
|
||||||
// gameID that starts with 'F' are classic/famicom games
|
// gameID that starts with 'F' are classic/famicom games
|
||||||
|
@ -790,7 +792,7 @@ static void load_image_preferences(void)
|
||||||
|
|
||||||
saveType = cpuSaveType;
|
saveType = cpuSaveType;
|
||||||
|
|
||||||
if (flashSize == 65536 || flashSize == 131072)
|
if (flashSize == SIZE_FLASH512 || flashSize == SIZE_FLASH1M)
|
||||||
flashSetSize(flashSize);
|
flashSetSize(flashSize);
|
||||||
|
|
||||||
rtcEnable(rtcEnabled);
|
rtcEnable(rtcEnabled);
|
||||||
|
|
Loading…
Reference in New Issue