From 10c9537836df513185998148a0245bcb21de950a Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sat, 1 Feb 2014 00:05:21 -0800 Subject: [PATCH] Swapping register values. --- src/alloy/backend/x64/lowering/lowering_sequences.cc | 2 -- src/xenia/apu/audio_system.cc | 3 ++- src/xenia/gpu/graphics_system.cc | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/alloy/backend/x64/lowering/lowering_sequences.cc b/src/alloy/backend/x64/lowering/lowering_sequences.cc index b9fd38a77..fd85ac495 100644 --- a/src/alloy/backend/x64/lowering/lowering_sequences.cc +++ b/src/alloy/backend/x64/lowering/lowering_sequences.cc @@ -1219,8 +1219,6 @@ table->AddSequence(OPCODE_STORE, [](X64Emitter& e, Instr*& i) { } e.EndOp(src2); } - // eh? - e.bswap(e.r8); CallNative(e, cbs->write); i = e.Advance(i); return true; diff --git a/src/xenia/apu/audio_system.cc b/src/xenia/apu/audio_system.cc index 1793fc92d..46b0b3924 100644 --- a/src/xenia/apu/audio_system.cc +++ b/src/xenia/apu/audio_system.cc @@ -187,10 +187,11 @@ uint64_t AudioSystem::ReadRegister(uint64_t addr) { XELOGAPU("ReadRegister(%.4X)", r); // 1800h is read on startup and stored -- context? buffers? // 1818h is read during a lock? - return 0; + return XESWAP32BE(0); } void AudioSystem::WriteRegister(uint64_t addr, uint64_t value) { + value = XESWAP32BE((uint32_t)value); uint32_t r = addr & 0xFFFF; XELOGAPU("WriteRegister(%.4X, %.8X)", r, value); // 1804h is written to with 0x02000000 and 0x03000000 around a lock operation diff --git a/src/xenia/gpu/graphics_system.cc b/src/xenia/gpu/graphics_system.cc index fbcb1d744..524ec467b 100644 --- a/src/xenia/gpu/graphics_system.cc +++ b/src/xenia/gpu/graphics_system.cc @@ -152,10 +152,11 @@ uint64_t GraphicsSystem::ReadRegister(uint64_t addr) { } XEASSERT(r >= 0 && r < kXEGpuRegisterCount); - return regs->values[r].u32; + return XESWAP32BE(regs->values[r].u32); } void GraphicsSystem::WriteRegister(uint64_t addr, uint64_t value) { + value = XESWAP32BE((uint32_t)value); uint32_t r = addr & 0xFFFF; XELOGGPU("WriteRegister(%.4X, %.8X)", r, value);