(MSVC 2003 Xbox 1) Make PCE core Xbox 1-compatible

This commit is contained in:
twinaphex 2013-01-19 18:13:54 +01:00
parent 8d6d38bf0c
commit 1ca11787c6
15 changed files with 833 additions and 82 deletions

View File

@ -1,5 +1,11 @@
#include "MemoryStream.h"
#include <stdint.h>
#include "MemoryStream.h"
#ifdef _XBOX
#ifndef SIZE_MAX
#define SIZE_MAX _UI32_MAX
#endif
#endif
/*
TODO:

View File

@ -106,7 +106,7 @@ static int32 lastts;
static int32 scsicd_ne = 0;
// ADPCM variables and whatnot
#define ADPCM_DEBUG(x, ...) { /*printf("[Half=%d, End=%d, Playing=%d] "x, ADPCM.HalfReached, ADPCM.EndReached, ADPCM.Playing, ## __VA_ARGS__);*/ }
//#define ADPCM_DEBUG(x, ...) { /*printf("[Half=%d, End=%d, Playing=%d] "x, ADPCM.HalfReached, ADPCM.EndReached, ADPCM.Playing, ## __VA_ARGS__);*/ }
typedef Blip_Synth<blip_good_quality, 4096> ADSynth;
static ADSynth ADPCMSynth;
@ -607,7 +607,7 @@ uint8 PCECD_Read(uint32 timestamp, uint32 A, int32 &next_event, const bool PeekM
case 0xa:
if(!PeekMode)
{
ADPCM_DEBUG("ReadBuffer\n");
//ADPCM_DEBUG("ReadBuffer\n");
ADPCM.ReadPending = 19 * 3; //24 * 3;
}
@ -744,12 +744,12 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
ADPCM.Addr &= 0xFF00;
ADPCM.Addr |= V;
ADPCM_DEBUG("SAL: %02x, %d\n", V, timestamp);
//ADPCM_DEBUG("SAL: %02x, %d\n", V, timestamp);
// Length appears to be constantly latched when D4 is set(tested on a real system)
if(ADPCM.LastCmd & 0x10)
{
ADPCM_DEBUG("Set length(crazy way L): %04x\n", ADPCM.Addr);
//ADPCM_DEBUG("Set length(crazy way L): %04x\n", ADPCM.Addr);
ADPCM.LengthCount = ADPCM.Addr;
}
break;
@ -761,12 +761,12 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
ADPCM.Addr &= 0x00FF;
ADPCM.Addr |= V << 8;
ADPCM_DEBUG("SAH: %02x, %d\n", V, timestamp);
//ADPCM_DEBUG("SAH: %02x, %d\n", V, timestamp);
// Length appears to be constantly latched when D4 is set(tested on a real system)
if(ADPCM.LastCmd & 0x10)
{
ADPCM_DEBUG("Set length(crazy way H): %04x\n", ADPCM.Addr);
//ADPCM_DEBUG("Set length(crazy way H): %04x\n", ADPCM.Addr);
ADPCM.LengthCount = ADPCM.Addr;
}
break;
@ -778,7 +778,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
break;
case 0xb: // adpcm dma
ADPCM_DEBUG("DMA: %02x\n", V);
//ADPCM_DEBUG("DMA: %02x\n", V);
_Port[0xb] = data;
break;
@ -786,7 +786,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
break;
case 0xd:
ADPCM_DEBUG("Write180D: %02x\n", V);
//ADPCM_DEBUG("Write180D: %02x\n", V);
if(data & 0x80)
{
ADPCM.Addr = 0;
@ -824,7 +824,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
// Length appears to be constantly latched when D4 is set(tested on a real system)
if(data & 0x10)
{
ADPCM_DEBUG("Set length: %04x\n", ADPCM.Addr);
//ADPCM_DEBUG("Set length: %04x\n", ADPCM.Addr);
ADPCM.LengthCount = ADPCM.Addr;
ADPCM.EndReached = false;
}
@ -837,7 +837,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
else
ADPCM.ReadAddr = (ADPCM.Addr - 1) & 0xFFFF;
ADPCM_DEBUG("Set ReadAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.ReadAddr);
//ADPCM_DEBUG("Set ReadAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.ReadAddr);
}
// D0 and D1 control write address
@ -846,7 +846,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
ADPCM.WriteAddr = ADPCM.Addr;
if(!(data & 0x1))
ADPCM.WriteAddr = (ADPCM.WriteAddr - 1) & 0xFFFF;
ADPCM_DEBUG("Set WriteAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.WriteAddr);
//ADPCM_DEBUG("Set WriteAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.WriteAddr);
}
ADPCM.LastCmd = data;
UpdateADPCMIRQState();
@ -858,7 +858,7 @@ int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data)
ADPCM.SampleFreq = freq;
ADPCM_DEBUG("Freq: %02x\n", freq);
//ADPCM_DEBUG("Freq: %02x\n", freq);
}
break;

View File

@ -10,7 +10,8 @@ static void DoNEC_PCE_SAPSP(const uint8 *cdb)
//printf("Set audio start: %02x %02x %02x %02x %02x %02x %02x\n", cdb[9], cdb[1], cdb[2], cdb[3], cdb[4], cdb[5], cdb[6]);
switch (cdb[9] & 0xc0)
{
default: SCSIDBG("Unknown SAPSP 9: %02x\n", cdb[9]);
default:
//SCSIDBG("Unknown SAPSP 9: %02x\n", cdb[9]);
case 0x00:
new_read_sec_start = (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
break;
@ -86,8 +87,8 @@ static void DoNEC_PCE_SAPEP(const uint8 *cdb)
switch (cdb[9] & 0xc0)
{
default: SCSIDBG("Unknown SAPEP 9: %02x\n", cdb[9]);
default:
//SCSIDBG("Unknown SAPEP 9: %02x\n", cdb[9]);
case 0x00:
new_read_sec_end = (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
break;

View File

@ -23,7 +23,7 @@
#include "cdromif.h"
#include "SimpleFIFO.h"
#define SCSIDBG(format, ...) { printf("SCSI: " format "\n", ## __VA_ARGS__); }
//#define SCSIDBG(format, ...) { printf("SCSI: " format "\n", ## __VA_ARGS__); }
//#define SCSIDBG(format, ...) { }
using namespace CDUtility;
@ -304,11 +304,13 @@ static void GenSubQFromSubPW(void)
// printf("%02x ", SubQBuf[i]);
//printf("\n");
#if 0
if(!subq_check_checksum(SubQBuf))
{
SCSIDBG("SubQ checksum error!");
}
else
#endif
{
memcpy(cd.SubQBuf_Last, SubQBuf, 0xC);
@ -1153,7 +1155,7 @@ static void DoMODESENSE6(const uint8 *cdb)
uint8 PageMatchOR = 0x00;
bool AnyPageMatch = false;
SCSIDBG("Mode sense 6: %02x %d %d %d\n", PageCode, PC, DBD, AllocSize);
//SCSIDBG("Mode sense 6: %02x %d %d %d\n", PageCode, PC, DBD, AllocSize);
if(!AllocSize)
{
@ -1256,14 +1258,14 @@ static void DoSTARTSTOPUNIT6(const uint8 *cdb)
bool LoEj = cdb[4] & 0x02;
bool Start = cdb[4] & 0x01;
SCSIDBG("Do start stop unit 6: %d %d %d\n", Immed, LoEj, Start);
//SCSIDBG("Do start stop unit 6: %d %d %d\n", Immed, LoEj, Start);
SendStatusAndMessage(STATUS_GOOD, 0x00);
}
static void DoREZEROUNIT(const uint8 *cdb)
{
SCSIDBG("Rezero Unit: %02x\n", cdb[5]);
//SCSIDBG("Rezero Unit: %02x\n", cdb[5]);
SendStatusAndMessage(STATUS_GOOD, 0x00);
}
@ -2163,12 +2165,14 @@ static void DoREADBase(uint32 sa, uint32 sc)
return;
}
#if 0
if(SCSILog)
{
int Track = toc.FindTrackByLBA(sa);
uint32 Offset = sa - toc.tracks[Track].lba; //Cur_CDIF->GetTrackStartPositionLBA(Track);
SCSILog("SCSI", "Read: start=0x%08x(track=%d, offs=0x%08x), cnt=0x%08x", sa, Track, Offset, sc);
}
#endif
SectorAddr = sa;
SectorCount = sc;
@ -2201,7 +2205,7 @@ static void DoREAD6(const uint8 *cdb)
// TODO: confirm real PCE does this(PC-FX does at least).
if(!sc)
{
SCSIDBG("READ(6) with count == 0.\n");
//SCSIDBG("READ(6) with count == 0.\n");
sc = 256;
}
@ -2508,7 +2512,7 @@ static void DoNEC_SCAN(const uint8 *cdb)
switch (cdb[9] & 0xc0)
{
default:
SCSIDBG("Unknown NECSCAN format");
//SCSIDBG("Unknown NECSCAN format");
break;
case 0x00:
@ -2963,6 +2967,7 @@ uint32 SCSICD_Run(scsicd_timestamp_t system_timestamp)
while(cmd_info_ptr->pretty_name && cmd_info_ptr->cmd != cd.command_buffer[0])
cmd_info_ptr++;
#if 0
if(SCSILog)
{
char log_buffer[1024];
@ -2976,28 +2981,33 @@ uint32 SCSICD_Run(scsicd_timestamp_t system_timestamp)
for(int i = 0; i < RequiredCDBLen[cd.command_buffer[0] >> 4]; i++)
lb_pos += trio_snprintf(log_buffer + lb_pos, 1024 - lb_pos, "%02x ", cd.command_buffer[i]);
SCSILog("SCSI", "%s", log_buffer);
//SCSILog("SCSI", "%s", log_buffer);
//puts(log_buffer);
}
#endif
if(cmd_info_ptr->pretty_name == NULL) // Command not found!
{
CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_COMMAND);
SCSIDBG("Bad Command: %02x\n", cd.command_buffer[0]);
//SCSIDBG("Bad Command: %02x\n", cd.command_buffer[0]);
#if 0
if(SCSILog)
SCSILog("SCSI", "Bad Command: %02x", cd.command_buffer[0]);
#endif
cd.command_buffer_pos = 0;
}
else
{
#if 0
if(cmd_info_ptr->flags & SCF_UNTESTED)
{
SCSIDBG("Untested SCSI command: %02x, %s", cd.command_buffer[0], cmd_info_ptr->pretty_name);
}
#endif
if(cd.TrayOpen && (cmd_info_ptr->flags & SCF_REQUIRES_MEDIUM))
{

View File

@ -219,29 +219,36 @@ case 0x82: OP_CLEARR(X); // CLX
case 0xC2: OP_CLEARR(Y); // CLY
// The optional argument(s) will run at the end, immediately before the break.
#define OP_CLEARF(f, ...) { ADDCYC(1); LASTCYCLE; P &= ~f; __VA_ARGS__ break; }
#define OP_SETF(f, ...) { ADDCYC(1); LASTCYCLE; P |= f; __VA_ARGS__ break; }
//#define OP_CLEARF(f, ...) { ADDCYC(1); LASTCYCLE; P &= ~f; __VA_ARGS__ break; }
//#define OP_SETF(f, ...) { ADDCYC(1); LASTCYCLE; P |= f; __VA_ARGS__ break; }
case 0x18: /* CLC */
OP_CLEARF(C_FLAG);
//OP_CLEARF(C_FLAG);
{ ADDCYC(1); LASTCYCLE; P &= ~C_FLAG; break; }
case 0xD8: /* CLD */
OP_CLEARF(D_FLAG);
//OP_CLEARF(D_FLAG);
{ ADDCYC(1); LASTCYCLE; P &= ~D_FLAG; break; }
case 0x58: /* CLI */
OP_CLEARF(I_FLAG, REDOPIMCACHE(););
//OP_CLEARF(I_FLAG, REDOPIMCACHE(););
{ ADDCYC(1); LASTCYCLE; P &= ~I_FLAG; REDOPIMCACHE(); break; }
case 0xB8: /* CLV */
OP_CLEARF(V_FLAG);
//OP_CLEARF(V_FLAG);
{ ADDCYC(1); LASTCYCLE; P &= ~V_FLAG; break; }
case 0x38: /* SEC */
OP_SETF(C_FLAG);
//OP_SETF(C_FLAG);
{ ADDCYC(1); LASTCYCLE; P |= C_FLAG; break; }
case 0xF8: /* SED */
OP_SETF(D_FLAG);
//OP_SETF(D_FLAG);
{ ADDCYC(1); LASTCYCLE; P |= D_FLAG; break; }
case 0x78: /* SEI */
OP_SETF(I_FLAG, REDOPIMCACHE(););
//OP_SETF(I_FLAG, REDOPIMCACHE(););
{ ADDCYC(1); LASTCYCLE; P |= I_FLAG; REDOPIMCACHE(); break; }
case 0xF4: /* SET */
//puts("SET");

View File

@ -373,7 +373,7 @@ PCE_PSG::PCE_PSG(Blip_Buffer *bb_l, Blip_Buffer *bb_r, int want_revision)
double flub = 1;
if(vl)
flub /= pow(2, (double)1 / 4 * vl); // ~1.5dB reduction per increment of vl
flub /= powf(2, (double)1 / 4 * vl); // ~1.5dB reduction per increment of vl
if(vl == 0x1F)
flub = 0;

View File

@ -25,13 +25,13 @@
#include <math.h>
#include "vdc.h"
#define VDC_DEBUG(x, ...) { }
//#define VDC_DEBUG(x, ...) { }
//#define VDC_DEBUG(x, ...) printf(x ": HPhase=%d, HPhaseCounter=%d, RCRCount=%d\n", ## __VA_ARGS__, HPhase, HPhaseCounter, RCRCount);
#define VDC_UNDEFINED(format, ...) { }
//#define VDC_UNDEFINED(format, ...) { }
//#define VDC_UNDEFINED(format, ...) printf(format " RCRCount=%d" "\n", ## __VA_ARGS__, RCRCount)
#define VDC_WARNING(format, ...) { }
//#define VDC_WARNING(format, ...) { }
//#define VDC_WARNING(format, ...) { printf(format "\n", ## __VA_ARGS__); }
#define ULE_BG 1
@ -301,7 +301,7 @@ void VDC::RunSATDMA(int32 cycles, bool force_completion)
{
if(DCR & 0x01)
{
VDC_DEBUG("Sprite DMA IRQ");
//VDC_DEBUG("Sprite DMA IRQ");
status |= VDCS_DS;
IRQHook(TRUE);
}
@ -331,8 +331,10 @@ void VDC::RunDMA(int32 cycles, bool force_completion)
{
if(!DMAReadWrite)
{
#if 0
if(SOUR >= VRAM_Size)
VDC_UNDEFINED("Unmapped VRAM DMA read");
#endif
DMAReadBuffer = VRAM[SOUR];
//printf("DMA Read: %04x, %04x\n", SOUR, DMAReadBuffer);
@ -359,7 +361,7 @@ void VDC::RunDMA(int32 cycles, bool force_completion)
{
status |= VDCS_DV;
IRQHook(TRUE);
VDC_DEBUG("DMA IRQ");
//VDC_DEBUG("DMA IRQ");
}
break;
}
@ -444,7 +446,7 @@ void VDC::IncRCR(void)
if((int)RCRCount == ((int)RCR - 0x40) && (CR & 0x04))
{
VDC_DEBUG("RCR IRQ");
//VDC_DEBUG("RCR IRQ");
status |= VDCS_RR;
IRQHook(TRUE);
}
@ -454,7 +456,7 @@ void VDC::DoVBIRQTest(void)
{
if(CR & 0x08)
{
VDC_DEBUG("VBlank IRQ");
//VDC_DEBUG("VBlank IRQ");
status |= VDCS_VD;
IRQHook(TRUE);
}
@ -495,7 +497,7 @@ void VDC::HDS_Start(void)
if(sprite_cg_fetch_counter > 0)
{
VDC_WARNING("Sprite truncation on %d. Wanted sprites: %d, cycles needed but not left: %d\n", RCRCount, active_sprites, sprite_cg_fetch_counter);
//VDC_WARNING("Sprite truncation on %d. Wanted sprites: %d, cycles needed but not left: %d\n", RCRCount, active_sprites, sprite_cg_fetch_counter);
sprite_cg_fetch_counter = 0;
CheckAndCommitPending();
}
@ -505,7 +507,7 @@ void VDC::HDS_Start(void)
HDW_cache = M_vdc_HDW;
HDE_cache = M_vdc_HDE;
VDC_DEBUG("HDS Start! HSW: %d, HDW: %d, HDW: %d, HDE: %d\n", HSW_cache, HDS_cache, HDW_cache, HDE_cache);
//VDC_DEBUG("HDS Start! HSW: %d, HDW: %d, HDW: %d, HDE: %d\n", HSW_cache, HDS_cache, HDW_cache, HDE_cache);
CR_cache = CR;
@ -636,8 +638,10 @@ int32 VDC::Run(int32 clocks, uint16 *pixels, bool skip)
sat_dma_counter = 1024;
#if 0
if(DVSSR > (VRAM_Size - 0x100))
VDC_UNDEFINED("Unmapped VRAM DVSSR DMA read");
#endif
if(DVSSR < VRAM_Size)
{
@ -655,7 +659,7 @@ int32 VDC::Run(int32 clocks, uint16 *pixels, bool skip)
if(DMAPending && burst_mode)
{
VDC_DEBUG("DMA Started");
//VDC_DEBUG("DMA Started");
DMAPending = false;
DMARunning = true;
VDMA_CycleCounter = 0;
@ -880,8 +884,10 @@ void VDC::DrawBG(uint16 *target, int enabled)
raw_pixel = bg_tile_cache[bat & 0xFFF][BG_YOffset & 7][BG_XOffset & 0x7] & dohmask;
target[x] = palette_index | raw_pixel | pal_or;
#if 0
if((bat & 0xFFF) > VRAM_BGTileNoMask)
VDC_UNDEFINED("Unmapped BG tile read");
#endif
BG_XOffset++;
}
@ -897,8 +903,10 @@ void VDC::DrawBG(uint16 *target, int enabled)
const uint8 pal_or = ((bat >> 8) & 0xF0);
uint8 *pix_lut = bg_tile_cache[bat & 0xFFF][line_sub];
#if 0
if((bat & 0xFFF) > VRAM_BGTileNoMask)
VDC_UNDEFINED("Unmapped BG tile read");
#endif
(target + 0)[x] = (pix_lut[0] & dohmask) | pal_or;
@ -923,8 +931,10 @@ void VDC::DrawBG(uint16 *target, int enabled)
const uint8 pal_or = ((bat >> 8) & 0xF0);
uint8 *pix_lut = bg_tile_cache[bat & 0xFFF][line_sub];
#if 0
if((bat & 0xFFF) > VRAM_BGTileNoMask)
VDC_UNDEFINED("Unmapped BG tile read");
#endif
#ifdef LSB_FIRST
#if SIZEOF_LONG == 8
@ -1020,7 +1030,7 @@ void VDC::FetchSpriteData(void)
{
status |= VDCS_OR;
IRQHook(TRUE);
VDC_DEBUG("Overflow IRQ");
//VDC_DEBUG("Overflow IRQ");
}
if(!unlimited_sprites)
break;
@ -1045,8 +1055,10 @@ void VDC::FetchSpriteData(void)
SpriteList[active_sprites].x = x;
SpriteList[active_sprites].palette_index = palette_index;
#if 0
if((no * 64) >= VRAM_Size)
VDC_UNDEFINED("Unmapped VRAM sprite tile read");
#endif
if((MWR_cache & 0xC) == 4)
{
@ -1137,7 +1149,7 @@ void VDC::DrawSprites(uint16 *target, int enabled)
if(sprite_line_buf[tx] & 0xF)
{
status |= VDCS_CR;
VDC_DEBUG("Sprite hit IRQ");
//VDC_DEBUG("Sprite hit IRQ");
IRQHook(TRUE);
}
sprite_line_buf[tx] = pi | raw_pixel | prio_or;
@ -1203,13 +1215,13 @@ void VDC::DoWaitStates(void)
{
if(DMARunning)
{
VDC_WARNING("VRAM DMA completion forced.");
//VDC_WARNING("VRAM DMA completion forced.");
RunDMA(0, TRUE);
}
if(sat_dma_counter > 0)
{
VDC_WARNING("SAT DMA completion forced.");
//VDC_WARNING("SAT DMA completion forced.");
RunSATDMA(0, TRUE);
}
@ -1337,8 +1349,10 @@ void VDC::CheckAndCommitPending(void)
if(pending_read)
{
#if 0
if(pending_read_addr >= VRAM_Size)
VDC_UNDEFINED("Unmapped VRAM VRR read");
#endif
read_buffer = VRAM[pending_read_addr];
pending_read = FALSE;
@ -1429,6 +1443,7 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
case 0x0d: VDC_REGSETP(VDR, V, msb); break;
case 0x0e: VDC_REGSETP(VCR, V, msb); break;
case 0x0f: VDC_REGSETP(DCR, V, msb);
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set DCR during DMA: %04x\n", DCR);
@ -1438,10 +1453,12 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
{
VDC_UNDEFINED("Set DCR while DMAPending: %04x\n", DCR);
}
#endif
break;
case 0x10: VDC_REGSETP(SOUR, V, msb);
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set SOUR during DMA: %04x\n", SOUR);
@ -1451,9 +1468,11 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
{
VDC_UNDEFINED("Set SOUR while DMAPending: %04x\n", SOUR);
}
#endif
break;
case 0x11: VDC_REGSETP(DESR, V, msb);
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set DESR during DMA: %04x\n", DESR);
@ -1462,9 +1481,11 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
{
VDC_UNDEFINED("Set DESR while DMAPending: %04x\n", DESR);
}
#endif
break;
case 0x12: VDC_REGSETP(LENR, V, msb);
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set LENR during DMA: %04x\n", LENR);
@ -1474,10 +1495,11 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
{
VDC_UNDEFINED("Set LENR while DMAPending: %04x\n", LENR);
}
#endif
if(msb)
{
VDC_DEBUG("DMA: %04x %04x %04x, %02x", SOUR, DESR, LENR, DCR);
//VDC_DEBUG("DMA: %04x %04x %04x, %02x", SOUR, DESR, LENR, DCR);
DMAPending = 1;
}
break;
@ -1486,7 +1508,7 @@ void VDC::Write(uint32 A, uint8 V, int32 &next_event)
SATBPending = 1;
break;
default: VDC_WARNING("Unknown VDC register write: %04x %02x", select, V);
default: //VDC_WARNING("Unknown VDC register write: %04x %02x", select, V);
break;
}
break;
@ -1553,6 +1575,7 @@ void VDC::Write16(bool A, uint16 V)
case 0x0e: VCR = V; break;
case 0x0f: DCR = V;
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set DCR during DMA: %04x\n", DCR);
@ -1562,10 +1585,12 @@ void VDC::Write16(bool A, uint16 V)
{
VDC_UNDEFINED("Set DCR while DMAPending: %04x\n", DCR);
}
#endif
break;
case 0x10: SOUR = V;
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set SOUR during DMA: %04x\n", SOUR);
@ -1575,9 +1600,11 @@ void VDC::Write16(bool A, uint16 V)
{
VDC_UNDEFINED("Set SOUR while DMAPending: %04x\n", SOUR);
}
#endif
break;
case 0x11: DESR = V;
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set DESR during DMA: %04x\n", DESR);
@ -1586,9 +1613,11 @@ void VDC::Write16(bool A, uint16 V)
{
VDC_UNDEFINED("Set DESR while DMAPending: %04x\n", DESR);
}
#endif
break;
case 0x12: LENR = V;
#if 0
if(DMARunning)
{
VDC_UNDEFINED("Set LENR during DMA: %04x\n", LENR);
@ -1598,8 +1627,9 @@ void VDC::Write16(bool A, uint16 V)
{
VDC_UNDEFINED("Set LENR while DMAPending: %04x\n", LENR);
}
#endif
VDC_DEBUG("DMA: %04x %04x %04x, %02x", SOUR, DESR, LENR, DCR);
//VDC_DEBUG("DMA: %04x %04x %04x, %02x", SOUR, DESR, LENR, DCR);
DMAPending = 1;
break;
@ -1608,7 +1638,7 @@ void VDC::Write16(bool A, uint16 V)
SATBPending = 1;
break;
default: VDC_WARNING("Oops 2: %04x %02x", select, V);
default: //VDC_WARNING("Oops 2: %04x %02x", select, V);
break;
}
}

View File

@ -269,11 +269,7 @@ public:
Silent_Blip_Buffer();
};
#if defined (__GNUC__) || _MSC_VER >= 1100
#define BLIP_RESTRICT __restrict
#else
#define BLIP_RESTRICT
#endif
// Optimized reading from Blip_Buffer, for use in custom sample output

View File

@ -31,7 +31,7 @@ typedef uint64_t uint64;
#elif defined(_MSC_VER)
#define roundf(in) (in >= 0.0f ? floorf(in + 0.5f) : ceilf(in - 0.5f))
#define INLINE inline __forceinline
#define INLINE inline
#define NO_INLINE
#define MDFN_FASTCALL

View File

@ -25,9 +25,6 @@ void MDFN_DispMessage(const char *format, ...);
void MDFN_DebugPrintReal(const char *file, const int line, const char *format, ...);
#define gettext_noop(format, ...) (format)
#define MDFN_DebugPrint(format, ...) MDFN_DebugPrintReal(__FILE__, __LINE__, format, ## __VA_ARGS__)
void MDFN_LoadGameCheats(void *override);
void MDFN_FlushGameCheats(int nosave);

View File

@ -260,9 +260,9 @@ int HuCLoadCD(const char *bios_path)
{
static const FileExtensionSpecStruct KnownBIOSExtensions[] =
{
{ ".pce", gettext_noop("PC Engine ROM Image") },
{ ".bin", gettext_noop("PC Engine ROM Image") },
{ ".bios", gettext_noop("BIOS Image") },
{ ".pce", "PC Engine ROM Image" },
{ ".bin", "PC Engine ROM Image" },
{ ".bios", "BIOS Image" },
{ NULL, NULL }
};

View File

@ -624,22 +624,22 @@ static MDFNSetting PCESettings[] =
{ "pce_fast.input.port5", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 5."), NULL, MDFNST_STRING, "gamepad", NULL, NULL },
*/
{ "pce_fast.correct_aspect", MDFNSF_CAT_VIDEO, gettext_noop("Correct the aspect ratio."), NULL, MDFNST_BOOL, "1" },
{ "pce_fast.slstart", MDFNSF_NOFLAGS, gettext_noop("First rendered scanline."), NULL, MDFNST_UINT, "4", "0", "239" },
{ "pce_fast.slend", MDFNSF_NOFLAGS, gettext_noop("Last rendered scanline."), NULL, MDFNST_UINT, "235", "0", "239" },
{ "pce_fast.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Mouse sensitivity."), NULL, MDFNST_FLOAT, "0.50", NULL, NULL, NULL, PCEINPUT_SettingChanged },
{ "pce_fast.disable_softreset", MDFNSF_NOFLAGS, gettext_noop("If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, PCEINPUT_SettingChanged },
{ "pce_fast.forcesgx", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Force SuperGrafx emulation."), NULL, MDFNST_BOOL, "0" },
{ "pce_fast.arcadecard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable Arcade Card emulation."), NULL, MDFNST_BOOL, "1" },
{ "pce_fast.ocmultiplier", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CPU overclock multiplier."), NULL, MDFNST_UINT, "1", "1", "100"},
{ "pce_fast.cdspeed", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CD-ROM data transfer speed multiplier."), NULL, MDFNST_UINT, "1", "1", "100" },
{ "pce_fast.nospritelimit", MDFNSF_NOFLAGS, gettext_noop("Remove 16-sprites-per-scanline hardware limit."), NULL, MDFNST_BOOL, "0" },
{ "pce_fast.correct_aspect", MDFNSF_CAT_VIDEO, "Correct the aspect ratio.", NULL, MDFNST_BOOL, "1" },
{ "pce_fast.slstart", MDFNSF_NOFLAGS, "First rendered scanline.", NULL, MDFNST_UINT, "4", "0", "239" },
{ "pce_fast.slend", MDFNSF_NOFLAGS, "Last rendered scanline.", NULL, MDFNST_UINT, "235", "0", "239" },
{ "pce_fast.mouse_sensitivity", MDFNSF_NOFLAGS, "Mouse sensitivity.", NULL, MDFNST_FLOAT, "0.50", NULL, NULL, NULL, PCEINPUT_SettingChanged },
{ "pce_fast.disable_softreset", MDFNSF_NOFLAGS, "If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily.", NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, PCEINPUT_SettingChanged },
{ "pce_fast.forcesgx", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, "Force SuperGrafx emulation.", NULL, MDFNST_BOOL, "0" },
{ "pce_fast.arcadecard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, "Enable Arcade Card emulation.", NULL, MDFNST_BOOL, "1" },
{ "pce_fast.ocmultiplier", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, "CPU overclock multiplier.", NULL, MDFNST_UINT, "1", "1", "100"},
{ "pce_fast.cdspeed", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, "CD-ROM data transfer speed multiplier.", NULL, MDFNST_UINT, "1", "1", "100" },
{ "pce_fast.nospritelimit", MDFNSF_NOFLAGS, "Remove 16-sprites-per-scanline hardware limit.", NULL, MDFNST_BOOL, "0" },
{ "pce_fast.cdbios", MDFNSF_EMU_STATE, gettext_noop("Path to the CD BIOS"), NULL, MDFNST_STRING, "syscard3.pce" },
{ "pce_fast.adpcmlp", MDFNSF_NOFLAGS, gettext_noop("Enable lowpass filter dependent on playback-frequency."), NULL, MDFNST_BOOL, "0" },
{ "pce_fast.cdpsgvolume", MDFNSF_NOFLAGS, gettext_noop("PSG volume when playing a CD game."), NULL, MDFNST_UINT, "100", "0", "200" },
{ "pce_fast.cddavolume", MDFNSF_NOFLAGS, gettext_noop("CD-DA volume."), NULL, MDFNST_UINT, "100", "0", "200" },
{ "pce_fast.adpcmvolume", MDFNSF_NOFLAGS, gettext_noop("ADPCM volume."), NULL, MDFNST_UINT, "100", "0", "200" },
{ "pce_fast.cdbios", MDFNSF_EMU_STATE, "Path to the CD BIOS", NULL, MDFNST_STRING, "syscard3.pce" },
{ "pce_fast.adpcmlp", MDFNSF_NOFLAGS, "Enable lowpass filter dependent on playback-frequency.", NULL, MDFNST_BOOL, "0" },
{ "pce_fast.cdpsgvolume", MDFNSF_NOFLAGS, "PSG volume when playing a CD game.", NULL, MDFNST_UINT, "100", "0", "200" },
{ "pce_fast.cddavolume", MDFNSF_NOFLAGS, "CD-DA volume.", NULL, MDFNST_UINT, "100", "0", "200" },
{ "pce_fast.adpcmvolume", MDFNSF_NOFLAGS, "ADPCM volume.", NULL, MDFNST_UINT, "100", "0", "200" },
{ NULL }
};
@ -650,9 +650,9 @@ static uint8 MemRead(uint32 addr)
static const FileExtensionSpecStruct KnownExtensions[] =
{
{ ".pce", gettext_noop("PC Engine ROM Image") },
{ ".hes", gettext_noop("PC Engine Music Rip") },
{ ".sgx", gettext_noop("SuperGrafx ROM Image") },
{ ".pce", "PC Engine ROM Image" },
{ ".hes", "PC Engine Music Rip" },
{ ".sgx", "SuperGrafx ROM Image" },
{ NULL, NULL }
};

View File

@ -0,0 +1,30 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msvc-2003-xbox1", "msvc-2003-xbox1/msvc-2003-xbox1.vcproj", "{8FD514E6-2E2A-4599-99B1-9A413535492F}"
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
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Debug.ActiveCfg = Debug|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Debug.Build.0 = Debug|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Profile.ActiveCfg = Profile|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Profile.Build.0 = Profile|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Profile_FastCap.ActiveCfg = Profile_FastCap|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Profile_FastCap.Build.0 = Profile_FastCap|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Release.ActiveCfg = Release|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Release.Build.0 = Release|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Release_LTCG.ActiveCfg = Release_LTCG|Xbox
{8FD514E6-2E2A-4599-99B1-9A413535492F}.Release_LTCG.Build.0 = Release_LTCG|Xbox
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,425 @@
<?xml version="1.0" encoding="windows-1250"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="msvc-2003-xbox1"
ProjectGUID="{8FD514E6-2E2A-4599-99B1-9A413535492F}"
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="&quot;$(SolutionDir)\msvc-2003-xbox1&quot;;&quot;$(SolutionDir)\..\..\&quot;;&quot;$(SolutionDir)\..\..\mednafen&quot;;&quot;$(SolutionDir)\..\..\mednafen\include&quot;;&quot;$(SolutionDir)\..\..\mednafen\cdrom&quot;;&quot;$(SolutionDir)\..\..\mednafen\sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\pce_fast&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_cpu&quot;;&quot;$(SolutionDir)\..\..\mednafen\include\blip&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_misc&quot;"
PreprocessorDefinitions="_DEBUG;_XBOX;_LIB;WANT_PCE_FAST_EMU;WANT_16BPP;SIZEOF_DOUBLE=8;MEDNAFEN_VERSION=0.9.28;MPC_FIXED_POINT;__LIBRETRO__;_LOW_ACCURACY;WANT_STEREO_SOUND;FRONTEND_SUPPORTS_RGB565;MEDNAFEN_VERSION_NUMERIC=926;NEED_CD;WANT_CRC32;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN"
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)/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="&quot;$(SolutionDir)\msvc-2003-xbox1&quot;;&quot;$(SolutionDir)\..\..\&quot;;&quot;$(SolutionDir)\..\..\mednafen&quot;;&quot;$(SolutionDir)\..\..\mednafen\include&quot;;&quot;$(SolutionDir)\..\..\mednafen\cdrom&quot;;&quot;$(SolutionDir)\..\..\mednafen\sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\pce_fast&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_cpu&quot;;&quot;$(SolutionDir)\..\..\mednafen\include\blip&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_misc&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;PROFILE;_LIB;WANT_PCE_FAST_EMU;WANT_16BPP;SIZEOF_DOUBLE=8;MEDNAFEN_VERSION=0.9.28;MPC_FIXED_POINT;__LIBRETRO__;_LOW_ACCURACY;WANT_STEREO_SOUND;FRONTEND_SUPPORTS_RGB565;MEDNAFEN_VERSION_NUMERIC=926;NEED_CD;WANT_CRC32;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN"
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)/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="&quot;$(SolutionDir)\msvc-2003-xbox1&quot;;&quot;$(SolutionDir)\..\..\&quot;;&quot;$(SolutionDir)\..\..\mednafen&quot;;&quot;$(SolutionDir)\..\..\mednafen\include&quot;;&quot;$(SolutionDir)\..\..\mednafen\cdrom&quot;;&quot;$(SolutionDir)\..\..\mednafen\sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\pce_fast&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_cpu&quot;;&quot;$(SolutionDir)\..\..\mednafen\include\blip&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_misc&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;PROFILE;FASTCAP;_LIB;WANT_PCE_FAST_EMU;WANT_16BPP;SIZEOF_DOUBLE=8;MEDNAFEN_VERSION=0.9.28;MPC_FIXED_POINT;__LIBRETRO__;_LOW_ACCURACY;WANT_STEREO_SOUND;FRONTEND_SUPPORTS_RGB565;MEDNAFEN_VERSION_NUMERIC=926;NEED_CD;WANT_CRC32;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN"
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)/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"
OmitFramePointers="TRUE"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="&quot;$(SolutionDir)\msvc-2003-xbox1&quot;;&quot;$(SolutionDir)\..\..\&quot;;&quot;$(SolutionDir)\..\..\mednafen&quot;;&quot;$(SolutionDir)\..\..\mednafen\include&quot;;&quot;$(SolutionDir)\..\..\mednafen\cdrom&quot;;&quot;$(SolutionDir)\..\..\mednafen\sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\pce_fast&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_cpu&quot;;&quot;$(SolutionDir)\..\..\mednafen\include\blip&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_misc&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;_LIB;WANT_PCE_FAST_EMU;WANT_16BPP;SIZEOF_DOUBLE=8;MEDNAFEN_VERSION=0.9.28;MPC_FIXED_POINT;__LIBRETRO__;_LOW_ACCURACY;WANT_STEREO_SOUND;FRONTEND_SUPPORTS_RGB565;MEDNAFEN_VERSION_NUMERIC=926;NEED_CD;WANT_CRC32;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN"
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)/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="&quot;$(SolutionDir)\msvc-2003-xbox1&quot;;&quot;$(SolutionDir)\..\..\&quot;;&quot;$(SolutionDir)\..\..\mednafen&quot;;&quot;$(SolutionDir)\..\..\mednafen\include&quot;;&quot;$(SolutionDir)\..\..\mednafen\cdrom&quot;;&quot;$(SolutionDir)\..\..\mednafen\sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\pce_fast&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_cpu&quot;;&quot;$(SolutionDir)\..\..\mednafen\include\blip&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_sound&quot;;&quot;$(SolutionDir)\..\..\mednafen\hw_misc&quot;"
PreprocessorDefinitions="NDEBUG;_XBOX;LTCG;_LIB;WANT_PCE_FAST_EMU;WANT_16BPP;SIZEOF_DOUBLE=8;MEDNAFEN_VERSION=0.9.28;MPC_FIXED_POINT;__LIBRETRO__;_LOW_ACCURACY;WANT_STEREO_SOUND;FRONTEND_SUPPORTS_RGB565;MEDNAFEN_VERSION_NUMERIC=926;NEED_CD;WANT_CRC32;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN"
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)/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}">
<File
RelativePath="..\..\..\libretro.cpp">
</File>
<File
RelativePath="..\..\..\scrc32.cpp">
</File>
<File
RelativePath="..\..\..\stubs.cpp">
</File>
<Filter
Name="mednafen"
Filter="">
<File
RelativePath="..\..\..\mednafen\endian.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\error.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\file.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\FileStream.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\FileWrapper.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\general.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\math_ops.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\md5.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\mednafen.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\MemoryStream.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\mempatcher.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\okiadpcm.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\settings.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\state.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\Stream.cpp">
</File>
<Filter
Name="cdrom"
Filter="">
<File
RelativePath="..\..\..\mednafen\cdrom\audioreader.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\cd_crc32.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\CDAccess.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\CDAccess_Image.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\cdromif.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\CDUtility.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\galois.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\l-ec.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\lec.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\pcecd.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\recover-raw.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\scsicd.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\cdrom\SimpleFIFO.cpp">
</File>
</Filter>
<Filter
Name="trio"
Filter="">
<File
RelativePath="..\..\..\mednafen\trio\trio.c">
<FileConfiguration
Name="Debug|Xbox">
<Tool
Name="VCCLCompilerTool"
CompileAs="1"/>
</FileConfiguration>
<FileConfiguration
Name="Profile|Xbox">
<Tool
Name="VCCLCompilerTool"
CompileAs="1"/>
</FileConfiguration>
<FileConfiguration
Name="Profile_FastCap|Xbox">
<Tool
Name="VCCLCompilerTool"
CompileAs="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Xbox">
<Tool
Name="VCCLCompilerTool"
CompileAs="1"/>
</FileConfiguration>
<FileConfiguration
Name="Release_LTCG|Xbox">
<Tool
Name="VCCLCompilerTool"
CompileAs="1"/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\mednafen\trio\triostr.c">
</File>
</Filter>
<Filter
Name="sound"
Filter="">
<File
RelativePath="..\..\..\mednafen\sound\Blip_Buffer.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\sound\Stereo_Buffer.cpp">
</File>
</Filter>
<Filter
Name="pce_fast"
Filter="">
<File
RelativePath="..\..\..\mednafen\pce_fast\huc.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\pce_fast\huc6280.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\pce_fast\input.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\pce_fast\pce.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\pce_fast\tsushin.cpp">
</File>
<File
RelativePath="..\..\..\mednafen\pce_fast\vdc.cpp">
</File>
</Filter>
<Filter
Name="hw_misc"
Filter="">
<Filter
Name="arcade_card"
Filter="">
<File
RelativePath="..\..\..\mednafen\hw_misc\arcade_card\arcade_card.cpp">
</File>
</Filter>
</Filter>
<Filter
Name="hw_sound"
Filter="">
<Filter
Name="pce_psg"
Filter="">
<File
RelativePath="..\..\..\mednafen\hw_sound\pce_psg\pce_psg.cpp">
</File>
</Filter>
</Filter>
<Filter
Name="hw_video"
Filter="">
<File
RelativePath="..\..\..\mednafen\hw_video\huc6270\vdc_video.cpp">
</File>
</Filter>
<Filter
Name="hw_cpu"
Filter="">
<Filter
Name="huc6280"
Filter="">
<File
RelativePath="..\..\..\mednafen\hw_cpu\huc6280\cpu_huc6280.cpp">
</File>
</Filter>
</Filter>
<Filter
Name="video"
Filter="">
<File
RelativePath="..\..\..\mednafen\video\surface.cpp">
</File>
</Filter>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,249 @@
// 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