* Moved ps1 init. Added Sample Rate change for SPU that gets set but not applied
* SPU: misc fixes on SPU ps1 mode init
* Init the soundbuffer to apply sample rate. Actually set the correct sample rate for the ps1 though it still won't apply
Co-authored-by: Gauvain 'GovanifY' Roussel-Tarbouriech <gauvain@govanify.com>
Co-authored-by: kenshen112 <obarrtimothy@gmail.com>
Shares a single filename between the two capture functions so that the .avi and .wav will match.
Default wavdump filename changed to "audio_recording.wav"
* RecordingReset is now a function of the InputRecording class
* TotalFrames is now signed
* InputRecordingControls refactor, IsRecordingPaused -> IsPaused
* Add check to keep frameCounter from overflowing (not like someone is gonna record a year's worth of inputs though).
* Code Formatting adjustments (more to do in a separate PR)
Ensures that no frames of input are skipped over on the initial load of a recording file or during a fast/full boot when a recording file is active. Improved consistency.
* Replaces the savestate load flag with a more general initial load flag to be used by full/fast boots and savestates.
* Have the Pcsx2App::ResetRecordingCounter() method mirror the similar method of the savestate class.
* Handle setting frameCounter to 0 in SetStartingFrame().
* FrameCounter, signed -> unsigned.
* Have SetFrameCounter handle the calculations for the relative frame displacement from the startingFrame.
* Optimizes InputRecording::controllerInterrupt.
* Flip the order of execution in inputRecordingFreeze.
* Set framecounter properly on full/fast boot.
* More accurately increment undo count
* Recording mode enum, NoneActive -> NotActive
* Changed IsMode method names and added an IsRecording method.
* Add methods designated to setting a recording to a certain mode.
Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
* RecordingControls - > InputRecordingControls (+ function refactors & simplifications)
* Avoid mutating g_FrameCount - now use isolated frameCounter & startingFrame variables for input recordings
* Pause or resume emulation preemptively based on GUI actions
* Exclusively handle GS window title updates in FrameForGS
* recording: Only stop the current recording once the menuing hasnt been cancelled
* recording: Avoid changing menu option's state if the recording couldn't be played
* recording: Don't play a recording that uses a savestate, if no game is running
* recording: Don't modify `frameAdvance` flag when explicitly [un]pausing
These functions are only called when creating/playing a recording, and modifying the frameAdvance flag leads to unexpected behaviour (such as the game starting paused if the recording was made from "power-on")
* recording: Refactor and simplify `InputRecordingFile`
InputRecordingFile will no longer be concerned with loading the save-state when playing back an existing recording. This makes it much easier to only load the save-state if the file is valid and manipulate the emulation state correctly.
* recording: Update play logic with new refactor, resume emulation in the event of a failure
* recording/lint: spaces to tabs
* recording: Properly only examine controller 1A & 2A
The previous controller port checks in place never actually succeeded in their designated task. A new slot check in sio.cpp will perform this task instead.
* recording: Save the savestate in OpenNew() instead of open()
Ensures that the savesate could be saved before trying to create the actual input recording file. It will overwrite any previous backup savestate.
Also, allows for a simplified & easier to read code struture of open().
* Refactor and simplify `InputRecording`
Changes the return type of Play/Create from void to bool.
Optimizes Stop(), Pause(), and Unpause() call placements
Improved handling of emulation pause state, the recording menu on failures, and the conditioning of when a recording file should actually be unloaded.
For example, a currently loaded recording should not get unloaded if a user presses Play *but* chooses cancel in the file browser. However, the emulation should be paused during the duration of this action.
On the flipside, a loaded recording *should* get unloaded if the tools get disabled in settings AND emulation should resume if not already playing.
* recording: Simplify VirtualPad_Open_Click
Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
Auto-Eject checkbox is a failsave for broken saves. Card (file)name to Memory Card (like a real PS2 you need to plug a memory card in port 1 to work).
Add usable to formatted to be obvious if you can use the memory card. Changed default column width.
FMV Aspect Ratio Override = Off is the same as the value for Aspect Ratio. Formatting fix for Zoom tooltip.
Double click on emulation windows also does fullscreen. Disable framelimiting means Uncapping the FPS.
Capped slowmotion adjust at 5% (it doesn't accept lower than 5 anyway). MTGS gets debug tag (useless for many).
* recording: Resolve hang when opening PAD plugin with the game paused
* pcsx2-gui: Forbid editing the PAD settings while emulation is paused by recording tools
* pcsx2-gui: Resume emulation before configuring PAD plugin, resume on return
* Reshuffle and reorganize menus. Add a help menu with links to the main website, forums, github page, wiki, and getting started pages.
* Change fast boot to an option.
* Make the Debug window menu option checkable, similar to the Log window.
* Move log settings to the Log menu.
* Add more information to the status bar.
* Moved a few things around. Added Compatibility to the Help menu.
* Removed Pcsx2 from the menu item names in the Help menu, and rearranged a bit.
* Fix crash on cancelling.
* Status bar changes.
* Add minimize/maximize flags to debug window.
* Don't strip out the maximize and minimize boxes on the debugger in weird Windows-only code.
* Add Help button. Fix Help dialog on Linux.
* Remove no longer used Windows code for Debug window.
Another small piece of #3451
Moves all VTLB pointer manipulation into dedicated classes for the purpose, which should allow the algorithm to be changed much more easily in the future (only have to change the class and recVTLB.cpp assembly since it obviously can't use the class)
Also some of the functions that manipulated the VTLB previously used POINTER_SIGN_BIT (which 1 << 63 on 64-bit) while others used a sign-extended 0x80000000. Now they all use the same one (POINTER_SIGN_BIT)
Note: recVTLB.cpp was updated to keep it compiling but the rest of the x86-64 compatibility changes were left out
Also, Cache.cpp seems to assume VTLB entries are both sides of the union at the same time, which is impossible. Does anyone know how this actually worked (and if this patch breaks it) or if it never worked properly in the first place?
Allocate memory in an x86-64-compatible way
Another part of #3451
Note: While this shouldn't change how anything works, it's been the #1 source of breakage of 32-bit builds in #3451 (it was the cause for the failure of win32 to allocate memory and the failure of linux-32 afterward) so we should definitely make sure it gets tested
see #3523 for more information
* The emulator version was hard-coded to PCSX2-1.5.X which is no longer accurate, it is no longer hard-coded and will use the correct version number the same way it is calculated to display in the window title.
* When creating a recording, the game name is preferred over the ISO name. This is determined via the GameDB. When playing back the recording, a simple check occurs to see if the game running is the same one that was used to make the recording. On the playback side, it always only checked with the ISO filename.
* git: Ignore uncaught linux build artifacts
* onepad-legacy: Return legitimate key event on `PADkeyEvent` call
Onepad-legacy was the plugin that was building and being used on my linux environment. I'm not sure if t hat's expected and normal 'onepad' has yet to take over.
* onepad: Return legitimate key event on `PADkeyEvent` call
* recording: Remove unnecessary `PadKeyDispatch(ev)` wrapping func
* recording: Cleanup key event handling when GSFrame CoreThread is paused
* recording: Refactor recording status check to be more explicit
* recording: Define additional key bindings for capitalized varient
Despite the advice of the docstrings in these files, on linux this seems to be required for the bindings to consistently fire.
* onepad: Declare `AnalyzeKeyEvent` not static
* recording: Ensure file extension is appended to recording file on linux
* recording: Correct typo in comment
* recording: Better wording around linux keybinding handling
* Remove unneeded `extern`
* IPU: Perform an interrupt on IPU_CTRL Reset.
Doing this reset performs a forced command end, meaning the IPU will run through the procedure of ending any command running and telling the core that it is done, even if there is no command currently active.
Fixes Fightbox
* Remove Fightbox patch
* VIF MSCAL instructions wait on VU T-Bit stop
Fixes:
The Sims
Spiderman 3
Sharks Tale
Maybe some bits of Over the Hedge
* Removed Spiderman 3 patches
* Fix VIF DMA resuming when stalled on tag
* Remove warning which doesn't really need to be there anymore
Don't interrupt if compare/overflow flag is already set
Removed patches for Harry Potter Prisoner of Azkeban and Chamber of Secrets as they should no longer be required.
Note - Some harry potter games still have the EE Timing Fix which may also not be required
* macOS compile
* Fix memprotect error on macOS
* Fix semaphore wait + thread cancel on macOS
* Fix timedlock timeout calculation
* spu2-x macOS
* onepad macOS support
* Add MacOS game controller db
* Disable onepad_legacy on macOS
* Fix spu2-x configuration crashes
* Make recompiler work on 32-bit macOS
* Use dylib extension for plugins on macOS
* Make app bundle on macOS
* Use git info for Info.plist version
This change makes the EE recompiler not hardcoded to working with 32 MB of RAM, and instead work with the amount of RAM set in Ps2MemSize::MainRam. The rest of PCSX2 seems to work fine with more than 32 MB of RAM - it is only the EE recompiler that has trouble. If the Ps2MemSize::MainRam value is not changed from the default 32 MB, there should be no change: 32 MB / 0x10000 = 0x200, the value that was there previously.
This may be helpful if anybody else in the future wants to emulate a PS2 dev kit with 128 MB or RAM, or maybe the PSX dvr thing which I think has 64 MB of RAM. I've confirmed that with the change, you could set Ps2MemSize::MainRam to 128 MB, and execute code with the recompiler that's above the first 32 MB of RAM, and do VIF and scratchpad DMA transfers from this upper memory as well.
* Modify VU addressing so it only multiplies by 8 before entering the program
Fixes issues with VU1 TPC being read multiplied by 8 (bad)
* Removed assert on SuperVU which no longer makes sense
* Change the minimum cmake version to a range. Uses the new policies of the newer versions if you are on them, taking care of CMP0054.
* Grab a newer version of FindHarfBuzz.cmake from Webkit that fixes the cmake warning the earlier one was giving.
* Add in -ftime-trace as an option on build.sh.
* Precompile PrecompiledHeader.h if you are using cmake 3.16+ and GCC. (Currently disabled on clang due to compilation issues.)
* Check if target_precompile_headers exists rather than by version.
Co-authored-by: scribam <scribam@users.noreply.github.com>
VS complains about errors so isolate the code in each file for TAS with macros.
Remove ifndef for m_capturingVideo as it is used for video capture menu.
Update all documentation for 1.6.
Source files for documentation are in md format and are kept in pcsx2\pcsx2\Docs, final exported/converted docs are in pdf format (Configuration_Guide and PCSX2_FAQ).
Update First time wizard to reflect recent documentation changes.
Update cmake to reflect recent documentation changes.
PO/POT/MO Localisation needs to be updated for the First time wizard to include the documentation changes.
NSIS installer needs to be updated to reflect the recent changes.
Fixes booting issues in the following games:
Jak X, Namco 50th anniversary, Spongebob the Movie, Spongebob Battle for Bikini Bottom,
The Incredibles, The Incredibles rize of the underminer, Soukou kihei armodyne, Garfield Saving Arlene, Tales of Fandom Vol. 2.
The games will no longer require a patch to boot.
Add forum and license links.
Remove Developers and Contributors names, replaced with:
"Big thanks to everyone who contributed to the project throughout the years."
Avoid some function overloads that can accept char*, wxChar* and
wxString as a parameter. wxString can be constructed with either of
those parameters, so the function overloads may actually result in
ambiguity errors. Keep the wxString parameter versions and remove the
rest.
Fixes some compile errors on FreeBSD.
The pack command converts from RGB32 to RGB16/INDX4, not RAW8 to
RGB16/INDX4.
Also, the VQ conversion (still unimplemented) only occurs when the
output format is 0, so fix that as well.
This fixes timing issues in Dynasty Warriors 3 Xtreme Legends
(fake save corruption), Jak II (random speedup issues) and Shadow of
Rome (FMV audio issues).
Also update the comments since a lot of them refer to past revisions of
the code.
* cdvd: Fix off-by-one end of file checks
* cdvd: Fix loading for games that attempt to read non-existent sectors
Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.
* cdvdgigaherz: Fix loading for games that attempt to read non-existent sectors
Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.
* cdvd: Don't write non-existent sectors to blockdump
Setting the toggle variable is now at the vsync point. FMV toggle should still work as usual, but the F9 toggle should have to wait the full period of around 32 frames. This seems short enough while also depends on how fast those frames can rendered, avoiding having to set a timer in ms.
* Refactor build.sh. Restructure finding plugins. Remove legacy code. Add --clean-plugins option. Document --no-trans option.
Don't do setcap if dev9ghzdrk isn't being built. List dependencies if they are missing. Remove code related to zerospu2, and misc plugins we aren't building. Minor message changes.
2 pass fallback cases for the untitled scenario was mentioned in the TODO comment to be completed, added one of them. (Still doesn't seem reliable enough, but honestly when do we Also modified blank space indentation at a part to tab space to satisfy lightning boi.
Previously the blockdumps will be automatically stored in the root directory of PCSX2, added an INI option in "PCSX2_ui.ini" named "CurrentBlockdump" to modify the directory to whatever is preferred by the user. (Some people were requesting for this)
A GUI could also be added if anyone wants, but considering the popularity of this I'm not sure as blockdumps will only be used my less percentile of users and mostly by testers and developers for debugging.
in vs 2019, the system xhash used by unordered_map uses Target in its template definition. pcsx2 #defines this in the r5900 and r3000 headers which leak cause a cryptic compilation error. A quick fix here is just to undef it in gamebase.h. A better fix would be to encapsulate the definition or use something more c++ to avoid the pre-processor. Add a comment to explain the _Target_ undef.
tap.h did not have string defined. I guess this was included transitively somewhere with an earlier set of system headers.
Biostools, the file is opened in text mode which causes the bios to be partially read. I'm not sure that's vs2019 specific but it's wrong in any case. Maybe the default mode parameter changed at some point. Maybe wxFile would be a better choice here rather than WxFFile because wxFile always open s in binary mode.
Attention! Older savestates will be incompatible so please use a
previous older dev build (such as dev 3043) to save your progress on
memory cards instead!
Squashed commit:
[7955b42e3] recording: Throw errors on fread/fwrite errors.
[5a2160f9e] recording: Remove function implementation from header files
[f2937ab5f] recording: Fixed UndoCount metadata bug and will gracefully fail if savestate is missing
[d7f4d43e5] recording: Refactored code-style to be consistent
[0f77fbb71] recording: Refactor to use switch statements
[28d7945f6] recording: Resolve CMake warnings and use tagged github links for cross-linking to LilyPad
[7c01c6cb4] recording: corrected disparity between comment and code
[17a8bd8d6] recording: Remove all usages of #define
[3830f5a82] recording: Refactor enums and general cleanup
[569ef7d67] recording: Completely disable new console log sources when recording is disabled
Regressions were discovered after merging with master due to way the save state data was saved within the movie file.
This change uses the same functions used in the GUI to create savestates to create a compressed save-state file. Eventually this could be re-incorporated back into the recording file and could be backwards compatible.
Adds a separate author line for pnach entries. This will allow to separate comments with other info such as pnach purposes.
GameDB could be updated with the new changes for a more slick and clean look.
VuClipFlag hack is only used for SuperVU1 Recompiler, let's avoid enabling it when it's not used.
Previously a console message would be provided stating that "(GameDB) Enabled Gamefix: VuClipFlagHack" even when the user is using the Interpreter (or) MicroVU Recompiler. The following patch prevents such confusions.
Old presets touched parts such as VU clamping for what seems to be no good reason at all, and applied some rather dodgy combinations of EE cyclerate and cycle skipping. Also added MTVU to presets 3-6.
Pnach had a limit that, while increased at some point to 2048, is still not enough for everyone. This uses a vector to avoid that limit, as there is no reason to keep it and people loading pnach with over 2048 patches most likely know what they are doing.
Inipatch group member was also unused in the whole codebase so I did some cleanup and removed it.
gui: Move the Off option to the top instead of bottom for FMV Aspect Ratio Override.
It's not ideal for it to be at the bottom.
Adjust the logic how the button works, there was an issue if both aspect ratios
were the same the aspect ratio chosen was selected to Fill.
Also adjust the code so the button better responds to realtime toggling.
If disabling the button realtime during a fmv then the normal aspect ratio
should be chosen.
There's still an issue left where if the fmv button is changed first and then
the aspect ratio button the button would would not work. Switching it off
seems to reset and make it work again.
Change "Switch to 4:3 aspect ratio when an FMV plays" to
"FMV Aspect Ratio Override" drop down menu.
The option temporarily changes the Aspect Ratio to either
16:9 or 4:3 depending on the option that is selected,
and depending on the Window Aspect ratio that is selected.
Original commit:
8d471e1f16
Co author: lightningterror.
This pull request is for the pending reorganization of the folder structure on GSdx,
making it better organized and easier to work with.
Also remove unused GSTextureFX.cpp file.
Currently, none of the EE kernel is viewable from the debugger, which poses issues when debugging code that makes use of syscalls. This PR should allow the memory region 0x80000000 - 0x800FFFFF to have readable disassembly.