Commit Graph
100 Commits
Author SHA1 Message Date
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
magumagu9 9ed368b35a JitIL: a couple small optimizations.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2286 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-17 10:39:50 +00:00
magumagu9 1e150bccdf Build fix for r2283.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2285 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-17 02:42:21 +00:00
magumagu9 82a10c9692 Fix jpeterson breakage.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2276 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-16 09:26:47 +00:00
magumagu9 94ee9afdb2 JitIL: A bit more constant folding, and a bit of cleanup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2235 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-14 01:00:37 +00:00
magumagu9 39b7fe10f7 JitIL: make psq_lu work correctly. Fixes, among other things,
the graphics in Metroid Prime.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2234 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-14 00:58:18 +00:00
magumagu9 a55e672493 JitIL: a few more functions. Partially addresses interpreter hotspots in
Metroid Prime; not really noticably faster, though.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2232 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-13 10:28:28 +00:00
magumagu9 49937a640b JitIL: Make selectively disabling JIT instructions from the debugger
work correctly.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2205 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-10 13:11:32 +00:00
magumagu9 318d1105fb JitIL: Attempt to fix some 64-bit build errors.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2204 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-10 12:44:17 +00:00
magumagu9 cf5fc063ce JitIL: Make LoadCarry work correctly.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2202 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-10 12:20:30 +00:00
magumagu9 e8925e43fe JitIL: Disable addze implementation for now; I'm not exactly sure what's
wrong with it, but it's causing visible issues.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2171 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-09 05:22:44 +00:00
magumagu9 f4025a8caa Enable block linking for JitIL; I disabled it when I was trying to debug
a crash.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2169 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-09 01:37:50 +00:00
magumagu9 5c35e95c8f JitIL: Add JIT for addze, ps_sum0. Also, some cleanup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2168 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-09 01:31:38 +00:00
magumagu9 4d3c0b8783 JitIL fix for Animal Crossing: make sure to mark floating-point loads
consistently.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2167 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-09 00:41:31 +00:00
magumagu9 622f396d8a Slight correction to r2164.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2165 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-08 23:07:47 +00:00
magumagu9 54798713a0 SCons build fix, part 2.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2138 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-08 07:59:38 +00:00
magumagu9 3148d2eb2d SCons build fix.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2137 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-08 07:55:40 +00:00
magumagu9 90c9810b85 Use glMultiDrawArrays instead of glDrawArrays, which significantly
reduces the number of OpenGL calls for large sets of triangle strips; 
this is something like a 10% perf improvement in the case I'm looking 
at.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2120 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-06 03:41:33 +00:00
magumagu9 73fbfc1d66 JitIL: Disable a couple debugging printfs, and some misc cleanup. No
functionality change.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2107 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-04 12:39:55 +00:00
magumagu9 a883726233 A few small JitIL changes that I've had sitting in my tree for a while;
nothing really significant to note.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2106 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-04 09:05:34 +00:00
magumagu9 4307803090 A bit more _MSC_VER cleanup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2100 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-04 01:55:24 +00:00
magumagu9 d8f4785772 Progress on Wii games on Linux! Instead of hanging, it now gets far
enough to render a black frame before it crashes. I don't have time 
right now to track down the crash, but I figure this is at least an 
improvement.  Note that "#pragma pack" is an msvc extension, but gcc 
supports it.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2092 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-03 21:27:12 +00:00
magumagu9 57c5f00337 Sleep for 1ms instead of zero time; the busy-sleep loop pollutes
profiles.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1983 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-22 20:05:59 +00:00