From 4840d1db93b3f6c51c29c0d6f820608453d36e4e Mon Sep 17 00:00:00 2001 From: RedDevilus Date: Fri, 12 Mar 2021 03:07:59 +0100 Subject: [PATCH] Misc: cleanup MD codacy issues Not the worst issues, we could still block or revise the styling rules where it's complaining. --- .github/ISSUE_TEMPLATE/bug_report.md | 9 +- .github/ISSUE_TEMPLATE/feature_request.md | 1 - CONTRIBUTING.md | 29 +++-- README.md | 26 ++--- pcsx2/Docs/Debugger.md | 76 ++++++------ pcsx2/Docs/GameIndex.md | 135 ++++++++++++---------- pcsx2/Docs/PCSX2_FAQ.md | 116 +++++++++---------- pcsx2/Docs/README.md | 13 ++- pcsx2/USB/readerwriterqueue/LICENSE.md | 5 +- pcsx2/USB/readerwriterqueue/README.md | 25 ++-- 10 files changed, 223 insertions(+), 212 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a0dee5e4bb..313bb47928 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,4 +1,3 @@ ---- name: Bug report about: Found a problem? Help us improve. title: "[BUG] Title" @@ -72,10 +71,10 @@ assignees: '' **System Info (please complete the following information):** - - PCSX2 Revision: - - OS: - - CPU: - - GPU: + - PCSX2 Revision: + - OS: + - CPU: + - GPU: **Logs and Dumps** diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index dc28d97a6c..2d9d94b3c2 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,4 +1,3 @@ ---- name: Feature request about: Suggest a feature title: "[Feature Request] Title" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21c5bd7dd7..3006ce7abd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,28 +1,25 @@ #So you want to contribute to PCSX2? Great! As a first step, please review these links as they'll help you understand how the development of the PCSX2 works. These pages are all found on the github [wiki](https://github.com/PCSX2/pcsx2/wiki). You should probably also check out the [forums](http://forums.pcsx2.net/index.php). -* [Just Starting Out](#just-starting-out) -* [Issue Reporting](#issue-reporting) -* [General Documentation And Coding Strategies](#general-documentation-and-coding-strategies) -* [Tasks](#tasks) - +* [Just Starting Out](#just-starting-out) +* [Issue Reporting](#issue-reporting) +* [General Documentation And Coding Strategies](#general-documentation-and-coding-strategies) +* [Tasks](#tasks) ## Just Starting Out -* If you're unfamilar with git, check out this [brief introduction to Git](https://github.com/PCSX2/pcsx2/wiki/Git-survival-guide) -* [How to build PCSX2 for Linux](https://github.com/PCSX2/pcsx2/wiki/Installing-on-Linux) - +* If you're unfamilar with git, check out this [brief introduction to Git](https://github.com/PCSX2/pcsx2/wiki/Git-survival-guide) +* [How to build PCSX2 for Linux](https://github.com/PCSX2/pcsx2/wiki/Installing-on-Linux) ## Issue Reporting -* [How to write a useful issue](https://github.com/PCSX2/pcsx2/wiki/How-to-create-useful-and-valid-issues) - +* [How to write a useful issue](https://github.com/PCSX2/pcsx2/wiki/How-to-create-useful-and-valid-issues) ## General Documentation And Coding Strategies -* [Commenting Etiquette](https://github.com/PCSX2/pcsx2/wiki/Commenting-Etiquette) -* [Coding style](https://github.com/PCSX2/pcsx2/wiki/Code-Formatting-Guidelines) -* [wxWidgets coding stategies](https://github.com/PCSX2/pcsx2/wiki/wxWidgets-Coding-Strategies) +* [Commenting Etiquette](https://github.com/PCSX2/pcsx2/wiki/Commenting-Etiquette) +* [Coding style](https://github.com/PCSX2/pcsx2/wiki/Code-Formatting-Guidelines) +* [wxWidgets coding stategies](https://github.com/PCSX2/pcsx2/wiki/wxWidgets-Coding-Strategies) ## Tasks -* [Todo List](https://github.com/PCSX2/pcsx2/wiki/Contributing-(TODO-List)) -* [Issues](https://github.com/PCSX2/pcsx2/issues) -* [A collection of ideas to improve GSdx OGL](https://github.com/PCSX2/pcsx2/wiki/Todo-List) +* [Todo List](https://github.com/PCSX2/pcsx2/wiki/Contributing-(TODO-List)) +* [Issues](https://github.com/PCSX2/pcsx2/issues) +* [A collection of ideas to improve GSdx OGL](https://github.com/PCSX2/pcsx2/wiki/Todo-List) diff --git a/README.md b/README.md index a5bd8435ae..f381d5ba25 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ PCSX2 is a free and open-source PlayStation 2 (PS2) emulator. Its purpose is to emulate the PS2's hardware, using a combination of MIPS CPU [Interpreters](), [Recompilers](https://en.wikipedia.org/wiki/Dynamic_recompilation) and a [Virtual Machine](https://en.wikipedia.org/wiki/Virtual_machine) which manages hardware states and PS2 system memory. This allows you to play PS2 games on your PC, with many additional features and benefits. -# Project Details +## Project Details The PCSX2 project has been running for more than ten years. Past versions could only run a few public domain game demos, but newer versions can run most games at full speed, including popular titles such as Final Fantasy X and Devil May Cry 3. Visit the [PCSX2 compatibility list](https://pcsx2.net/compatibility-list.html) to check the latest compatibility status of games (with more than 2500 titles tested), or ask for help in the [official forums](https://forums.pcsx2.net/). @@ -18,9 +18,9 @@ Installers and binaries for both Windows and Linux are available from [our websi Development builds are also available from [our website](https://pcsx2.net/download/development.html). -# System Requirements +## System Requirements -#### Minimum +### Minimum | Operating System | CPU | GPU | RAM | | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | @@ -28,7 +28,7 @@ Development builds are also available from [our website](https://pcsx2.net/downl _Note: Recommended Single Thread Performance is based on moderately complex games. Games that pushed the PS2 hardware to its limits will struggle on CPUs at this level. Some release titles and 2D games which underutilized the PS2 hardware may run on CPUs rated as low as 1200. A quick reference for CPU **intensive games**: [Wiki](https://wiki.pcsx2.net/Category:CPU_intensive_games), [Forum](https://forums.pcsx2.net/Thread-LIST-The-Most-CPU-Intensive-Games) and CPU **light** games: [Forum](https://forums.pcsx2.net/Thread-LIST-Games-that-don-t-need-a-strong-CPU-to-emulate)_ -#### Recommended +### Recommended | Operating System | CPU | GPU | RAM | | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | @@ -36,17 +36,17 @@ _Note: Recommended Single Thread Performance is based on moderately complex game _Note: Recommended GPU is based on 3x Internal, ~1080p resolution requirements. Higher resolutions will require stronger cards; 6x Internal, ~4K resolution will require a [PassMark G3D Mark](https://www.videocardbenchmark.net/high_end_gpus.html) rating around 12000 (GeForce GTX 1070 Ti). Just like CPU requirements, this is also highly game dependent. A quick reference for GPU **intensive games**: [Wiki](https://wiki.pcsx2.net/Category:GPU_intensive_games)_ -## Technical Notes +### Technical Notes -- You need the [Visual C++ 2019 x86 Redistributables](https://support.microsoft.com/en-us/help/2977003/) to run PCSX2. -- Windows XP and Direct3D9 support was dropped after stable release 1.4.0. -- Windows 7 and Windows 8 support was dropped after stable release 1.6.0. -- Make sure to update your operating system and drivers to ensure you have the best experience possible. Having a newer GPU is also recommended so you have the latest supported drivers. -- Because of copyright issues, and the complexity of trying to work around it, you need a BIOS dump extracted from a legitimately-owned PS2 console to use the emulator. For more information about the BIOS and how to get it from your console, visit [this page](https://pcsx2.net/config-guide.html#Bios). -- PCSX2 uses two CPU cores for emulation by default. A third core can be used via the MTVU speed hack, which is compatible with most games. This can be a significant speedup on CPUs with 3+ cores, but it may be a slowdown on GS-limited games (or on CPUs with fewer than 2 cores). Software renderers will then additionally use however many rendering threads it is set to and will need higher core counts to run efficiently. -- Requirements benchmarks are based on a statistic from the Passmark CPU bench marking software. When we say "STR", we are referring to Passmark's "Single Thread Rating" statistic. You can look up your CPU on [Passmark's website for CPUs](https://cpubenchmark.net) to see how it compares to PCSX2's requirements. +- You need the [Visual C++ 2019 x86 Redistributables](https://support.microsoft.com/en-us/help/2977003/) to run PCSX2. +- Windows XP and Direct3D9 support was dropped after stable release 1.4.0. +- Windows 7 and Windows 8 support was dropped after stable release 1.6.0. +- Make sure to update your operating system and drivers to ensure you have the best experience possible. Having a newer GPU is also recommended so you have the latest supported drivers. +- Because of copyright issues, and the complexity of trying to work around it, you need a BIOS dump extracted from a legitimately-owned PS2 console to use the emulator. For more information about the BIOS and how to get it from your console, visit [this page](https://pcsx2.net/config-guide.html#Bios). +- PCSX2 uses two CPU cores for emulation by default. A third core can be used via the MTVU speed hack, which is compatible with most games. This can be a significant speedup on CPUs with 3+ cores, but it may be a slowdown on GS-limited games (or on CPUs with fewer than 2 cores). Software renderers will then additionally use however many rendering threads it is set to and will need higher core counts to run efficiently. +- Requirements benchmarks are based on a statistic from the Passmark CPU bench marking software. When we say "STR", we are referring to Passmark's "Single Thread Rating" statistic. You can look up your CPU on [Passmark's website for CPUs](https://cpubenchmark.net) to see how it compares to PCSX2's requirements. -# Screenshots +### Screenshots ![Okami](https://pcsx2.net/images/stories/gitsnaps/okami_n1s.jpg "Okami") ![Final Fantasy XII](https://pcsx2.net/images/stories/gitsnaps/finalfantasy12izjs_s2.jpg "Final Fantasy XII") ![Shadow of the Colossus](https://pcsx2.net/images/stories/gitsnaps/sotc6s2.jpg "Shadow of the Colossus") ![DragonBall Z Budokai Tenkaichi 3](https://pcsx2.net/images/stories/gitsnaps/DBZ-BT-3s.jpg "DragonBall Z Budokai Tenkaichi 3") ![Kingdom Hearts 2: Final Mix](https://pcsx2.net/images/stories/gitsnaps/kh2_fm_n1s2.jpg "Kingdom Hearts 2: Final Mix") ![God of War 2](https://pcsx2.net/images/stories/gitsnaps/gow2_s2.jpg "God of War 2") ![Metal Gear Solid 3: Snake Eater](https://pcsx2.net/images/stories/gitsnaps/mgs3-1_s2.jpg "Metal Gear Solid 3: Snake Eater") ![Rogue Galaxy](https://pcsx2.net/images/stories/gitsnaps/rogue_galaxy_n1s2.jpg "Rogue Galaxy") diff --git a/pcsx2/Docs/Debugger.md b/pcsx2/Docs/Debugger.md index d4646eb801..9779451193 100644 --- a/pcsx2/Docs/Debugger.md +++ b/pcsx2/Docs/Debugger.md @@ -1,51 +1,51 @@ --- title: "PCSX2 - Debugger Documentation" -date: "2020" +date: "2021" footer-left: "[Document Source](https://github.com/PCSX2/pcsx2/blob/{LATEST-GIT-TAG}/pcsx2/Docs/Debugger.md)" urlcolor: "cyan" ... # Debugger Key Bindings -## Disassembly View: - - `Ctrl+G` - goto - - `Ctrl+E` - edit breakpoint - - `Ctrl+D` - enable/disable breakpoint - - `Ctrl+B` - add breakpoint - - `Right Arrow` - follow branch/position memory view to accessed address - - `Left Arrow` - go back one branch level/goto pc - - `Up Arrow` - move cursor up one line - - `Down Arrow` - move cursor down one line - - `Page Up` - move visible area up one page - - `Page Down` - move visible area down one page - - `F10` - step over - - `F11` - step into - - `Tab` - toggle display symbols - - `Left Click` - select line/toggle breakpoint if line is already highlighted - - `Right Click` - open context menu +## Disassembly View +- `Ctrl+G` - goto +- `Ctrl+E` - edit breakpoint +- `Ctrl+D` - enable/disable breakpoint +- `Ctrl+B` - add breakpoint +- `Right Arrow` - follow branch/position memory view to accessed address +- `Left Arrow` - go back one branch level/goto pc +- `Up Arrow` - move cursor up one line +- `Down Arrow` - move cursor down one line +- `Page Up` - move visible area up one page +- `Page Down` - move visible area down one page +- `F10` - step over +- `F11` - step into +- `Tab` - toggle display symbols +- `Left Click` - select line/toggle breakpoint if line is already highlighted +- `Right Click` - open context menu ## Memory View: - - `Ctrl+G` - goto - - `Ctrl+B` - add breakpoint - - `Left Arrow` - move cursor back one byte/nibble - - `Right Arrow` - move cursor ahead one byte/nibble - - `Up Arrow` - move cursor up one line - - `Down Arrow` - move cursor down one line - - `Page Up` - move cursor up one page - - `Page Down` - move cursor down one page - - `0-9,A-F` - overwrite hex nibble - - `any` - overwrite ansi byte - - `Left Click` - select byte/nibble - - `Right Click` - open context menu - - `Ctrl+Mouse Wheel` - zoom memory view - - `Esc` - return to previous goto address - - `Ctrl+V` - paste a hex string into memory +- `Ctrl+G` - goto +- `Ctrl+B` - add breakpoint +- `Left Arrow` - move cursor back one byte/nibble +- `Right Arrow` - move cursor ahead one byte/nibble +- `Up Arrow` - move cursor up one line +- `Down Arrow` - move cursor down one line +- `Page Up` - move cursor up one page +- `Page Down` - move cursor down one page +- `0-9,A-F` - overwrite hex nibble +- `any` - overwrite ansi byte +- `Left Click` - select byte/nibble +- `Right Click` - open context menu +- `Ctrl+Mouse Wheel` - zoom memory view +- `Esc` - return to previous goto address +- `Ctrl+V` - paste a hex string into memory -## Breakpoint List: +## Breakpoint List - - `Up Arrow` - select previous item - - `Down Arrow` - select next item - - `Delete` - remove selected breakpoint - - `Enter/Return` - edit selected breakpoint - - `Space` - toggle enable state of selected breakpoint +- `Up Arrow` - select previous item +- `Down Arrow` - select next item +- `Delete` - remove selected breakpoint +- `Enter/Return` - edit selected breakpoint +- `Space` - toggle enable state of selected breakpoint diff --git a/pcsx2/Docs/GameIndex.md b/pcsx2/Docs/GameIndex.md index 685639fab6..ed64138ec7 100644 --- a/pcsx2/Docs/GameIndex.md +++ b/pcsx2/Docs/GameIndex.md @@ -1,6 +1,6 @@ --- title: "PCSX2 - GameDB Documentation" -date: "2020" +date: "2021" footer-left: "[Document Source](https://github.com/PCSX2/pcsx2/blob/{LATEST-GIT-TAG}/pcsx2/Docs/GameIndex.md)" urlcolor: "cyan" ... @@ -70,8 +70,8 @@ SERIAL-12345: # !required! Serial number for the game, this is how games are loo Both the serial numbers for the games, and the CRC patches are at the moment not case-sensitive and will be looked up with their lowercase representations. **However, stylistically, uppercase is preferred and may be enforced and migrated to in the future**. For example: -- `SLUS-123` will be stored and looked up in the GameDB as `slus-123` -- Likewise, a CRC with upper-case hex `23AF6876` will be stored and looked up as `23af6876` +- `SLUS-123` will be stored and looked up in the GameDB as `slus-123` +- Likewise, a CRC with upper-case hex `23AF6876` will be stored and looked up as `23af6876` However, YAML is case-sensitive and will allow multiple serials that only differ on casing. To prevent mistakes, this will also throw a validation error and the first entry will be the one that wins. @@ -83,80 +83,99 @@ The rounding modes are numerically based. These modes can be specified either on the **EE** (`eeRoundMode`) or **VU** (`vuRoundMode`) -### Options +### Options for rounding -- `0` = **Nearest** -- `1` = **Negative Infinity** -- `2` = **Positive Infinity** -- `3` = **Chop (Zero)** - - The is the common default +- `0` = **Nearest** +- `1` = **Negative Infinity** +- `2` = **Positive Infinity** +- `3` = **Chop (Zero)** +- The is the common default ## Clamping Modes The clamp modes are also numerically based. -- `eeClampMode` refers to the EE's FPU co-processor -- `vuClampMode` refers to the VU's and COP2 (VU0 Macro-mode) +- `eeClampMode` refers to the EE's FPU co-processor +- `vuClampMode` refers to the VU's and COP2 (VU0 Macro-mode) -### Options +### Options for clamping -- `0` = **Disables** clamping completely -- `1` = Clamp **Normally** (only clamp results) -- `2` = Clamp **Extra** (clamp results as well as operands) -- `3` = **Full Clamping** for FPU / Extra+Preserve Sign Clamping for VU +- `0` = **Disables** clamping completely +- `1` = Clamp **Normally** (only clamp results) +- `2` = Clamp **Extra** (clamp results as well as operands) +- `3` = **Full Clamping** for FPU / Extra+Preserve Sign Clamping for VU ## Game Fixes These values are case-sensitive so take care. If you incorrectly specify a GameFix, you will get a validation error on startup. Any invalid game-fixes will be dropped from the game's list of fixes. -### Options +### Options for Game Fixes -- `VuAddSubHack` - - Tri-ace games, they use an encryption algorithm that requires VU ADDI opcode to be bit-accurate. -- `FpuCompareHack` - - Digimon Rumble Arena 2, fixes spinning/hanging on intro-menu. -- `FpuMulHack` - - Tales of Destiny hangs. -- `FpuNegDivHack` - - Gundam games messed up camera-view. Dakar 2's sky showing over 3D. Others... -- `XGKickHack` - - Erementar Gerad, adds more delay to VU XGkick instructions. Corrects the color of some graphics, but breaks Tri-ace -- `IPUWaitHack` - - FFX FMV, makes GIF flush before doing IPU work. Fixes bad graphics overlay. -- `EETimingHack` - - General purpose timing hack. -- `SkipMPEGHack` - - Finds sceMpegIsEnd pattern in games and then recompiles code to say the videos are finished. -- `OPHFlagHack` - - Bleach Bankais and others. -- `DMABusyHack` - - Mana Khemia, Metal Saga. Denies writes to the DMAC when it's busy. -- `VIFFIFOHack` - - Transformers Armada, Test Drive Unlimited. Fixes slow booting issue. -- `VIF1StallHack` - - SOCOM II HUD and Spy Hunter loading hang. -- `GIFFIFOHack` - - Enables the GIF FIFO. Needed for Wallace & Grommit, Hot Wheels, DJ Hero. -- `GoemonTlbHack` - - Preload TLB hack to avoid tlb miss on Goemon. -- `ScarfaceIbitHack` - - VU I bit Hack avoid constant recompilation (Scarface The World Is Yours). -- `CrashTagTeamRacingIbitHack` - - VU I bit Hack avoid constant recompilation (Crash Tag Team Racing). -- `VU0KickstartHack` - - Let VU0 run ahead to fix some timing issues +- `VuAddSubHack` + - Tri-ace games, they use an encryption algorithm that requires VU ADDI opcode to be bit-accurate. + +- `FpuCompareHack` + - Digimon Rumble Arena 2, fixes spinning/hanging on intro-menu. + +- `FpuMulHack` + - Tales of Destiny hangs. + +- `FpuNegDivHack` + - Gundam games messed up camera-view. Dakar 2's sky showing over 3D. Others... + +- `XGKickHack` + - Erementar Gerad, adds more delay to VU XGkick instructions. Corrects the color of some graphics, but breaks Tri-ace. + +- `IPUWaitHack` + - FFX FMV, makes GIF flush before doing IPU work. Fixes bad graphics overlay. + +- `EETimingHack` + - General purpose timing hack. + +- `SkipMPEGHack` + - Finds sceMpegIsEnd pattern in games and then recompiles code to say the videos are finished. + +- `OPHFlagHack` + - Bleach Bankais and others. + +- `DMABusyHack` + - Mana Khemia, Metal Saga. Denies writes to the DMAC when it's busy. + +- `VIFFIFOHack` + - Transformers Armada, Test Drive Unlimited. Fixes slow booting issue. + +- `VIF1StallHack` + - SOCOM II HUD and Spy Hunter loading hang. + +- `GIFFIFOHack` + - Enables the GIF FIFO. Needed for Wallace & Grommit, Hot Wheels, DJ Hero. + +- `GoemonTlbHack` + - Preload TLB hack to avoid tlb miss on Goemon. + +- `ScarfaceIbitHack` + - VU I bit Hack avoid constant recompilation (Scarface The World Is Yours). + +- `CrashTagTeamRacingIbitHack` + - VU I bit Hack avoid constant recompilation (Crash Tag Team Racing). + +- `VU0KickstartHack` + - Let VU0 run ahead to fix some timing issues ## SpeedHacks These values are in a key-value format, where the value is assumed to be an integer. -### Options +### Options for SpeedHacks -- `mvuFlagSpeedHack` - - Accepted Values - `0` / `1` - - Katamari Damacy have weird speed bug when this speed hack is enabled (and it is by default) -- `InstantVU1SpeedHack` - - Accepted Values - `0` / `1` - - Games such as Parappa the Rapper 2 need VU1 to sync, so you can force disable the speedhack here +- `mvuFlagSpeedHack` +- Accepted Values - `0` / `1` +- Katamari Damacy have weird speed bug when this speed hack is enabled (and it is by default) + + -### My CPU isn't being used 100%. Why? +### Question 7: Why isn't my CPU not using 100% of it's power The CPU load as reported in software such as Windows' Task Manager is usually a *summation* of CPU usage, across *all* cores. Software can only use the resources of the individual CPU cores it is actually running on, and cannot "borrow" CPU time from other cores. -### Will SLI or Crossfire help with performance? +### Question 8: Will SLI or Crossfire help with performance No. PCSX2 does not use or require SLI or Crossfire. -### How do I check if a game is playable? +### Question 9: How do I check if a game is playable The PCSX2 website has a [compatibility list](https://pcsx2.net/compatibility-list.html) with every game that has been tested. -### Do PS1 (PSX) games work on PCSX2? +### Question 10: Do PS1 (PSX) games work on PCSX2 #### If you want to enjoy your PS1 games without issues No, they will not work. Please use a proper PS1 emulator, such as Mednafen. @@ -77,32 +76,32 @@ PS1 games may work on PCSX2, but compatibility is very limited. Specific setting *While we encourage discussion about PS1 games and improving compatibility, bug reports are NOT being accepted for PS1 games. Any reports for PS1 games will be closed immediately as invalid.* -### My game doesn't work like it did in an earlier PCSX2 version. Why? +### Question 11: Why does my game not work like it did in an earlier PCSX2 version One change to the emulator may fix one game, but cause problems for another. If the issue is severe and not fixable with different settings, you can always revert back to the last known PCSX2 version to work, and report the build number that broke the game. [Development builds](https://pcsx2.net/download/development.html) are very helpful for finding the exact change that caused a regression. -### Why is PCSX2 slow? +### Question 12: Why is PCSX2 slow The PlayStation 2 is a complex console, and this complexity substantially raises the PC requirements to emulate it at full speed, accurately. [This forum thread](https://forums.pcsx2.net/Thread-Why-is-PCSX2-slow) helps explain some of the technical reasons behind it, and our current guidelines for PC requirements are listed above. -### Where do I get a PS2 BIOS? +### Question 13: Where do I get a PS2 BIOS You have to dump the BIOS files from your PlayStation 2 console. There is a BIOS dumper tool [available on the PCSX2 website](https://pcsx2.net/download/releases/tools.html) to do this. If you need a guide, check the bottom of this FAQ for links to BIOS guides.
-### Where do I get PS2 games? +### Question 14: Where do I get PS2 games You can use games from your personal collection of discs, purchase them from local stores that resell old games, or look online at sites like eBay or Amazon. -### Can I use PS2 discs directly with PCSX2? +### Question 15: Can I use PS2 discs directly with PCSX2 Yes. However, some games have speed problems, because unlike the PS2 which would constantly keep the disc spinning, PCSX2 will not do the same to your PC's disc drive. It is recommended to instead dump your games to ISO images. ImgBurn is a popular software to do this with, and we recommend [installing ImgBurn by using Ninite](https://ninite.com) to avoid any issues with the ImgBurn installer. -### How do I play a game? +### Question 16: How do I play a game If you are using an ISO image: -1) Click the CDVD menu -2) Check that "ISO" mode is selected. -3) Go to "ISO Selector", then Browse. -4) Locate your ISO image. -5) Click the System menu, then Boot ISO. - +1) Click the CDVD menu +2) Check that "ISO" mode is selected. +3) Go to "ISO Selector", then Browse. +4) Locate your ISO image. +5) Click the System menu, then Boot ISO. + If you are using a disc: 1) Click the CDVD menu @@ -110,16 +109,16 @@ If you are using a disc: 3) Click "Plugin Menu", then "Plugin Settings". Verify your disc drive shows up in the menu. 4) Click the System menu, then Boot CDVD. -### What is the difference between Full and Fast boot? +### Question 17: What is the difference between Full and Fast boot Full boot will launch the PS2 BIOS, which will then launch the game. Some games need this for multi-language settings or times to work. Fast boot will directly mount and launch the game without first launching the PS2 BIOS. Though slightly faster, this may cause some multi-language games to boot into the wrong language, or games that use the clock to give inaccurate times. -### How do I compile the PCSX2 source code? -* [Windows compile guide](https://wiki.pcsx2.net/PCSX2_Documentation/Compiling_on_Windows) -* [Linux compile guide](https://wiki.pcsx2.net/PCSX2_Documentation/Compiling_on_Linux) +### Question 18: How do I compile the PCSX2 source code +* [Windows compile guide](https://wiki.pcsx2.net/PCSX2_Documentation/Compiling_on_Windows) +* [Linux compile guide](https://wiki.pcsx2.net/PCSX2_Documentation/Compiling_on_Linux) -### When will the next version be released? +### Question 19: When will the next version be released It will be released when it is ready. Please don't waste your time and ours asking when.
@@ -127,24 +126,25 @@ It will be released when it is ready. Please don't waste your time and ours aski --- ## PCSX2 Configuration -### How do I configure the emulator? +### Question 20: How do I configure the emulator Refer to the Configuration_Guide.pdf (located in the same folder as this FAQ) for an initial setup guide and solution manual to some common known issues. -### I see framelimiter options. What are those? Will they boost my FPS? +### Question 21: Will framelimiter options increase my FPS The framelimiter has a few options that allow you to alter the pacing of your games. This will directly affect the game's speed itself, NOT your framerate. Useful for speeding through sections of games, or slowing down for precision. -* Turbo (Tab): Bumps the framelimiter to 200%, allowing a game to run up to 2x faster than normal. -* Slowmo (Shift + Tab): Drops the framelimiter to 50%, restricting a game to 0.5x its normal speed. -* Framelimiter Disabled (F4): Completely disables the framelimiter. The game will run as fast as your PC can push it. +* Turbo (Tab): Bumps the framelimiter to 200%, allowing a game to run up to 2x faster than normal. +* Slowmo (Shift + Tab): Drops the framelimiter to 50%, restricting a game to 0.5x its normal speed. +* Framelimiter Disabled (F4): Completely disables the framelimiter. The game will run as fast as your PC can push it. Some settings are greyed out; these are advanced counters that should only be modified by those who understand the effects they have on a game's playback speed and frame pacing. -### What is the normal speed for a PlayStation 2 game? -* NTSC games will play at 59.94 FPS -* PAL games will play at 50 FPS +### Question 22: What is the normal speed for a PlayStation 2 game +* NTSC games will play at 59.94 FPS +* PAL games will play at 50 FPS +* Keep in mind that there is a difference between the internal framerate (iFPS) and what PCSX2 shows as virtual framerate (vFPS). These framerates are what the PlayStation 2 console would push to a real TV through its video cable. A game itself, typically, internally generates only half of those frames, and repeats frames to fill the gaps. This is why a "full speed" game may not "feel like 60 FPS". The console's "speed" (meaning AI, sound, physics, *everything*) is tied to the playback framerate, which is what PCSX2 reports as its "FPS". -### What are Gamefixes? +### Question 23: What are Gamefixes Gamefixes are specialized fixes built into PCSX2 for specific games. Gamefixes mostly fix core emulation problems that would crash or soft lock a game, rather than graphical or performance issues. By default, the "System > Automatic Gamefixes" option is enabled, meaning any games that need gamefixes will have them automatically applied, regardless of what gamefix settings you have enabled. Most games will not need gamefixes, however if your game is having issues, you can try manually enabling them in Emulation Settings. @@ -153,26 +153,26 @@ Gamefixes are not FPS boosters; more often than not, they will degrade performan
-### Are Speedhacks safe? +### Question 24: Are Speedhacks safe As the name says, speedhacks are hacks to make things faster. They will speed up games, but risk causing stability problems or crashing some games. PCSX2 ships with some speedhacks enabled in the default "Safe" preset. This selection of speedhacks has been reviewed thoroughly and determined to be safe for nearly all games. *Bug reports of issues caused by speedhacks will NOT be accepted, and will be immediately closed as invalid.* -### What are all these EE/IOP and VU options? +### Question 25: What are all these EE/IOP and VU options The PS2 EE, IOP and VU processors are substantially different from a PC CPU and require different rounding and clamping modes to do math accurately. Most games work fine on the default options, but some games might need a different setting. You can check the [PCSX2 Wiki](https://wiki.pcsx2.net/Category:Games) to see if your game needs an alternate setting, or check the [PCSX2 Forums](https://forums.pcsx2.net/) to see if anyone else has posted about it there. -### What are PCSX2 plugins? +### Question 26: What are PCSX2 plugins PCSX2 uses a plugin framework for various sections of the emulator. A plugin is a small, incomplete piece of software that, when plugged in to another piece of software, provides some sort of additional function. PCSX2 uses plugins for: -* Video (GSdx) -* Controls (Lilypad for Windows, OnePad for Linux) -* USB (No plugin included) +* Video (GSdx) +* Controls (Lilypad for Windows, OnePad for Linux) +* USB (No plugin included) Each plugin will have its own Plugin Settings menu, and can be found under the Config menu. -### Why is my sound garbled up? +### Question 27: Why is my sound garbled up PCSX2's default audio playback mode is Timestretch, which will attempt to stretch sounds out when the emulator is unable to play at full speed, to fill the gaps in the sound playback and prevent even harsher stutters. If you are unable to get the game running at full speed or an acceptable speed where timestretching does not ruin the sound, you can try changing from Timestretch to Async, but this may break games. -### I have a controller here. Is it supported? +### Question 28: Is my controller supported For Windows users running LilyPad, PCSX2 will ship with XInput bindings already created. This will automatically work with an Xbox One controller or any other XInput controller. Bindings can easily be made for DirectInput controllers, such as Xbox 360 controllers. PS3, PS4, or Switch Pro controllers should be set up using a compatibility software, such as Steam's Big Picture mode. For Linux users running OnePad, PCSX2 will automatically detect and bind controls to any recognizable controller. If your controller is not automatically detected, you can try using Onepad Legacy to manually bind controls for it. @@ -183,17 +183,17 @@ For Linux users running OnePad, PCSX2 will automatically detect and bind control ## Useful Links ### BIOS Dumping Guides -* [pgert's guide to BIOS and memory card tools](https://forums.pcsx2.net/Thread-An-orientation-through-some-of-the-PCSX2-BIOS-memcard-tools-Windows?pid=183709#pid183709) -* [One of the original BIOS dumping guides, originally from ngemu](https://forums.pcsx2.net/Thread-Guide-to-Dumping-Your-PS2-Bios-over-LAN) +* [pgert's guide to BIOS and memory card tools](https://forums.pcsx2.net/Thread-An-orientation-through-some-of-the-PCSX2-BIOS-memcard-tools-Windows?pid=183709#pid183709) +* [One of the original BIOS dumping guides, originally from ngemu](https://forums.pcsx2.net/Thread-Guide-to-Dumping-Your-PS2-Bios-over-LAN) ### Memory Card and Save File Guides -* [pgert's guide to BIOS and memory card tools](https://forums.pcsx2.net/Thread-An-orientation-through-some-of-the-PCSX2-BIOS-memcard-tools-Windows?pid=183709#pid183709) -* [An older guide on merging GameFAQs saves into PCSX2 memory cards](https://forums.pcsx2.net/Thread-How-to-use-the-myMC-tool-to-import-export-saves-from-PCSX2). Note, while the concepts in this guide are accurate, the MyMC software is old, and probably will not run on your PC without some tinkering. -* [MyMC+, a newer replacement for the original MyMC referenced in the above guide](https://github.com/thestr4ng3r/mymcplus), +* [pgert's guide to BIOS and memory card tools](https://forums.pcsx2.net/Thread-An-orientation-through-some-of-the-PCSX2-BIOS-memcard-tools-Windows?pid=183709#pid183709) +* [An older guide on merging GameFAQs saves into PCSX2 memory cards](https://forums.pcsx2.net/Thread-How-to-use-the-myMC-tool-to-import-export-saves-from-PCSX2). Note, while the concepts in this guide are accurate, the MyMC software is old, and probably will not run on your PC without some tinkering. +* [MyMC+, a newer replacement for the original MyMC referenced in the above guide](https://github.com/thestr4ng3r/mymcplus), ### PCSX2 Cheats and Patches (PNACH) -* [The currently accepted master-guide to cheats and patches](https://forums.pcsx2.net/Thread-How-PNACH-files-work-2-0). -* [The original guide, outdated](https://forums.pcsx2.net/Thread-How-pnach-files-work). +* [The currently accepted master-guide to cheats and patches](https://forums.pcsx2.net/Thread-How-PNACH-files-work-2-0). +* [The original guide, outdated](https://forums.pcsx2.net/Thread-How-pnach-files-work). ### PCSX2 with Netplay Support -* [The latest Netplay fork of PCSX2](https://forums.pcsx2.net/Thread-PCSX2-Online-Plus). \ No newline at end of file +* [The latest Netplay fork of PCSX2](https://forums.pcsx2.net/Thread-PCSX2-Online-Plus). \ No newline at end of file diff --git a/pcsx2/Docs/README.md b/pcsx2/Docs/README.md index 36e37e630f..9f4c410b0a 100644 --- a/pcsx2/Docs/README.md +++ b/pcsx2/Docs/README.md @@ -1,7 +1,7 @@ # Documentation Artifacts -- Source Directory: `/pcsx2/pcsx2/Docs` -- Release Directory: `/pcsx2/bin/Docs` +- Source Directory: `/pcsx2/pcsx2/Docs` +- Release Directory: `/pcsx2/bin/Docs` Docs should be written in the source directory first in an easily editable format. Currently, Markdown is the preferred format due to its simple markup and easy portability. GitHub's built-in preview functions are a huge benefit as well. @@ -13,10 +13,11 @@ Visual Studio Code is a cross platform text editor/development platform that can To generate the documentation artifacts into the release directory, you will require the following: -- `pandoc` - - Converts from Markdown to PDF -- `miktex` or something similar that provides `pdflatex` - - this is what generates the PDF file +- `pandoc` + - Converts from Markdown to PDF + +- `miktex` or something similar that provides `pdflatex` + - this is what generates the PDF file #### Linux / MacOS diff --git a/pcsx2/USB/readerwriterqueue/LICENSE.md b/pcsx2/USB/readerwriterqueue/LICENSE.md index 76d802eccd..6d9383648f 100644 --- a/pcsx2/USB/readerwriterqueue/LICENSE.md +++ b/pcsx2/USB/readerwriterqueue/LICENSE.md @@ -11,9 +11,10 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, this list of +- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, this list of + +- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. diff --git a/pcsx2/USB/readerwriterqueue/README.md b/pcsx2/USB/readerwriterqueue/README.md index a2c10faf45..d104b2d1e0 100644 --- a/pcsx2/USB/readerwriterqueue/README.md +++ b/pcsx2/USB/readerwriterqueue/README.md @@ -7,21 +7,19 @@ you could use this queue completely from a single thread if you wish (but that w Note: If you need a general-purpose multi-producer, multi-consumer lock free queue, I have [one of those too][mpmc]. - ## Features -- [Blazing fast][benchmarks] -- Compatible with C++11 (supports moving objects instead of making copies) -- Fully generic (templated container of any type) -- just like `std::queue`, you never need to allocate memory for elements yourself +- [Blazing fast][benchmarks] +- Compatible with C++11 (supports moving objects instead of making copies) +- Fully generic (templated container of any type) -- just like `std::queue`, you never need to allocate memory for elements yourself (which saves you the hassle of writing a lock-free memory manager to hold the elements you're queueing) -- Allocates memory up front, in contiguous blocks -- Provides a `try_enqueue` method which is guaranteed never to allocate memory (the queue starts with an initial capacity) -- Also provides an `enqueue` method which can dynamically grow the size of the queue as needed -- Also provides `try_emplace`/`emplace` convenience methods -- Has a blocking version with `wait_dequeue` -- Completely "wait-free" (no compare-and-swap loop). Enqueue and dequeue are always O(1) (not counting memory allocation) -- On x86, the memory barriers compile down to no-ops, meaning enqueue and dequeue are just a simple series of loads and stores (and branches) - +- Allocates memory up front, in contiguous blocks +- Provides a `try_enqueue` method which is guaranteed never to allocate memory (the queue starts with an initial capacity) +- Also provides an `enqueue` method which can dynamically grow the size of the queue as needed +- Also provides `try_emplace`/`emplace` convenience methods +- Has a blocking version with `wait_dequeue` +- Completely "wait-free" (no compare-and-swap loop). Enqueue and dequeue are always O(1) (not counting memory allocation) +- On x86, the memory barriers compile down to no-ops, meaning enqueue and dequeue are just a simple series of loads and stores (and branches) ## Use @@ -90,7 +88,6 @@ means care must be taken to only call `wait_dequeue` if you're sure another elem will come along eventually, or if the queue has a static lifetime. This is because destroying the queue while a thread is waiting on it will invoke undefined behaviour. - ## Disclaimers The queue should only be used on platforms where aligned integer and pointer access is atomic; fortunately, that @@ -106,7 +103,6 @@ Use this code at your own risk; in particular, lock-free programming is a patent well violate a pending patent (I haven't looked). It's worth noting that I came up with this algorithm and implementation from scratch, independent of any existing lock-free queues. - ## More info See the [LICENSE.md][license] file for the license (simplified BSD). @@ -114,7 +110,6 @@ See the [LICENSE.md][license] file for the license (simplified BSD). My [blog post][blog] introduces the context that led to this code, and may be of interest if you're curious about lock-free programming. - [blog]: http://moodycamel.com/blog/2013/a-fast-lock-free-queue-for-c++ [license]: LICENSE.md [benchmarks]: http://moodycamel.com/blog/2013/a-fast-lock-free-queue-for-c++#benchmarks