mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-09 18:45:40 +00:00
Fix a bunch of random typos in comments and logging.
Also update the comment headers for two functions in GCMemcard.cpp.
This commit is contained in:
parent
47f1505499
commit
d244bca1f5
@ -59,7 +59,7 @@ bool OpenALStream::Start()
|
|||||||
PanicAlertT("OpenAL: can't find sound devices");
|
PanicAlertT("OpenAL: can't find sound devices");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise DPL2 parameters
|
// Initialize DPL2 parameters
|
||||||
dpl2reset();
|
dpl2reset();
|
||||||
|
|
||||||
soundTouch.clear();
|
soundTouch.clear();
|
||||||
|
@ -94,7 +94,7 @@ bool XAudio2::Start()
|
|||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
// callback dosent seem to run on a speecific cpu anyways
|
// callback doesn't seem to run on a specific cpu anyways
|
||||||
IXAudio2* xaudptr;
|
IXAudio2* xaudptr;
|
||||||
if (FAILED(hr = XAudio2Create(&xaudptr, 0, XAUDIO2_DEFAULT_PROCESSOR)))
|
if (FAILED(hr = XAudio2Create(&xaudptr, 0, XAUDIO2_DEFAULT_PROCESSOR)))
|
||||||
{
|
{
|
||||||
|
@ -43,7 +43,7 @@ u32 HashFletcher(const u8* data_u8, size_t length)
|
|||||||
|
|
||||||
|
|
||||||
// Implementation from Wikipedia
|
// Implementation from Wikipedia
|
||||||
// Slightly slower than Fletcher above, but slighly more reliable.
|
// Slightly slower than Fletcher above, but slightly more reliable.
|
||||||
#define MOD_ADLER 65521
|
#define MOD_ADLER 65521
|
||||||
// data: Pointer to the data to be summed; len is in bytes
|
// data: Pointer to the data to be summed; len is in bytes
|
||||||
u32 HashAdler32(const u8* data, size_t len)
|
u32 HashAdler32(const u8* data, size_t len)
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
|
|
||||||
// This class lets you create a block of anonymous RAM, and then arbitrarily map views into it.
|
// This class lets you create a block of anonymous RAM, and then arbitrarily map views into it.
|
||||||
// Multiple views can mirror the same section of the block, which makes it very convient for emulating
|
// Multiple views can mirror the same section of the block, which makes it very convenient for emulating
|
||||||
// memory mirrors.
|
// memory mirrors.
|
||||||
|
|
||||||
class MemArena
|
class MemArena
|
||||||
|
@ -1315,7 +1315,7 @@ void XEmitter::MOVDDUP(X64Reg regOp, OpArg arg)
|
|||||||
|
|
||||||
//There are a few more left
|
//There are a few more left
|
||||||
|
|
||||||
// Also some integer instrucitons are missing
|
// Also some integer instructions are missing
|
||||||
void XEmitter::PACKSSDW(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x6B, true, dest, arg);}
|
void XEmitter::PACKSSDW(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x6B, true, dest, arg);}
|
||||||
void XEmitter::PACKSSWB(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x63, true, dest, arg);}
|
void XEmitter::PACKSSWB(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x63, true, dest, arg);}
|
||||||
//void PACKUSDW(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x66, true, dest, arg);} // WRONG
|
//void PACKUSDW(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x66, true, dest, arg);} // WRONG
|
||||||
|
@ -107,7 +107,7 @@ struct OpArg
|
|||||||
scale = (u8)_scale;
|
scale = (u8)_scale;
|
||||||
offsetOrBaseReg = (u16)rmReg;
|
offsetOrBaseReg = (u16)rmReg;
|
||||||
indexReg = (u16)scaledReg;
|
indexReg = (u16)scaledReg;
|
||||||
//if scale == 0 never mind offseting
|
//if scale == 0 never mind offsetting
|
||||||
offset = _offset;
|
offset = _offset;
|
||||||
}
|
}
|
||||||
void WriteRex(XEmitter *emit, int opBits, int bits, int customOp = -1) const;
|
void WriteRex(XEmitter *emit, int opBits, int bits, int customOp = -1) const;
|
||||||
@ -637,7 +637,7 @@ public:
|
|||||||
void ABI_CallFunctionAC(void *func, const Gen::OpArg &arg1, u32 param2);
|
void ABI_CallFunctionAC(void *func, const Gen::OpArg &arg1, u32 param2);
|
||||||
void ABI_CallFunctionA(void *func, const Gen::OpArg &arg1);
|
void ABI_CallFunctionA(void *func, const Gen::OpArg &arg1);
|
||||||
|
|
||||||
// Pass a register as a paremeter.
|
// Pass a register as a parameter.
|
||||||
void ABI_CallFunctionR(void *func, Gen::X64Reg reg1);
|
void ABI_CallFunctionR(void *func, Gen::X64Reg reg1);
|
||||||
void ABI_CallFunctionRR(void *func, Gen::X64Reg reg1, Gen::X64Reg reg2);
|
void ABI_CallFunctionRR(void *func, Gen::X64Reg reg1, Gen::X64Reg reg2);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------
|
||||||
// Code Types:
|
// Code Types:
|
||||||
// (Unconditonal) Normal Codes (0): this one has subtypes inside
|
// (Unconditional) Normal Codes (0): this one has subtypes inside
|
||||||
// (Conditional) Normal Codes (1 - 7): these just compare values and set the line skip info
|
// (Conditional) Normal Codes (1 - 7): these just compare values and set the line skip info
|
||||||
// Zero Codes: any code with no address. These codes are used to do special operations like memory copy, etc
|
// Zero Codes: any code with no address. These codes are used to do special operations like memory copy, etc
|
||||||
// -------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------
|
||||||
@ -42,7 +42,7 @@ enum
|
|||||||
ZCODE_ROW = 0x03,
|
ZCODE_ROW = 0x03,
|
||||||
ZCODE_04 = 0x04,
|
ZCODE_04 = 0x04,
|
||||||
|
|
||||||
// Conditonal Codes
|
// Conditional Codes
|
||||||
CONDTIONAL_EQUAL = 0x01,
|
CONDTIONAL_EQUAL = 0x01,
|
||||||
CONDTIONAL_NOT_EQUAL = 0x02,
|
CONDTIONAL_NOT_EQUAL = 0x02,
|
||||||
CONDTIONAL_LESS_THAN_SIGNED = 0x03,
|
CONDTIONAL_LESS_THAN_SIGNED = 0x03,
|
||||||
|
@ -155,14 +155,14 @@
|
|||||||
#define SR_OVERFLOW 0x0002
|
#define SR_OVERFLOW 0x0002
|
||||||
#define SR_ARITH_ZERO 0x0004
|
#define SR_ARITH_ZERO 0x0004
|
||||||
#define SR_SIGN 0x0008
|
#define SR_SIGN 0x0008
|
||||||
#define SR_OVER_S32 0x0010 // set when there there was mod/tst/cmp on accu and result is over s32
|
#define SR_OVER_S32 0x0010 // set when there was mod/tst/cmp on accu and result is over s32
|
||||||
#define SR_TOP2BITS 0x0020 // if the upper (ac?.m/ax?.h) 2 bits are equal
|
#define SR_TOP2BITS 0x0020 // if the upper (ac?.m/ax?.h) 2 bits are equal
|
||||||
#define SR_LOGIC_ZERO 0x0040
|
#define SR_LOGIC_ZERO 0x0040
|
||||||
#define SR_OVERFLOW_STICKY 0x0080 // set at the same time as 0x2 (under same conditions) - but not cleared the same
|
#define SR_OVERFLOW_STICKY 0x0080 // set at the same time as 0x2 (under same conditions) - but not cleared the same
|
||||||
#define SR_100 0x0100 // unknown
|
#define SR_100 0x0100 // unknown
|
||||||
#define SR_INT_ENABLE 0x0200 // Not 100% sure but duddie says so. This should replace the hack, if so.
|
#define SR_INT_ENABLE 0x0200 // Not 100% sure but duddie says so. This should replace the hack, if so.
|
||||||
#define SR_400 0x0400 // unknown
|
#define SR_400 0x0400 // unknown
|
||||||
#define SR_EXT_INT_ENABLE 0x0800 // Appears in zelda - seems to disable external interupts
|
#define SR_EXT_INT_ENABLE 0x0800 // Appears in zelda - seems to disable external interrupts
|
||||||
#define SR_1000 0x1000 // unknown
|
#define SR_1000 0x1000 // unknown
|
||||||
#define SR_MUL_MODIFY 0x2000 // 1 = normal. 0 = x2 (M0, M2) (Free mul by 2)
|
#define SR_MUL_MODIFY 0x2000 // 1 = normal. 0 = x2 (M0, M2) (Free mul by 2)
|
||||||
#define SR_40_MODE_BIT 0x4000 // 0 = "16", 1 = "40" (SET16, SET40) Controls sign extension when loading mid accums and data saturation for stores from mid accums.
|
#define SR_40_MODE_BIT 0x4000 // 0 = "16", 1 = "40" (SET16, SET40) Controls sign extension when loading mid accums and data saturation for stores from mid accums.
|
||||||
|
@ -161,7 +161,7 @@ void l(const UDSPInstruction opc)
|
|||||||
// LN $axD.D, @$arS
|
// LN $axD.D, @$arS
|
||||||
// xxxx xxxx 01dd d0ss
|
// xxxx xxxx 01dd d0ss
|
||||||
// Load $axD.D/$acD.D with value from memory pointed by register $arS.
|
// Load $axD.D/$acD.D with value from memory pointed by register $arS.
|
||||||
// Add indexing register register $ixS to register $arS.
|
// Add indexing register $ixS to register $arS.
|
||||||
void ln(const UDSPInstruction opc)
|
void ln(const UDSPInstruction opc)
|
||||||
{
|
{
|
||||||
u8 sreg = opc & 0x3;
|
u8 sreg = opc & 0x3;
|
||||||
@ -531,7 +531,7 @@ void applyWriteBackLog()
|
|||||||
// apply the ext command output, because if the main op didn't change the value
|
// apply the ext command output, because if the main op didn't change the value
|
||||||
// then 0 | ext output = ext output and if it did then bitwise or is still the
|
// then 0 | ext output = ext output and if it did then bitwise or is still the
|
||||||
// right thing to do
|
// right thing to do
|
||||||
// Only needed for cases when when mainop and extended are modifying the same ACC
|
// Only needed for cases when mainop and extended are modifying the same ACC
|
||||||
// Games are not doing that + in motorola (similar dsp) dox this is forbidden to do.
|
// Games are not doing that + in motorola (similar dsp) dox this is forbidden to do.
|
||||||
void zeroWriteBackLog()
|
void zeroWriteBackLog()
|
||||||
{
|
{
|
||||||
|
@ -1116,7 +1116,7 @@ void lsrnr(const UDSPInstruction opc)
|
|||||||
|
|
||||||
// ASRNR $acD
|
// ASRNR $acD
|
||||||
// 0011 111d 1xxx xxxx
|
// 0011 111d 1xxx xxxx
|
||||||
// Arithmeticaly shift left/right accumulator $ACC[D] by lower 7-bit (signed) value in $AC[1-D].M
|
// Arithmetically shift left/right accumulator $ACC[D] by lower 7-bit (signed) value in $AC[1-D].M
|
||||||
// x = extension (7 bits!!)
|
// x = extension (7 bits!!)
|
||||||
//
|
//
|
||||||
// flags out: --xx xx00
|
// flags out: --xx xx00
|
||||||
|
@ -286,7 +286,7 @@ void DSPEmitter::cmpi(const UDSPInstruction opc)
|
|||||||
|
|
||||||
// CMPIS $acD, #I
|
// CMPIS $acD, #I
|
||||||
// 0000 011d iiii iiii
|
// 0000 011d iiii iiii
|
||||||
// Compares accumulator with short immediate. Comaprison is executed
|
// Compares accumulator with short immediate. Comparison is executed
|
||||||
// by subtracting short immediate (8bit sign extended) from mid accumulator
|
// by subtracting short immediate (8bit sign extended) from mid accumulator
|
||||||
// $acD.hm and computing flags based on whole accumulator $acD.
|
// $acD.hm and computing flags based on whole accumulator $acD.
|
||||||
//
|
//
|
||||||
|
@ -143,7 +143,7 @@ void DSPEmitter::l(const UDSPInstruction opc)
|
|||||||
// LN $axD.D, @$arS
|
// LN $axD.D, @$arS
|
||||||
// xxxx xxxx 01dd d0ss
|
// xxxx xxxx 01dd d0ss
|
||||||
// Load $axD.D/$acD.D with value from memory pointed by register $arS.
|
// Load $axD.D/$acD.D with value from memory pointed by register $arS.
|
||||||
// Add indexing register register $ixS to register $arS.
|
// Add indexing register $ixS to register $arS.
|
||||||
void DSPEmitter::ln(const UDSPInstruction opc)
|
void DSPEmitter::ln(const UDSPInstruction opc)
|
||||||
{
|
{
|
||||||
u8 sreg = opc & 0x3;
|
u8 sreg = opc & 0x3;
|
||||||
@ -686,7 +686,7 @@ void DSPEmitter::pushExtValueFromMem2(u16 dreg, u16 sreg)
|
|||||||
|
|
||||||
void DSPEmitter::popExtValueToReg()
|
void DSPEmitter::popExtValueToReg()
|
||||||
{
|
{
|
||||||
// in practise, we rarely ever have a non-NX main op
|
// in practice, we rarely ever have a non-NX main op
|
||||||
// with an extended op, so the OR here is either
|
// with an extended op, so the OR here is either
|
||||||
// not run (storeIndex == -1) or ends up OR'ing
|
// not run (storeIndex == -1) or ends up OR'ing
|
||||||
// EBX with 0 (becoming the MOV we have here)
|
// EBX with 0 (becoming the MOV we have here)
|
||||||
|
@ -64,7 +64,7 @@ void FifoPlaybackAnalyzer::AnalyzeFrames(FifoDataFile *file, std::vector<Analyze
|
|||||||
|
|
||||||
while (cmdStart < frame.fifoDataSize)
|
while (cmdStart < frame.fifoDataSize)
|
||||||
{
|
{
|
||||||
// Add memory updates that have occured before this point in the frame
|
// Add memory updates that have occurred before this point in the frame
|
||||||
while (nextMemUpdate < frame.memoryUpdates.size() && frame.memoryUpdates[nextMemUpdate].fifoPosition <= cmdStart)
|
while (nextMemUpdate < frame.memoryUpdates.size() && frame.memoryUpdates[nextMemUpdate].fifoPosition <= cmdStart)
|
||||||
{
|
{
|
||||||
AddMemoryUpdate(frame.memoryUpdates[nextMemUpdate], analyzed);
|
AddMemoryUpdate(frame.memoryUpdates[nextMemUpdate], analyzed);
|
||||||
|
@ -30,7 +30,7 @@ public:
|
|||||||
|
|
||||||
void EndFrame(u32 fifoStart, u32 fifoEnd);
|
void EndFrame(u32 fifoStart, u32 fifoEnd);
|
||||||
|
|
||||||
// This function must be called before writting GP commands
|
// This function must be called before writing GP commands
|
||||||
// bpMem must point to the actual bp mem array used by the plugin because it will be read as fifo data is recorded
|
// bpMem must point to the actual bp mem array used by the plugin because it will be read as fifo data is recorded
|
||||||
void SetVideoMemory(u32 *bpMem, u32 *cpMem, u32 *xfMem, u32 *xfRegs, u32 xfRegsSize);
|
void SetVideoMemory(u32 *bpMem, u32 *cpMem, u32 *xfMem, u32 *xfRegs, u32 xfRegsSize);
|
||||||
|
|
||||||
|
@ -916,14 +916,14 @@ bool SpecialIf()
|
|||||||
|
|
||||||
// CT6 ASM Codes, On/Off switch and Address Range Check
|
// CT6 ASM Codes, On/Off switch and Address Range Check
|
||||||
// NOT COMPLETE, asm stuff not started
|
// NOT COMPLETE, asm stuff not started
|
||||||
// fix the uglyness
|
// TODO: Fix the ugliness
|
||||||
bool AsmSwitchRange()
|
bool AsmSwitchRange()
|
||||||
{
|
{
|
||||||
// the switch subtype modifies the code :/
|
// the switch subtype modifies the code :/
|
||||||
GeckoCode::Code& code = *current_code;
|
GeckoCode::Code& code = *current_code;
|
||||||
|
|
||||||
// only run if code_execution is set or this code is a switch or rangecheck subtype
|
// only run if code_execution is set or this code is a switch or rangecheck subtype
|
||||||
// the switch and rangecheck run if exectution_counter is 1 (directly inside the failed if) if they are an endif
|
// the switch and rangecheck run if execution_counter is 1 (directly inside the failed if) if they are an endif
|
||||||
if (false == CodeExecution())
|
if (false == CodeExecution())
|
||||||
{
|
{
|
||||||
if (code.subtype < 0x6)
|
if (code.subtype < 0x6)
|
||||||
@ -962,7 +962,7 @@ bool AsmSwitchRange()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Though the next code starts at current_code+number_of_codes+1,
|
// Though the next code starts at current_code+number_of_codes+1,
|
||||||
// we add only number_of_codes. It is because the for statemet in
|
// we add only number_of_codes. It is because the for statement in
|
||||||
// RunGeckoCode() increments current_code.
|
// RunGeckoCode() increments current_code.
|
||||||
current_code += number_of_codes;
|
current_code += number_of_codes;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ void LoadCodes(const IniFile& inifile, std::vector<GeckoCode>& gcodes)
|
|||||||
gcode.enabled = (1 == ss.tellg()); // silly
|
gcode.enabled = (1 == ss.tellg()); // silly
|
||||||
ss.seekg(1, std::ios_base::cur);
|
ss.seekg(1, std::ios_base::cur);
|
||||||
// read the code name
|
// read the code name
|
||||||
std::getline(ss, gcode.name, '['); // stop at [ character (begining of contributer name)
|
std::getline(ss, gcode.name, '['); // stop at [ character (beginning of contributor name)
|
||||||
gcode.name = StripSpaces(gcode.name);
|
gcode.name = StripSpaces(gcode.name);
|
||||||
// read the code creator name
|
// read the code creator name
|
||||||
std::getline(ss, gcode.creator, ']');
|
std::getline(ss, gcode.creator, ']');
|
||||||
|
@ -265,7 +265,7 @@ u16 AcceleratorGetSample()
|
|||||||
// stream, and the lower 16 bits are the decimal part.
|
// stream, and the lower 16 bits are the decimal part.
|
||||||
//
|
//
|
||||||
// We start getting samples not from sample 0, but 0.<curr_pos_frac>. This
|
// We start getting samples not from sample 0, but 0.<curr_pos_frac>. This
|
||||||
// avoids discontinuties in the audio stream, especially with very low ratios
|
// avoids discontinuities in the audio stream, especially with very low ratios
|
||||||
// which interpolate a lot of values between two "real" samples.
|
// which interpolate a lot of values between two "real" samples.
|
||||||
u32 ResampleAudio(std::function<s16(u32)> input_callback, s16* output, u32 count,
|
u32 ResampleAudio(std::function<s16(u32)> input_callback, s16* output, u32 count,
|
||||||
s16* last_samples, u32 curr_pos, u32 ratio, int srctype,
|
s16* last_samples, u32 curr_pos, u32 ratio, int srctype,
|
||||||
|
@ -537,7 +537,7 @@ inline void CEXIETHERNET::inc_rwp()
|
|||||||
(*rwp)++;
|
(*rwp)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function is on the critical path for recving data.
|
// This function is on the critical path for receiving data.
|
||||||
// Be very careful about calling into the logger and other slow things
|
// Be very careful about calling into the logger and other slow things
|
||||||
bool CEXIETHERNET::RecvHandlePacket()
|
bool CEXIETHERNET::RecvHandlePacket()
|
||||||
{
|
{
|
||||||
|
@ -1333,8 +1333,11 @@ void GCMemcard::CARD_GetSerialNo(u32 *serial1,u32 *serial2)
|
|||||||
/* FZEROGX_MakeSaveGameValid */
|
/* FZEROGX_MakeSaveGameValid */
|
||||||
/* (use just before writing a F-Zero GX system .gci file) */
|
/* (use just before writing a F-Zero GX system .gci file) */
|
||||||
/* */
|
/* */
|
||||||
/* chn: Destination memory card port */
|
/* Parameters: */
|
||||||
/* ret: Error code */
|
/* direntry: [Description needed] */
|
||||||
|
/* FileBuffer: [Description needed] */
|
||||||
|
/* */
|
||||||
|
/* Returns: Error code */
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
||||||
s32 GCMemcard::FZEROGX_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock> &FileBuffer)
|
s32 GCMemcard::FZEROGX_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock> &FileBuffer)
|
||||||
@ -1351,7 +1354,7 @@ s32 GCMemcard::FZEROGX_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock>
|
|||||||
CARD_GetSerialNo(&serial1,&serial2);
|
CARD_GetSerialNo(&serial1,&serial2);
|
||||||
|
|
||||||
// set new serial numbers
|
// set new serial numbers
|
||||||
*(u16*)&FileBuffer[1].block[0x0066] = BE16(BE32(serial1) >> 16);
|
*(u16*)&FileBuffer[1].block[0x0066] = BE16(BE32(serial1) >> 16);
|
||||||
*(u16*)&FileBuffer[3].block[0x1580] = BE16(BE32(serial2) >> 16);
|
*(u16*)&FileBuffer[3].block[0x1580] = BE16(BE32(serial2) >> 16);
|
||||||
*(u16*)&FileBuffer[1].block[0x0060] = BE16(BE32(serial1) & 0xFFFF);
|
*(u16*)&FileBuffer[1].block[0x0060] = BE16(BE32(serial1) & 0xFFFF);
|
||||||
*(u16*)&FileBuffer[1].block[0x0200] = BE16(BE32(serial2) & 0xFFFF);
|
*(u16*)&FileBuffer[1].block[0x0200] = BE16(BE32(serial2) & 0xFFFF);
|
||||||
@ -1378,8 +1381,11 @@ s32 GCMemcard::FZEROGX_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock>
|
|||||||
/* PSO_MakeSaveGameValid */
|
/* PSO_MakeSaveGameValid */
|
||||||
/* (use just before writing a PSO system .gci file) */
|
/* (use just before writing a PSO system .gci file) */
|
||||||
/* */
|
/* */
|
||||||
/* chn: Destination memory card port */
|
/* Parameters: */
|
||||||
/* ret: Error code */
|
/* direntry: [Description needed] */
|
||||||
|
/* FileBuffer: [Description needed] */
|
||||||
|
/* */
|
||||||
|
/* Returns: Error code */
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
|
|
||||||
s32 GCMemcard::PSO_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock> &FileBuffer)
|
s32 GCMemcard::PSO_MakeSaveGameValid(DEntry& direntry, std::vector<GCMBlock> &FileBuffer)
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
of frames. So if a game runs slow, on a slow computer for example, these updates will occur
|
of frames. So if a game runs slow, on a slow computer for example, these updates will occur
|
||||||
less frequently. This makes sense because almost all console games are controlled by frames
|
less frequently. This makes sense because almost all console games are controlled by frames
|
||||||
rather than time, so if a game can't keep up with the normal framerate all animations and
|
rather than time, so if a game can't keep up with the normal framerate all animations and
|
||||||
actions slows down and the game runs to slow. This is different from PC games that are are
|
actions slows down and the game runs to slow. This is different from PC games that are
|
||||||
often controlled by time instead and may not have maximum framerates.
|
often controlled by time instead and may not have maximum framerates.
|
||||||
|
|
||||||
However, I'm not sure if the Bluetooth communication for the Wiimote is entirely frame
|
However, I'm not sure if the Bluetooth communication for the Wiimote is entirely frame
|
||||||
|
@ -45,7 +45,7 @@ namespace UDPTLayer
|
|||||||
{
|
{
|
||||||
if (!(m->inst)) return;
|
if (!(m->inst)) return;
|
||||||
if (!(m->updIR)) return;
|
if (!(m->updIR)) return;
|
||||||
if ((*x >= -0.999) && (*x <= 0.999) && (*y >= -0.999) && (*y <= 0.999)) return; //the recieved values are used ONLY when the normal pointer is offscreen
|
if ((*x >= -0.999) && (*x <= 0.999) && (*y >= -0.999) && (*y <= 0.999)) return; //the received values are used ONLY when the normal pointer is offscreen
|
||||||
float _x, _y;
|
float _x, _y;
|
||||||
m->inst->getIR(_x, _y);
|
m->inst->getIR(_x, _y);
|
||||||
*x = _x * 2 - 1;
|
*x = _x * 2 - 1;
|
||||||
|
@ -163,7 +163,7 @@ private:
|
|||||||
ADPCMState m_adpcm_state;
|
ADPCMState m_adpcm_state;
|
||||||
|
|
||||||
// read data request queue
|
// read data request queue
|
||||||
// maybe it isn't actualy a queue
|
// maybe it isn't actually a queue
|
||||||
// maybe read requests cancel any current requests
|
// maybe read requests cancel any current requests
|
||||||
std::queue< ReadRequest > m_read_requests;
|
std::queue< ReadRequest > m_read_requests;
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::SendACLPacket(u16 _ConnectionHandle, u
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DEBUG_LOG(WII_IPC_WIIMOTE, "ACL endpoint not currently valid, queueing...");
|
DEBUG_LOG(WII_IPC_WIIMOTE, "ACL endpoint not currently valid, queuing...");
|
||||||
m_acl_pool.Store(_pData, _Size, _ConnectionHandle);
|
m_acl_pool.Store(_pData, _Size, _ConnectionHandle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ void NetPlayServer::ThreadFunc()
|
|||||||
switch (ready_socket.Receive(rpac))
|
switch (ready_socket.Receive(rpac))
|
||||||
{
|
{
|
||||||
case sf::Socket::Done :
|
case sf::Socket::Done :
|
||||||
// if a bad packet is recieved, disconnect the client
|
// if a bad packet is received, disconnect the client
|
||||||
if (0 == OnData(rpac, ready_socket))
|
if (0 == OnData(rpac, ready_socket))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -267,7 +267,7 @@ unsigned int NetPlayServer::OnDisconnect(sf::SocketTCP& socket)
|
|||||||
|
|
||||||
sf::Packet spac;
|
sf::Packet spac;
|
||||||
spac << (MessageId)NP_MSG_DISABLE_GAME;
|
spac << (MessageId)NP_MSG_DISABLE_GAME;
|
||||||
// this thread doesnt need players lock
|
// this thread doesn't need players lock
|
||||||
std::lock_guard<std::recursive_mutex> lks(m_crit.send);
|
std::lock_guard<std::recursive_mutex> lks(m_crit.send);
|
||||||
SendToClients(spac);
|
SendToClients(spac);
|
||||||
}
|
}
|
||||||
@ -465,7 +465,7 @@ unsigned int NetPlayServer::OnData(sf::Packet& packet, sf::SocketTCP& socket)
|
|||||||
map = -1;
|
map = -1;
|
||||||
|
|
||||||
// if not, they are hacking, so disconnect them
|
// if not, they are hacking, so disconnect them
|
||||||
// this could happen right after a pad map change, but that isn't implimented yet
|
// this could happen right after a pad map change, but that isn't implemented yet
|
||||||
if (map < 0)
|
if (map < 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -433,7 +433,7 @@ void Interpreter::mcrf(UGeckoInstruction _inst)
|
|||||||
|
|
||||||
void Interpreter::isync(UGeckoInstruction _inst)
|
void Interpreter::isync(UGeckoInstruction _inst)
|
||||||
{
|
{
|
||||||
//shouldnt do anything
|
//shouldn't do anything
|
||||||
}
|
}
|
||||||
|
|
||||||
// the following commands read from FPSCR
|
// the following commands read from FPSCR
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
||||||
// Should give a very noticable speed boost to paired single heavy code.
|
// Should give a very noticeable speed boost to paired single heavy code.
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
||||||
// Should give a very noticable speed boost to paired single heavy code.
|
// Should give a very noticeable speed boost to paired single heavy code.
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa,
|
|||||||
if (!cst1_instructions.empty())
|
if (!cst1_instructions.empty())
|
||||||
{
|
{
|
||||||
// If the Gecko CST1 instruction queue is not empty,
|
// If the Gecko CST1 instruction queue is not empty,
|
||||||
// we comsume the first instruction.
|
// we consume the first instruction.
|
||||||
inst = UGeckoInstruction(cst1_instructions.front());
|
inst = UGeckoInstruction(cst1_instructions.front());
|
||||||
cst1_instructions.pop();
|
cst1_instructions.pop();
|
||||||
address -= 4;
|
address -= 4;
|
||||||
|
@ -191,7 +191,7 @@ void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Checksum only uses opcode, not opcode data, because opcode data changes
|
// Checksum only uses opcode, not opcode data, because opcode data changes
|
||||||
// in all compilations, but opcodes dont!
|
// in all compilations, but opcodes don't!
|
||||||
sum = ( ( (sum << 17 ) & 0xFFFE0000 ) | ( (sum >> 15) & 0x0001FFFF ) );
|
sum = ( ( (sum << 17 ) & 0xFFFE0000 ) | ( (sum >> 15) & 0x0001FFFF ) );
|
||||||
sum = sum ^ (op | op2 | op3);
|
sum = sum ^ (op | op2 | op3);
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ bool CISOFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
|
|||||||
auto const bytes_to_read = std::min(m_block_size - data_offset, nbytes);
|
auto const bytes_to_read = std::min(m_block_size - data_offset, nbytes);
|
||||||
if (block < CISO_MAP_SIZE && UNUSED_BLOCK_ID != m_ciso_map[block])
|
if (block < CISO_MAP_SIZE && UNUSED_BLOCK_ID != m_ciso_map[block])
|
||||||
{
|
{
|
||||||
// calcualte the base address
|
// calculate the base address
|
||||||
auto const file_off = CISO_HEADER_SIZE + m_ciso_map[block] * m_block_size + data_offset;
|
auto const file_off = CISO_HEADER_SIZE + m_ciso_map[block] * m_block_size + data_offset;
|
||||||
|
|
||||||
if (!(m_file.Seek(file_off, SEEK_SET) && m_file.ReadArray(out_ptr, bytes_to_read)))
|
if (!(m_file.Seek(file_off, SEEK_SET) && m_file.ReadArray(out_ptr, bytes_to_read)))
|
||||||
|
@ -288,10 +288,10 @@ bool DecompressBlobToFile(const char* infile, const char* outfile, CompressCB ca
|
|||||||
|
|
||||||
File::IOFile f(outfile, "wb");
|
File::IOFile f(outfile, "wb");
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
delete reader;
|
delete reader;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CompressedBlobHeader &header = reader->GetHeader();
|
const CompressedBlobHeader &header = reader->GetHeader();
|
||||||
u8* buffer = new u8[header.block_size];
|
u8* buffer = new u8[header.block_size];
|
||||||
|
@ -311,7 +311,7 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemToggled(wxCommandEvent& WXUNUSED (ev
|
|||||||
|
|
||||||
void wxCheatsWindow::OnEvent_ApplyChanges_Press(wxCommandEvent& ev)
|
void wxCheatsWindow::OnEvent_ApplyChanges_Press(wxCommandEvent& ev)
|
||||||
{
|
{
|
||||||
// Appply AR Code changes
|
// Apply AR Code changes
|
||||||
for (size_t i = 0; i < indexList.size(); i++)
|
for (size_t i = 0; i < indexList.size(); i++)
|
||||||
{
|
{
|
||||||
ActionReplay::SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
ActionReplay::SetARCode_IsActive(m_CheckListBox_CheatsList->IsChecked(indexList[i].uiIndex), indexList[i].index);
|
||||||
|
@ -397,7 +397,7 @@ void CCodeWindow::OnChangeFont(wxCommandEvent& event)
|
|||||||
DebuggerFont = dialog.GetFontData().GetChosenFont();
|
DebuggerFont = dialog.GetFontData().GetChosenFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toogle windows
|
// Toggle windows
|
||||||
|
|
||||||
void CCodeWindow::OpenPages()
|
void CCodeWindow::OpenPages()
|
||||||
{
|
{
|
||||||
|
@ -79,7 +79,7 @@ private:
|
|||||||
|
|
||||||
void GeneralSettings(wxCommandEvent& event);
|
void GeneralSettings(wxCommandEvent& event);
|
||||||
|
|
||||||
// These set GFXDebuggerPauseFlag to true (either immediately or once the specified event has occured)
|
// These set GFXDebuggerPauseFlag to true (either immediately or once the specified event has occurred)
|
||||||
void OnPauseButton(wxCommandEvent& event);
|
void OnPauseButton(wxCommandEvent& event);
|
||||||
void OnPauseAtNextButton(wxCommandEvent& event);
|
void OnPauseAtNextButton(wxCommandEvent& event);
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ CMemoryWindow::CMemoryWindow(wxWindow* parent, wxWindowID id,
|
|||||||
{
|
{
|
||||||
wxBoxSizer* sizerBig = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer* sizerBig = new wxBoxSizer(wxHORIZONTAL);
|
||||||
wxBoxSizer* sizerRight = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* sizerRight = new wxBoxSizer(wxVERTICAL);
|
||||||
// Didn't see anything usefull in the left part
|
// Didn't see anything useful in the left part
|
||||||
//wxBoxSizer* sizerLeft = new wxBoxSizer(wxVERTICAL);
|
//wxBoxSizer* sizerLeft = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
DebugInterface* di = &PowerPC::debug_interface;
|
DebugInterface* di = &PowerPC::debug_interface;
|
||||||
|
@ -43,7 +43,7 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// I could not use FindItemByHWND() instead of this, it crashed on that occation I used it */
|
// I could not use FindItemByHWND() instead of this, it crashed on that occasion I used it */
|
||||||
HWND MSWGetParent_(HWND Parent)
|
HWND MSWGetParent_(HWND Parent)
|
||||||
{
|
{
|
||||||
return GetParent(Parent);
|
return GetParent(Parent);
|
||||||
|
@ -988,7 +988,7 @@ void CGameListCtrl::OnSetDefaultGCM(wxCommandEvent& event)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Othwerise blank the value and save it
|
// Otherwise blank the value and save it
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultGCM = "";
|
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultGCM = "";
|
||||||
SConfig::GetInstance().SaveSettings();
|
SConfig::GetInstance().SaveSettings();
|
||||||
}
|
}
|
||||||
|
@ -207,7 +207,7 @@ void CodeConfigPanel::DownloadCodes(wxCommandEvent&)
|
|||||||
case 0 :
|
case 0 :
|
||||||
{
|
{
|
||||||
std::istringstream ssline(line);
|
std::istringstream ssline(line);
|
||||||
// stop at [ character (begining of contributer name)
|
// stop at [ character (beginning of contributor name)
|
||||||
std::getline(ssline, gcode.name, '[');
|
std::getline(ssline, gcode.name, '[');
|
||||||
gcode.name = StripSpaces(gcode.name);
|
gcode.name = StripSpaces(gcode.name);
|
||||||
// read the code creator name
|
// read the code creator name
|
||||||
|
@ -67,7 +67,7 @@ GameListItem::GameListItem(const std::string& _rFileName)
|
|||||||
m_IsDiscTwo = pVolume->IsDiscTwo();
|
m_IsDiscTwo = pVolume->IsDiscTwo();
|
||||||
m_Revision = pVolume->GetRevision();
|
m_Revision = pVolume->GetRevision();
|
||||||
|
|
||||||
// check if we can get some infos from the banner file too
|
// check if we can get some info from the banner file too
|
||||||
DiscIO::IFileSystem* pFileSystem = DiscIO::CreateFileSystem(pVolume);
|
DiscIO::IFileSystem* pFileSystem = DiscIO::CreateFileSystem(pVolume);
|
||||||
|
|
||||||
if (pFileSystem != NULL || m_Platform == WII_WAD)
|
if (pFileSystem != NULL || m_Platform == WII_WAD)
|
||||||
|
@ -1347,7 +1347,7 @@ void CISOProperties::ChangeBannerDetails(int lang)
|
|||||||
wxString const comment = StrToWxStr(OpenGameListItem->GetDescription(lang));
|
wxString const comment = StrToWxStr(OpenGameListItem->GetDescription(lang));
|
||||||
wxString const maker = StrToWxStr(OpenGameListItem->GetCompany());
|
wxString const maker = StrToWxStr(OpenGameListItem->GetCompany());
|
||||||
|
|
||||||
// Updates the informations shown in the window
|
// Updates the information shown in the window
|
||||||
m_ShortName->SetValue(shortName);
|
m_ShortName->SetValue(shortName);
|
||||||
m_Comment->SetValue(comment);
|
m_Comment->SetValue(comment);
|
||||||
m_Maker->SetValue(maker);//dev too
|
m_Maker->SetValue(maker);//dev too
|
||||||
|
@ -126,7 +126,7 @@ wxString cache_efb_copies_desc = wxTRANSLATE("Slightly speeds up EFB to RAM copi
|
|||||||
wxString shader_errors_desc = wxTRANSLATE("Usually if shader compilation fails, an error message is displayed.\nHowever, one may skip the popups to allow interruption free gameplay by checking this option.\n\nIf unsure, leave this unchecked.");
|
wxString shader_errors_desc = wxTRANSLATE("Usually if shader compilation fails, an error message is displayed.\nHowever, one may skip the popups to allow interruption free gameplay by checking this option.\n\nIf unsure, leave this unchecked.");
|
||||||
|
|
||||||
|
|
||||||
// Search for avaliable resolutions - TODO: Move to Common?
|
// Search for available resolutions - TODO: Move to Common?
|
||||||
wxArrayString GetListOfResolutions()
|
wxArrayString GetListOfResolutions()
|
||||||
{
|
{
|
||||||
wxArrayString retlist;
|
wxArrayString retlist;
|
||||||
|
@ -23,7 +23,7 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin
|
|||||||
const wxString src_choices[] = { _("None"),
|
const wxString src_choices[] = { _("None"),
|
||||||
_("Emulated Wiimote"), _("Real Wiimote"), _("Hybrid Wiimote") };
|
_("Emulated Wiimote"), _("Real Wiimote"), _("Hybrid Wiimote") };
|
||||||
|
|
||||||
// reserve four ids, so that we can calculate the index from the ids lateron
|
// reserve four ids, so that we can calculate the index from the ids later on
|
||||||
// Stupid wx 2.8 doesn't support reserving sequential IDs, so we need to do that more complicated..
|
// Stupid wx 2.8 doesn't support reserving sequential IDs, so we need to do that more complicated..
|
||||||
int source_ctrl_id = wxWindow::NewControlId();
|
int source_ctrl_id = wxWindow::NewControlId();
|
||||||
m_wiimote_index_from_ctrl_id.insert(std::pair<wxWindowID, unsigned int>(source_ctrl_id, i));
|
m_wiimote_index_from_ctrl_id.insert(std::pair<wxWindowID, unsigned int>(source_ctrl_id, i));
|
||||||
|
@ -140,7 +140,7 @@ public:
|
|||||||
// deadzone / square stick code
|
// deadzone / square stick code
|
||||||
if (deadzone || square)
|
if (deadzone || square)
|
||||||
{
|
{
|
||||||
// this section might be all wrong, but its working good enough, i think
|
// this section might be all wrong, but its working good enough, I think
|
||||||
|
|
||||||
ControlState ang = atan2(yy, xx);
|
ControlState ang = atan2(yy, xx);
|
||||||
ControlState ang_sin = sin(ang);
|
ControlState ang_sin = sin(ang);
|
||||||
@ -150,7 +150,7 @@ public:
|
|||||||
ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2);
|
ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2);
|
||||||
|
|
||||||
// the amt a full stick would have that was ( user setting squareness) at current angle
|
// the amt a full stick would have that was ( user setting squareness) at current angle
|
||||||
// i think this is more like a pointed circle rather than a rounded square like it should be
|
// I think this is more like a pointed circle rather than a rounded square like it should be
|
||||||
ControlState stick_full = (1 + (square_full - 1) * square);
|
ControlState stick_full = (1 + (square_full - 1) * square);
|
||||||
|
|
||||||
ControlState dist = sqrt(xx*xx + yy*yy);
|
ControlState dist = sqrt(xx*xx + yy*yy);
|
||||||
@ -312,7 +312,7 @@ public:
|
|||||||
// deadzone / circle stick code
|
// deadzone / circle stick code
|
||||||
if (deadzone || circle)
|
if (deadzone || circle)
|
||||||
{
|
{
|
||||||
// this section might be all wrong, but its working good enough, i think
|
// this section might be all wrong, but its working good enough, I think
|
||||||
|
|
||||||
ControlState ang = atan2(yy, xx);
|
ControlState ang = atan2(yy, xx);
|
||||||
ControlState ang_sin = sin(ang);
|
ControlState ang_sin = sin(ang);
|
||||||
@ -322,7 +322,7 @@ public:
|
|||||||
ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2);
|
ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2);
|
||||||
|
|
||||||
// the amt a full stick would have that was (user setting circular) at current angle
|
// the amt a full stick would have that was (user setting circular) at current angle
|
||||||
// i think this is more like a pointed circle rather than a rounded square like it should be
|
// I think this is more like a pointed circle rather than a rounded square like it should be
|
||||||
ControlState stick_full = (square_full * (1 - circle)) + (circle);
|
ControlState stick_full = (square_full * (1 - circle)) + (circle);
|
||||||
|
|
||||||
ControlState dist = sqrt(xx*xx + yy*yy);
|
ControlState dist = sqrt(xx*xx + yy*yy);
|
||||||
|
@ -33,13 +33,13 @@
|
|||||||
#define CIFACE_USE_ANDROID
|
#define CIFACE_USE_ANDROID
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// idk in case i wanted to change it to double or somethin, idk what's best
|
// idk in case I wanted to change it to double or something, idk what's best
|
||||||
typedef float ControlState;
|
typedef float ControlState;
|
||||||
|
|
||||||
//
|
//
|
||||||
// ControllerInterface
|
// ControllerInterface
|
||||||
//
|
//
|
||||||
// some crazy shit i made to control different device inputs and outputs
|
// some crazy shit I made to control different device inputs and outputs
|
||||||
// from lots of different sources, hopefully more easily
|
// from lots of different sources, hopefully more easily
|
||||||
//
|
//
|
||||||
class ControllerInterface
|
class ControllerInterface
|
||||||
@ -189,7 +189,7 @@ public:
|
|||||||
//
|
//
|
||||||
// these are what you create to actually use the inputs, InputReference or OutputReference
|
// these are what you create to actually use the inputs, InputReference or OutputReference
|
||||||
//
|
//
|
||||||
// after being binded to devices and controls with ControllerInterface::UpdateReference,
|
// after being bound to devices and controls with ControllerInterface::UpdateReference,
|
||||||
// each one can link to multiple devices and controls
|
// each one can link to multiple devices and controls
|
||||||
// when you change a ControlReference's expression,
|
// when you change a ControlReference's expression,
|
||||||
// you must use ControllerInterface::UpdateReference on it to rebind controls
|
// you must use ControllerInterface::UpdateReference on it to rebind controls
|
||||||
|
@ -22,13 +22,13 @@ static const struct
|
|||||||
} force_type_names[] =
|
} force_type_names[] =
|
||||||
{
|
{
|
||||||
{GUID_ConstantForce, "Constant"}, // DICONSTANTFORCE
|
{GUID_ConstantForce, "Constant"}, // DICONSTANTFORCE
|
||||||
{GUID_RampForce, "Ramp"}, // DIRAMPFORCE
|
{GUID_RampForce, "Ramp"}, // DIRAMPFORCE
|
||||||
{GUID_Square, "Square"}, // DIPERIODIC ...
|
{GUID_Square, "Square"}, // DIPERIODIC ...
|
||||||
{GUID_Sine, "Sine"},
|
{GUID_Sine, "Sine"},
|
||||||
{GUID_Triangle, "Triangle"},
|
{GUID_Triangle, "Triangle"},
|
||||||
{GUID_SawtoothUp, "Sawtooth Up"},
|
{GUID_SawtoothUp, "Sawtooth Up"},
|
||||||
{GUID_SawtoothDown, "Sawtooth Down"},
|
{GUID_SawtoothDown, "Sawtooth Down"},
|
||||||
//{GUID_Spring, "Spring"}, // DICUSTOMFORCE ... < i think
|
//{GUID_Spring, "Spring"}, // DICUSTOMFORCE ... < I think
|
||||||
//{GUID_Damper, "Damper"},
|
//{GUID_Damper, "Damper"},
|
||||||
//{GUID_Inertia, "Inertia"},
|
//{GUID_Inertia, "Inertia"},
|
||||||
//{GUID_Friction, "Friction"},
|
//{GUID_Friction, "Friction"},
|
||||||
@ -70,9 +70,9 @@ void GetXInputGUIDS( std::vector<DWORD>& guids )
|
|||||||
if( FAILED(hr) || pIWbemLocator == NULL )
|
if( FAILED(hr) || pIWbemLocator == NULL )
|
||||||
goto LCleanup;
|
goto LCleanup;
|
||||||
|
|
||||||
bstrNamespace = SysAllocString( L"\\\\.\\root\\cimv2" );if( bstrNamespace == NULL ) goto LCleanup;
|
bstrNamespace = SysAllocString( L"\\\\.\\root\\cimv2" );if( bstrNamespace == NULL ) goto LCleanup;
|
||||||
bstrClassName = SysAllocString( L"Win32_PNPEntity" ); if( bstrClassName == NULL ) goto LCleanup;
|
bstrClassName = SysAllocString( L"Win32_PNPEntity" ); if( bstrClassName == NULL ) goto LCleanup;
|
||||||
bstrDeviceID = SysAllocString( L"DeviceID" ); if( bstrDeviceID == NULL ) goto LCleanup;
|
bstrDeviceID = SysAllocString( L"DeviceID" ); if( bstrDeviceID == NULL ) goto LCleanup;
|
||||||
|
|
||||||
// Connect to WMI
|
// Connect to WMI
|
||||||
hr = pIWbemLocator->ConnectServer( bstrNamespace, NULL, NULL, 0L, 0L, NULL, NULL, &pIWbemServices );
|
hr = pIWbemLocator->ConnectServer( bstrNamespace, NULL, NULL, 0L, 0L, NULL, NULL, &pIWbemServices );
|
||||||
@ -81,7 +81,7 @@ void GetXInputGUIDS( std::vector<DWORD>& guids )
|
|||||||
|
|
||||||
// Switch security level to IMPERSONATE.
|
// Switch security level to IMPERSONATE.
|
||||||
CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL,
|
CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL,
|
||||||
RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE );
|
RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE );
|
||||||
|
|
||||||
hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices );
|
hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices );
|
||||||
if( FAILED(hr) || pEnumDevices == NULL )
|
if( FAILED(hr) || pEnumDevices == NULL )
|
||||||
@ -184,7 +184,7 @@ void InitJoystick(IDirectInput8* const idi8, std::vector<ControllerInterface::De
|
|||||||
}
|
}
|
||||||
|
|
||||||
Joystick* js = new Joystick(/*&*i, */js_device, name_counts[i->tszInstanceName]++);
|
Joystick* js = new Joystick(/*&*i, */js_device, name_counts[i->tszInstanceName]++);
|
||||||
// only add if it has some inputs/outpus
|
// only add if it has some inputs/outputs
|
||||||
if (js->Inputs().size() || js->Outputs().size())
|
if (js->Inputs().size() || js->Outputs().size())
|
||||||
devices.push_back(js);
|
devices.push_back(js);
|
||||||
else
|
else
|
||||||
@ -196,7 +196,6 @@ void InitJoystick(IDirectInput8* const idi8, std::vector<ControllerInterface::De
|
|||||||
js_device->Release();
|
js_device->Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,7 +225,7 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
|||||||
if (FAILED(m_device->GetCapabilities(&js_caps)))
|
if (FAILED(m_device->GetCapabilities(&js_caps)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// max of 32 buttons and 4 hats / the limit of the data format i am using
|
// max of 32 buttons and 4 hats / the limit of the data format I am using
|
||||||
js_caps.dwButtons = std::min((DWORD)32, js_caps.dwButtons);
|
js_caps.dwButtons = std::min((DWORD)32, js_caps.dwButtons);
|
||||||
js_caps.dwPOVs = std::min((DWORD)4, js_caps.dwPOVs);
|
js_caps.dwPOVs = std::min((DWORD)4, js_caps.dwPOVs);
|
||||||
|
|
||||||
@ -258,9 +257,9 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI
|
|||||||
range.lMin = -(1 << 7);
|
range.lMin = -(1 << 7);
|
||||||
range.lMax = (1 << 7);
|
range.lMax = (1 << 7);
|
||||||
m_device->SetProperty(DIPROP_RANGE, &range.diph);
|
m_device->SetProperty(DIPROP_RANGE, &range.diph);
|
||||||
// but i guess not all devices support setting range
|
// but I guess not all devices support setting range
|
||||||
// so i getproperty right afterward incase it didn't set :P
|
// so I getproperty right afterward incase it didn't set.
|
||||||
// this also checks that the axis is present
|
// This also checks that the axis is present
|
||||||
if (SUCCEEDED(m_device->GetProperty(DIPROP_RANGE, &range.diph)))
|
if (SUCCEEDED(m_device->GetProperty(DIPROP_RANGE, &range.diph)))
|
||||||
{
|
{
|
||||||
const LONG base = (range.lMin + range.lMax) / 2;
|
const LONG base = (range.lMin + range.lMax) / 2;
|
||||||
@ -404,7 +403,7 @@ bool Joystick::UpdateInput()
|
|||||||
HRESULT hr = 0;
|
HRESULT hr = 0;
|
||||||
|
|
||||||
// just always poll,
|
// just always poll,
|
||||||
// msdn says if this isn't needed it doesnt do anything
|
// MSDN says if this isn't needed it doesn't do anything
|
||||||
m_device->Poll();
|
m_device->Poll();
|
||||||
|
|
||||||
if (m_buffered)
|
if (m_buffered)
|
||||||
@ -539,7 +538,7 @@ ControlState Joystick::Button::GetState() const
|
|||||||
ControlState Joystick::Hat::GetState() const
|
ControlState Joystick::Hat::GetState() const
|
||||||
{
|
{
|
||||||
// can this func be simplified ?
|
// can this func be simplified ?
|
||||||
// hat centered code from msdn
|
// hat centered code from MSDN
|
||||||
if (0xFFFF == LOWORD(m_hat))
|
if (0xFFFF == LOWORD(m_hat))
|
||||||
return 0;
|
return 0;
|
||||||
return (abs((int)(m_hat / 4500 - m_direction * 2 + 8) % 8 - 4) > 2);
|
return (abs((int)(m_hat / 4500 - m_direction * 2 + 8) % 8 - 4) > 2);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include "DInput.h"
|
#include "DInput.h"
|
||||||
|
|
||||||
// (lower would be more sensitive) user can lower sensitivity by setting range
|
// (lower would be more sensitive) user can lower sensitivity by setting range
|
||||||
// seems decent here ( at 8 ), I dont think anyone would need more sensitive than this
|
// seems decent here ( at 8 ), I don't think anyone would need more sensitive than this
|
||||||
// and user can lower it much farther than they would want to with the range
|
// and user can lower it much farther than they would want to with the range
|
||||||
#define MOUSE_AXIS_SENSITIVITY 8
|
#define MOUSE_AXIS_SENSITIVITY 8
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<ControllerInterfac
|
|||||||
hwnd = _hwnd;
|
hwnd = _hwnd;
|
||||||
|
|
||||||
// mouse and keyboard are a combined device, to allow shift+click and stuff
|
// mouse and keyboard are a combined device, to allow shift+click and stuff
|
||||||
// if thats dumb, i will make a VirtualDevice class that just uses ranges of inputs/outputs from other devices
|
// if that's dumb, I will make a VirtualDevice class that just uses ranges of inputs/outputs from other devices
|
||||||
// so there can be a separated Keyboard and mouse, as well as combined KeyboardMouse
|
// so there can be a separated Keyboard and mouse, as well as combined KeyboardMouse
|
||||||
|
|
||||||
LPDIRECTINPUTDEVICE8 kb_device = NULL;
|
LPDIRECTINPUTDEVICE8 kb_device = NULL;
|
||||||
@ -181,7 +181,7 @@ bool KeyboardMouse::UpdateInput()
|
|||||||
|
|
||||||
if (SUCCEEDED(kb_hr) && SUCCEEDED(mo_hr))
|
if (SUCCEEDED(kb_hr) && SUCCEEDED(mo_hr))
|
||||||
{
|
{
|
||||||
// need to smooth out the axes, otherwise it doesnt work for shit
|
// need to smooth out the axes, otherwise it doesn't work for shit
|
||||||
for (unsigned int i = 0; i < 3; ++i)
|
for (unsigned int i = 0; i < 3; ++i)
|
||||||
((&m_state_in.mouse.lX)[i] += (&tmp_mouse.lX)[i]) /= 2;
|
((&m_state_in.mouse.lX)[i] += (&tmp_mouse.lX)[i]) /= 2;
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
|
|||||||
// get supported triggers
|
// get supported triggers
|
||||||
for (int i = 0; i != sizeof(named_triggers)/sizeof(*named_triggers); ++i)
|
for (int i = 0; i != sizeof(named_triggers)/sizeof(*named_triggers); ++i)
|
||||||
{
|
{
|
||||||
//BYTE val = (&caps.Gamepad.bLeftTrigger)[i]; // should be max value / msdn lies
|
//BYTE val = (&caps.Gamepad.bLeftTrigger)[i]; // should be max value / MSDN lies
|
||||||
if ((&caps.Gamepad.bLeftTrigger)[i])
|
if ((&caps.Gamepad.bLeftTrigger)[i])
|
||||||
AddInput(new Trigger(i, (&m_state_in.Gamepad.bLeftTrigger)[i], 255 ));
|
AddInput(new Trigger(i, (&m_state_in.Gamepad.bLeftTrigger)[i], 255 ));
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index)
|
|||||||
// get supported axes
|
// get supported axes
|
||||||
for (int i = 0; i != sizeof(named_axes)/sizeof(*named_axes); ++i)
|
for (int i = 0; i != sizeof(named_axes)/sizeof(*named_axes); ++i)
|
||||||
{
|
{
|
||||||
//SHORT val = (&caps.Gamepad.sThumbLX)[i]; // xinput doesnt give the range / msdn is lier
|
//SHORT val = (&caps.Gamepad.sThumbLX)[i]; // xinput doesn't give the range / MSDN is a liar
|
||||||
if ((&caps.Gamepad.sThumbLX)[i])
|
if ((&caps.Gamepad.sThumbLX)[i])
|
||||||
{
|
{
|
||||||
const SHORT& ax = (&m_state_in.Gamepad.sThumbLX)[i];
|
const SHORT& ax = (&m_state_in.Gamepad.sThumbLX)[i];
|
||||||
|
@ -37,7 +37,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
std::string port,displayName;
|
std::string port,displayName;
|
||||||
int pharsePacket(u8 * data, size_t size);
|
int pharsePacket(u8 * data, size_t size);
|
||||||
struct _d; //using pimpl because Winsock2.h doesen't have include guards -_-
|
struct _d; //using pimpl because Winsock2.h doesn't have include guards -_-
|
||||||
_d *d;
|
_d *d;
|
||||||
double x,y,z;
|
double x,y,z;
|
||||||
double naX,naY,naZ;
|
double naX,naY,naZ;
|
||||||
|
@ -160,8 +160,8 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
|
|||||||
s_sizing = false;
|
s_sizing = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Post the mouse events to the main window, it's nessesary because in difference to the
|
/* Post the mouse events to the main window, it's necessary, because the difference between the
|
||||||
keyboard inputs these events only appear here, not in the parent window or any other WndProc()*/
|
keyboard inputs is that these events only appear here, not in the parent window or any other WndProc()*/
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
if(g_ActiveConfig.backend_info.bSupports3DVision && g_ActiveConfig.b3DVision)
|
if(g_ActiveConfig.backend_info.bSupports3DVision && g_ActiveConfig.b3DVision)
|
||||||
{
|
{
|
||||||
|
@ -112,7 +112,7 @@ void ReadDataFromFifo(u8* _uData, u32 len)
|
|||||||
size -= pos;
|
size -= pos;
|
||||||
if (size + len > FIFO_SIZE)
|
if (size + len > FIFO_SIZE)
|
||||||
{
|
{
|
||||||
PanicAlert("FIFO out of bounds (sz = %i, len = %i at %08x)", size, len, pos);
|
PanicAlert("FIFO out of bounds (size = %i, len = %i at %08x)", size, len, pos);
|
||||||
}
|
}
|
||||||
memmove(&videoBuffer[0], &videoBuffer[pos], size);
|
memmove(&videoBuffer[0], &videoBuffer[pos], size);
|
||||||
g_pVideoData = videoBuffer;
|
g_pVideoData = videoBuffer;
|
||||||
@ -165,7 +165,7 @@ void RunGpuLoop()
|
|||||||
else readPtr += 32;
|
else readPtr += 32;
|
||||||
|
|
||||||
_assert_msg_(COMMANDPROCESSOR, (s32)fifo.CPReadWriteDistance - 32 >= 0 ,
|
_assert_msg_(COMMANDPROCESSOR, (s32)fifo.CPReadWriteDistance - 32 >= 0 ,
|
||||||
"Negative fifo.CPReadWriteDistance = %i in FIFO Loop !\nThat can produce instabilty in the game. Please report it.", fifo.CPReadWriteDistance - 32);
|
"Negative fifo.CPReadWriteDistance = %i in FIFO Loop !\nThat can produce instability in the game. Please report it.", fifo.CPReadWriteDistance - 32);
|
||||||
|
|
||||||
ReadDataFromFifo(uData, 32);
|
ReadDataFromFifo(uData, 32);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#define GX_DRAW_LINES 0x5 // 0xA8
|
#define GX_DRAW_LINES 0x5 // 0xA8
|
||||||
#define GX_DRAW_LINE_STRIP 0x6 // 0xB0
|
#define GX_DRAW_LINE_STRIP 0x6 // 0xB0
|
||||||
#define GX_DRAW_POINTS 0x7 // 0xB8
|
#define GX_DRAW_POINTS 0x7 // 0xB8
|
||||||
#define GX_DRAW_NONE 0x1; //Tis is a fake value to used in the backends
|
#define GX_DRAW_NONE 0x1; // This is a fake value to used in the backends
|
||||||
|
|
||||||
extern bool g_bRecordFifoData;
|
extern bool g_bRecordFifoData;
|
||||||
|
|
||||||
|
@ -450,7 +450,7 @@ void SetFinish()
|
|||||||
void ResetSetFinish()
|
void ResetSetFinish()
|
||||||
{
|
{
|
||||||
//if SetFinish happened but PE_CTRL_REGISTER not, I reset the interrupt else
|
//if SetFinish happened but PE_CTRL_REGISTER not, I reset the interrupt else
|
||||||
//remove event from the queque
|
//remove event from the queue
|
||||||
if (g_bSignalFinishInterrupt)
|
if (g_bSignalFinishInterrupt)
|
||||||
{
|
{
|
||||||
UpdateFinishInterrupt(false);
|
UpdateFinishInterrupt(false);
|
||||||
|
@ -33,8 +33,8 @@ void Statistics::SwapDL()
|
|||||||
char *Statistics::ToString(char *ptr)
|
char *Statistics::ToString(char *ptr)
|
||||||
{
|
{
|
||||||
char *p = ptr;
|
char *p = ptr;
|
||||||
ptr+=sprintf(ptr,"textures created: %i\n",stats.numTexturesCreated);
|
ptr+=sprintf(ptr,"Textures created: %i\n",stats.numTexturesCreated);
|
||||||
ptr+=sprintf(ptr,"textures alive: %i\n",stats.numTexturesAlive);
|
ptr+=sprintf(ptr,"Textures alive: %i\n",stats.numTexturesAlive);
|
||||||
ptr+=sprintf(ptr,"pshaders created: %i\n",stats.numPixelShadersCreated);
|
ptr+=sprintf(ptr,"pshaders created: %i\n",stats.numPixelShadersCreated);
|
||||||
ptr+=sprintf(ptr,"pshaders alive: %i\n",stats.numPixelShadersAlive);
|
ptr+=sprintf(ptr,"pshaders alive: %i\n",stats.numPixelShadersAlive);
|
||||||
ptr+=sprintf(ptr,"pshaders (unique, delete cache first): %i\n",stats.numUniquePixelShaders);
|
ptr+=sprintf(ptr,"pshaders (unique, delete cache first): %i\n",stats.numUniquePixelShaders);
|
||||||
@ -43,12 +43,12 @@ char *Statistics::ToString(char *ptr)
|
|||||||
ptr+=sprintf(ptr,"dlists called: %i\n",stats.numDListsCalled);
|
ptr+=sprintf(ptr,"dlists called: %i\n",stats.numDListsCalled);
|
||||||
ptr+=sprintf(ptr,"dlists called(f): %i\n",stats.thisFrame.numDListsCalled);
|
ptr+=sprintf(ptr,"dlists called(f): %i\n",stats.thisFrame.numDListsCalled);
|
||||||
ptr+=sprintf(ptr,"dlists alive: %i\n",stats.numDListsAlive);
|
ptr+=sprintf(ptr,"dlists alive: %i\n",stats.numDListsAlive);
|
||||||
ptr+=sprintf(ptr,"primitive joins: %i\n",stats.thisFrame.numPrimitiveJoins);
|
ptr+=sprintf(ptr,"Primitive joins: %i\n",stats.thisFrame.numPrimitiveJoins);
|
||||||
ptr+=sprintf(ptr,"draw calls: %i\n",stats.thisFrame.numDrawCalls);
|
ptr+=sprintf(ptr,"Draw calls: %i\n",stats.thisFrame.numDrawCalls);
|
||||||
ptr+=sprintf(ptr,"indexed draw calls: %i\n",stats.thisFrame.numIndexedDrawCalls);
|
ptr+=sprintf(ptr,"Indexed draw calls: %i\n",stats.thisFrame.numIndexedDrawCalls);
|
||||||
ptr+=sprintf(ptr,"buffer splits: %i\n",stats.thisFrame.numBufferSplits);
|
ptr+=sprintf(ptr,"Buffer splits: %i\n",stats.thisFrame.numBufferSplits);
|
||||||
ptr+=sprintf(ptr,"primitives: %i\n",stats.thisFrame.numPrims);
|
ptr+=sprintf(ptr,"Primitives: %i\n",stats.thisFrame.numPrims);
|
||||||
ptr+=sprintf(ptr,"primitives (DL): %i\n",stats.thisFrame.numDLPrims);
|
ptr+=sprintf(ptr,"Primitives (DL): %i\n",stats.thisFrame.numDLPrims);
|
||||||
ptr+=sprintf(ptr,"XF loads: %i\n",stats.thisFrame.numXFLoads);
|
ptr+=sprintf(ptr,"XF loads: %i\n",stats.thisFrame.numXFLoads);
|
||||||
ptr+=sprintf(ptr,"XF loads (DL): %i\n",stats.thisFrame.numXFLoadsInDL);
|
ptr+=sprintf(ptr,"XF loads (DL): %i\n",stats.thisFrame.numXFLoadsInDL);
|
||||||
ptr+=sprintf(ptr,"CP loads: %i\n",stats.thisFrame.numCPLoads);
|
ptr+=sprintf(ptr,"CP loads: %i\n",stats.thisFrame.numCPLoads);
|
||||||
|
@ -382,7 +382,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
|
|||||||
|
|
||||||
// TODO: Print a warning if the format changes! In this case,
|
// TODO: Print a warning if the format changes! In this case,
|
||||||
// we could reinterpret the internal texture object data to the new pixel format
|
// we could reinterpret the internal texture object data to the new pixel format
|
||||||
// (similiar to what is already being done in Renderer::ReinterpretPixelFormat())
|
// (similar to what is already being done in Renderer::ReinterpretPixelFormat())
|
||||||
return ReturnEntry(stage, entry);
|
return ReturnEntry(stage, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +399,7 @@ void VertexLoader::CompileVertexTranslator()
|
|||||||
} else {
|
} else {
|
||||||
_assert_msg_(VIDEO, DIRECT <= tc[i] && tc[i] <= INDEX16, "Invalid texture coordinates!\n(tc[i] = %d)", tc[i]);
|
_assert_msg_(VIDEO, DIRECT <= tc[i] && tc[i] <= INDEX16, "Invalid texture coordinates!\n(tc[i] = %d)", tc[i]);
|
||||||
_assert_msg_(VIDEO, FORMAT_UBYTE <= format && format <= FORMAT_FLOAT, "Invalid texture coordinates format!\n(format = %d)", format);
|
_assert_msg_(VIDEO, FORMAT_UBYTE <= format && format <= FORMAT_FLOAT, "Invalid texture coordinates format!\n(format = %d)", format);
|
||||||
_assert_msg_(VIDEO, 0 <= elements && elements <= 1, "Invalid number of texture coordinates elemnts!\n(elements = %d)", elements);
|
_assert_msg_(VIDEO, 0 <= elements && elements <= 1, "Invalid number of texture coordinates elements!\n(elements = %d)", elements);
|
||||||
|
|
||||||
m_NativeFmt->m_components |= VB_HAS_UV0 << i;
|
m_NativeFmt->m_components |= VB_HAS_UV0 << i;
|
||||||
WriteCall(VertexLoader_TextCoord::GetFunction(tc[i], format, elements));
|
WriteCall(VertexLoader_TextCoord::GetFunction(tc[i], format, elements));
|
||||||
|
@ -93,7 +93,7 @@ struct CachedDisplayList
|
|||||||
// Compile the commands themselves down to native code.
|
// Compile the commands themselves down to native code.
|
||||||
const u8* compiled_code;
|
const u8* compiled_code;
|
||||||
u32 uncachable; // if set, this DL will always be interpreted. This gets set if hash ever changes.
|
u32 uncachable; // if set, this DL will always be interpreted. This gets set if hash ever changes.
|
||||||
// Analitic data
|
// Analytic data
|
||||||
u32 num_xf_reg;
|
u32 num_xf_reg;
|
||||||
u32 num_cp_reg;
|
u32 num_cp_reg;
|
||||||
u32 num_bp_reg;
|
u32 num_bp_reg;
|
||||||
|
@ -675,7 +675,7 @@ PC_TexFormat GetPC_TexFormat(int texformat, int tlutfmt)
|
|||||||
inline void SetOpenMPThreadCount(int width, int height)
|
inline void SetOpenMPThreadCount(int width, int height)
|
||||||
{
|
{
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
// Dont use multithreading in small Textures
|
// Don't use multithreading in small Textures
|
||||||
if (g_ActiveConfig.bOMPDecoder && width > 127 && height > 127)
|
if (g_ActiveConfig.bOMPDecoder && width > 127 && height > 127)
|
||||||
{
|
{
|
||||||
// don't span to many threads they will kill the rest of the emu :)
|
// don't span to many threads they will kill the rest of the emu :)
|
||||||
|
@ -554,7 +554,7 @@ void Renderer::UpdateViewport(Matrix44& vpCorrection)
|
|||||||
(float)X, (float)Y,
|
(float)X, (float)Y,
|
||||||
(float)Wd, (float)Ht);
|
(float)Wd, (float)Ht);
|
||||||
|
|
||||||
// Some games set invalids values for z min and z max so fix them to the max an min alowed and let the shaders do this work
|
// Some games set invalid values for z-min and z-max so fix them to the max and min allowed and let the shaders do this work
|
||||||
D3D11_VIEWPORT vp = CD3D11_VIEWPORT((float)X, (float)Y,
|
D3D11_VIEWPORT vp = CD3D11_VIEWPORT((float)X, (float)Y,
|
||||||
(float)Wd, (float)Ht,
|
(float)Wd, (float)Ht,
|
||||||
0.f, // (xfregs.viewport.farZ - xfregs.viewport.zRange) / 16777216.0f;
|
0.f, // (xfregs.viewport.farZ - xfregs.viewport.zRange) / 16777216.0f;
|
||||||
|
@ -126,7 +126,7 @@ Renderer::Renderer()
|
|||||||
|
|
||||||
IS_AMD = D3D::IsATIDevice();
|
IS_AMD = D3D::IsATIDevice();
|
||||||
|
|
||||||
// Decide frambuffer size
|
// Decide framebuffer size
|
||||||
s_backbuffer_width = D3D::GetBackBufferWidth();
|
s_backbuffer_width = D3D::GetBackBufferWidth();
|
||||||
s_backbuffer_height = D3D::GetBackBufferHeight();
|
s_backbuffer_height = D3D::GetBackBufferHeight();
|
||||||
|
|
||||||
|
@ -517,7 +517,7 @@ void ProgramShaderCache::CreateHeader ( void )
|
|||||||
, v==GLSL_120 ? "#define round(x) floor((x)+0.5f)" : ""
|
, v==GLSL_120 ? "#define round(x) floor((x)+0.5f)" : ""
|
||||||
, v==GLSL_120 ? "#define out " : ""
|
, v==GLSL_120 ? "#define out " : ""
|
||||||
, v==GLSL_120 ? "#define ocol0 gl_FragColor" : ""
|
, v==GLSL_120 ? "#define ocol0 gl_FragColor" : ""
|
||||||
, v==GLSL_120 ? "#define ocol1 gl_FragColor" : "" //TODO: implemenet dual source blend
|
, v==GLSL_120 ? "#define ocol1 gl_FragColor" : "" //TODO: implement dual source blend
|
||||||
, v==GLSL_120 ? "" : "out vec4 name;"
|
, v==GLSL_120 ? "" : "out vec4 name;"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ void RasterFont::printMultilineText(const char *text, double start_x, double sta
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not print spaces, they can be skipped easyly
|
// do not print spaces, they can be skipped easily
|
||||||
if(c == ' ') {
|
if(c == ' ') {
|
||||||
x += delta_x + border_x;
|
x += delta_x + border_x;
|
||||||
continue;
|
continue;
|
||||||
|
@ -293,7 +293,7 @@ Renderer::Renderer()
|
|||||||
|
|
||||||
if (!GLEW_ARB_framebuffer_object)
|
if (!GLEW_ARB_framebuffer_object)
|
||||||
{
|
{
|
||||||
ERROR_LOG(VIDEO, "GPU: ERROR: Need GL_ARB_framebufer_object for multiple render targets.\n"
|
ERROR_LOG(VIDEO, "GPU: ERROR: Need GL_ARB_framebuffer_object for multiple render targets.\n"
|
||||||
"GPU: Does your video card support OpenGL 3.0?");
|
"GPU: Does your video card support OpenGL 3.0?");
|
||||||
bSuccess = false;
|
bSuccess = false;
|
||||||
}
|
}
|
||||||
@ -344,13 +344,13 @@ Renderer::Renderer()
|
|||||||
{
|
{
|
||||||
ERROR_LOG(VIDEO, "GPU: OGL ERROR: Need at least GLSL 1.20\n"
|
ERROR_LOG(VIDEO, "GPU: OGL ERROR: Need at least GLSL 1.20\n"
|
||||||
"GPU: Does your video card support OpenGL 2.1?\n"
|
"GPU: Does your video card support OpenGL 2.1?\n"
|
||||||
"GPU: Your driver supports glsl %s", g_ogl_config.glsl_version);
|
"GPU: Your driver supports GLSL %s", g_ogl_config.glsl_version);
|
||||||
bSuccess = false;
|
bSuccess = false;
|
||||||
}
|
}
|
||||||
else if(strstr(g_ogl_config.glsl_version, "1.20"))
|
else if(strstr(g_ogl_config.glsl_version, "1.20"))
|
||||||
{
|
{
|
||||||
g_ogl_config.eSupportedGLSLVersion = GLSL_120;
|
g_ogl_config.eSupportedGLSLVersion = GLSL_120;
|
||||||
g_Config.backend_info.bSupportsDualSourceBlend = false; //TODO: implemenet dual source blend
|
g_Config.backend_info.bSupportsDualSourceBlend = false; //TODO: implement dual source blend
|
||||||
}
|
}
|
||||||
else if(strstr(g_ogl_config.glsl_version, "1.30"))
|
else if(strstr(g_ogl_config.glsl_version, "1.30"))
|
||||||
{
|
{
|
||||||
@ -403,7 +403,7 @@ Renderer::Renderer()
|
|||||||
s_MSAACoverageSamples = GetNumMSAACoverageSamples(s_LastMultisampleMode);
|
s_MSAACoverageSamples = GetNumMSAACoverageSamples(s_LastMultisampleMode);
|
||||||
ApplySSAASettings();
|
ApplySSAASettings();
|
||||||
|
|
||||||
// Decide frambuffer size
|
// Decide framebuffer size
|
||||||
s_backbuffer_width = (int)GLInterface->GetBackBufferWidth();
|
s_backbuffer_width = (int)GLInterface->GetBackBufferWidth();
|
||||||
s_backbuffer_height = (int)GLInterface->GetBackBufferHeight();
|
s_backbuffer_height = (int)GLInterface->GetBackBufferHeight();
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ extern NativeVertexFormat *g_nativeVertexFmt;
|
|||||||
|
|
||||||
namespace OGL
|
namespace OGL
|
||||||
{
|
{
|
||||||
//This are the initially requeted size for the buffers expresed in bytes
|
//This are the initially requested size for the buffers expressed in bytes
|
||||||
const u32 MAX_IBUFFER_SIZE = 2*1024*1024;
|
const u32 MAX_IBUFFER_SIZE = 2*1024*1024;
|
||||||
const u32 MAX_VBUFFER_SIZE = 16*1024*1024;
|
const u32 MAX_VBUFFER_SIZE = 16*1024*1024;
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ void DecodeStandard(u32 bufferSize)
|
|||||||
// XXX: Investigate
|
// XXX: Investigate
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
// check if switching in or out of an object
|
// check if switching in or out of an object
|
||||||
// only used for debuggging
|
// only used for debugging
|
||||||
if (inObjectStream && (Cmd & 0x87) != lastPrimCmd)
|
if (inObjectStream && (Cmd & 0x87) != lastPrimCmd)
|
||||||
{
|
{
|
||||||
inObjectStream = false;
|
inObjectStream = false;
|
||||||
|
@ -171,7 +171,7 @@ inline void Draw(s32 x, s32 y, s32 xi, s32 yi)
|
|||||||
// tex coords
|
// tex coords
|
||||||
for (unsigned int i = 0; i < bpmem.genMode.numtexgens; i++)
|
for (unsigned int i = 0; i < bpmem.genMode.numtexgens; i++)
|
||||||
{
|
{
|
||||||
// multiply by 128 because TEV stores stores UVs as s17.7
|
// multiply by 128 because TEV stores UVs as s17.7
|
||||||
tev.Uv[i].s = (s32)(pixel.Uv[i][0] * 128);
|
tev.Uv[i].s = (s32)(pixel.Uv[i][0] * 128);
|
||||||
tev.Uv[i].t = (s32)(pixel.Uv[i][1] * 128);
|
tev.Uv[i].t = (s32)(pixel.Uv[i][1] * 128);
|
||||||
}
|
}
|
||||||
|
@ -259,12 +259,12 @@ void Write16(const u16 _Value, const u32 _Address)
|
|||||||
void Read32(u32& _rReturnValue, const u32 _Address)
|
void Read32(u32& _rReturnValue, const u32 _Address)
|
||||||
{
|
{
|
||||||
_rReturnValue = 0;
|
_rReturnValue = 0;
|
||||||
_dbg_assert_msg_(COMMANDPROCESSOR, 0, "Read32 from CommandProccessor at 0x%08x", _Address);
|
_dbg_assert_msg_(COMMANDPROCESSOR, 0, "Read32 from CommandProcessor at 0x%08x", _Address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Write32(const u32 _Data, const u32 _Address)
|
void Write32(const u32 _Data, const u32 _Address)
|
||||||
{
|
{
|
||||||
_dbg_assert_msg_(COMMANDPROCESSOR, 0, "Write32 at CommandProccessor at 0x%08x", _Address);
|
_dbg_assert_msg_(COMMANDPROCESSOR, 0, "Write32 at CommandProcessor at 0x%08x", _Address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void STACKALIGN GatherPipeBursted()
|
void STACKALIGN GatherPipeBursted()
|
||||||
@ -424,7 +424,7 @@ bool RunBuffer()
|
|||||||
|
|
||||||
bool ranDecoder = false;
|
bool ranDecoder = false;
|
||||||
|
|
||||||
// move data remaing in command buffer
|
// move data remaining in the command buffer
|
||||||
if (readPos > 0)
|
if (readPos > 0)
|
||||||
{
|
{
|
||||||
memmove(&commandBuffer[0], &commandBuffer[readPos], availableBytes);
|
memmove(&commandBuffer[0], &commandBuffer[readPos], availableBytes);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user