Commit Graph
192 Commits
Author SHA1 Message Date
JosJuice abd069ada3 Check return value when calling ReadArray for savestates
Just in case we have a 0-byte file or something.
2021-01-18 14:32:19 +01:00
JosJuice 4597d53307 Android: Don't show OSD messages when opening savestate menu 2021-01-18 14:28:43 +01:00
Pierre Bourdon 27013e8d18 Merge pull request #9300 from leoetlino/ncd-wd-fixes
IOS: WD and NCD fixes
2021-01-06 00:51:33 +01:00
Filippo Tarpini 3acd1726b9 Core: Fix variable naming conventions
[committer note: squashed two commits]
2021-01-05 15:23:40 +01:00
Lioncash a8b0661fb0 Core: Make use of C++17 deduction guides with locks
C++17 allows omitting the mutex type, which makes for both less reading
and more flexibility (e.g. The mutex type can change and all occurrences
don't need to be updated).
2020-12-29 16:06:17 -05:00
Léo Lam 9a87d27612 IOS/WD: Implement more parts of the interface
This commit implements the following commands:

* open
* close
* GetMode
* SetLinkState (used to actually trigger scanning)
* GetLinkState (used to check if the driver is in the expected state)
* GetInfo
* RecvFrame and RecvNotification (stubbed)
* Disassociate (stubbed)

GetInfo was already implemented, but the structure wasn't initialized
correctly so the info was being rejected by official titles.
That has also been fixed in this commit.

Some of the checks may seem unimportant but official titles actually
require WD to return error codes... Failing to do so can cause hangs
and softlocks when DS communications are shut down.

This minimal implementation is enough to satisfy the Mii channel
and all other DS games, except Tales of Graces (https://dolp.in/i11977)
which still softlocks because it probably requires us to actually
feed it frame data.
2020-12-28 16:15:17 +01:00
Léo Lam 4fea832f49 IOS/NCD: Implement Lock/Unlock more accurately
NCD returns an error if it receives a request to lock the driver
when it is already locked.

Emulating this may seem pointless, but it turns out PPC-side code
expects NCD to return an error and will immediately fail and stop
initialising wireless stuff if NCD succeeds.
2020-12-28 16:12:04 +01:00
Lioncash 7d1bd565a6 DSP: Eliminate most global state
An unfortunately large single commit that deglobalizes the DSP code.
(which I'm very sorry about).

This would have otherwise been extremely difficult to separate due to
extensive use of the globals in very coupling ways that would result in
more scaffolding to work around than is worth it.

Aside from the video code, I believe only the DSP code is the hairiest
to deal with in terms of globals, so I guess it's best to get this dealt
with right off the bat.

A summary of what this commit does:
  - Turns the DSPInterpreter into its own class
    This is the most involved portion of this change.
    The bulk of the changes are turning non-member functions into member
    functions that would be situated into the Interpreter class.

  - Eliminates all usages to globals within DSPCore.
    This generally involves turning a lot of non-member functions into
    member functions that are either situated within SDSP or DSPCore.

  - Discards DSPDebugInterface (it wasn't hooked up to anything,
    and for the sake of eliminating global state, I'd rather get rid of
    it than think up ways for this class to be integrated with
    everything else.

  - Readjusts the DSP JIT to handle calling out to member functions.
    In most cases, this just means wrapping respective member function
    calles into thunk functions.

Surprisingly, this doesn't even make use of the introduced System class.
It was possible all along to do this without it. We can house everything
within the DSPLLE class, which is quite nice =)
2020-12-27 06:38:02 -05:00
iwubcode 670f34af60 Core: Update state to account for save system change 2020-12-24 13:49:25 -06:00
Lioncash 958cbf38a4 Core: Convert logging over to fmt pt. 1
Converts up to the DSP-related files for easier reviewing, the rest will
be progressively moved over after this change gets merged.
2020-11-19 14:21:06 -05:00
LC 4f5c8bb42a Merge pull request #9177 from JosJuice/android-savestate-time
Android: Show how long ago each savestate was created
2020-10-23 13:59:43 -04:00
Jordan Woyak 4807a5e157 VideoCommon: FrameDump fixes/cleanups. 2020-10-22 12:17:26 -05:00
JosJuice 21d3ea523c Android: Show how long ago each savestate was created 2020-10-21 22:49:59 +02:00
Jordan Woyak 2e753abcc9 Update state version. 2020-09-19 18:02:25 -05:00
Jordan Woyak 6a6f1451ff Update state version. 2020-08-16 11:38:13 -05:00
Pokechu22 9183c0c482 Bump state version 2020-07-29 16:57:37 -07:00
JosJuice f72b756778 VideoCommon: Don't round the refresh rate
We now provide a double to the FPS counter and exact values
to FIFO recording and frame dumping.
2020-07-28 21:01:38 +02:00
Admiral H. Curtiss 27e49c00b3 FreeLookCamera: Fix savestate branch inconsistency.
Fixes https://bugs.dolphin-emu.org/issues/12168
2020-06-28 02:31:37 +02:00
iwubcode bb6582783b Core: update save state version 2020-06-25 13:35:47 -05:00
nbouteme b68ab560dc Make SO_POLL complete asynchronously 2020-06-24 12:59:41 +02:00
Techjar 0eb9ac7777 Include SRAM in savestates
This fixes an issue with saving after loading a savestate in Pokemon Colosseum.
2020-06-24 02:42:50 -04:00
Admiral H. Curtiss 8b13e1882a EXI: Store data for regenerating a GCI folder memory card header in EXI_Channel and pass it down to the memory card device. 2020-06-17 01:44:46 +02:00
Minty-Meeo cc858c63b8 Configurable MEM1 and MEM2 sizes at runtime via Dolphin.ini
Changed several enums from Memmap.h to be static vars and implemented Get functions to query them. This seems to have boosted speed a bit in some titles? The new variables and some previously statically initialized items are now initialized via Memory::Init() and the new AddressSpace::Init(). s_ram_size_real and the new s_exram_size_real in particular are initialized from new OnionConfig values "MAIN_MEM1_SIZE" and "MAIN_MEM2_SIZE", only if "MAIN_RAM_OVERRIDE_ENABLE" is true.

GUI features have been added to Config > Advanced to adjust the new OnionConfig values.

A check has been added to State::doState to ensure savestates with memory configurations different from the current settings aren't loaded. The STATE_VERSION is now 115.

FIFO Files have been updated from version 4 to version 5, now including the MEM1 and MEM2 sizes from the time of DFF creation. FIFO Logs not using the new features (OnionConfig MAIN_RAM_OVERRIDE_ENABLE is false) are still backwards compatible. FIFO Logs that do use the new features have a MIN_LOADER_VERSION of 5. Thanks to the order of function calls, FIFO logs are able to automatically configure the new OnionConfig settings to match what is needed. This is a bit hacky, though, so I also threw in a failsafe for if the conditions that allow this to work ever go away.

I took the liberty of adding a log message to explain why the core fails to initialize if the MIN_LOADER_VERSION is too great.

Some IOS code has had the function "RAMOverrideForIOSMemoryValues" appended to it to recalculate IOS Memory Values from retail IOSes/apploaders to fit the extended memory sizes. Worry not, if MAIN_RAM_OVERRIDE_ENABLE is false, this function does absolutely nothing.

A hotfix in DolphinQt/MenuBar.cpp has been implemented for RAM Override.
2020-04-28 12:10:50 -05:00
Jun Su 7885fdb1ae Remove warning of -Wstringop-truncation
Fix the right length when strncpy. And use specific version of copy
to copy GameID.
2020-03-24 20:26:20 +08:00
Pokechu22 3b5d20e12c Bump state version 2020-01-04 11:43:33 -08:00
Lioncash 474e210cd5 PPCCache: Make arrays constexpr where applicable
Two of these arrays were stored within the save state when the exact
same data is constructed all the time.

We can just build this into the binary rather than the save state,
shrinking a little bit of the save state's overall size.
2019-12-03 04:05:09 -05:00
Léo Lam a77108236e Merge pull request #8418 from lioncash/core-fmt
Core: Replace usages of StringFromFormat with fmt where applicable
2019-11-16 18:09:58 +01:00
Lioncash febd1c3dba Core: Replace usages of StringFromFormat with fmt where applicable
Migrates usages of StringFromFormat over to using fmt.
2019-11-11 07:32:57 -05:00
booto 371e3f1021 VI: Adjust start/end of ACV region for fields
This wasn't changed when halfline counts were changed to 0-based. Also
included is a diagram showing an understanding of how the values in the VI
timing registers maps to the video signal.
2019-10-31 21:04:22 -04:00
spycrab 04764f8b7f Fix saving states freezing up emulation
Only for about half a second but noticeable nonetheless
2019-08-01 21:33:12 +02:00
Stenzek 63358adfb1 Core: Save movie state before video backend state
Fixes the old frame number/inputs being displayed after loading state.
2019-07-24 05:19:22 +10:00
Stenzek 560074cf9f Core: Fix crash when state is loaded while waiting for the CPU 2019-07-24 05:19:22 +10:00
Stenzek 1082468133 TextureCache: Support saving cache entries, including EFB copies 2019-07-24 04:10:38 +10:00
Stenzek a25a4e0708 State: Use RunOnCPUThread to invoke save state handlers
This ensures that the emulated state is only touched by the CPU thread
2019-07-24 04:08:25 +10:00
Connor McLaughlin 0a7395bfba Merge pull request #8128 from altimumdelta/FrameDumpUpgradePrep1
Code: Rename AVIDump to FrameDump
2019-06-30 21:13:19 +10:00
altimumdelta 1df655e376 VideoCommon: Rename AVIDump to FrameDump 2019-06-30 13:02:39 +02:00
Lioncash 4f1f55093f Common/MsgHandler: Namespace code within the Common namespace
Closes another gap in the Common library where code isn't being
namespaced under it.
2019-06-19 16:03:55 -04:00
weihuoya e98f43d2af bbox minor fx 2019-05-09 17:30:17 +08:00
Jordan Woyak 0c81af74e1 WiimoteEmu: Drum extension accuracy improvements. 2019-04-30 20:14:12 -05:00
Jordan Woyak 9554ece874 WiimoteEmu: MotionPlus is now working. 2019-04-23 18:38:00 -05:00
Jordan Woyak 779e618046 VideoCommon: Change free-look's middle-mouse action to roll the camera. 2019-04-17 05:10:11 -05:00
Jordan Woyak c89ddf8cba WiimoteEmu: Allow shake frequency and intensity to be configured. Other minor cleanups. 2019-04-12 16:50:59 -05:00
JosJuice 822acf9ab9 IOS/FS: Don't savestate m_root_path
The NAND root path can be different on different systems,
so we must not savestate it.
2019-04-11 18:50:15 +02:00
Jordan Woyak 49218c32ed WiimoteReal: Improve state changes and minor code cleanups. 2019-03-11 15:46:04 -05:00
Jordan Woyak 4db4840d7c WiimoteEmu: Reimplement tilt/swing/camera/orientation data using matrix math. 2019-03-03 12:43:25 -06:00
Jordan Woyak a25e8cb516 Advance save state version. 2019-02-02 19:40:30 -06:00
Jordan Woyak b0cb100958 SI: Device change logic fix. 2019-02-01 06:43:24 -06:00
Jordan Woyak c54cc3fa38 HW: SI_Device_GCController: Minor cleanup. Remove a member/state variable that should just be a local variable. 2019-01-31 06:30:06 -06:00
Jordan Woyak 3cd3e84486 SI_DeviceGCController: Calibrate pad origin on boot to perfect neutral values instead of initial input state. 2019-01-22 15:33:04 -06:00
Shawn Hoffman d594d4f12f Fix sram accesses. 2018-09-29 22:52:29 -07:00