Commit graph

2155 commits

Author SHA1 Message Date
Clownacy
93cf72e269 Add sanity checks to the Wii U hardware mixer
The other audio backends have these - probably for a good reason,
too.
2020-04-19 19:45:09 +01:00
Clownacy
4f80ff4139 Correct a typo 2020-04-19 19:44:06 +01:00
Clownacy
04faccb259 More cleanup 2020-04-19 19:43:57 +01:00
Clownacy
01a444ff8c More cleanup 2020-04-19 19:37:16 +01:00
Clownacy
5704035b9b Cleanup 2020-04-19 19:31:21 +01:00
Clownacy
9e3b158973 Add stereo support to Wii U software mixer 2020-04-19 19:27:02 +01:00
Clownacy
288c2dccee Wii U - Use a frame callback instead of a thread 2020-04-19 19:05:25 +01:00
Clownacy
07ee648181 Add Wii U software audio mixer
The hardware-accelerated one is suffering from a bizarre-ass bug that
I can't fix for the life of me.
2020-04-19 19:03:00 +01:00
Clownacy
745783a025 Wii U samples are signed 2020-04-19 13:51:45 +01:00
Clownacy
7d95fb8ea3 Wii U audio backend cleanup
Still bugging-out though
2020-04-19 13:46:10 +01:00
Clownacy
9e9b86c6e9 Add new Wii U window backend
This uses basic hardware-acceleration to bounce the software-rendered
frame to both the gamepad *and* the TV!

The previous method only supported the gamepad, suffered from V-tear,
and used slightly more CPU (my test with the end of Egg Corridor ran
at 52FPS, while this new method runs at 55FPS).
2020-04-19 13:34:45 +01:00
Clownacy
0b6e90abd0 Work-around some global namespace polution
With GLFW, you're supposed to `#include` your extension loader before
it, but this header made that extremely awkward. The previous "fix"
would cause build errors on Windows when compiling the software
renderer.
2020-04-19 01:37:49 +01:00
Clownacy
320e891a70 Fix keyboard input on Windows 2020-04-19 01:33:52 +01:00
Clownacy
11b04fe93b Update other audio backends 2020-04-18 01:38:25 +01:00
Clownacy
011cb94f73 More guards 2020-04-18 01:23:25 +01:00
Clownacy
873566a19e Attempt 100 of trying to fix Wii U audio hangs
There's a new bug I've noticed: sometimes, an instrument will just
'disappear', and refuse to ever play again.

This stuff is practically impossible to debug, so I'm just throwing
things at the wall. This time, I'm going to make more use of the
`AXVoiceBegin` and `AXVoiceEnd` functions. I have no idea what
they're meant to do: code I found online uses it inconstently, and
Decaf doesn't have it implemented at all!

Hopefully, all of my problems have just been race conditions caused
by not using these guard functions (assuming that's what they are).
2020-04-18 01:16:36 +01:00
Clownacy
bbfcc48e2a Update Wii U instructions 2020-04-18 01:01:53 +01:00
Clownacy
f78f6b7105 Split Organya callback data
The function pointer only ever needs to be set once, unlike the
timer. This should avoid any scary race-conditions.
2020-04-18 00:54:24 +01:00
Clownacy
1ad6fdf539 Rename mutex 2020-04-17 23:52:00 +01:00
Clownacy
b06e1e1312 Remove old junk 2020-04-17 23:48:40 +01:00
Clownacy
051d12f434 Stop shouldn't rewind the sound
According to the DirectSound docs, stop doesn't rewind.

https://docs.microsoft.com/en-us/previous-versions/ms817375%28v%3dmsdn.10%29
2020-04-17 23:47:45 +01:00
Clownacy
5bcc0ec393 New way to allocate Wii U voices
The previous method wasn't good enough: we were still maxing-out at
96 (did the Decaf devs misread that as hex? Is that why the
emulator's limit is 150 instead?).

Anyway, this new solution is a little brutish, but I can't think of
anything else that would work: right now, I have the Organya thread
constantly polling a linked-list of the currently-loaded sounds, and
checking if their voices have finished playing or not. If they've
finished, they get freed.

When AudioBackend_PlaySound is called, if checks if the sound's voice
has been freed or not, and reallocates it if it has.

There doesn't seem to be a noticable overhead to this, and it keeps
the number of currently-allocated voices *very* low (from 10 to 20 on
average).
2020-04-17 23:43:17 +01:00
Clownacy
617f7a25d4 Wii U video tweaks and fixes 2020-04-17 23:42:18 +01:00
Clownacy
b123e3743e Clean-up the weird buggy code
I'mma just assume each sound needs their struct preserving for some
reason.
2020-04-17 21:48:34 +01:00
Clownacy
db14899b3e Try to fix Wii U audio hang part 2
I encountered a hang earlier, so the previous attempt obviously
didn't work.
2020-04-17 18:34:26 +01:00
Clownacy
670f49db77 Optimise Wii U video code a little 2020-04-17 18:07:54 +01:00
Clownacy
76e7a6f857 Revert some suspicious code
I'm getting some rare audio hangs. I tried doing some
regression-testing, but it's so random that I'm getting anomalous
results. That said, there were suspicious results around this change
(and also the way `mix_data` is initialised/cleared), so I'm
reverting this for now, and restoring it next time I encounter a
hang.
2020-04-17 16:58:07 +01:00
Clownacy
c2a857d4f5 Flush the screen buffer on Wii U
Weird cache stuff I don't know
2020-04-17 15:51:27 +01:00
Clownacy
d025fecf54 Minor cleanup 2020-04-17 15:47:56 +01:00
Clownacy
274de9e0f9 Replace Liberation Mono with DejaVu Sans Mono
Looks better at 320x240
2020-04-17 14:18:32 +01:00
Clownacy
93ad3ae7c5 Make font look better at 320x240
This restores some vanilla logic, where at 320x240, the font would
use a slightly larger size, in order to not look terrible.
2020-04-17 14:16:49 +01:00
Clownacy
24bcbb8dfd Upscale 320x240 to 640x480 on the Wii U
For performance reasons, I'm going to switch to 320x240 for Wii U
builds.
2020-04-17 14:15:59 +01:00
Clownacy
a177f44b88 Clean up Wii U audio backend 2020-04-17 14:15:23 +01:00
Clownacy
9eacc74ee2 Got music working on Wii U! 2020-04-17 01:47:23 +01:00
Clownacy
edc9299007 Fix the game using too many Wii U voices
Now it just allocates channels on-demand, rather than ahead-of-time.
2020-04-16 22:42:33 +01:00
Clownacy
a7ebdb75e5 Added unfinished Wii U audio backend
Currently doesn't produce sound unless you stop Organya from calling
AudioBackend_CreateSound, because it exhausts the Wii U's 150-sound
pool before the SFX get any of them.
2020-04-16 22:19:00 +01:00
Clownacy
1898633602 Found a name for nameless_flag! 2020-04-16 15:28:57 +01:00
Clownacy
ff45da6a0e Mark a static function as static
Both the Linux and Mac debug data indicate this is static (they both
prefix static function names with an extra underscore)
2020-04-16 14:45:08 +01:00
Clownacy
8f49276d5e Note some not-so-authentic variable names 2020-04-16 14:44:53 +01:00
Clownacy
4c910dbee6 Correct variable name
I must have guessed this one, and not left a comment saying it was
fake... dammit.
2020-04-16 13:52:00 +01:00
Clownacy
8a9f70875c More authentic variable/function names 2020-04-16 13:48:36 +01:00
Clownacy
47740fe88d Note some weird code 2020-04-16 13:47:17 +01:00
Clownacy
b83b7f25fc Found the real name for DummiedOutLogFunction..? 2020-04-16 13:47:17 +01:00
Clownacy
b8c0581ee4 Found the original Config.cpp variable names
Thank you, Mac port...
2020-04-16 13:47:17 +01:00
Clownacy
6e3d90d3d1
Merge pull request #112 from GabrielRavier/accurateFixCrossBuild
Fix build for mingw cross-compilation
2020-04-15 23:31:07 +01:00
Gabriel Ravier
181ecc3ec2 CMakeLists: Reverted random comment change from 593315eb
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-04-16 00:29:43 +02:00
Gabriel Ravier
593315eb53 CMakeLists: Made build work for cross-compile with mingw
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-04-16 00:11:03 +02:00
Clownacy
6bd4e89f9d Update readme 2020-04-15 22:12:58 +01:00
Clownacy
c38a8aa857 Read files from SD/CSE2-portable on Wii U 2020-04-15 22:12:41 +01:00
Clownacy
763e4a9986 Vertically center screen on Wii U 2020-04-15 22:10:40 +01:00