Commit Graph

19 Commits

Author SHA1 Message Date
James Benton
61a66bcf8f config: Add config generating when no config exists. 2017-04-26 11:53:53 +01:00
James Benton
a364565f8b Move to a .toml config file and try to unify config loading.
Still not an ideal solution, but it's at least a step in the right direction.
2017-04-24 23:32:00 +01:00
James Benton
a1fb43180e Refactor debugger and add a gdb stub. 2017-04-13 13:05:27 +01:00
James Benton
e4c8f989f6 kernel: Add support for LLE of system modules.
Looks for system libraries in mlc/sys/title/00050010/1000400A/code/*.rpl
Will only load modules in config.system.lle_modules list.
2017-04-04 23:37:22 +01:00
James Benton
4c2049bf47 New JIT implementation using libbinrec. 2017-04-01 17:04:30 +01:00
James Benton
35f40d211c decaf: Add support for /dev/sdcard01.
Set path in config as system/sdcard-path.
Set path on command line as --sdcard-path <path>.
2017-03-27 23:19:12 +01:00
James Benton
34cd5982da decaf: Rewrite filesystem.
Adds support for writing files to host file system.
Adds file permissions to prevent corruption of game files.
2016-09-02 01:34:22 +01:00
James Benton
78daf1f1d6 Add a much more lenient cereal json input archive.
- All values are optional, value will not be touched in the missing case
- Adds rapidjson flags for kParseCommentsFlag and kParseTrailingCommasFlag
2016-08-18 23:08:44 +01:00
Andrew Church
bc1e5cb5a7 jit: Implement JIT verifier.
We bracket each translated instruction with calls to pre- and
post-verify routines.  The pre-verify routine makes a copy of the
current core state and the contents of any affected memory, and the
post-verify routine runs the associated interpreter function on the
initial core state (and memory contents), then compares the result to
the state produced by the JIT code and reports any differences.
(FPSCR is ignored since the JIT translators don't update it yet.)

To avoid false failures caused by other cores storing to the same
memory region referenced by an instruction while the instruction is
being verified, we force all load and store instructions subject to
verification to go through a mutex, ensuring that only one core can
access memory at any time.

The kc, lwarx, and stwcx instructions are not verified since they are
not repeatable.  (lwarx and stwcx do not obey the memory access mutex
since they do not go through the verifier, but simultaneous access to
memory with lwarx/stwcx and other load/store instructions is
unreliable anyway and real-world code should never do it, so we don't
worry about that case.)

Also rename the related configuration option from "debug" to "verify"
to better reflect its purpose.
2016-08-16 00:40:28 -07:00
James
5d9a124335 Merge pull request #245 from achurch/config-system-region
Read system::region from config.json.
2016-08-04 20:18:20 +01:00
Andrew Church
6b65812c1d Read system::region from config.json. 2016-08-05 03:48:10 +09:00
Andrew Church
4e4e799b95 Avoid silently aborting if config.json has a syntax error. 2016-08-05 03:44:57 +09:00
Andrew Church
467d4d45da Implement basic sound output via SDL.
Sound is off by default (to avoid destroying speakers in case the
logic is incorrect for some case); pass the --sound option to enable.

Sound data can be dumped by setting the sound::dump_sounds option in
the configuration file to true.
2016-07-26 21:57:48 +09:00
James Benton
ac1d89a3d8 Add decaf-cli project.
A command line only application to execute Wii U games with no graphics
and no input. This can be useful for running unit test rpx files.
2016-06-14 22:30:35 +01:00
James Benton
f0610eb0c2 Rename decaf-cli to decaf-sdl. 2016-06-14 20:15:49 +01:00
James Benton
64ec1ec02a libdecaf: Add debugger config options enabled and break_on_entry. 2016-06-14 20:10:51 +01:00
James Benton
2cc1b306b8 Refactor decaf api and update decaf-cli to use SDL. 2016-06-13 23:53:02 +01:00
James Benton
71aa5295c8 decaf-cli: Add missing include in config 2016-06-12 12:53:33 +01:00
Brett Lawson
e50baa741a Move all UI handling out to a new decaf-cli project.
This is a extremely large change that includes the following:
- The main executable is our default front-end: decaf-cli
- GLFW/SDL is moved from platform to the front-end
- Configuration handling is now moved to front-end
- The library now has a 'public binding' via decaf/decaf.h
- Input is now handled by the front-end through callbacks.
- GPU thread startup is now handled by the front-end.
- Rendering of the scan buffers to the screen is now handled by the front-end.
2016-06-11 00:34:43 -07:00