mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 22:49:00 +01:00
Star Wars The Force Unleashed not-really-tested fix for non-SSSE3
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2427 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
5644cfa884
commit
a65517af16
@ -177,22 +177,24 @@ void Jit64::stfd(UGeckoInstruction inst)
|
|||||||
LEA(32, ABI_PARAM1, MDisp(gpr.R(a).GetSimpleReg(), offset));
|
LEA(32, ABI_PARAM1, MDisp(gpr.R(a).GetSimpleReg(), offset));
|
||||||
TEST(32, R(ABI_PARAM1), Imm32(0x0c000000));
|
TEST(32, R(ABI_PARAM1), Imm32(0x0c000000));
|
||||||
FixupBranch not_ram = J_CC(CC_Z);
|
FixupBranch not_ram = J_CC(CC_Z);
|
||||||
|
// Assume that any hardware writes using this instruction will go to the FIFO.
|
||||||
|
// Star Wars - The Force Unleashed uses this trick.
|
||||||
if (cpu_info.bSSSE3) {
|
if (cpu_info.bSSSE3) {
|
||||||
MOVAPD(XMM0, fpr.R(s));
|
MOVAPD(XMM0, fpr.R(s));
|
||||||
PSHUFB(XMM0, M((void *)bswapShuffle1x8));
|
PSHUFB(XMM0, M((void *)bswapShuffle1x8));
|
||||||
CALL(asm_routines.fifoDirectWriteXmm64);
|
CALL(asm_routines.fifoDirectWriteXmm64);
|
||||||
} else {
|
} else {
|
||||||
// This ain't working yet
|
// This ain't working yet
|
||||||
/* fpr.LoadToX64(s, true, false);
|
MOVAPD(XMM0, fpr.R(s));
|
||||||
MOVSD(M(&temp64), fpr.RX(s));
|
MOVQ_xmm(M(&temp64), XMM0);
|
||||||
MOV(32, R(EAX), M(&temp64));
|
MOV(32, R(EAX), M(&temp64));
|
||||||
MOV(32, R(ABI_PARAM1), M((void*)((u32)&temp64 + 4)));
|
MOV(32, R(ABI_PARAM1), M((void*)((u32)&temp64 + 4)));
|
||||||
BSWAP(32, EAX);
|
BSWAP(32, EAX);
|
||||||
BSWAP(32, ABI_PARAM1);
|
BSWAP(32, ABI_PARAM1);
|
||||||
MOV(32, M(((u8 *)&temp64) + 4), R(EAX));
|
MOV(32, M(((u8 *)&temp64) + 4), R(EAX));
|
||||||
MOV(32, M((u8 *)&temp64), R(ABI_PARAM1));
|
MOV(32, M((u8 *)&temp64), R(ABI_PARAM1));
|
||||||
MOVSD(XMM0, M(&temp64));
|
MOVQ_xmm(XMM0, M(&temp64));
|
||||||
CALL(asm_routines.fifoDirectWriteXmm64); */
|
CALL(asm_routines.fifoDirectWriteXmm64);
|
||||||
}
|
}
|
||||||
FixupBranch quit = J(false);
|
FixupBranch quit = J(false);
|
||||||
SetJumpTarget(not_ram);
|
SetJumpTarget(not_ram);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user