Commit Graph

13164 Commits

Author SHA1 Message Date
Pierre Bourdon
58fd39d57a Zelda HLE: Value-initialize the std::arrays.
I was under the wrong impression that std::array's default constructor
performed value initialization. Turns out it does not, so an array of POD will
not be initialized.
2015-08-14 16:01:29 +02:00
Pierre Bourdon
34341af17d Zelda HLE: Implement saw wave generation (sample source 0001).
Fixes issue 7961.
2015-08-14 16:01:29 +02:00
Pierre Bourdon
91fade5e89 Zelda HLE: Properly implement the square wave generation.
Zelda TWW magic meter works properly now.
2015-08-14 16:01:29 +02:00
Pierre Bourdon
63712e58fd Zelda HLE: Convert some ERROR_LOG to PanicAlert.
While these are not really unrecoverable errors, while Zelda HLE is in a
testing / development phase it is useful to notice these "unexpected" cases (or
expected without known ways to reproduce) by making them as hard as possible to
ignore.
2015-08-14 16:01:29 +02:00
Pierre Bourdon
2bb3daf027 Zelda HLE: Implement square wave sample source.
Also fix Windows build.
2015-08-14 16:01:29 +02:00
Pierre Bourdon
580fe12c5b Zelda HLE: Implement HQ AFC samples decoding. 2015-08-14 16:01:28 +02:00
Pierre Bourdon
33c29d8aab ZeldaHLE: fix windows build again 2015-08-14 16:01:28 +02:00
Pierre Bourdon
b62f1ed453 ZeldaHLE: fix windows build 2015-08-14 16:01:28 +02:00
Pierre Bourdon
e35b83fabf ZeldaHLE: Implement more infrastructure and one sample source.
Now renders some of the cutscene audio in Zelda TWW. Most of the work around
sample sources is in a good enough state, even though it is still missing
features like Dolby mixing, IIR, etc.
2015-08-14 16:01:28 +02:00
Pierre Bourdon
d9188f1245 Zelda HLE: Rewrite the control flow.
Now accurate control flow for DAC. Voice rendering is not implemented yet, but
framing seems correct. Not expected to work for anything than DAC UCode games.
2015-08-14 16:01:28 +02:00
Pierre Bourdon
d5e177d3f9 INIT UCode: reduce DSP initialization time
Push the mail at UCode boot time, not after the first update. This avoids a lot
of crazy busy-looping on the CPU side while waiting for the DSP to be
initialized.
2015-08-14 16:01:28 +02:00
Pierre Bourdon
a770cc0778 DSPHLE MailHandler: Synchronize reads and interrupts
This change is meant to solve the following problem: how to translate the
following snippet to DSPHLE:
    SendInterruptAndWaitRead(MAIL_A);
    SendAndWaitRead(MAIL_B);

    SendInterruptAndWaitRead(MAIL_C);

This should cause the following actions on the CPU side:
    ---> Woken up by interrupt
    Reads MAIL_A
    Reads MAIL_B
    <--- Exits interrupt handler

    ---> Woken up by interrupt
    Reads MAIL_C
    <---

But with the current DSPHLE mail support, the following would happen because
the "AndWaitRead" part is not supported:
    ---> Woken up by interrupt
    Reads MAIL_A
    Reads MAIL_B
    <--- Exits interrupt handler

    [Never gets the second interrupt since it was triggered at the same time as
    the first one! Misses MAIL_C.]

This changes fixes the issue by storing two values in the mail queue on the DSP
side: the value of the mail itself, and whether a read of that mail should
trigger a DSP interrupt. If nothing is in the queue yet and an interrupt is
requested, just trigger the interrupt. In the present example, the queue will
look like this:
    Mail value       Interrupt requested
     MAIL_A                  No           <-- Interrupt was triggered when
                                              pushing the mail to the queue.
     MAIL_B                  Yes
     MAIL_C                  No

When the CPU will read MAIL_B, this will cause MailHandler to trigger the
interrupt, which will be handled by the CPU when coming back from the exception
handler. MAIL_C is then successfully read.
2015-08-14 16:01:27 +02:00
Pierre Bourdon
8f3302419b ZeldaHLE: Rip out more code, only keep normal version support and one CRC 2015-08-14 15:21:08 +02:00
Pierre Bourdon
22ec258194 ZeldaHLE: Rip out the whole voice processing code. Still boots games, but no sound at all. 2015-08-14 15:20:29 +02:00
Pierre Bourdon
a92727e862 DSPHLE: Add a config parameter to dump UCode to disk 2015-08-14 15:19:57 +02:00
degasus
fc23380f6b JitArm64: Implement dcbt
This is a 1:1 copy&paste from Jit64.
2015-08-14 14:47:00 +02:00
Tillmann Karras
f9129c0e08 Jit64: use BMI1's ANDN for andcx 2015-08-14 05:51:31 +02:00
degasus
4ef2962055 JitArm64: optimize addzex
So on the general case, we don't need a tempory register.
2015-08-13 13:40:53 +02:00
degasus
f7fa22a053 JitArm64: fix addzex
CMP don't update the carry flag, so we have to use an addition.
2015-08-13 13:36:21 +02:00
degasus
de3ce74b48 JitArm64: disable addzex 2015-08-13 12:22:48 +02:00
degasus
b9f5bfb2bd JitArm64: zero extend RC for cmpli
Patch written by HdkR
2015-08-13 12:22:48 +02:00
Markus Wick
4c5fec4772 Merge pull request #2838 from Sonicadvance1/fix_gles_xfb
[GLES] Fix real XFB.
2015-08-13 08:29:42 +02:00
Ryan Houdek
c80e3089c8 [GLES] Fix real XFB.
GLES doesn't support the BGRA texture format type, just use RGBA.
2015-08-12 17:32:05 -05:00
Markus Wick
40818c4aad Merge pull request #2835 from degasus/master
Wiimotes: Initialize all atomic<bool> globally.
2015-08-12 21:14:04 +02:00
Ryan Houdek
bb39ba1f3a [AArch64] Banish slowmem operations to farcode.
This improves performance pretty much across the board for games.
The increase in performance is mainly from removing some code from the main JIT blocks of code (pushing and popping millions of registers) and
throwing them in farcode where it doesn't pollute the icache.
2015-08-12 13:57:09 -05:00
Ryan Houdek
d5c99a5b48 Add support for a CodeBlock holding a child.
This is required to make sure two code spaces are relatively close to one another.
In this case I need the AArch64 JIT codespace and its farcode space to be within 128MB of one another for branches.
2015-08-12 12:57:06 -05:00
shuffle2
90e05f7bea Merge pull request #2832 from zeroZshadow/master
Properly scan for OpenVPN TAP adapters
2015-08-12 10:56:50 -07:00
Rohit Nirmal
703892e845 Fix building with PCH disabled. 2015-08-12 12:01:17 -05:00
degasus
6b9eba5761 Wiimotes: Initialize all atomic<bool> globally.
This fixes an issue with broken real wiimotes on linux.
2015-08-12 18:39:38 +02:00
Lioncash
2c3025e8af Merge pull request #2822 from aserna3/master
Specified the type of AA in OGL AA settings
2015-08-12 01:35:22 -04:00
zeroZshadow
7ed894484e Added for loop end condition 2015-08-12 01:18:27 +02:00
zeroZshadow
8e33891593 Properly scan for OpenVPN TAP adapters
Handle errors correctly in SendFrame
2015-08-11 23:34:49 +02:00
Moncef Mechri
333f998123 Don't busy wait in the audio thread (ALSA)
When the emulation is paused and the ALSA backend is used, make the audio
thread wait on a condition variable instead of busy-waiting. This commit
fixes bug #7729

Since the ALSA API is not thread-safe, calls to snd_pcm_drop() and snd_pcm_prepare()
in AlsaSound::Clear() are protected by the same mutex as the condition variable in AlsaSound::SoundLoop()
to make sure that we do not call these functions while a call to
snd_pcm_writei() is ongoing.
2015-08-11 03:54:54 +02:00
Moncef Mechri
a0c5247743 Initialize ALSA before starting the audio thread
This fixes a race condition:

Before this commit, there was a race condition when starting a game:

Core::EmuThread(), after having started (but not necessarily completed)
the initialization of the audio thread, calls Core::SetState() which calls
CCPU::EnableStepping(), which in turns calls AudioCommon::ClearAudioBuffer().

This means that SoundStream::Clear() can be called before
AlsaSound::AlsaInit() has completed.
2015-08-11 03:54:54 +02:00
Lioncash
144ea9f4aa Arm64Emitter: Fix encoding of '2-reg misc' variant of FCMEQ 2015-08-10 19:48:36 -04:00
Tillmann Karras
0e725c0860 USBGecko: don't needlessly call StringFromFormat() 2015-08-10 12:33:49 +02:00
Markus Wick
e297e3e666 Merge pull request #2825 from lioncash/log
AudioCommon: Log to AUDIO, not DSPHLE
2015-08-10 10:25:51 +02:00
Moncef Mechri
8b767a1189 Use dummy audio backend if the selected backend fails to start
If the selected audio backend fails to Start() (which could happen for
example if there is no audio device), we currently still use the backend
anyway. This can lead to crashes on some platforms (such as Windows) and
is outright wrong anyway.

This commit fallbacks to the Null audio backend if the selected backend
couldn't be started.

This fixes bug #6001
2015-08-10 03:46:45 +02:00
Lioncash
4c6930d36c AudioCommon: Remove unused code from XAudio streams 2015-08-09 21:37:34 -04:00
Lioncash
3f78d74fc1 AudioCommon: Log to AUDIO, not DSPHLE
This code is not related to DSPHLE.
2015-08-09 21:36:03 -04:00
Ryan Houdek
cf22d32d0c [AArch64] Don't do an unnecessary 128bit REV64 operation.
We are only using the lower 64bits here, no need to do the full quad register.
2015-08-09 14:56:52 -05:00
Ryan Houdek
922d476dab [AArch64] Fix FCMGE instruction encoding.
Fixes a crash when ps_sel is used (PSO 1&2 intro movies).
2015-08-09 14:54:55 -05:00
Anthony Serna
ca250f6b71 Specified the type of AA in OGL AA settings 2015-08-09 09:59:20 -07:00
Lioncash
ccca2982df Merge pull request #2819 from degasus/fix
PPCAnalyst: Mark function as static
2015-08-09 10:09:15 -04:00
degasus
bceab37801 PPCAnalyst: Mark function as static 2015-08-09 11:15:44 +02:00
Markus Wick
68a54daec3 Merge pull request #2817 from comex/clientca-typo
Forgot to add a slash in one bit of code I switched from D_WIIUSER_IDX to D_SESSION_WIIROOT_IDX.
2015-08-09 11:08:54 +02:00
flacs
6f2400ebc0 Merge pull request #2807 from aserna3/master
Removed audio shortcut from toolbar
2015-08-09 07:55:37 +02:00
comex
e20db1b2e3 Forgot to add a slash in one bit of code I switched from D_WIIUSER_IDX to D_SESSION_WIIROOT_IDX.
Fix that.
2015-08-08 23:16:29 -04:00
Lioncash
a488ab7a70 Merge pull request #2811 from Sonicadvance1/interpreter_dump
On unknown_instruction dump the full guest GPR state.
2015-08-08 14:57:06 -04:00
Tillmann Karras
145494144c Jit64: duplicate fres result into ps1
And since frD is completely overwritten now, avoid loading it at all.
2015-08-08 06:17:47 +02:00
Ryan Houdek
14a0b01854 Merge pull request #2812 from Tilka/typos
Gekko: fix typos in HID2
2015-08-07 10:56:22 -05:00
Markus Wick
59e48e0fcf Merge pull request #2801 from Tilka/stuff
x64Emitter: add MOVSLDUP/MOVSHDUP
2015-08-07 10:37:38 +02:00
Tillmann Karras
829a949708 Gekko: fix typos in HID2 2015-08-07 09:54:13 +02:00
Ryan Houdek
0326bf7164 On unknown_instruction dump the full guest GPR state. 2015-08-07 02:45:05 -05:00
Ryan Houdek
d9037d6c4a Remove perf_dir Dolphin WX option.
Move the option for the directory to the Dolphin.ini
This way more than DolphinWX can take advantage of it.
2015-08-07 01:59:29 -05:00
Ryan Houdek
c5a7243eb2 [AArch64] Add support for JitRegister to the dispatcher and paired loadstores 2015-08-07 01:58:40 -05:00
Anthony Serna
d51267d13c Removed audio shortcut from toolbar
Removed audio.png
2015-08-06 22:35:59 -07:00
Lioncash
f79855ab46 Merge pull request #2803 from lioncash/fp
CheatSearchTab: Show floating point value equivalent
2015-08-06 14:23:11 -04:00
degasus
d3cf4034de DriverDetails: Disable GL_ARB_copy_image on mesa. 2015-08-06 19:41:36 +02:00
degasus
e2f42f8fd0 OGL: Move copy_image variable into backend. 2015-08-06 19:41:36 +02:00
Lioncash
bef7af1158 CheatSearchTab: Display floating point equivalent results 2015-08-06 10:09:12 -04:00
Lioncash
5882d76a6c CheatSearchTab: Convert wxListBox into a wxListView
Allows us to give the list view columns. This allows removal of monospace font use, as it's now a properly formatted list.
2015-08-06 10:09:00 -04:00
Tillmann Karras
439fb26b9b x64Emitter: add MOVSLDUP/MOVSHDUP 2015-08-06 10:39:43 +02:00
Tillmann Karras
f5a10bddee Jit64: use overloaded IsSimpleReg() where useful 2015-08-06 10:39:43 +02:00
Tillmann Karras
a3476415f6 JitRegCache: mark derived classes as final 2015-08-06 10:39:43 +02:00
Tillmann Karras
0d3acbd9c7 PPCAnalyst: drop needless forward declarations 2015-08-06 10:39:43 +02:00
Tillmann Karras
8adca82cc6 JitInterface: fix disassembly entry point
This adds the downcount check code to the disassembly text and removes the
bogus instructions at the end.
2015-08-06 10:18:46 +02:00
flacs
0821607b2f Merge pull request #2800 from lioncash/leak
UICommon: Fix a leak/bug in Disassembler retrieval
2015-08-04 20:36:01 +02:00
Lioncash
7387914529 UICommon: Fix a leak/bug in Disassembler retrieval 2015-08-04 14:28:32 -04:00
Rohit Nirmal
ac54bbe02d Fix building with PCH disabled. 2015-08-04 12:59:34 -05:00
flacs
0aad44c980 Merge pull request #2753 from Tilka/fix_warnings
Fix some warnings
2015-08-04 18:54:31 +02:00
Markus Wick
972faf42ed Merge pull request #2785 from lioncash/def
GeckoCode: Remove GetAddress function prototype
2015-08-04 17:44:15 +02:00
Markus Wick
19af6e0d93 Merge pull request #2787 from lioncash/memset
CPUDetect: Remove a memset call on the this pointer
2015-08-04 17:43:36 +02:00
Tillmann Karras
5a05187b3b Fix some warnings
reorder, sign-compare, pessimizing-move
2015-08-04 10:58:24 +02:00
comex
3ee302df75 Fix wording of invalid read/write message 2015-08-03 01:57:59 -04:00
Scott Mansell
5097a22844 Merge pull request #2794 from randomstuff/evdev-stable
Stable device identifier for evdev
2015-08-02 21:40:49 +12:00
Scott Mansell
8dd9d35689 Merge pull request #2653 from AdmiralCurtiss/netplay-video-mode-sync
Netplay: Sync Video Mode settings. (Progressive Scan and PAL60)
2015-08-02 12:42:21 +12:00
Gabriel Corona
2722f3f337 Stable device identifier for evdev 2015-08-02 01:51:06 +02:00
Scott Mansell
a1df1f5ae4 Widescreen Heuristic: Cleanup code. 2015-08-01 14:39:34 +12:00
Scott Mansell
615e5db0cb Make the GameCube game widescreen heuristic smarter.
The last heuristic wasn't quite smart enough and had a few
false positives in Mario Kart: Double Dash and Metroid prime 2.

Now we only activate if the game is rendering a 16:9
projection to a 4:3 viewport.
2015-08-01 13:21:53 +12:00
unknown
739ede2242 Fix code to comply with coding style 2015-07-31 20:00:36 -04:00
mirrorbender
0faba3b018 Changed the aspect ratio settings to account for NTSC/PAL pixel aspect ratios and VI scaling. 2015-07-31 19:58:02 -04:00
Lioncash
7ee0e75633 Remove unnecessary virtual keywords 2015-07-30 10:33:08 -04:00
Scott Mansell
567d0b20fa Merge pull request #2769 from phire/autodetect_widescreen
Heuristic to detect if a gamecube game is rendering 16:9 widescreen.
2015-07-29 18:23:35 +12:00
Lioncash
3a450f72f8 CPUDetect: Remove a memset call on the this pointer 2015-07-28 23:44:18 -04:00
Lioncash
df30910b06 UICommon: Pass string by const reference for HostDisassemblerLLVM 2015-07-28 22:32:34 -04:00
Lioncash
44e7a7bf91 GeckoCode: Remove GetAddress function prototype
GetAddress didn't have a definition for its prototype.
Also shortened the construction of the Code struct.
2015-07-28 22:10:39 -04:00
Markus Wick
f800a5b93f Merge pull request #2695 from degasus/jit64
Jit64: Fallback support of branching instructions
2015-07-28 16:37:41 +02:00
Markus Wick
0c4209a0f9 Merge pull request #2716 from degasus/jitgeneric
CachedInterpreter: New kind of jit which always fallback to interpreter.
2015-07-28 16:37:25 +02:00
degasus
ec0582ee5b JitArm64: fix lfd
Bug found by HdkR.
2015-07-28 00:13:50 +02:00
degasus
b7c4886d66 JitArm64: fix stfsux 2015-07-27 23:07:38 +02:00
Anthony Serna
7e8cfff3c0 Optimized addx()
Removed some code duplication

Fixed whitespace

Moved else condition
2015-07-27 11:40:15 -07:00
booto
86dce8b0f7 VideoCommon: reduce level of debug output 2015-07-27 10:22:40 +08:00
Scott Mansell
bb60bcc42d Heuristic to detect if a gamecube game is rendering 16:9 widescreen.
Someone suggested on IRC that we should make a database of memory
locations in GameCube games which contain the 'Widescreen' setting
so we can automatically detect if the game is in 4:3 or 16:9 mode.

But that's hardly optimal, when the game actually tells the gpu
what aspect ratio to render in. 10 min and 6 lines of code later,
this is the result. Not only does it detect the correct aspect ratio
it does so on the fly.

I'm a little suprised nobody thought about doing this before.
2015-07-27 10:40:41 +12:00
Ryan Houdek
e805e05ff5 Merge pull request #2773 from sigmabeta/android_wiimote_main
Android: Add Wiimote support, including configuration UI.
2015-07-26 16:54:45 -05:00
booto
9d055ba5f2 Video: Trying to fix D3D/XFB disabled regression 2015-07-26 00:59:00 +08:00
Jules Blok
3801f89125 Merge branch 'stable' 2015-07-25 14:09:02 +02:00
Jules Blok
3814b5b702 HotkeyManager: Activate hotkey when key is pressed.
As opposed to activating the hotkey when it is released.
2015-07-25 13:53:27 +02:00
Jules Blok
75fc213359 FrameTools: Disable hotkeys while a modal dialog is shown. 2015-07-25 13:05:00 +02:00
Jules Blok
0092f5207b Core: Don't return true on IsRunning() when stopping emulation. 2015-07-25 13:04:37 +02:00