Merge remote-tracking branch 'libretro/master'

Includes some GB and GBA fixes.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
Rafael Kitover 2021-10-20 05:42:27 +00:00
commit b3153dcf35
No known key found for this signature in database
GPG Key ID: 08AB596679D86240
25 changed files with 268 additions and 1621 deletions

View File

@ -44,7 +44,11 @@ include:
- project: 'libretro-infrastructure/ci-templates' - project: 'libretro-infrastructure/ci-templates'
file: '/android-jni.yml' file: '/android-jni.yml'
# iOS 9 # iOS
- project: 'libretro-infrastructure/ci-templates'
file: '/ios-arm64.yml'
# iOS (armv7)
- project: 'libretro-infrastructure/ci-templates' - project: 'libretro-infrastructure/ci-templates'
file: '/ios9.yml' file: '/ios9.yml'
@ -57,6 +61,12 @@ include:
- project: 'libretro-infrastructure/ci-templates' - project: 'libretro-infrastructure/ci-templates'
file: '/libnx-static.yml' file: '/libnx-static.yml'
# tvOS (AppleTV)
- project: 'libretro-infrastructure/ci-templates'
file: '/tvos-arm64.yml'
#################################### MISC ##################################
# Stages for building # Stages for building
stages: stages:
- build-prepare - build-prepare
@ -129,12 +139,24 @@ android-x86:
- .libretro-android-jni-x86 - .libretro-android-jni-x86
- .core-defs - .core-defs
# iOS 9 # iOS
libretro-build-ios-9: libretro-build-ios-arm64:
extends:
- .libretro-ios-arm64-make-default
- .core-defs
# iOS (armv7) [iOS 9 and up]
libretro-build-ios9:
extends: extends:
- .libretro-ios9-make-default - .libretro-ios9-make-default
- .core-defs - .core-defs
# tvOS
libretro-build-tvos-arm64:
extends:
- .libretro-tvos-arm64-make-default
- .core-defs
################################### CONSOLES ################################# ################################### CONSOLES #################################
# PlayStation Vita # PlayStation Vita
libretro-build-vita: libretro-build-vita:

View File

@ -1094,10 +1094,13 @@ void gbWriteMemory(uint16_t address, uint8_t value)
} }
#endif #endif
} }
#else
gbMemory[0xff02] = value;
if (gbSerialOn)
gbSerialTicks = GBSERIAL_CLOCK_TICKS;
#endif
gbSerialBits = 0; gbSerialBits = 0;
return; return;
#endif
} }
case 0x04: { case 0x04: {
@ -1922,11 +1925,11 @@ uint8_t gbReadMemory(uint16_t address)
return gbMemory[0xff01]; return gbMemory[0xff01];
case 0x02: case 0x02:
return (gbMemory[0xff02]); return (gbMemory[0xff02]);
case 0x03: case 0x03:
log("Undocumented Memory register read %04x PC=%04x\n", log("Undocumented Memory register read %04x PC=%04x\n",
address, address,
PC.W); PC.W);
return 0xff; return 0xff;
case 0x04: case 0x04:
return register_DIV; return register_DIV;
case 0x05: case 0x05:
@ -2790,6 +2793,8 @@ void gbReset()
memset(&gbDataHuC3, 0, sizeof(gbDataHuC3)); memset(&gbDataHuC3, 0, sizeof(gbDataHuC3));
gbDataHuC3.mapperROMBank = 1; gbDataHuC3.mapperROMBank = 1;
gbDataHuC3.mapperRAMValue = 1;
gbRTCHuC3.memoryTimerRead = 1;
memset(&gbDataTAMA5, 0, 26 * sizeof(int)); memset(&gbDataTAMA5, 0, 26 * sizeof(int));
gbDataTAMA5.mapperROMBank = 1; gbDataTAMA5.mapperROMBank = 1;
@ -4405,6 +4410,7 @@ bool gbUpdateSizes()
case 0x1e: case 0x1e:
case 0x22: case 0x22:
case 0xfd: case 0xfd:
case 0xfe:
case 0xff: case 0xff:
gbBattery = 1; gbBattery = 1;
break; break;
@ -4428,6 +4434,7 @@ bool gbUpdateSizes()
case 0x0f: case 0x0f:
case 0x10: // mbc3 case 0x10: // mbc3
case 0xfd: // tama5 case 0xfd: // tama5
case 0xfe:
gbRTCPresent = 1; gbRTCPresent = 1;
break; break;
default: default:
@ -5324,6 +5331,27 @@ void gbEmulate(int ticksToStop)
} }
#endif #endif
} }
#else
static int SIOctr = 0;
SIOctr++;
if (SIOctr % 5) {
if (gbSerialOn) {
if (gbMemory[0xff02] & 1) {
gbSerialTicks -= clockTicks;
while (gbSerialTicks <= 0) {
gbMemory[0xff01] = (gbMemory[0xff01] << 1) | 1;
gbSerialBits++;
if (gbSerialBits >= 8) {
gbMemory[0xff02] &= 0x7f;
gbMemory[0xff0f] = register_IF |= 8;
gbSerialOn = 0;
gbSerialBits = 0;
} else
gbSerialTicks += GBSERIAL_CLOCK_TICKS;
}
}
}
}
#endif #endif
// TODO: evaluate and fix this // TODO: evaluate and fix this
// On VBA-M (gb core running twice as fast?), each vblank is uses 35112 cycles. // On VBA-M (gb core running twice as fast?), each vblank is uses 35112 cycles.
@ -5518,6 +5546,8 @@ unsigned int gbWriteSaveState(uint8_t* data, unsigned)
utilWriteMem(data, &gbDataMBC5, sizeof(gbDataMBC5)); utilWriteMem(data, &gbDataMBC5, sizeof(gbDataMBC5));
utilWriteMem(data, &gbDataHuC1, sizeof(gbDataHuC1)); utilWriteMem(data, &gbDataHuC1, sizeof(gbDataHuC1));
utilWriteMem(data, &gbDataHuC3, sizeof(gbDataHuC3)); utilWriteMem(data, &gbDataHuC3, sizeof(gbDataHuC3));
if (gbRomType == 0xfe) // HuC3 rtc data
utilWriteMem(data, &gbRTCHuC3, sizeof(gbRTCHuC3));
utilWriteMem(data, &gbDataTAMA5, sizeof(gbDataTAMA5)); utilWriteMem(data, &gbDataTAMA5, sizeof(gbDataTAMA5));
if (gbTAMA5ram != NULL) if (gbTAMA5ram != NULL)
utilWriteMem(data, gbTAMA5ram, gbTAMA5ramSize); utilWriteMem(data, gbTAMA5ram, gbTAMA5ramSize);
@ -5635,6 +5665,8 @@ bool gbReadSaveState(const uint8_t* data, unsigned)
utilReadMem(&gbDataMBC5, data, sizeof(gbDataMBC5)); utilReadMem(&gbDataMBC5, data, sizeof(gbDataMBC5));
utilReadMem(&gbDataHuC1, data, sizeof(gbDataHuC1)); utilReadMem(&gbDataHuC1, data, sizeof(gbDataHuC1));
utilReadMem(&gbDataHuC3, data, sizeof(gbDataHuC3)); utilReadMem(&gbDataHuC3, data, sizeof(gbDataHuC3));
if (gbRomType == 0xfe) // HuC3 rtc data
utilReadMem(&gbRTCHuC3, data, sizeof(gbRTCHuC3));
utilReadMem(&gbDataTAMA5, data, sizeof(gbDataTAMA5)); utilReadMem(&gbDataTAMA5, data, sizeof(gbDataTAMA5));
if (gbTAMA5ram != NULL) { if (gbTAMA5ram != NULL) {
utilReadMem(gbTAMA5ram, data, gbTAMA5ramSize); utilReadMem(gbTAMA5ram, data, gbTAMA5ramSize);

View File

@ -1011,6 +1011,31 @@ mapperHuC3 gbDataHuC3 = {
0 // Register 8 0 // Register 8
}; };
mapperHuC3RTC gbRTCHuC3 = {
0, // lastTime
0, // DateTime
0, // WritingTime
0, // ModeFlag
0 // ClockShift
};
void memoryUpdateHuC3Latch() {
uint64_t now = time(NULL);
uint64_t diff = now - gbRTCHuC3.mapperLastTime;
unsigned minute = (diff / 60) % 1440;
unsigned day = (diff / 86400) & 0xFFF;
gbRTCHuC3.mapperDateTime = (day << 12) | minute;
}
void memoryUpdateHuC3Clock() {
uint64_t now = time(NULL);
unsigned minute = (gbRTCHuC3.mapperWritingTime & 0xFFF) % 1440;
unsigned day = (gbRTCHuC3.mapperWritingTime & 0xFFF000) >> 12;
gbRTCHuC3.mapperLastTime = now - minute * 60 - day * 86400;
}
// HuC3 ROM write registers // HuC3 ROM write registers
void mapperHuC3ROM(uint16_t address, uint8_t value) void mapperHuC3ROM(uint16_t address, uint8_t value)
{ {
@ -1069,7 +1094,7 @@ uint8_t mapperHuC3ReadRAM(uint16_t address)
// HuC3 RAM write // HuC3 RAM write
void mapperHuC3RAM(uint16_t address, uint8_t value) void mapperHuC3RAM(uint16_t address, uint8_t value)
{ {
int* p; //int* p;
if (gbDataHuC3.mapperRAMFlag < 0x0b || gbDataHuC3.mapperRAMFlag > 0x0e) { if (gbDataHuC3.mapperRAMFlag < 0x0b || gbDataHuC3.mapperRAMFlag > 0x0e) {
if (gbDataHuC3.mapperRAMEnable) { if (gbDataHuC3.mapperRAMEnable) {
@ -1080,25 +1105,49 @@ void mapperHuC3RAM(uint16_t address, uint8_t value)
} }
} else { } else {
if (gbDataHuC3.mapperRAMFlag == 0x0b) { if (gbDataHuC3.mapperRAMFlag == 0x0b) {
if (value == 0x62) { //if (value == 0x62) {
gbDataHuC3.mapperRAMValue = 1; //gbDataHuC3.mapperRAMValue = 1;
} else { //} else
{
switch (value & 0xf0) { switch (value & 0xf0) {
case 0x10: case 0x10:
p = &gbDataHuC3.mapperRegister2; /*p = &gbDataHuC3.mapperRegister2;
gbDataHuC3.mapperRAMValue = *(p + gbDataHuC3.mapperRegister1++); gbDataHuC3.mapperRAMValue = *(p + gbDataHuC3.mapperRegister1++);
if (gbDataHuC3.mapperRegister1 > 6) if (gbDataHuC3.mapperRegister1 > 6)
gbDataHuC3.mapperRegister1 = 0; gbDataHuC3.mapperRegister1 = 0;*/
// read time
memoryUpdateHuC3Latch();
if (gbRTCHuC3.memoryTimerRead) {
gbDataHuC3.mapperRAMValue = (gbRTCHuC3.mapperDateTime >> gbRTCHuC3.mapperClockShift) & 0x0F;
gbRTCHuC3.mapperClockShift += 4;
if (gbRTCHuC3.mapperClockShift > 24)
gbRTCHuC3.mapperClockShift = 0;
}
break; break;
case 0x30: case 0x30:
p = &gbDataHuC3.mapperRegister2; /*p = &gbDataHuC3.mapperRegister2;
*(p + gbDataHuC3.mapperRegister1++) = value & 0x0f; *(p + gbDataHuC3.mapperRegister1++) = value & 0x0f;
if (gbDataHuC3.mapperRegister1 > 6) if (gbDataHuC3.mapperRegister1 > 6)
gbDataHuC3.mapperRegister1 = 0; gbDataHuC3.mapperRegister1 = 0;
gbDataHuC3.mapperAddress = (gbDataHuC3.mapperRegister6 << 24) | (gbDataHuC3.mapperRegister5 << 16) | (gbDataHuC3.mapperRegister4 << 8) | (gbDataHuC3.mapperRegister3 << 4) | (gbDataHuC3.mapperRegister2); gbDataHuC3.mapperAddress = (gbDataHuC3.mapperRegister6 << 24) | (gbDataHuC3.mapperRegister5 << 16) | (gbDataHuC3.mapperRegister4 << 8) | (gbDataHuC3.mapperRegister3 << 4) | (gbDataHuC3.mapperRegister2);*/
// write time
if (!gbRTCHuC3.memoryTimerRead) {
if (gbRTCHuC3.mapperClockShift == 0)
gbRTCHuC3.mapperWritingTime = 0;
if (gbRTCHuC3.mapperClockShift < 24) {
gbRTCHuC3.mapperWritingTime |= (value & 0x0F) << gbRTCHuC3.mapperClockShift;
gbRTCHuC3.mapperClockShift += 4;
if (gbRTCHuC3.mapperClockShift == 24) {
memoryUpdateHuC3Clock();
gbRTCHuC3.memoryTimerRead = 1;
}
}
}
break; break;
case 0x40: case 0x40:
gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0xf0) | (value & 0x0f); /*gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0xf0) | (value & 0x0f);
gbDataHuC3.mapperRegister2 = (gbDataHuC3.mapperAddress & 0x0f); gbDataHuC3.mapperRegister2 = (gbDataHuC3.mapperAddress & 0x0f);
gbDataHuC3.mapperRegister3 = ((gbDataHuC3.mapperAddress >> 4) & 0x0f); gbDataHuC3.mapperRegister3 = ((gbDataHuC3.mapperAddress >> 4) & 0x0f);
gbDataHuC3.mapperRegister4 = ((gbDataHuC3.mapperAddress >> 8) & 0x0f); gbDataHuC3.mapperRegister4 = ((gbDataHuC3.mapperAddress >> 8) & 0x0f);
@ -1106,13 +1155,35 @@ void mapperHuC3RAM(uint16_t address, uint8_t value)
gbDataHuC3.mapperRegister6 = ((gbDataHuC3.mapperAddress >> 24) & 0x0f); gbDataHuC3.mapperRegister6 = ((gbDataHuC3.mapperAddress >> 24) & 0x0f);
gbDataHuC3.mapperRegister7 = 0; gbDataHuC3.mapperRegister7 = 0;
gbDataHuC3.mapperRegister8 = 0; gbDataHuC3.mapperRegister8 = 0;
gbDataHuC3.mapperRAMValue = 0; gbDataHuC3.mapperRAMValue = 0;*/
// some kind of mode shift
switch(value & 0x0F) {
case 0x0:
// shift reset?
gbRTCHuC3.mapperClockShift = 0;
break;
case 0x3:
// write time?
gbRTCHuC3.memoryTimerRead = 0;
gbRTCHuC3.mapperClockShift = 0;
break;
case 0x7:
gbRTCHuC3.memoryTimerRead = 1;
gbRTCHuC3.mapperClockShift = 0;
break;
// others are unimplemented so far
}
break; break;
case 0x50: case 0x50:
gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0x0f) | ((value << 4) & 0x0f); //gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0x0f) | ((value << 4) & 0x0f);
break;
case 0x60:
gbRTCHuC3.memoryTimerRead = 1; // ???
//gbDataHuC3.mapperRAMValue = 1;
break; break;
default: default:
gbDataHuC3.mapperRAMValue = 1; //gbDataHuC3.mapperRAMValue = 1;
break; break;
} }
} }

View File

@ -95,6 +95,18 @@ struct mapperHuC3 {
int mapperRegister8; int mapperRegister8;
}; };
struct mapperHuC3RTC {
union {
time_t mapperLastTime;
uint64_t _time_pad; /* so that 32bit and 64bit saves are compatible */
};
unsigned mapperDateTime;
unsigned mapperWritingTime;
unsigned memoryTimerRead;
unsigned mapperClockShift;
unsigned reserved[4];
};
struct mapperTAMA5 { struct mapperTAMA5 {
int mapperRAMEnable; int mapperRAMEnable;
int mapperROMBank; int mapperROMBank;
@ -147,6 +159,7 @@ extern mapperMBC3 gbDataMBC3;
extern mapperMBC5 gbDataMBC5; extern mapperMBC5 gbDataMBC5;
extern mapperHuC1 gbDataHuC1; extern mapperHuC1 gbDataHuC1;
extern mapperHuC3 gbDataHuC3; extern mapperHuC3 gbDataHuC3;
extern mapperHuC3RTC gbRTCHuC3;
extern mapperTAMA5 gbDataTAMA5; extern mapperTAMA5 gbDataTAMA5;
extern mapperMMM01 gbDataMMM01; extern mapperMMM01 gbDataMMM01;
extern mapperGS3 gbDataGS3; extern mapperGS3 gbDataGS3;
@ -196,4 +209,6 @@ extern void memoryUpdateMapGS3();
#define TAMA5_RTC_DATA_SIZE sizeof(int) * 14 + sizeof(uint64_t) #define TAMA5_RTC_DATA_SIZE sizeof(int) * 14 + sizeof(uint64_t)
#define HUC3_RTC_DATA_SIZE sizeof(int) * 4 + sizeof(uint64_t)
#endif // GBMEMORY_H #endif // GBMEMORY_H

View File

@ -50,8 +50,9 @@ bool busPrefetchEnable = false;
uint32_t busPrefetchCount = 0; uint32_t busPrefetchCount = 0;
int cpuDmaTicksToUpdate = 0; int cpuDmaTicksToUpdate = 0;
int cpuDmaCount = 0; int cpuDmaCount = 0;
bool cpuDmaHack = false; bool cpuDmaRunning = false;
uint32_t cpuDmaLast = 0; uint32_t cpuDmaLast = 0;
uint32_t cpuDmaPC = 0;
int dummyAddress = 0; int dummyAddress = 0;
bool cpuBreakLoop = false; bool cpuBreakLoop = false;
@ -1621,7 +1622,7 @@ int CPULoadRomData(const char* data, int size)
uint16_t* temp = (uint16_t*)(rom + ((romSize + 1) & ~1)); uint16_t* temp = (uint16_t*)(rom + ((romSize + 1) & ~1));
int i; int i;
for (i = (romSize + 1) & ~1; i < romSize; i += 2) { for (i = (romSize + 1) & ~1; i < SIZE_ROM; i += 2) {
WRITE16LE(temp, (i >> 1) & 0xFFFF); WRITE16LE(temp, (i >> 1) & 0xFFFF);
temp++; temp++;
} }
@ -2343,7 +2344,8 @@ void doDMA(uint32_t& s, uint32_t& d, uint32_t si, uint32_t di, uint32_t c, int t
int dw = 0; int dw = 0;
int sc = c; int sc = c;
cpuDmaHack = true; cpuDmaRunning = true;
cpuDmaPC = reg[15].I;
cpuDmaCount = c; cpuDmaCount = c;
// This is done to get the correct waitstates. // This is done to get the correct waitstates.
if (sm > 15) if (sm > 15)
@ -2408,7 +2410,7 @@ void doDMA(uint32_t& s, uint32_t& d, uint32_t si, uint32_t di, uint32_t c, int t
} }
cpuDmaTicksToUpdate += totalTicks; cpuDmaTicksToUpdate += totalTicks;
cpuDmaHack = false; cpuDmaRunning = false;
} }
void CPUCheckDMA(int reason, int dmamask) void CPUCheckDMA(int reason, int dmamask)
@ -3077,11 +3079,27 @@ void CPUUpdateRegister(uint32_t address, uint16_t value)
cpuNextEvent = cpuTotalTicks; cpuNextEvent = cpuTotalTicks;
break; break;
#ifndef NO_LINK
case COMM_SIOCNT: case COMM_SIOCNT:
#ifndef NO_LINK
StartLink(value); StartLink(value);
#else
if (!ioMem)
return;
if (value & 0x80) {
value &= 0xff7f;
if (value & 1 && (value & 0x4000)) {
UPDATE_REG(COMM_SIOCNT, 0xFF);
IF |= 0x80;
UPDATE_REG(0x202, IF);
value &= 0x7f7f;
}
}
UPDATE_REG(COMM_SIOCNT, value);
#endif
break; break;
#ifndef NO_LINK
case COMM_SIODATA8: case COMM_SIODATA8:
UPDATE_REG(COMM_SIODATA8, value); UPDATE_REG(COMM_SIODATA8, value);
break; break;
@ -3096,11 +3114,19 @@ void CPUUpdateRegister(uint32_t address, uint16_t value)
UPDATE_REG(0x132, value & 0xC3FF); UPDATE_REG(0x132, value & 0xC3FF);
break; break;
#ifndef NO_LINK
case COMM_RCNT: case COMM_RCNT:
#ifndef NO_LINK
StartGPLink(value); StartGPLink(value);
#else
if (!ioMem)
return;
UPDATE_REG(COMM_RCNT, value);
#endif
break; break;
#ifndef NO_LINK
case COMM_JOYCNT: { case COMM_JOYCNT: {
uint16_t cur = READ16LE(&ioMem[COMM_JOYCNT]); uint16_t cur = READ16LE(&ioMem[COMM_JOYCNT]);
@ -3636,7 +3662,7 @@ void CPUReset()
systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
cpuDmaHack = false; cpuDmaRunning = false;
lastTime = systemGetClock(); lastTime = systemGetClock();

View File

@ -20,8 +20,9 @@ extern bool cpuSramEnabled;
extern bool cpuFlashEnabled; extern bool cpuFlashEnabled;
extern bool cpuEEPROMEnabled; extern bool cpuEEPROMEnabled;
extern bool cpuEEPROMSensorEnabled; extern bool cpuEEPROMSensorEnabled;
extern bool cpuDmaHack; extern bool cpuDmaRunning;
extern uint32_t cpuDmaLast; extern uint32_t cpuDmaLast;
extern uint32_t cpuDmaPC;
extern bool timer0On; extern bool timer0On;
extern int timer0Ticks; extern int timer0Ticks;
extern int timer0ClockReload; extern int timer0ClockReload;
@ -57,11 +58,6 @@ static inline uint32_t CPUReadMemory(uint32_t address)
} }
#endif #endif
uint32_t value = 0; uint32_t value = 0;
uint32_t oldAddress = address;
if (address & 3) {
address &= ~0x03;
}
switch (address >> 24) { switch (address >> 24) {
case 0: case 0:
@ -133,8 +129,8 @@ static inline uint32_t CPUReadMemory(uint32_t address)
case 15: case 15:
if (cpuFlashEnabled | cpuSramEnabled) { // no need to swap this if (cpuFlashEnabled | cpuSramEnabled) { // no need to swap this
value = flashRead(address) * 0x01010101; value = flashRead(address) * 0x01010101;
break;
} }
break;
// default // default
default: default:
unreadable: unreadable:
@ -145,21 +141,21 @@ static inline uint32_t CPUReadMemory(uint32_t address)
armMode ? armNextPC - 4 : armNextPC - 2); armMode ? armNextPC - 4 : armNextPC - 2);
} }
#endif #endif
if (cpuDmaHack) { if (cpuDmaRunning || ((reg[15].I - cpuDmaPC) == (armState ? 4 : 2))) {
value = cpuDmaLast; value = cpuDmaLast;
} else { } else {
if (armState) { if (armState) {
return CPUReadMemoryQuick(reg[15].I); value = CPUReadMemoryQuick(reg[15].I);
} else { } else {
return CPUReadHalfWordQuick(reg[15].I) | CPUReadHalfWordQuick(reg[15].I) << 16; value = CPUReadHalfWordQuick(reg[15].I) | CPUReadHalfWordQuick(reg[15].I) << 16;
} }
} }
break; break;
} }
if (oldAddress & 3) { if (address & 3) {
#ifdef C_CORE #ifdef C_CORE
int shift = (oldAddress & 3) << 3; int shift = (address & 3) << 3;
value = (value >> shift) | (value << (32 - shift)); value = (value >> shift) | (value << (32 - shift));
#else #else
#ifdef __GNUC__ #ifdef __GNUC__
@ -167,10 +163,10 @@ static inline uint32_t CPUReadMemory(uint32_t address)
"shl $3 ,%%ecx;" "shl $3 ,%%ecx;"
"ror %%cl, %0" "ror %%cl, %0"
: "=r"(value) : "=r"(value)
: "r"(value), "c"(oldAddress)); : "r"(value), "c"(address));
#else #else
__asm { __asm {
mov ecx, oldAddress; mov ecx, address;
and ecx, 3; and ecx, 3;
shl ecx, 3; shl ecx, 3;
ror [dword ptr value], cl; ror [dword ptr value], cl;
@ -180,10 +176,10 @@ static inline uint32_t CPUReadMemory(uint32_t address)
} }
#ifdef GBA_LOGGING #ifdef GBA_LOGGING
if (oldAddress & 3) { if (address & 3) {
if (systemVerbose & VERBOSE_UNALIGNED_MEMORY) { if (systemVerbose & VERBOSE_UNALIGNED_MEMORY) {
log("Unaligned word read from: %08x at %08x (%08x)\n", log("Unaligned word read from: %08x at %08x (%08x)\n",
oldAddress, address,
armMode ? armNextPC - 4 : armNextPC - 2, armMode ? armNextPC - 4 : armNextPC - 2,
value); value);
} }
@ -203,12 +199,7 @@ static inline uint32_t CPUReadHalfWord(uint32_t address)
} }
#endif #endif
uint32_t value; uint32_t value = 0;
uint32_t oldAddress = address;
if (address & 1) {
address &= ~0x01;
}
switch (address >> 24) { switch (address >> 24) {
case 0: case 0:
@ -217,7 +208,7 @@ static inline uint32_t CPUReadHalfWord(uint32_t address)
#ifdef GBA_LOGGING #ifdef GBA_LOGGING
if (systemVerbose & VERBOSE_ILLEGAL_READ) { if (systemVerbose & VERBOSE_ILLEGAL_READ) {
log("Illegal halfword read from bios: %08x at %08x\n", log("Illegal halfword read from bios: %08x at %08x\n",
oldAddress, address,
armMode ? armNextPC - 4 : armNextPC - 2); armMode ? armNextPC - 4 : armNextPC - 2);
} }
#endif #endif
@ -288,12 +279,13 @@ static inline uint32_t CPUReadHalfWord(uint32_t address)
if (cpuFlashEnabled | cpuSramEnabled) { if (cpuFlashEnabled | cpuSramEnabled) {
// no need to swap this // no need to swap this
value = flashRead(address) * 0x0101; value = flashRead(address) * 0x0101;
break;
} }
break; break;
// default // default
default: default:
unreadable: unreadable:
if (cpuDmaHack) { if (cpuDmaRunning|| ((reg[15].I - cpuDmaPC) == (armState ? 4 : 2))) {
value = cpuDmaLast & 0xFFFF; value = cpuDmaLast & 0xFFFF;
} else { } else {
int param = reg[15].I; int param = reg[15].I;
@ -304,20 +296,20 @@ static inline uint32_t CPUReadHalfWord(uint32_t address)
#ifdef GBA_LOGGING #ifdef GBA_LOGGING
if (systemVerbose & VERBOSE_ILLEGAL_READ) { if (systemVerbose & VERBOSE_ILLEGAL_READ) {
log("Illegal halfword read: %08x at %08x (%08x)\n", log("Illegal halfword read: %08x at %08x (%08x)\n",
oldAddress, address,
reg[15].I, reg[15].I,
value); value);
} }
#endif #endif
return value; break;
} }
if (oldAddress & 1) { if (address & 1) {
value = (value >> 8) | (value << 24); value = (value >> 8) | (value << 24);
#ifdef GBA_LOGGING #ifdef GBA_LOGGING
if (systemVerbose & VERBOSE_UNALIGNED_MEMORY) { if (systemVerbose & VERBOSE_UNALIGNED_MEMORY) {
log("Unaligned halfword read from: %08x at %08x (%08x)\n", log("Unaligned halfword read from: %08x at %08x (%08x)\n",
oldAddress, address,
armMode ? armNextPC - 4 : armNextPC - 2, armMode ? armNextPC - 4 : armNextPC - 2,
value); value);
} }
@ -339,6 +331,7 @@ static inline int16_t CPUReadHalfWordSigned(uint32_t address)
value); value);
} }
#endif #endif
return (int8_t)value;
} }
return (int16_t)value; return (int16_t)value;
} }
@ -425,7 +418,7 @@ static inline uint8_t CPUReadByte(uint32_t address)
armMode ? armNextPC - 4 : armNextPC - 2); armMode ? armNextPC - 4 : armNextPC - 2);
} }
#endif #endif
if (cpuDmaHack) { if (cpuDmaRunning || ((reg[15].I - cpuDmaPC) == (armState ? 4 : 2))) {
return cpuDmaLast & 0xFF; return cpuDmaLast & 0xFF;
} else { } else {
if (armState) { if (armState) {
@ -459,8 +452,6 @@ static inline void CPUWriteMemory(uint32_t address, uint32_t value)
} }
#endif #endif
address &= 0xFFFFFFFC;
switch (address >> 24) { switch (address >> 24) {
case 0x02: case 0x02:
#ifdef BKPT_SUPPORT #ifdef BKPT_SUPPORT
@ -565,8 +556,6 @@ static inline void CPUWriteHalfWord(uint32_t address, uint16_t value)
} }
#endif #endif
address &= 0xFFFFFFFE;
switch (address >> 24) { switch (address >> 24) {
case 2: case 2:
#ifdef BKPT_SUPPORT #ifdef BKPT_SUPPORT
@ -639,7 +628,7 @@ static inline void CPUWriteHalfWord(uint32_t address, uint16_t value)
(*cpuSaveGameFunc)(address, (uint8_t)value); (*cpuSaveGameFunc)(address, (uint8_t)value);
break; break;
} }
goto unwritable; // fallthrough
default: default:
unwritable: unwritable:
#ifdef GBA_LOGGING #ifdef GBA_LOGGING

View File

@ -63,7 +63,6 @@ void agbPrintFlush()
#ifdef BKPT_SUPPORT #ifdef BKPT_SUPPORT
dbgOutput("Did you forget to call AGBPrintInit?\n", 0); dbgOutput("Did you forget to call AGBPrintInit?\n", 0);
#endif #endif
log("AGBprint: Did you forget to call AGBPrintInit?\n");
// get rid of the text otherwise we will continue to be called // get rid of the text otherwise we will continue to be called
debuggerWriteHalfWord(0x9fe20fc, put); debuggerWriteHalfWord(0x9fe20fc, put);
return; return;
@ -73,18 +72,15 @@ void agbPrintFlush()
while (get != put) { while (get != put) {
char c = data[get++]; char c = data[get++];
#ifdef BKPT_SUPPORT
char s[2]; char s[2];
s[0] = c; s[0] = c;
s[1] = 0; s[1] = 0;
message[index++] = s[0];
if (systemVerbose & VERBOSE_AGBPRINT) if (systemVerbose & VERBOSE_AGBPRINT)
{ {
#ifdef BKPT_SUPPORT #ifdef BKPT_SUPPORT
dbgOutput(s, 0); dbgOutput(s, 0);
#endif #endif
}
if (c == '\n') if (c == '\n')
break; break;
} }

View File

@ -2,7 +2,7 @@ DEBUG=0
TILED_RENDERING=0 TILED_RENDERING=0
STATIC_LINKING=0 STATIC_LINKING=0
FRONTEND_SUPPORTS_RGB565=1 FRONTEND_SUPPORTS_RGB565=1
NO_LINK=0 NO_LINK=1
SPACE := SPACE :=
SPACE := $(SPACE) $(SPACE) SPACE := $(SPACE) $(SPACE)
@ -170,6 +170,7 @@ else ifneq (,$(findstring ios,$(platform)))
TARGET := $(TARGET_NAME)_libretro_ios.dylib TARGET := $(TARGET_NAME)_libretro_ios.dylib
fpic := -fPIC fpic := -fPIC
SHARED := -dynamiclib SHARED := -dynamiclib
MINVERSION :=
ifeq ($(IOSSDK),) ifeq ($(IOSSDK),)
IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
endif endif
@ -181,22 +182,12 @@ else ifneq (,$(findstring ios,$(platform)))
CXX = clang++ -arch armv7 -isysroot $(IOSSDK) CXX = clang++ -arch armv7 -isysroot $(IOSSDK)
endif endif
CFLAGS += -DIOS CFLAGS += -DIOS
ifeq ($(platform), ios-arm64)
CXX = clang++ -arch armv7 -isysroot $(IOSSDK)
CC = clang -arch arm64 -isysroot $(IOSSDK)
else
CC = clang -arch armv7 -isysroot $(IOSSDK)
CXX = clang++ -arch armv7 -isysroot $(IOSSDK)
endif
ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) ifeq ($(platform),$(filter $(platform),ios9 ios-arm64))
CC += -miphoneos-version-min=8.0 MINVERSION = -miphoneos-version-min=8.0
CXX += -miphoneos-version-min=8.0
CFLAGS += -miphoneos-version-min=8.0
else else
CC += -miphoneos-version-min=5.0 MINVERSION = -miphoneos-version-min=5.0
CXX += -miphoneos-version-min=5.0
CFLAGS += -miphoneos-version-min=5.0
endif endif
CFLAGS += $(MINVERSION)
TILED_RENDERING=1 TILED_RENDERING=1
else ifeq ($(platform), tvos-arm64) else ifeq ($(platform), tvos-arm64)
@ -207,6 +198,8 @@ ifeq ($(IOSSDK),)
IOSSDK := $(shell xcodebuild -version -sdk appletvos Path) IOSSDK := $(shell xcodebuild -version -sdk appletvos Path)
endif endif
TILED_RENDERING = 1 TILED_RENDERING = 1
CC = cc -arch arm64 -isysroot $(IOSSDK)
CXX = c++ -arch arm64 -isysroot $(IOSSDK)
# Theos iOS # Theos iOS
else ifeq ($(platform), theos_ios) else ifeq ($(platform), theos_ios)

View File

@ -43,14 +43,6 @@ bool cpuIsMultiBoot = false;
const char* loadDotCodeFile; const char* loadDotCodeFile;
const char* saveDotCodeFile; const char* saveDotCodeFile;
extern int systemColorDepth;
extern int systemRedShift;
extern int systemGreenShift;
extern int systemBlueShift;
extern uint16_t systemColorMap16[0x10000];
extern uint32_t systemColorMap32[0x10000];
bool utilWritePNGFile(const char* fileName, int w, int h, uint8_t* pix) bool utilWritePNGFile(const char* fileName, int w, int h, uint8_t* pix)
{ {
return false; return false;
@ -158,7 +150,7 @@ uint8_t *utilLoad(const char *file, bool (*accept)(const char *), uint8_t *data,
} }
} }
if (fread(image, 1, size, fp) != size) { if (fread(image, 1, size, fp) != (size_t)size) {
log("Failed to read from %s", file); log("Failed to read from %s", file);
fclose(fp); fclose(fp);
return NULL; return NULL;

View File

@ -1,199 +0,0 @@
#include <stdint.h>
#include <stdio.h>
#include <getopt.h>
#include <assert.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
enum save_type { EEPROM_512B,
EEPROM_8K,
FLASH_64K,
FLASH_128K,
SAVE_UNKNOWN };
static const char* save_type_to_string(enum save_type type)
{
switch (type) {
case EEPROM_512B:
return "EEPROM 4kbit";
case EEPROM_8K:
return "EEPROM 64kbit";
case FLASH_64K:
return "FLASH 512kbit";
case FLASH_128K:
return "FLASH 1MBit";
default:
return "Unknown type";
}
}
static bool scan_section(const uint8_t* data, unsigned size)
{
for (unsigned i = 0; i < size; i++) {
if (data[i] != 0xff)
return true;
}
return false;
}
static enum save_type detect_save_type(const uint8_t* data, unsigned size)
{
if (size == 512)
return EEPROM_512B;
if (size == 0x2000)
return EEPROM_8K;
if (size == 0x10000)
return FLASH_64K;
if (size == 0x20000)
return FLASH_128K;
if (size == (0x20000 + 0x2000)) {
if (scan_section(data, 0x10000) && !scan_section(data + 0x10000, 0x10000))
return FLASH_64K;
if (scan_section(data, 0x20000))
return FLASH_128K;
if (scan_section(data + 0x20000, 512) && !scan_section(data + 0x20000 + 512, 0x20000 - 512))
return EEPROM_512B;
if (scan_section(data + 0x20000, 0x2000))
return EEPROM_8K;
}
return SAVE_UNKNOWN;
}
static void dump_srm(FILE* file, const uint8_t* data, enum save_type type)
{
void* buf = malloc(0x20000 + 0x2000);
memset(buf, 0xff, 0x20000 + 0x2000);
switch (type) {
case EEPROM_512B:
fwrite(buf, 1, 0x20000, file);
fwrite(data, 1, 512, file);
fwrite(buf, 1, 0x2000 - 512, file);
break;
case EEPROM_8K:
fwrite(buf, 1, 0x20000, file);
fwrite(data, 1, 0x2000, file);
break;
case FLASH_64K:
fwrite(data, 1, 0x10000, file);
fwrite(buf, 1, 0x20000 + 0x2000 - 0x10000, file);
break;
case FLASH_128K:
fwrite(data, 1, 0x20000, file);
fwrite(buf, 1, 0x2000, file);
break;
default:
break;
}
free(buf);
}
static void dump_sav(FILE* file, const uint8_t* data, enum save_type type)
{
switch (type) {
case EEPROM_512B:
fwrite(data + 0x20000, 1, 512, file);
break;
case EEPROM_8K:
fwrite(data + 0x20000, 1, 0x2000, file);
break;
case FLASH_64K:
fwrite(data, 1, 0x10000, file);
break;
case FLASH_128K:
fwrite(data, 1, 0x20000, file);
break;
default:
break;
}
}
// One shot cowboy code :)
int main(int argc, char* argv[])
{
if (argc != 2) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
return 1;
}
FILE* file = fopen(argv[1], "rb");
if (!file) {
fprintf(stderr, "Failed to open file \"%s\"\n", argv[1]);
goto error;
}
fseek(file, 0, SEEK_END);
long len = ftell(file);
rewind(file);
uint8_t* buffer = malloc(len);
if (!buffer) {
fprintf(stderr, "Failed to allocate memory!\n");
goto error;
}
fread(buffer, 1, len, file);
fclose(file);
file = NULL;
char* out_path = strdup(argv[1]);
char* split = strrchr(out_path, '.');
const char* ext = NULL;
if (split) {
*split = '\0';
ext = split + 1;
if (strcasecmp(ext, "srm") == 0)
strcat(out_path, ".sav");
else if (strlen(ext) >= 3)
strcat(out_path, ".srm");
else
ext = NULL;
}
if (!ext) {
fprintf(stderr, "Cannot detect extension!\n");
goto error;
}
enum save_type type = detect_save_type(buffer, len);
printf("Detected save type: %s\n", save_type_to_string(type));
if (type == SAVE_UNKNOWN) {
fprintf(stderr, "Cannot infer save type ...\n");
goto error;
}
file = fopen(out_path, "wb");
if (!file)
goto error;
if (len == (0x20000 + 0x2000))
dump_sav(file, buffer, type);
else
dump_srm(file, buffer, type);
fclose(file);
return 0;
error:
if (file)
fclose(file);
return 1;
}

View File

@ -4,6 +4,7 @@ LIBRETRO_DIR := $(CORE_DIR)/libretro
FRONTEND_SUPPORTS_RGB565 := 1 FRONTEND_SUPPORTS_RGB565 := 1
TILED_RENDERING := 1 TILED_RENDERING := 1
NO_LINK := 1
include $(LIBRETRO_DIR)/Makefile.common include $(LIBRETRO_DIR)/Makefile.common
@ -18,6 +19,10 @@ ifneq ($(CURRENT_COMMIT),$(TAG_COMMIT))
COREFLAGS += -DGIT_COMMIT=\"$(CURRENT_COMMIT)\" COREFLAGS += -DGIT_COMMIT=\"$(CURRENT_COMMIT)\"
endif endif
ifeq ($(NO_LINK), 1)
COREFLAGS += -DNO_LINK
endif
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := retro LOCAL_MODULE := retro
LOCAL_SRC_FILES := $(SOURCES_CXX) LOCAL_SRC_FILES := $(SOURCES_CXX)

View File

@ -63,6 +63,7 @@ static bool option_showAdvancedOptions = false;
static double option_sndFiltering = 0.5; static double option_sndFiltering = 0.5;
static unsigned option_gbPalette = 0; static unsigned option_gbPalette = 0;
static bool option_lcdfilter = false; static bool option_lcdfilter = false;
// filters // filters
static IFBFilterFunc ifb_filter_func = NULL; static IFBFilterFunc ifb_filter_func = NULL;
@ -71,6 +72,7 @@ static unsigned systemWidth = gbaWidth;
static unsigned systemHeight = gbaHeight; static unsigned systemHeight = gbaHeight;
static EmulatedSystem* core = NULL; static EmulatedSystem* core = NULL;
static IMAGE_TYPE type = IMAGE_UNKNOWN; static IMAGE_TYPE type = IMAGE_UNKNOWN;
static bool libretro_supports_bitmasks = false;
// global vars // global vars
uint16_t systemColorMap16[0x10000]; uint16_t systemColorMap16[0x10000];
@ -80,80 +82,14 @@ int systemRedShift = 0;
int systemBlueShift = 0; int systemBlueShift = 0;
int systemGreenShift = 0; int systemGreenShift = 0;
int systemColorDepth = 32; int systemColorDepth = 32;
int systemDebug = 0;
int systemVerbose = 0; int systemVerbose = 0;
int systemFrameSkip = 0; int systemFrameSkip = 0;
int systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; int systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;
int systemSpeed = 0;
int emulating = 0; int emulating = 0;
#ifdef BKPT_SUPPORT
void (*dbgOutput)(const char* s, uint32_t addr); void (*dbgOutput)(const char* s, uint32_t addr);
void (*dbgSignal)(int sig, int number); void (*dbgSignal)(int sig, int number);
// Dummy vars/funcs for serial io emulation without LINK communication related stuff
#ifndef NO_LINK
#include "../gba/GBALink.h"
uint8_t gbSIO_SC;
bool LinkIsWaiting;
bool LinkFirstTime;
bool EmuReseted;
int winGbPrinterEnabled;
bool gba_joybus_active = false;
#define UPDATE_REG(address, value) WRITE16LE(((uint16_t*)&ioMem[address]), value)
LinkMode GetLinkMode()
{
return LINK_DISCONNECTED;
}
void StartGPLink(uint16_t value)
{
if (!ioMem)
return;
UPDATE_REG(COMM_RCNT, value);
}
void LinkUpdate(int ticks)
{
}
void StartLink(uint16_t siocnt)
{
/* log("'s' siocnt = %04x\n", siocnt); */
if (!ioMem)
return;
if(siocnt & 0x80)
{
siocnt &= 0xff7f;
if(siocnt & 1 && (siocnt & 0x4000))
{
UPDATE_REG(COMM_SIOCNT, 0xFF);
IF |= 0x80;
UPDATE_REG(0x202, IF);
siocnt &= 0x7f7f;
}
}
UPDATE_REG(COMM_SIOCNT, siocnt);
}
void CheckLinkConnection()
{
}
void gbInitLink()
{
LinkIsWaiting = false;
LinkFirstTime = true;
}
uint16_t gbLinkUpdate(uint8_t b, int gbSerialOn) //used on external clock
{
return (b << 8);
}
#endif #endif
#define GS555(x) (x | (x << 5) | (x << 10)) #define GS555(x) (x | (x << 5) | (x << 10))
@ -233,6 +169,8 @@ static void* gb_rtcdata_prt(void)
return &gbDataMBC3.mapperSeconds; return &gbDataMBC3.mapperSeconds;
case 0xfd: // TAMA5 + extended case 0xfd: // TAMA5 + extended
return &gbDataTAMA5.mapperSeconds; return &gbDataTAMA5.mapperSeconds;
case 0xfe: // HuC3 + Clock
return &gbRTCHuC3.mapperLastTime;
} }
return NULL; return NULL;
} }
@ -245,6 +183,8 @@ static size_t gb_rtcdata_size(void)
return MBC3_RTC_DATA_SIZE; return MBC3_RTC_DATA_SIZE;
case 0xfd: // TAMA5 + extended case 0xfd: // TAMA5 + extended
return TAMA5_RTC_DATA_SIZE; return TAMA5_RTC_DATA_SIZE;
case 0xfe: // HuC3 + Clock
return sizeof(gbRTCHuC3.mapperLastTime);
} }
return 0; return 0;
} }
@ -295,6 +235,9 @@ static void gbInitRTC(void)
gbDataTAMA5.mapperControl = (gbDataTAMA5.mapperControl & 0xfe) | (lt->tm_yday > 255 ? 1 : 0); gbDataTAMA5.mapperControl = (gbDataTAMA5.mapperControl & 0xfe) | (lt->tm_yday > 255 ? 1 : 0);
} }
break; break;
case 0xfe:
gbRTCHuC3.mapperLastTime = rawtime;
break;
} }
} }
@ -362,7 +305,7 @@ void* retro_get_memory_data(unsigned id)
data = (gbCgbMode ? gbVram : (gbMemory + 0x8000)); data = (gbCgbMode ? gbVram : (gbMemory + 0x8000));
break; break;
case RETRO_MEMORY_RTC: case RETRO_MEMORY_RTC:
if (gbBattery && gbRTCPresent) if (gbRTCPresent)
data = gb_rtcdata_prt(); data = gb_rtcdata_prt();
break; break;
} }
@ -410,7 +353,8 @@ size_t retro_get_memory_size(unsigned id)
size = gbCgbMode ? 0x4000 : 0x2000; size = gbCgbMode ? 0x4000 : 0x2000;
break; break;
case RETRO_MEMORY_RTC: case RETRO_MEMORY_RTC:
size = gb_rtcdata_size(); if (gbRTCPresent)
size = gb_rtcdata_size();
break; break;
} }
break; break;
@ -643,6 +587,12 @@ void retro_init(void)
rumble_cb = rumble.set_rumble_state; rumble_cb = rumble.set_rumble_state;
else else
rumble_cb = NULL; rumble_cb = NULL;
if (environ_cb(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL))
{
libretro_supports_bitmasks = true;
log_cb(RETRO_LOG_INFO, "SET_SUPPORT_INPUT_BITMASK: yes\n");
}
} }
static const char *gbGetCartridgeType(void) static const char *gbGetCartridgeType(void)
@ -978,6 +928,7 @@ void retro_deinit(void)
emulating = 0; emulating = 0;
core->emuCleanUp(); core->emuCleanUp();
soundShutdown(); soundShutdown();
libretro_supports_bitmasks = false;
} }
void retro_reset(void) void retro_reset(void)
@ -1414,6 +1365,7 @@ void updateInput_SolarSensor(void)
static void updateInput_Joypad(void) static void updateInput_Joypad(void)
{ {
unsigned max_buttons = MAX_BUTTONS - ((type == IMAGE_GB) ? 2 : 0); // gb only has 8 buttons unsigned max_buttons = MAX_BUTTONS - ((type == IMAGE_GB) ? 2 : 0); // gb only has 8 buttons
int16_t inbuf = 0;
for (unsigned port = 0; port < MAX_PLAYERS; port++) for (unsigned port = 0; port < MAX_PLAYERS; port++)
{ {
@ -1421,8 +1373,16 @@ static void updateInput_Joypad(void)
input_buf[port] = 0; input_buf[port] = 0;
if (retropad_device[port] == RETRO_DEVICE_JOYPAD) { if (retropad_device[port] == RETRO_DEVICE_JOYPAD) {
if (libretro_supports_bitmasks)
inbuf = input_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK);
else
{
for (int i = 0; i < (RETRO_DEVICE_ID_JOYPAD_R3 + 1); i++)
inbuf |= input_cb(0, RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0;
}
for (unsigned button = 0; button < max_buttons; button++) for (unsigned button = 0; button < max_buttons; button++)
input_buf[port] |= input_cb(port, RETRO_DEVICE_JOYPAD, 0, binds[button]) << button; input_buf[port] |= (inbuf & (1 << binds[button])) ? (1 << button) : 0;
if (option_turboEnable) { if (option_turboEnable) {
/* Handle Turbo A & B buttons */ /* Handle Turbo A & B buttons */
@ -1473,6 +1433,10 @@ void retro_run(void)
if (!gbDataTAMA5.mapperLastTime) if (!gbDataTAMA5.mapperLastTime)
initRTC = true; initRTC = true;
break; break;
case 0xfe:
if (!gbRTCHuC3.mapperLastTime)
initRTC = true;
break;
} }
/* Initialize RTC using local time if needed */ /* Initialize RTC using local time if needed */
if (initRTC) if (initRTC)

View File

@ -192,7 +192,7 @@ struct retro_core_option_definition option_defs_us[] = {
{ {
"vbam_lcdfilter", "vbam_lcdfilter",
"LCD Color Filter", "LCD Color Filter",
"TODO:", "Darkens the onscreen colors by applying a screen filter.",
{ {
{ "disabled", NULL }, { "disabled", NULL },
{ "enabled", NULL }, { "enabled", NULL },
@ -203,11 +203,11 @@ struct retro_core_option_definition option_defs_us[] = {
{ {
"vbam_interframeblending", "vbam_interframeblending",
"Interframe Blending", "Interframe Blending",
"TODO:", "Simulates LCD ghosting effects. 'Smart' attempts to detect screen flickering, and only performs a 50:50 mix on affected pixels, while 'Motion Blur' mimics natural LCD response times by combining multiple buffered frames. 'Smart' blending is required when playing games that aggressively exploit LCD ghosting for transparency effects (Wave Race, Chikyuu Kaihou Gun ZAS, F-Zero, the Boktai series...).",
{ {
{ "disabled", NULL }, { "disabled", NULL },
{ "smart", NULL }, { "smart", "Smart" },
{ "motion blur", NULL }, { "motion blur", "Motion Blur" },
{ NULL, NULL }, { NULL, NULL },
}, },
"disabled" "disabled"

View File

@ -1,47 +0,0 @@
@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
@SET VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio .NET 2003
@SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v1.1.4322
@SET FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1
@rem Root of Visual Studio common files.
@if "%VSINSTALLDIR%"=="" goto Usage
@if "%VCINSTALLDIR%"=="" set VCINSTALLDIR=%VSINSTALLDIR%
@rem
@rem Root of Visual Studio ide installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%
@rem
@rem Root of Visual C++ installed files.
@rem
@set MSVCDir=%VCINSTALLDIR%\VC7
@rem
@echo Setting environment for using Microsoft Visual Studio .NET 2003 tools.
@echo (If you have another version of Visual Studio or Visual C++ installed and wish
@echo to use its tools from the command line, run vcvars32.bat for that version.)
@rem
@REM %VCINSTALLDIR%\Common7\Tools dir is added only for real setup.
@set PATH=%DevEnvDir%;%MSVCDir%\BIN;%VCINSTALLDIR%\Common7\Tools;%VCINSTALLDIR%\Common7\Tools\bin\prerelease;%VCINSTALLDIR%\Common7\Tools\bin;%FrameworkSDKDir%\bin;%FrameworkDir%\%FrameworkVersion%;%PATH%;
@set INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;%MSVCDir%\INCLUDE;%FrameworkSDKDir%\include;%INCLUDE%;%XDK%\xbox\include
@set LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib;%XDK%\lib;%XDK%\xbox\lib;%LIB%
@goto end
:Usage
@echo. VSINSTALLDIR variable is not set.
@echo.
@echo SYNTAX: %0
@goto end
:end
devenv /clean Release msvc-2003-xbox1.sln
devenv /build Release msvc-2003-xbox1.sln
exit

View File

@ -1,30 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vbanext-msvc2003-xbox1", "msvc-2003-xbox1/msvc-2003-xbox1.vcproj", "{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Profile = Profile
Profile_FastCap = Profile_FastCap
Release = Release
Release_LTCG = Release_LTCG
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Debug.ActiveCfg = Debug|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Debug.Build.0 = Debug|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Profile.ActiveCfg = Profile|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Profile.Build.0 = Profile|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Profile_FastCap.ActiveCfg = Profile_FastCap|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Profile_FastCap.Build.0 = Profile_FastCap|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Release.ActiveCfg = Release|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Release.Build.0 = Release|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Release_LTCG.ActiveCfg = Release_LTCG|Xbox
{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}.Release_LTCG.Build.0 = Release_LTCG|Xbox
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

View File

@ -1,234 +0,0 @@
<?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="vbanext-msvc2003-xbox1"
ProjectGUID="{BDCB70E0-EEBB-404A-9874-9A2E22A4A2B3}"
Keyword="XboxProj">
<Platforms>
<Platform
Name="Xbox"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Xbox"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="$(ProjectDir)"
PreprocessorDefinitions="_DEBUG;_XBOX;_XBOX1;_LIB;LSB_FIRST;__LIBRETRO__;HAVE_STDINT_H;SPEEDHAX;INLINE=_inline;__restrict=;FRONTEND_SUPPORTS_RGB565"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderFile="$(OutDir)/$(ProjectName).pch"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/vba_next_libretro_xdk.lib"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
</Configuration>
<Configuration
Name="Profile|Xbox"
OutputDirectory="Profile"
IntermediateDirectory="Profile"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
OmitFramePointers="TRUE"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="$(ProjectDir)"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;PROFILE;_LIB;LSB_FIRST;__LIBRETRO__;HAVE_STDINT_H;SPEEDHAX;INLINE=_inline;__restrict=;FRONTEND_SUPPORTS_RGB565"
StringPooling="TRUE"
RuntimeLibrary="0"
BufferSecurityCheck="TRUE"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderFile="$(OutDir)/$(ProjectName).pch"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/vba_next_libretro_xdk.lib"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
</Configuration>
<Configuration
Name="Profile_FastCap|Xbox"
OutputDirectory="Profile_FastCap"
IntermediateDirectory="Profile_FastCap"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
OmitFramePointers="TRUE"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="$(ProjectDir)"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;PROFILE;FASTCAP;_LIB;LSB_FIRST;__LIBRETRO__;HAVE_STDINT_H;SPEEDHAX;INLINE=_inline;__restrict=;FRONTEND_SUPPORTS_RGB565"
StringPooling="TRUE"
RuntimeLibrary="0"
BufferSecurityCheck="TRUE"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderFile="$(OutDir)/$(ProjectName).pch"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"
FastCAP="TRUE"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/vba_next_libretro_xdk.lib"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
</Configuration>
<Configuration
Name="Release|Xbox"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="4"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="TRUE"
ImproveFloatingPointConsistency="TRUE"
FavorSizeOrSpeed="1"
OmitFramePointers="TRUE"
EnableFiberSafeOptimizations="TRUE"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="$(ProjectDir)"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;_LIB;LSB_FIRST;__LIBRETRO__;HAVE_STDINT_H;SPEEDHAX;INLINE=_inline;__restrict=;FRONTEND_SUPPORTS_RGB565"
StringPooling="TRUE"
RuntimeLibrary="0"
BufferSecurityCheck="TRUE"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderFile="$(OutDir)/$(ProjectName).pch"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/vba_next_libretro_xdk.lib"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
</Configuration>
<Configuration
Name="Release_LTCG|Xbox"
OutputDirectory="Release_LTCG"
IntermediateDirectory="Release_LTCG"
ConfigurationType="4"
CharacterSet="2"
WholeProgramOptimization="TRUE">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
OmitFramePointers="TRUE"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="$(ProjectDir)"
PreprocessorDefinitions="NDEBUG;_XBOX;_XBOX1;LTCG;_LIB;LSB_FIRST;__LIBRETRO__;HAVE_STDINT_H;SPEEDHAX;INLINE=_inline;__restrict=;FRONTEND_SUPPORTS_RGB565"
StringPooling="TRUE"
RuntimeLibrary="0"
BufferSecurityCheck="TRUE"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderFile="$(OutDir)/$(ProjectName).pch"
WarningLevel="3"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(OutDir)/vba_next_libretro_xdk.lib"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<Filter
Name="libretro"
Filter="">
<File
RelativePath="..\..\libretro.cpp">
</File>
</Filter>
<Filter
Name="src"
Filter="">
<File
RelativePath="..\..\..\src\gba.cpp">
</File>
<File
RelativePath="..\..\..\src\memory.cpp">
</File>
<File
RelativePath="..\..\..\src\sound.cpp">
</File>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
</Filter>
<File
RelativePath=".\ReadMe.txt">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,246 +0,0 @@
// ISO C9x compliant stdint.h for Microsoft Visual Studio
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
//
// Copyright (c) 2006-2008 Alexander Chemeris
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. The name of the author may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef __RARCH_STDINT_H
#define __RARCH_STDINT_H
#if _MSC_VER && (_MSC_VER < 1600)
// pre-MSVC 2010 needs an implementation of stdint.h
#if _MSC_VER > 1000
#pragma once
#endif
#include <limits.h>
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
// or compiler give many errors like this:
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
#ifdef __cplusplus
extern "C" {
#endif
#include <wchar.h>
#ifdef __cplusplus
}
#endif
// Define _W64 macros to mark types changing their size, like intptr_t.
#ifndef _W64
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
#define _W64 __w64
#else
#define _W64
#endif
#endif
// 7.18.1 Integer types
// 7.18.1.1 Exact-width integer types
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
// realize that, e.g. char has the same size as __int8
// so we give up on __intX for them.
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
#else
typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
#endif
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
// 7.18.1.2 Minimum-width integer types
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
typedef int64_t int_least64_t;
typedef uint8_t uint_least8_t;
typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
// 7.18.1.3 Fastest minimum-width integer types
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
typedef int64_t int_fast64_t;
typedef uint8_t uint_fast8_t;
typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
// 7.18.1.4 Integer types capable of holding object pointers
#ifdef _WIN64 // [
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
#else // _WIN64 ][
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
#endif // _WIN64 ]
// 7.18.1.5 Greatest-width integer types
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
// 7.18.2 Limits of specified-width integer types
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and
// footnote 221 at page 259
// 7.18.2.1 Limits of exact-width integer types
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
#define INT16_MAX _I16_MAX
#define INT32_MIN ((int32_t)_I32_MIN)
#define INT32_MAX _I32_MAX
#define INT64_MIN ((int64_t)_I64_MIN)
#define INT64_MAX _I64_MAX
#define UINT8_MAX _UI8_MAX
#define UINT16_MAX _UI16_MAX
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
// 7.18.2.2 Limits of minimum-width integer types
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
#define INT_LEAST16_MAX INT16_MAX
#define INT_LEAST32_MIN INT32_MIN
#define INT_LEAST32_MAX INT32_MAX
#define INT_LEAST64_MIN INT64_MIN
#define INT_LEAST64_MAX INT64_MAX
#define UINT_LEAST8_MAX UINT8_MAX
#define UINT_LEAST16_MAX UINT16_MAX
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
// 7.18.2.3 Limits of fastest minimum-width integer types
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
#define INT_FAST16_MAX INT16_MAX
#define INT_FAST32_MIN INT32_MIN
#define INT_FAST32_MAX INT32_MAX
#define INT_FAST64_MIN INT64_MIN
#define INT_FAST64_MAX INT64_MAX
#define UINT_FAST8_MAX UINT8_MAX
#define UINT_FAST16_MAX UINT16_MAX
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
// 7.18.2.4 Limits of integer types capable of holding object pointers
#ifdef _WIN64 // [
#define INTPTR_MIN INT64_MIN
#define INTPTR_MAX INT64_MAX
#define UINTPTR_MAX UINT64_MAX
#else // _WIN64 ][
#define INTPTR_MIN INT32_MIN
#define INTPTR_MAX INT32_MAX
#define UINTPTR_MAX UINT32_MAX
#endif // _WIN64 ]
// 7.18.2.5 Limits of greatest-width integer types
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
// 7.18.3 Limits of other integer types
#ifdef _WIN64 // [
#define PTRDIFF_MIN _I64_MIN
#define PTRDIFF_MAX _I64_MAX
#else // _WIN64 ][
#define PTRDIFF_MIN _I32_MIN
#define PTRDIFF_MAX _I32_MAX
#endif // _WIN64 ]
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
#ifndef SIZE_MAX // [
#ifdef _WIN64 // [
#define SIZE_MAX _UI64_MAX
#else // _WIN64 ][
#define SIZE_MAX _UI32_MAX
#endif // _WIN64 ]
#endif // SIZE_MAX ]
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
#ifndef WCHAR_MIN // [
#define WCHAR_MIN 0
#endif // WCHAR_MIN ]
#ifndef WCHAR_MAX // [
#define WCHAR_MAX _UI16_MAX
#endif // WCHAR_MAX ]
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
#endif // __STDC_LIMIT_MACROS ]
// 7.18.4 Limits of other integer types
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
// 7.18.4.1 Macros for minimum-width integer constants
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
#define INT32_C(val) val##i32
#define INT64_C(val) val##i64
#define UINT8_C(val) val##ui8
#define UINT16_C(val) val##ui16
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
// 7.18.4.2 Macros for greatest-width integer constants
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
#endif // __STDC_CONSTANT_MACROS ]
#else
// sanity for everything else
#include <stdint.h>
#endif
#endif

View File

@ -1,124 +0,0 @@
@echo off
@echo Setting environment for using Microsoft Visual Studio 2010 x86 tools.
@call :GetVSCommonToolsDir
@if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
@call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%FrameworkDir32%"=="" goto error_no_FrameworkDIR32
@if "%FrameworkVersion32%"=="" goto error_no_FrameworkVer32
@if "%Framework35Version%"=="" goto error_no_Framework35Version
@set FrameworkDir=%FrameworkDir32%
@set FrameworkVersion=%FrameworkVersion32%
@if not "%WindowsSdkDir%" == "" (
@set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools;%WindowsSdkDir%bin;%PATH%"
@set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
@set "LIB=%WindowsSdkDir%lib;%LIB%"
)
@rem
@rem Root of Visual Studio IDE installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%Common7\IDE\
@rem PATH
@rem ----
@if exist "%VSINSTALLDIR%Team Tools\Performance Tools" (
@set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
)
@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
@if exist "%VCINSTALLDIR%VCPackages" set PATH=%VCINSTALLDIR%VCPackages;%PATH%
@set PATH=%FrameworkDir%%Framework35Version%;%PATH%
@set PATH=%FrameworkDir%%FrameworkVersion%;%PATH%
@set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
@if exist "%VCINSTALLDIR%BIN" set PATH=%VCINSTALLDIR%BIN;%PATH%
@set PATH=%DevEnvDir%;%PATH%
@if exist "%VSINSTALLDIR%VSTSDB\Deploy" (
@set "PATH=%VSINSTALLDIR%VSTSDB\Deploy;%PATH%"
)
@if not "%FSHARPINSTALLDIR%" == "" (
@set "PATH=%FSHARPINSTALLDIR%;%PATH%"
)
@rem INCLUDE
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
@if exist "%VCINSTALLDIR%INCLUDE" set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%
@rem LIB
@rem ---
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIB=%VCINSTALLDIR%ATLMFC\LIB;%LIB%
@if exist "%VCINSTALLDIR%LIB" set LIB=%VCINSTALLDIR%LIB;%LIB%
@rem LIBPATH
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB;%LIBPATH%
@if exist "%VCINSTALLDIR%LIB" set LIBPATH=%VCINSTALLDIR%LIB;%LIBPATH%
@set LIBPATH=%FrameworkDir%%Framework35Version%;%LIBPATH%
@set LIBPATH=%FrameworkDir%%FrameworkVersion%;%LIBPATH%
@goto end
@REM -----------------------------------------------------------------------
:GetVSCommonToolsDir
@set VS100COMNTOOLS=
@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKCU > nul 2>&1
@exit /B 0
:GetVSCommonToolsDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
:GetVSCommonToolsDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
@if "%VS100COMNTOOLS%"=="" exit /B 1
@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
@exit /B 0
@REM -----------------------------------------------------------------------
:error_no_VS100COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end
:error_no_VSINSTALLDIR
@echo ERROR: Cannot determine the location of the VS installation.
@goto end
:error_no_FrameworkDIR32
@echo ERROR: Cannot determine the location of the .NET Framework 32bit installation.
@goto end
:error_no_FrameworkVer32
@echo ERROR: Cannot determine the version of the .NET Framework 32bit installation.
@goto end
:error_no_Framework35Version
@echo ERROR: Cannot determine the .NET Framework 3.5 version.
@goto end
:end
msbuild msvc-2010-360.sln /p:Configuration=Release /target:clean
msbuild msvc-2010-360.sln /p:Configuration=Release
exit

View File

@ -1,32 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mvc-2010-360", "msvc-2010-360/msvc-2010-360.vcxproj", "{DB17AF79-EB79-4062-ACA8-F82864712DA0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CodeAnalysis|Xbox 360 = CodeAnalysis|Xbox 360
Debug|Xbox 360 = Debug|Xbox 360
Profile_FastCap|Xbox 360 = Profile_FastCap|Xbox 360
Profile|Xbox 360 = Profile|Xbox 360
Release_LTCG|Xbox 360 = Release_LTCG|Xbox 360
Release|Xbox 360 = Release|Xbox 360
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.CodeAnalysis|Xbox 360.ActiveCfg = CodeAnalysis|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.CodeAnalysis|Xbox 360.Build.0 = CodeAnalysis|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Debug|Xbox 360.ActiveCfg = Debug|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Debug|Xbox 360.Build.0 = Debug|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Profile_FastCap|Xbox 360.ActiveCfg = Profile_FastCap|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Profile_FastCap|Xbox 360.Build.0 = Profile_FastCap|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Profile|Xbox 360.ActiveCfg = Profile|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Profile|Xbox 360.Build.0 = Profile|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Release_LTCG|Xbox 360.ActiveCfg = Release_LTCG|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Release_LTCG|Xbox 360.Build.0 = Release_LTCG|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Release|Xbox 360.ActiveCfg = Release|Xbox 360
{DB17AF79-EB79-4062-ACA8-F82864712DA0}.Release|Xbox 360.Build.0 = Release|Xbox 360
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="CodeAnalysis|Xbox 360">
<Configuration>CodeAnalysis</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Xbox 360">
<Configuration>Debug</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile|Xbox 360">
<Configuration>Profile</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Profile_FastCap|Xbox 360">
<Configuration>Profile_FastCap</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Xbox 360">
<Configuration>Release</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_LTCG|Xbox 360">
<Configuration>Release_LTCG</Configuration>
<Platform>Xbox 360</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\libretro\libretro.hpp" />
<ClInclude Include="..\src\gba.h" />
<ClInclude Include="..\src\globals.h" />
<ClInclude Include="..\src\memory.h" />
<ClInclude Include="..\src\port.h" />
<ClInclude Include="..\src\sound.h" />
<ClInclude Include="..\src\sound_blargg.h" />
<ClInclude Include="..\src\system.h" />
<ClInclude Include="..\src\types.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\gba.cpp" />
<ClCompile Include="..\..\..\src\memory.cpp" />
<ClCompile Include="..\..\..\src\sound.cpp" />
<ClCompile Include="..\..\libretro.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{DB17AF79-EB79-4062-ACA8-F82864712DA0}</ProjectGuid>
<Keyword>Xbox360Proj</Keyword>
<ProjectName>vba-next-libretro-360</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='CodeAnalysis|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile_FastCap|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_LTCG|Xbox 360'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='CodeAnalysis|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Profile|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Profile_FastCap|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release_LTCG|Xbox 360'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='CodeAnalysis|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile_FastCap|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_LTCG|Xbox 360'">
<OutputFile>$(OutDir)vba_next_libretro_xdk360$(TargetExt)</OutputFile>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<ExceptionHandling>false</ExceptionHandling>
<MinimalRebuild>true</MinimalRebuild>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;_LIB;;__LIBRETRO__;SPEEDHAX;__POWERPC__;__ppc__;WORDS_BIGENDIAN;BLARGG_BIG_ENDIAN;INLINE=_inline;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='CodeAnalysis|Xbox 360'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<ExceptionHandling>false</ExceptionHandling>
<MinimalRebuild>true</MinimalRebuild>
<PREfast>AnalyzeOnly</PREfast>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_DEBUG;_XBOX;_LIB;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Xbox 360'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ExceptionHandling>false</ExceptionHandling>
<StringPooling>true</StringPooling>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;_LIB;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
<IgnoreSpecificDefaultLibraries>xapilib.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile_FastCap|Xbox 360'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ExceptionHandling>false</ExceptionHandling>
<StringPooling>true</StringPooling>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallAttributedProfiling>Fastcap</CallAttributedProfiling>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;_LIB;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<StringPooling>true</StringPooling>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;_LIB;__LIBRETRO__;SPEEDHAX;__POWERPC__;__ppc__;WORDS_BIGENDIAN;BLARGG_BIG_ENDIAN;INLINE=_inline;USE_CACHE_PREFETCH;BRANCHLESS_GBA_GFX;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreschedulingOptimization>true</PreschedulingOptimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_LTCG|Xbox 360'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<StringPooling>true</StringPooling>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<ExceptionHandling>false</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;_LIB;__LIBRETRO__;USE_CACHE_PREFETCH;BRANCHLESS_GBA_GFX;SPEEDHAX;__POWERPC__;__ppc__;WORDS_BIGENDIAN;BLARGG_BIG_ENDIAN;INLINE=_inline;%(PreprocessorDefinitions);_XBOX360;FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\libretro;$(SolutionDir)\..\src;$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreschedulingOptimization>true</PreschedulingOptimization>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Source Files\libretro">
<UniqueIdentifier>{d19de43b-0337-4673-9b9e-1892d348647d}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\libretro">
<UniqueIdentifier>{becd444c-3df5-4a9e-9885-8a181058095d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\libretro\libretro.hpp">
<Filter>Header Files\libretro</Filter>
</ClInclude>
<ClInclude Include="..\src\gba.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\globals.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\memory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\port.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sound.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sound_blargg.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\system.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\types.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\libretro.cpp">
<Filter>Source Files\libretro</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\sound.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\gba.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\memory.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,20 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msvc-2010", "msvc-2010/msvc-2010.vcxproj", "{C461207F-8F4F-4BFB-A90D-25298F37B47D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C461207F-8F4F-4BFB-A90D-25298F37B47D}.Debug|Win32.ActiveCfg = Debug|Win32
{C461207F-8F4F-4BFB-A90D-25298F37B47D}.Debug|Win32.Build.0 = Debug|Win32
{C461207F-8F4F-4BFB-A90D-25298F37B47D}.Release|Win32.ActiveCfg = Release|Win32
{C461207F-8F4F-4BFB-A90D-25298F37B47D}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -1,27 +0,0 @@
LIBRARY "libretro-prboom msvc2010"
EXPORTS
retro_set_environment
retro_set_video_refresh
retro_set_audio_sample
retro_set_audio_sample_batch
retro_set_input_poll
retro_set_input_state
retro_init
retro_deinit
retro_api_version
retro_get_system_info
retro_get_system_av_info
retro_set_controller_port_device
retro_reset
retro_run
retro_serialize_size
retro_serialize
retro_unserialize
retro_cheat_reset
retro_cheat_set
retro_load_game
retro_load_game_special
retro_unload_game
retro_get_region
retro_get_memory_data
retro_get_memory_size

View File

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C461207F-8F4F-4BFB-A90D-25298F37B47D}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>msvc2010</RootNamespace>
<ProjectName>vba-next</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetName>libretro</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>libretro</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MSVC2010_EXPORTS;_CRT_SECURE_NO_WARNINGS;LSB_FIRST;SPEEDHAX=1;__LIBRETRO__;INLINE=_inline;%(PreprocessorDefinitions);FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;$(SolutionDir)\..\src\;$(SolutionDir)\..\libretro;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>libretro.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MSVC2010_EXPORTS;_CRT_SECURE_NO_WARNINGS;LSB_FIRST;SPEEDHAX=1;__LIBRETRO__;INLINE=_inline;%(PreprocessorDefinitions);FRONTEND_SUPPORTS_RGB565</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\..\src\common;$(SolutionDir)\..\src\gb;$(SolutionDir)\..\src\gba;$(SolutionDir)\..\src\;$(SolutionDir)\..\libretro;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>libretro.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\libretro\libretro.hpp" />
<ClInclude Include="..\src\gba\sound_blargg.h" />
<ClInclude Include="..\src\common\Port.h" />
<ClInclude Include="..\src\common\Types.h" />
<ClInclude Include="..\src\gba\memory.h" />
<ClInclude Include="..\src\gba\GBA.h" />
<ClInclude Include="..\src\gba\Globals.h" />
<ClInclude Include="..\src\gba\Sound.h" />
<ClInclude Include="..\src\NLS.h" />
<ClInclude Include="..\src\System.h" />
<ClInclude Include="..\src\Util.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\gba.cpp" />
<ClCompile Include="..\..\..\src\memory.cpp" />
<ClCompile Include="..\..\..\src\sound.cpp" />
<ClCompile Include="..\..\libretro.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Source Files\libretro">
<UniqueIdentifier>{3ed03eb4-3d22-42ca-b2ab-1058e771db27}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\libretro">
<UniqueIdentifier>{01290b17-a062-4772-8a90-1fb347398419}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\gba">
<UniqueIdentifier>{9553246f-4fb1-41ce-807d-bd3c3dc6f564}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\common">
<UniqueIdentifier>{d5a23baf-0d6e-4d49-a81e-f1320c3186cc}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\NLS.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\System.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\Util.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\gba\memory.h">
<Filter>Header Files\gba</Filter>
</ClInclude>
<ClInclude Include="..\src\gba\GBA.h">
<Filter>Header Files\gba</Filter>
</ClInclude>
<ClInclude Include="..\src\gba\Globals.h">
<Filter>Header Files\gba</Filter>
</ClInclude>
<ClInclude Include="..\src\gba\Sound.h">
<Filter>Header Files\gba</Filter>
</ClInclude>
<ClInclude Include="..\libretro\libretro.hpp">
<Filter>Header Files\libretro</Filter>
</ClInclude>
<ClInclude Include="..\src\gba\sound_blargg.h">
<Filter>Header Files\gba</Filter>
</ClInclude>
<ClInclude Include="..\src\common\Types.h">
<Filter>Header Files\common</Filter>
</ClInclude>
<ClInclude Include="..\src\common\Port.h">
<Filter>Header Files\common</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\libretro.cpp">
<Filter>Source Files\libretro</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\sound.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\gba.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\memory.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>