Cleanup
This commit is contained in:
parent
408cab71e2
commit
d9f8396c67
|
@ -1,6 +1,11 @@
|
|||
#ifndef GB_H
|
||||
#define GB_H
|
||||
|
||||
#define gbWidth 160
|
||||
#define gbHeight 144
|
||||
#define sgbWidth 256
|
||||
#define sgbHeight 224
|
||||
|
||||
const int GB_C_FLAG = 0x10;
|
||||
const int GB_H_FLAG = 0x20;
|
||||
const int GB_N_FLAG = 0x40;
|
||||
|
@ -55,6 +60,8 @@ void setColorizerHack(bool value);
|
|||
bool allowColorizerHack(void);
|
||||
|
||||
extern int gbHardware;
|
||||
extern int gbRomType; // gets type from header 0x147
|
||||
extern int gbBattery; // enabled when gbRamSize != 0
|
||||
|
||||
extern struct EmulatedSystem GBSystem;
|
||||
|
||||
|
|
|
@ -246,6 +246,7 @@ static char dummy_state[735 * 2];
|
|||
&name, sizeof(type) \
|
||||
}
|
||||
|
||||
#ifndef __LIBRETRO__
|
||||
// Old save state support
|
||||
|
||||
static variable_desc gbsound_format[] = {
|
||||
|
@ -355,7 +356,6 @@ enum {
|
|||
nr52
|
||||
};
|
||||
|
||||
#ifndef __LIBRETRO__
|
||||
static void gbSoundReadGameOld(int version, gzFile gzFile)
|
||||
{
|
||||
if (version == 11) {
|
||||
|
|
|
@ -27,30 +27,6 @@ int flashDeviceID = 0x1b;
|
|||
int flashManufacturerID = 0x32;
|
||||
int flashBank = 0;
|
||||
|
||||
static variable_desc flashSaveData[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH512 },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static variable_desc flashSaveData2[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSize, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static variable_desc flashSaveData3[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSize, sizeof(int) },
|
||||
{ &flashBank, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
void flashInit()
|
||||
{
|
||||
memset(flashSaveMemory, 0xff, sizeof(flashSaveMemory));
|
||||
|
@ -63,49 +39,6 @@ void flashReset()
|
|||
flashBank = 0;
|
||||
}
|
||||
|
||||
#ifdef __LIBRETRO__
|
||||
void flashSaveGame(uint8_t*& data)
|
||||
{
|
||||
utilWriteDataMem(data, flashSaveData3);
|
||||
}
|
||||
|
||||
void flashReadGame(const uint8_t*& data, int)
|
||||
{
|
||||
utilReadDataMem(data, flashSaveData3);
|
||||
}
|
||||
|
||||
#else // !__LIBRETRO__
|
||||
void flashSaveGame(gzFile gzFile)
|
||||
{
|
||||
utilWriteData(gzFile, flashSaveData3);
|
||||
}
|
||||
|
||||
void flashReadGame(gzFile gzFile, int version)
|
||||
{
|
||||
if (version < SAVE_GAME_VERSION_5)
|
||||
utilReadData(gzFile, flashSaveData);
|
||||
else if (version < SAVE_GAME_VERSION_7) {
|
||||
utilReadData(gzFile, flashSaveData2);
|
||||
flashBank = 0;
|
||||
flashSetSize(flashSize);
|
||||
} else {
|
||||
utilReadData(gzFile, flashSaveData3);
|
||||
}
|
||||
}
|
||||
|
||||
void flashReadGameSkip(gzFile gzFile, int version)
|
||||
{
|
||||
// skip the flash data in a save game
|
||||
if (version < SAVE_GAME_VERSION_5)
|
||||
utilReadDataSkip(gzFile, flashSaveData);
|
||||
else if (version < SAVE_GAME_VERSION_7) {
|
||||
utilReadDataSkip(gzFile, flashSaveData2);
|
||||
} else {
|
||||
utilReadDataSkip(gzFile, flashSaveData3);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void flashSetSize(int size)
|
||||
{
|
||||
// log("Setting flash size to %d\n", size);
|
||||
|
@ -279,3 +212,70 @@ void flashWrite(uint32_t address, uint8_t byte)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static variable_desc flashSaveData3[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSize, sizeof(int) },
|
||||
{ &flashBank, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
#ifdef __LIBRETRO__
|
||||
void flashSaveGame(uint8_t*& data)
|
||||
{
|
||||
utilWriteDataMem(data, flashSaveData3);
|
||||
}
|
||||
|
||||
void flashReadGame(const uint8_t*& data, int)
|
||||
{
|
||||
utilReadDataMem(data, flashSaveData3);
|
||||
}
|
||||
|
||||
#else // !__LIBRETRO__
|
||||
static variable_desc flashSaveData[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH512 },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static variable_desc flashSaveData2[] = {
|
||||
{ &flashState, sizeof(int) },
|
||||
{ &flashReadState, sizeof(int) },
|
||||
{ &flashSize, sizeof(int) },
|
||||
{ &flashSaveMemory[0], SIZE_FLASH1M },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
void flashSaveGame(gzFile gzFile)
|
||||
{
|
||||
utilWriteData(gzFile, flashSaveData3);
|
||||
}
|
||||
|
||||
void flashReadGame(gzFile gzFile, int version)
|
||||
{
|
||||
if (version < SAVE_GAME_VERSION_5)
|
||||
utilReadData(gzFile, flashSaveData);
|
||||
else if (version < SAVE_GAME_VERSION_7) {
|
||||
utilReadData(gzFile, flashSaveData2);
|
||||
flashBank = 0;
|
||||
flashSetSize(flashSize);
|
||||
} else {
|
||||
utilReadData(gzFile, flashSaveData3);
|
||||
}
|
||||
}
|
||||
|
||||
void flashReadGameSkip(gzFile gzFile, int version)
|
||||
{
|
||||
// skip the flash data in a save game
|
||||
if (version < SAVE_GAME_VERSION_5)
|
||||
utilReadDataSkip(gzFile, flashSaveData);
|
||||
else if (version < SAVE_GAME_VERSION_7) {
|
||||
utilReadDataSkip(gzFile, flashSaveData2);
|
||||
} else {
|
||||
utilReadDataSkip(gzFile, flashSaveData3);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1235,6 +1235,7 @@ DEFINE_ALU_INSN_C(1F, 3F, MVNS, YES)
|
|||
int mult = (opcode & 0x0F); \
|
||||
uint32_t rs = reg[(opcode >> 8) & 0x0F].I; \
|
||||
int acc = (opcode >> 12) & 0x0F; /* or destLo */ \
|
||||
maybe_unused(acc); \
|
||||
int dest = (opcode >> 16) & 0x0F; /* or destHi */ \
|
||||
OP; \
|
||||
SETCOND; \
|
||||
|
|
|
@ -19,6 +19,9 @@ const uint64_t TICKS_PER_SECOND = 16777216;
|
|||
#define SAVE_GAME_VERSION_10 10
|
||||
#define SAVE_GAME_VERSION SAVE_GAME_VERSION_10
|
||||
|
||||
#define gbaWidth 240
|
||||
#define gbaHeight 160
|
||||
|
||||
enum {
|
||||
GBA_SAVE_AUTO = 0,
|
||||
GBA_SAVE_EEPROM,
|
||||
|
|
|
@ -588,6 +588,7 @@ static struct {
|
|||
int soundDSBValue;
|
||||
} state;
|
||||
|
||||
#ifndef __LIBRETRO__
|
||||
// Old GBA sound state format
|
||||
static variable_desc old_gba_state[] = {
|
||||
SKIP(int, soundPaused),
|
||||
|
@ -673,6 +674,7 @@ variable_desc old_gba_state2[] = {
|
|||
SKIP(int, sound3ForcedOutput),
|
||||
{ NULL, 0 }
|
||||
};
|
||||
#endif
|
||||
|
||||
// New state format
|
||||
static variable_desc gba_state[] = {
|
||||
|
|
|
@ -6,8 +6,7 @@ SOURCES_CXX :=
|
|||
SOURCES_CXX += \
|
||||
$(CORE_DIR)/libretro/libretro.cpp \
|
||||
$(CORE_DIR)/libretro/UtilRetro.cpp \
|
||||
$(CORE_DIR)/libretro/SoundRetro.cpp \
|
||||
$(CORE_DIR)/libretro/scrc32.cpp
|
||||
$(CORE_DIR)/libretro/SoundRetro.cpp
|
||||
|
||||
SOURCES_CXX += \
|
||||
$(CORE_DIR)/apu/Gb_Oscs.cpp \
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "SoundRetro.h"
|
||||
#include "libretro.h"
|
||||
#include "libretro_core_options.h"
|
||||
#include "scrc32.h"
|
||||
|
||||
#include "../System.h"
|
||||
#include "../Util.h"
|
||||
|
@ -40,27 +41,20 @@ static retro_environment_t environ_cb;
|
|||
retro_audio_sample_batch_t audio_batch_cb;
|
||||
static retro_set_rumble_state_t rumble_cb;
|
||||
|
||||
static char retro_system_directory[4096];
|
||||
static char retro_system_directory[2048];
|
||||
static char biosfile[4096];
|
||||
static float sndFiltering = 0.5f;
|
||||
static bool sndInterpolation = true;
|
||||
static bool can_dupe = false;
|
||||
static bool usebios = false;
|
||||
static unsigned retropad_device[4] = {0};
|
||||
|
||||
static const double FramesPerSecond = (16777216.0 / 280896.0); // 59.73
|
||||
static const long SampleRate = 32768;
|
||||
static const int GBWidth = 160;
|
||||
static const int GBHeight = 144;
|
||||
static const int SGBWidth = 256;
|
||||
static const int SGBHeight = 224;
|
||||
static const int GBAWidth = 240;
|
||||
static const int GBAHeight = 160;
|
||||
static unsigned width = 240;
|
||||
static unsigned height = 160;
|
||||
static unsigned width = gbaWidth;
|
||||
static unsigned height = gbaHeight;
|
||||
static EmulatedSystem* core = NULL;
|
||||
static IMAGE_TYPE type = IMAGE_UNKNOWN;
|
||||
static unsigned current_gbPalette;
|
||||
static unsigned current_gbPalette = 0;
|
||||
static bool opt_colorizer_hack = false;
|
||||
|
||||
uint16_t systemColorMap16[0x10000];
|
||||
|
@ -220,9 +214,6 @@ static void set_gbColorCorrection(int value)
|
|||
gbColorOption = value;
|
||||
}
|
||||
|
||||
extern int gbRomType; // gets type from header 0x147
|
||||
extern int gbBattery; // enabled when gbRamSize != 0
|
||||
|
||||
static bool gb_hasrtc(void)
|
||||
{
|
||||
switch (gbRomType) {
|
||||
|
@ -745,13 +736,11 @@ static void load_image_preferences(void)
|
|||
"NONE"
|
||||
};
|
||||
|
||||
char buffer[5];
|
||||
|
||||
buffer[0] = rom[0xac];
|
||||
buffer[1] = rom[0xad];
|
||||
buffer[2] = rom[0xae];
|
||||
buffer[3] = rom[0xaf];
|
||||
buffer[4] = 0;
|
||||
bool found = false;
|
||||
bool hasRumble = false;
|
||||
char buffer[12];
|
||||
unsigned i = 0, found_no = 0;
|
||||
unsigned long romCrc32 = crc32(0, rom, romSize);
|
||||
|
||||
cpuSaveType = GBA_SAVE_AUTO;
|
||||
flashSize = SIZE_FLASH512;
|
||||
|
@ -759,12 +748,26 @@ static void load_image_preferences(void)
|
|||
rtcEnabled = false;
|
||||
mirroringEnable = false;
|
||||
|
||||
log("GameID in ROM is: %s\n", buffer);
|
||||
log("File CRC32 : 0x%08X\n", romCrc32);
|
||||
|
||||
bool found = false;
|
||||
int found_no = 0;
|
||||
buffer[0] = 0;
|
||||
for (i = 0; i < 12; i++) {
|
||||
if (rom[0xa0 + i] == 0)
|
||||
break;
|
||||
buffer[i] = rom[0xa0 + i];
|
||||
}
|
||||
|
||||
for (int i = 0; i < 512; i++) {
|
||||
buffer[i] = 0;
|
||||
log("Game Title : %s\n", buffer);
|
||||
|
||||
buffer[0] = rom[0xac];
|
||||
buffer[1] = rom[0xad];
|
||||
buffer[2] = rom[0xae];
|
||||
buffer[3] = rom[0xaf];
|
||||
buffer[4] = 0;
|
||||
log("Game Code : %s\n", buffer);
|
||||
|
||||
for (i = 0; i < 512; i++) {
|
||||
if (!strcmp(gbaover[i].romid, buffer)) {
|
||||
found = true;
|
||||
found_no = i;
|
||||
|
@ -773,7 +776,6 @@ static void load_image_preferences(void)
|
|||
}
|
||||
|
||||
if (found) {
|
||||
log("Found ROM in vba-over list.\n");
|
||||
log("Name : %s\n", gbaover[found_no].romtitle);
|
||||
|
||||
rtcEnabled = gbaover[found_no].rtcEnabled;
|
||||
|
@ -789,12 +791,10 @@ static void load_image_preferences(void)
|
|||
}
|
||||
|
||||
// gameID that starts with 'F' are classic/famicom games
|
||||
mirroringEnable = (buffer[0] == 0x46) ? true : false;
|
||||
mirroringEnable = (buffer[0] == 'F') ? true : false;
|
||||
|
||||
if (!cpuSaveType) {
|
||||
log("Scrapping ROM for save type.\n");
|
||||
if (!cpuSaveType)
|
||||
utilGBAFindSave(romSize);
|
||||
}
|
||||
|
||||
saveType = cpuSaveType;
|
||||
|
||||
|
@ -802,7 +802,12 @@ static void load_image_preferences(void)
|
|||
flashSetSize(flashSize);
|
||||
|
||||
rtcEnable(rtcEnabled);
|
||||
rtcEnableRumble(!rtcEnabled);
|
||||
|
||||
// game code starting with 'R' or 'V' has rumble support
|
||||
if ((buffer[0] == 'R') || (buffer[0] == 'V'))
|
||||
hasRumble = true;
|
||||
|
||||
rtcEnableRumble(!rtcEnabled && hasRumble);
|
||||
|
||||
doMirroring(mirroringEnable);
|
||||
|
||||
|
@ -811,7 +816,7 @@ static void load_image_preferences(void)
|
|||
log("cpuSaveType : %s.\n", savetype[cpuSaveType]);
|
||||
if (cpuSaveType == 3)
|
||||
log("flashSize : %d.\n", flashSize);
|
||||
if (cpuSaveType == 1)
|
||||
else if (cpuSaveType == 1)
|
||||
log("eepromSize : %d.\n", eepromSize);
|
||||
log("mirroringEnable : %s.\n", mirroringEnable ? "Yes" : "No");
|
||||
}
|
||||
|
@ -854,8 +859,8 @@ static void gba_init(void)
|
|||
}
|
||||
CPUInit(biosfile, usebios);
|
||||
|
||||
width = GBAWidth;
|
||||
height = GBAHeight;
|
||||
width = gbaWidth;
|
||||
height = gbaHeight;
|
||||
|
||||
CPUReset();
|
||||
}
|
||||
|
@ -883,13 +888,13 @@ static void gb_init(void)
|
|||
gbCPUInit(biosfile, usebios);
|
||||
|
||||
if (gbBorderOn) {
|
||||
width = gbBorderLineSkip = SGBWidth;
|
||||
height = SGBHeight;
|
||||
gbBorderColumnSkip = (SGBWidth - GBWidth) >> 1;
|
||||
gbBorderRowSkip = (SGBHeight - GBHeight) >> 1;
|
||||
width = gbBorderLineSkip = sgbWidth;
|
||||
height = sgbHeight;
|
||||
gbBorderColumnSkip = (sgbWidth - gbWidth) >> 1;
|
||||
gbBorderRowSkip = (sgbHeight - gbHeight) >> 1;
|
||||
} else {
|
||||
width = gbBorderLineSkip = GBWidth;
|
||||
height = GBHeight;
|
||||
width = gbBorderLineSkip = gbWidth;
|
||||
height = gbHeight;
|
||||
gbBorderColumnSkip = gbBorderRowSkip = 0;
|
||||
}
|
||||
|
||||
|
@ -1171,7 +1176,7 @@ static void update_variables(bool startup)
|
|||
|
||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
||||
{
|
||||
int lastpal = current_gbPalette;
|
||||
unsigned lastpal = current_gbPalette;
|
||||
|
||||
if (!strcmp(var.value, "black and white"))
|
||||
current_gbPalette = 0;
|
||||
|
@ -1443,6 +1448,7 @@ void retro_cheat_set(unsigned index, bool enabled, const char* code)
|
|||
memset(codeLine, 0, codeLineSize);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
if (!code[cursor])
|
||||
break;
|
||||
|
@ -1646,11 +1652,11 @@ void systemFrame(void)
|
|||
|
||||
void systemGbBorderOn(void)
|
||||
{
|
||||
bool changed = ((width != SGBWidth) || (height != SGBHeight));
|
||||
width = gbBorderLineSkip = SGBWidth;
|
||||
height = SGBHeight;
|
||||
gbBorderColumnSkip = (SGBWidth - GBWidth) >> 1;
|
||||
gbBorderRowSkip = (SGBHeight - GBHeight) >> 1;
|
||||
bool changed = ((width != sgbWidth) || (height != sgbHeight));
|
||||
width = gbBorderLineSkip = sgbWidth;
|
||||
height = sgbHeight;
|
||||
gbBorderColumnSkip = (sgbWidth - gbWidth) >> 1;
|
||||
gbBorderRowSkip = (sgbHeight - gbHeight) >> 1;
|
||||
|
||||
struct retro_system_av_info avinfo;
|
||||
retro_get_system_av_info(&avinfo);
|
||||
|
@ -1663,9 +1669,9 @@ void systemGbBorderOn(void)
|
|||
|
||||
static void systemGbBorderOff(void)
|
||||
{
|
||||
bool changed = ((width != GBWidth) || (height != GBHeight));
|
||||
width = gbBorderLineSkip = GBWidth;
|
||||
height = GBHeight;
|
||||
bool changed = ((width != gbWidth) || (height != gbHeight));
|
||||
width = gbBorderLineSkip = gbWidth;
|
||||
height = gbHeight;
|
||||
gbBorderColumnSkip = gbBorderRowSkip = 0;
|
||||
|
||||
struct retro_system_av_info avinfo;
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef _S_CRC32_H
|
||||
#define _S_CRC32_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static const unsigned long crc_table[256] = {
|
||||
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
|
||||
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
|
||||
|
@ -87,8 +83,4 @@ unsigned long crc32(unsigned long crc, const unsigned char* buf, unsigned int le
|
|||
return crc ^ 0xffffffffL;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue