magumagu
8bf3ffc76f
VideoSoftware: remove duplicated CommandProcessor structures.
2014-06-21 11:54:43 -07:00
magumagu
9d87818853
VideoCommon: small cleanups. No functional change.
2014-06-16 14:03:29 -07:00
magumagu
31b950325d
HLE: Remove ES_LAUNCH HLE.
...
It isn't necessary anymore now that we emulate ES_LAUNCH correctly in
IPCHLE. This fixes launching MP2 multiplayer in Metroid Prime Trilogy.
2014-06-15 20:08:15 -07:00
magumagu
b423004ab3
IPCHLE: use only one CoreTiming event.
2014-06-15 20:08:14 -07:00
magumagu
f9b72d0891
IPCHLE: Fix ES_LAUNCH so it works for disk titles.
...
Among other things, this makes the Disk Channel fully functional.
2014-06-15 20:08:14 -07:00
magumagu
ee0c5bdc20
Try to fix android build.
2014-06-15 15:56:42 -07:00
magumagu
d905cbfd5d
Don't set DAZ on x86 in non-IEEE mode.
...
I have no idea why we were using it in the first place; it doesn't match
the behavior of PPC NI flag.
2014-06-15 03:51:51 -07:00
magumagu
58e9b65f9b
IPCHLE: clean up spelling.
2014-06-14 10:03:49 -07:00
magumagu
063ab30e3d
IPCHLE: improve HLE timing.
...
This change attempts to make calls to WII_IPC_HLE_Interface::Update()
more consistent. We should be calling it whenever there is something we
can pop from a queue, and this patch does that.
DeviceUpdate() now works independently of Update(): it's now just a periodic
timer for devices which need to regularly update state.
With this change, we need a non-zero default delay for IPC replies because
replies are popped off the queue much more aggressively.
This fixes launching channels from the the System Menu.
2014-06-14 10:02:46 -07:00
magumagu
3da52018dc
Interpreter: return single-precision results for ps_rsqrte.
2014-06-11 19:50:33 -07:00
magumagu
0aecd9504e
Video backends: remove dead code.
2014-06-01 01:56:09 -07:00
magumagu
87a804fdfc
Revert "DSound: use DSound notifications to produce sound."
...
This reverts commit 4990b8910b .
The commit is causing substantial performance issues for the DSound
backend which I somehow didn't catch during testing.
2014-05-31 13:35:46 -07:00
magumagu
2599cd545e
JIT: make backpatch handle sign-extend from 8 bits correctly.
...
I don't think this is actually possible to trigger at the moment... but
it matches the implementation of SafeLoadToReg.
2014-05-26 01:45:07 -07:00
magumagu
e5ebf22161
JIT: unify two branches in SafeLoadToReg.
...
Should behave the same as it did before.
2014-05-25 21:14:06 -07:00
magumagu
68a327c246
JIT: Simplify redundant if statements for memcheck.
2014-05-25 21:13:39 -07:00
magumagu
e239e82ea3
Jit: Remove unused members from JitState.
2014-05-25 18:19:47 -07:00
magumagu
ec9dd80b7f
Memmap: get rid of unused junk.
...
This should make it a bit more clear what interfaces we're actually
exposing for memory access at the moment.
2014-05-25 18:07:09 -07:00
magumagu
44f481ec13
PPCCache: Get rid of FAST_ICACHE define.
...
There's no reason to keep around the ifdefs.
2014-05-25 18:06:52 -07:00
magumagu
98dd99a696
Interpreter: correctly support HLE functions.
...
m_EndBlock is always false at the beginning of SingleStepInner in the
normal interpreter loop.
2014-05-25 15:39:46 -07:00
magumagu
282e9bd292
JitCache: use a custom bit-set class.
...
Unfortunately, this appears to be necessary for the sake of performance;
the standard library equivalents don't work well enough on Visual Studio
2013. vector<bool>::insert() is way too slow in debug
builds to be usable, and std::bitset generates inefficient code in release
builds.
2014-05-24 14:17:53 -07:00
magumagu
6bb08de8a0
JIT: get rid of useless code in JitCache.cpp.
2014-05-24 11:04:24 -07:00
magumagu
336b55bbc4
BS2 emulation: set up a reasonable BAT during startup.
...
It doesn't really matter much at the moment given our current terrible MMU
emulation, but it will start mattering once our MMU emulation gets more
accurate.
2014-05-24 03:46:12 -07:00
magumagu
440246a190
Interpreter: use numeric_limits instead of FLT_MAX.
...
Minor cleanup, and fixes compilation on some systems.
2014-05-24 10:58:15 +02:00
magumagu
6955fef161
Interpreter: Code style fixes.
2014-05-23 15:06:09 -07:00
magumagu
d0ed3b8192
Jit: Use infinity and NaN from numeric_limits.
...
MSVC's implementation of INFINITY is unusable.
2014-05-23 14:59:03 -07:00
magumagu
a9a2d3d98d
New frsqrte implementation; verified accurate.
...
This is similar to the old implementation, but it uses smaller tables, and
handles more edge cases correctly. (hwtest coming soon.)
2014-05-23 14:59:02 -07:00
magumagu
129e76e60d
Interpreter: refactor the rsqrte code, and use it for ps_rsqrte.
2014-05-23 14:59:00 -07:00
magumagu
567724b2f8
Jit: get rid of incorrect implementations of fres and frsqrte.
...
The existing implementations produce answers which aren't consistent with
the hardware, and games care about correct floating point math.
These can be reimplemented at some point in the future, if someone cares
enough, but the general case is probably too much code to inline.
(I'm leaving the ARM implementations in place by request, even though they
suffer the same issues.)
2014-05-23 14:57:34 -07:00
magumagu
2f8a147eda
Interpreter: make fres match hardware.
...
New table-based implementation written based on actual hardware behavior.
(hwtest coming soon).
2014-05-22 19:48:48 -07:00
magumagu
ad4ad7c1ed
Use accurate frsqrte in Interpreter.
...
The implementation of frsqrte exposed by this change isn't completely
correct; that will be fixed in a later commit.
2014-05-22 19:46:27 -07:00
magumagu
5dffa28f0a
DVDInterface: make fast disc speed faster.
...
Fixes workaround for crash in Star Wars Rogue Leader.
2014-05-18 20:03:55 -07:00
magumagu
9b82d72070
Video backends: warn on usage of GL_DRAW_QUADS_2.
...
It's not normally used, so if it shows up, it could indicate a CPU emulation
bug.
2014-05-17 11:55:32 -07:00
magumagu
6fbf6fad3b
VideoCommon: cleanup Renderer::RecordVideoMemory.
2014-05-16 18:58:08 -07:00
magumagu
1357277f40
Video backends: mass-replace "xfregs" with "xfmem".
2014-05-16 18:58:07 -07:00
magumagu
8f5342c442
Video backend: merge global var xfmem into xfregs.
...
There isn't really any reason to keep them separate.
2014-05-16 18:55:31 -07:00
magumagu
818c89313e
Video backends: unify xfregs/xfmem structures.
...
Removes the duplicate swxfregs global variable/struct from the software
backend in favor of the ones from VideoCommon.
2014-05-16 18:55:30 -07:00
magumagu
8b82cea704
Video backends: fix behavior of "konst" TEV inputs.
...
Also fixes TEVCOLORARG_HALF.
Values verified to match hardwarere.
2014-05-16 12:19:35 -07:00
magumagu
9e4eeb3b9b
Video backends: fix rounding in lighting computation.
...
For whatever reason, the hardware doesn't do a full divide by 255, but
instead uses an approximation with shifting, similar to the way it is done
in TEV.
2014-05-11 12:53:02 -07:00
magumagu
39d439fc48
Opcode decoding: handle missing opcodes 0x88 etc.
...
Hardware testing shows that they do the same thing as the 0x80 family of
opcodes: they draw quads.
2014-05-10 20:33:28 -07:00
magumagu
369c0c4ce2
Opcode decoding: 0xC0 isn't a valid command.
...
Fix our opcode decoders to handle this appropriately.
2014-05-08 15:49:19 -07:00
magumagu
4f5421ffb5
DVDInterface: code cleanup.
2014-05-08 11:47:38 -07:00
magumagu
f123e08731
DVDInterface: tweak buffered reads to be a bit faster.
...
A read finishes when the result is complete in the drive's buffer, not
main memory.
2014-05-05 14:52:15 -07:00
magumagu
8014795d56
DVD emulation: make seek timing more accurate.
...
Based on real measurements of a Gamecube disk on a Wii. (If anyone else
is interested in running more tests, I can upload my code; it's a mess at
the moment.)
This isn't a complete model, but it's a step in the right direction:
in Metroid Prime, the loading times are sane, and I think I managed to do it
without breaking anything.
2014-05-05 14:33:00 -07:00
magumagu
727ef4a625
JIT: unify JitAsm for JIT64 and JIT64IL.
...
Having a bunch of nearly identical code sitting around isn't a good idea,
so fix that. JITIL had a couple of extra entry points into the JIT main
loop, so adjust the code appropriately.
Also fixes Issue 7186.
2014-05-05 11:12:22 -07:00
magumagu
c01ac18d4d
VideoInterface: clean up naming and bitfields.
...
Matching the hardware more closely will hopefully make this code easier to
read.
2014-05-05 11:01:15 -07:00
magumagu
716b3fefd4
VideoCommon: recreate XFB texture when the XFB size changes.
...
We need to do this to correctly deal with games which dynamically change the
XFB width and height.
2014-05-05 11:01:14 -07:00
magumagu
2db2f3dce9
VideoInterface: accurate XFB width and height.
...
What we call "fbWidth" here is really the stride, but I'll fix that in a
followup.
2014-05-05 11:01:14 -07:00
magumagu
bca0b7b543
OpenGL: delete unused function parameter in TextureConverter.
...
(While I'm here, also mark some functions static.)
2014-05-05 10:56:36 -07:00
magumagu
2e464800bc
VideoCommon: correctly compute whether an indirect texture stage is active.
...
This is consistent with the implementation in PixelShaderGen.
2014-05-04 22:44:10 -07:00
magumagu
52c42a2946
VideoCommon: fix indirect texture coordinate computation in TEV.
...
Even if an indirect texture stage doesn't actually sample a texture, we
still need to emit the relevant math.
Fixes Issue 7092.
2014-05-04 22:12:57 -07:00
magumagu
78292e5d18
Movie: don't use "hh" scanf modifier.
...
Attempting to use it with Visual Studio is a good way to corrupt the stack.
2014-04-24 11:05:25 -07:00
magumagu
b5f71e901f
PatchEngine: Remove no-op function LoadDiscList.
...
(The function just pushes elements onto an std::vector which is unused
otherwise.)
2014-04-21 21:07:02 -07:00
magumagu
002fb0b563
Interpreter: don't PanicAlert on write to SPR_HID2.
...
The alert apparently triggers on Midway Arcade Treasures 2; given that the
game otherwise works fine, it's not a high priority to accurately emulate
the bit in question.
Fixes issue 7197.
2014-04-18 20:20:42 -07:00
magumagu
648b9865d8
D3D11 backend: fix rounding in texture encoder.
...
We need to explicitly round when converting colors from float to uint
because multiplying a normalized float by 255 might not result in a whole
number. (The exact result here may vary depending on your
drivers/hardware.)
Ideally, we shouldn't be using floating point here, but fixing that is a
much more complicated patch.
Fixes gxtest TEV tests using Intel HD 4000.
2014-04-15 23:36:05 -07:00
magumagu
b3a67821e4
VideoCommon: fix rounding in TEV.
...
The hardware backends pass the TEV tests in gxtest with this change.
2014-04-15 16:47:01 -07:00
magumagu
685d612c8c
Software backend: don't skip red component in TEV.
2014-04-15 14:05:12 -07:00
magumagu
5e1c6aba33
Software backend: make TEV rounding match hardware.
...
Formulas stolen from gxtest. (Not sure how "==" got turned into "!=", but
I'm pretty confident the patched version is correct.)
2014-04-15 14:04:46 -07:00
magumagu
a2150ef1f8
PixelShaderGen: delete extra parenthesis.
...
Without this patch, we can generate a pixel shader which doesn't compile
in some cases.
2014-04-14 00:41:27 -07:00
magumagu
1a4156a4a0
JitIL: fix carry computation for srawi.
...
The carry computation needs to be based on the input value, not the output
of the shift.
2014-04-13 20:31:32 -07:00
magumagu
812ff4686b
OpenGL backend: remove useless header Globals.h.
...
The header has no content, so it can can just be deleted.
2014-04-12 19:25:37 -07:00
magumagu
f18a3cc650
OpenGL config: clear backend_info.Adapters on init
...
Fixes a minor UI glitch where if you switch from Direct3D to OpenGL, the
OpenGL config page would appear to have an adapter choice available.
2014-04-12 00:17:36 -07:00
magumagu
fd9c1fa746
VideoBackend: remove unused config vars.
...
No point to keeping around variables which are always "true".
2014-04-11 14:53:12 -07:00
magumagu
76d7c1eb9c
D3DBackend: Don't recompute ID3D11Layout.
...
CreateInputLayout requires a shader as an input, but it only cares about
the signature; we don't need to recompute it for different shaders with
the same inputs.
2014-04-11 13:13:01 -07:00
magumagu
4990b8910b
DSound: use DSound notifications to produce sound.
...
Pretty straightforward; IDirectSoundNotify lets you register for
notifications after a certain amount of sound has played, so use that
instead of depending on Update() notifications from the CPU thread.
Also, while I'm here, reduce the buffer size by a factor of 4; this seems
to reduce the latency, although the difference is sort of subtle.
2014-04-09 13:41:27 -07:00
magumagu
d0f89b2b63
SWBackend: Fix code style.
2014-04-05 13:08:00 -07:00
magumagu
accd652aa1
Fix trailing whitespace.
2014-04-04 16:25:08 -07:00
magumagu
f9d2f7e88c
D3D11: Use appropriate shader for PEEK_Z.
...
Trying to use GetDepthMatrixProgram outside of
TCacheEntry::FromRenderTarget is a bad idea, so don't. Instead, use a
shader which only copies the input.
Fixes lens flare depth test in Twilight Princess. See
http://code.google.com/p/dolphin-emu/issues/detail?id=5999 .
2014-03-30 19:50:53 -07:00
magumagu
bdcd5ba39b
SW backend: make shaders work on Intel/Windows.
...
Apparently the Intel shader compiler doesn't implement "#if" correctly...
so use "#ifdef" instead.
2014-03-29 13:10:43 -07:00
magumagu
0661efea84
Software backend: Delete forked PixelEngine.
...
Mostly just zapping a bunch of duplicated code; the only interesting thing
going on here is the changes to the performance counter implementation.
2014-03-29 12:07:20 -07:00
magumagu
3afa17f752
Move audio handling out of DSP emulation.
...
This is good for a couple of reasons: one, it gets rid of duplicated code,
and two, DSP emulation shouldn't need to interact with audio in the first
place.
2014-03-29 11:19:32 -07:00
magumagu
78499e5b7c
Delete AudioCommon::UseJIT().
2014-03-29 11:19:31 -07:00
magumagu
102ea55f20
Move mixer construction to AudioCommon.cpp.
2014-03-29 11:19:30 -07:00
magumagu
aac4206664
Move UDSPControl structure into DSP.h .
2014-03-29 11:19:19 -07:00
magumagu
23174d25c6
Minor Ucode cleanup.
...
Clean out unnecessary references to the audio system from the ucode
implementation.
2014-03-27 14:16:16 -07:00
magumagu
8a3da44d91
Fix CMake build.
2014-03-26 15:59:23 -07:00
magumagu
f8b7a2fc10
Add audio output for Zelda Ucode variants.
...
Untested.
2014-03-26 15:17:37 -07:00
magumagu
e9896c1ff9
Use correct sample rate in Zelda Ucode HLE.
...
The Ucode's output should be independent of the sample rate Dolphin is using.
2014-03-26 15:12:00 -07:00
magumagu
3b62e8b798
Fix minor Zelda Ucode audio corruption.
...
Stupid mistake in my previous commit; the value of m_CurBuffer was
off-by-one.
2014-03-26 14:34:00 -07:00
magumagu
4fafa954a1
Zelda Ucode partly working without Premix hack.
...
The code is still completely wrong, and it only outputs some sound,
but the mess is confined to the Zelda Ucode implementation.
2014-03-26 14:06:32 -07:00
magumagu
8dad1be319
Fix sound buffer addresses in Zelda UCode HLE.
...
The code previously mixed up the addresses of the right and left buffer;
testing shows that the address of the left buffer comes first.
2014-03-26 14:06:30 -07:00
magumagu
ae9367a89b
Delete a bunch of old audio HLE cruft.
...
This commit intentionally breaks audio output from HLE Zelda UCode; no other functional change.
2014-03-26 11:17:19 -07:00
magumagu
ca4e0495c0
Save registers before calls in x86-32 JIT.
...
I have no idea what the person who added RegistersInUse() was thinking,
but not correctly saving registers is an easy way to end up with crashes.
2014-03-25 20:50:14 -07:00
magumagu
4eab240e25
Compute stack usage correctly in ABI_CallFunctionPC.
...
(The numbers need to be consistent with the actual usage, or else the stack gets corrupted.)
2014-03-25 20:48:25 -07:00
magumagu
e4081b29f9
Use unaligned stores to save XMM regs to stack.
...
On Win32, the stack isn't aligned, so aligned stores will cause crashes.
2014-03-25 20:46:36 -07:00
magumagu
03292eabc2
Fix OpArg::WriteRex with 8-bit memory operand.
...
Previously he function was misbehaving because of a missing check for
whether an 8-bit operand was a register operand; it would therefore
emit unnecessary REX prefixes, incorrectly assert on 32-bit targets, and
could potentially emit wrong code in rare cases (like a memory to register
operation involving AH.)
Also, some cleanup while I was in the area to make the function easier to
read.
2014-03-25 14:09:15 -07:00
magumagu9
eddafd450e
Fix an extremely silly copy-paste error.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4727 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-12-24 05:21:07 +00:00
magumagu9
1b936a4f71
JIT for frsqrte; not really a large difference, but drops it off a
...
profile I'm looking at.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3671 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-04 00:48:09 +00:00
magumagu9
c52e4d281e
Remove instructions which don't actually exist.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3670 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-04 00:09:12 +00:00
magumagu9
3c41c4dacf
Misc warning fixes.
...
One of the fixes in
Source/Plugins/Plugin_VideoOGL/Src/Render.cpp (for an uninitialized
variable) looks like it could actually have real-world effects; someone
familiar with the code should check that the fix is correct.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3669 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-03 23:53:20 +00:00
magumagu9
3034a9fcfc
Misc warning fixes.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3668 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-03 23:14:06 +00:00
magumagu9
8f4e56c61c
Minor cleanup.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3619 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-30 05:41:04 +00:00
magumagu9
44f3935de1
Linux build fixes.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3601 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-29 18:40:10 +00:00
magumagu9
188fa9b2cb
JitIL doesn't use JitRegCache; get rid of it.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3590 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-29 01:21:55 +00:00
magumagu9
449f075fd6
Code cleanup: split IR.cpp into its two logical components.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3589 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-29 01:08:08 +00:00
magumagu9
7f27cfc9d2
Misc warning fixes.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3583 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-28 20:53:26 +00:00
magumagu9
1bcef5be76
Misc warning fixes.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3582 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-28 20:38:01 +00:00
magumagu9
b33e69b8de
Small warning fix.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3581 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-28 20:07:38 +00:00
magumagu9
faa63713e2
Remove a bunch of unnecessary "inline" designators. This was actually
...
breaking the build on my system; I'm surprised nobody else has run into
this issue.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3579 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-28 19:51:48 +00:00
magumagu9
a32e29aaa5
Attempt at fixing Linux build. The OpenGL configuration dialog is
...
broken, though, so I'm not sure if this is quite right.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2378 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-22 22:04:31 +00:00
magumagu9
cefa910d92
Linux build fixes.
...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2315 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-20 03:49:57 +00:00