diff --git a/README.md b/README.md index 6de578dc..db9e9534 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Navigate to your local git repository for the site and use the below to start th To start the server you will need to be in your Github repository that contains the `package.json`. ```bash -yarn start +yarn start # alternatively, you can use `npm run start` ``` Browse to http://localhost:8080/ diff --git a/Taskfile.yml b/Taskfile.yml deleted file mode 100644 index 2ee72907..00000000 --- a/Taskfile.yml +++ /dev/null @@ -1,8 +0,0 @@ -version: "3" - -# TODO - replace all this with npm scripts - -tasks: - convert-pngs: - cmds: - - python ./scripts/convert-pngs.py diff --git a/blog/2023/q1-2022-progress-report/feature-progrepq1-2022-bgonly.webp b/blog/2023/q1-2022-progress-report/feature-progrepq1-2022-bgonly.webp new file mode 100644 index 00000000..f682160a Binary files /dev/null and b/blog/2023/q1-2022-progress-report/feature-progrepq1-2022-bgonly.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/3895-BurnoutBlackSky.webp b/blog/2023/q1-2022-progress-report/img/3895-BurnoutBlackSky.webp new file mode 100644 index 00000000..86cb09b8 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/3895-BurnoutBlackSky.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/3895-BurnoutFixedSky.webp b/blog/2023/q1-2022-progress-report/img/3895-BurnoutFixedSky.webp new file mode 100644 index 00000000..26db3a10 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/3895-BurnoutFixedSky.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/3895-TheGetAwayPause.webp b/blog/2023/q1-2022-progress-report/img/3895-TheGetAwayPause.webp new file mode 100644 index 00000000..c8264e9b Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/3895-TheGetAwayPause.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5221-Qt 2020.webp b/blog/2023/q1-2022-progress-report/img/5221-Qt 2020.webp new file mode 100644 index 00000000..e97e1ecb Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5221-Qt 2020.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacAfter.webp b/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacAfter.webp new file mode 100644 index 00000000..97081aeb Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacBefore.webp b/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacBefore.webp new file mode 100644 index 00000000..a7726de6 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5387-BurnoutMacBefore.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5411-HumansAfter.webp b/blog/2023/q1-2022-progress-report/img/5411-HumansAfter.webp new file mode 100644 index 00000000..781bbe55 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5411-HumansAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5411-HumansBefore.webp b/blog/2023/q1-2022-progress-report/img/5411-HumansBefore.webp new file mode 100644 index 00000000..b5d0fa2c Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5411-HumansBefore.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5461-TableAfter.webp b/blog/2023/q1-2022-progress-report/img/5461-TableAfter.webp new file mode 100644 index 00000000..ef8e93cf Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5461-TableAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5461-TableBefore.webp b/blog/2023/q1-2022-progress-report/img/5461-TableBefore.webp new file mode 100644 index 00000000..2dafe566 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5461-TableBefore.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5537-BabyPastelWindows.webp b/blog/2023/q1-2022-progress-report/img/5537-BabyPastelWindows.webp new file mode 100644 index 00000000..b864f201 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5537-BabyPastelWindows.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5537-PCSX2BlueWindows.webp b/blog/2023/q1-2022-progress-report/img/5537-PCSX2BlueWindows.webp new file mode 100644 index 00000000..c0ebd38c Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5537-PCSX2BlueWindows.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5537-ScarletDevilWindows.webp b/blog/2023/q1-2022-progress-report/img/5537-ScarletDevilWindows.webp new file mode 100644 index 00000000..f710898d Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5537-ScarletDevilWindows.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5537-UntouchedLagoonWindows.webp b/blog/2023/q1-2022-progress-report/img/5537-UntouchedLagoonWindows.webp new file mode 100644 index 00000000..7e7e3614 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5537-UntouchedLagoonWindows.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5545-AbuseCache.webp b/blog/2023/q1-2022-progress-report/img/5545-AbuseCache.webp new file mode 100644 index 00000000..20dde208 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5545-AbuseCache.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5547-After.webp b/blog/2023/q1-2022-progress-report/img/5547-After.webp new file mode 100644 index 00000000..93586269 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5547-After.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5547-Before.webp b/blog/2023/q1-2022-progress-report/img/5547-Before.webp new file mode 100644 index 00000000..875655f6 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5547-Before.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5547-FatChocobo.webp b/blog/2023/q1-2022-progress-report/img/5547-FatChocobo.webp new file mode 100644 index 00000000..75f26f5f Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5547-FatChocobo.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5574-HashCacheOverflow.webp b/blog/2023/q1-2022-progress-report/img/5574-HashCacheOverflow.webp new file mode 100644 index 00000000..ef395715 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5574-HashCacheOverflow.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5593-AutomaticRendererAndUpscalingFixes.webp b/blog/2023/q1-2022-progress-report/img/5593-AutomaticRendererAndUpscalingFixes.webp new file mode 100644 index 00000000..09fbb77d Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5593-AutomaticRendererAndUpscalingFixes.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5640-MetalArmsAfter.webp b/blog/2023/q1-2022-progress-report/img/5640-MetalArmsAfter.webp new file mode 100644 index 00000000..2730783f Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5640-MetalArmsAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5640-MetalArmsBefore.webp b/blog/2023/q1-2022-progress-report/img/5640-MetalArmsBefore.webp new file mode 100644 index 00000000..10511c02 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5640-MetalArmsBefore.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5649-1-QtSettings.webp b/blog/2023/q1-2022-progress-report/img/5649-1-QtSettings.webp new file mode 100644 index 00000000..03be59bd Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5649-1-QtSettings.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5649-2-QtSettings.webp b/blog/2023/q1-2022-progress-report/img/5649-2-QtSettings.webp new file mode 100644 index 00000000..9e34715e Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5649-2-QtSettings.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5650-DocumentationGameDB.webp b/blog/2023/q1-2022-progress-report/img/5650-DocumentationGameDB.webp new file mode 100644 index 00000000..cd099fa8 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5650-DocumentationGameDB.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5662-ViceCityAfter.webp b/blog/2023/q1-2022-progress-report/img/5662-ViceCityAfter.webp new file mode 100644 index 00000000..632a1e1e Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5662-ViceCityAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5662-ViceCityBefore.webp b/blog/2023/q1-2022-progress-report/img/5662-ViceCityBefore.webp new file mode 100644 index 00000000..f56443f8 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5662-ViceCityBefore.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5671-AfterDog.webp b/blog/2023/q1-2022-progress-report/img/5671-AfterDog.webp new file mode 100644 index 00000000..d464c581 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5671-AfterDog.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5671-BeforeCOD.webp b/blog/2023/q1-2022-progress-report/img/5671-BeforeCOD.webp new file mode 100644 index 00000000..7fed4bcf Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5671-BeforeCOD.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5671-BeforeDog.webp b/blog/2023/q1-2022-progress-report/img/5671-BeforeDog.webp new file mode 100644 index 00000000..4e689734 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5671-BeforeDog.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5671-CODAfter.webp b/blog/2023/q1-2022-progress-report/img/5671-CODAfter.webp new file mode 100644 index 00000000..c99400e4 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5671-CODAfter.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5759-AutomaticControllerMapping.webp b/blog/2023/q1-2022-progress-report/img/5759-AutomaticControllerMapping.webp new file mode 100644 index 00000000..75a98561 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5759-AutomaticControllerMapping.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5759-SDL.webp b/blog/2023/q1-2022-progress-report/img/5759-SDL.webp new file mode 100644 index 00000000..5f3449e0 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5759-SDL.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5785-Illegal.webp b/blog/2023/q1-2022-progress-report/img/5785-Illegal.webp new file mode 100644 index 00000000..a92aae6b Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5785-Illegal.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/5785-Qt.webp b/blog/2023/q1-2022-progress-report/img/5785-Qt.webp new file mode 100644 index 00000000..1fad9ec5 Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/5785-Qt.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/LogoVulkanGSDX.webp b/blog/2023/q1-2022-progress-report/img/LogoVulkanGSDX.webp new file mode 100644 index 00000000..9aba0b9a Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/LogoVulkanGSDX.webp differ diff --git a/blog/2023/q1-2022-progress-report/img/Vulkan1.3-Logo-for-DevNews-2-1.webp b/blog/2023/q1-2022-progress-report/img/Vulkan1.3-Logo-for-DevNews-2-1.webp new file mode 100644 index 00000000..5340265e Binary files /dev/null and b/blog/2023/q1-2022-progress-report/img/Vulkan1.3-Logo-for-DevNews-2-1.webp differ diff --git a/blog/2023/q1-2022-progress-report/index.mdx b/blog/2023/q1-2022-progress-report/index.mdx new file mode 100644 index 00000000..82b956d0 --- /dev/null +++ b/blog/2023/q1-2022-progress-report/index.mdx @@ -0,0 +1,2258 @@ +--- +authors: + - reddevilus +date: 2023-02-06 00:00:00 +description: Vulkanic progress and Qt-ing for the future. +draft: false +hide_table_of_contents: false +image: ./feature-progrepq1-2022-bgonly.webp +tags: + - progress-report +title: Q1 2022 Progress Report +--- + +"Ladies and gentlemen, hold onto your controllers and prepare for an exciting journey as we unveil our first progress report of the year for last year!? After a seemingly endless delay, we're back and ready to take you through the crossroads of progress. We've said goodbye to the creaky and outdated WX-widgets GUI toolkit and hello to the sleek and shiny Qt GUI. It's like upgrading from a horse-drawn carriage to a sports car, or a butterfly emerging from its cocoon. + +- Please note that at this time it wasn't available as a build on the site until the next quarter of 2022. But the more hardcore users of PCSX2 could get the artifacts on GitHub if logged in. + + + +And that's not all, we've also revved up the engine with the addition of the Vulkan +renderer, allowing for smoother and more efficient gameplay. Plus, with the new texture +replacement feature, you'll be able to customize your gaming experience like never +before. + +But don't worry, we haven't forgotten the technical side of things. Our team of experts has been working tirelessly to optimize and improve the CDVD, VU, and SPU systems, ensuring that our emulator runs at its best. + +None of this would be possible without the support and contributions of our dedicated community. From the Core Team, to the Contributors, Discord users, Wiki users, Forum users, Testers and all the others who aren't mentioned, you keep PCSX2 fresh and better each day. + +So, buckle up and get ready for a wild ride as we dive into the nitty-gritty details below. Happy reading!" + +## Core Improvements + +### CDVD + + + CDVD: Implement speed register, fix up SpindleCtrl + + +In this update, we've implemented the functionality of the speed register (0x2013) in the CDVD system. This improves how the emulator handles data from CDs and DVDs, ensuring a more accurate and smooth experience. We've also properly handled the SpindleCtrl value set by reads, which is a rare but important feature. Additionally, we've made sure that when the drive is ejected, it's also set as not spinning. This ensures that the emulator is in the correct state and prevents any potential errors. Overall, this update improves the overall performance and accuracy of the emulator when reading data from CDs and DVDs. + + + CDVD: Adjust error timing and modify error used for high sector. + + +In this update, we've made adjustments to the error timing in the CDVD system to better handle the reading of data from CDs and DVDs. Specifically, we've modified the error used for high sector reads to better mimic the behavior of the PlayStation 2. This addresses an issue (#5280) where the emulator would crash when reading the second trailer in the "Silent Hill 2 Black Ribbon" demo disc. We've added timing to error calls to improve the overall performance and stability of the emulator when handling errors. This update improves the overall performance and accuracy of the emulator when reading data from CDs and DVDs, especially for games that do unusual things like Silent Hill 2 Black Ribbon demo disc, which previously caused the emulator to crash. + + + CDVD: If you abort, actually abort. + + + + CDVD: Don't delay abort commands on DVDs, at least for now..Fixes #5301 + + +In this update, we've addressed an issue (#5301) where the emulator would hang when changing BGM tracks in Arcade mode in the game Auto Modellista (SLUS-20642). The music would stop and then after a couple of seconds, a "Read Time Out 15000(msec)" message would appear in the Program Log, especially when scrolling through tracks fast. We've made changes to the CDVD controller to prevent this issue by not delaying the abort commands on DVDs. This fix improves the overall performance and stability of the emulator when handling BGM tracks in Arcade mode for Auto Modellista. + + + CDVD: Centralise cdvd.Ready updates + add MECHA_INIT bit + + +This pull request centralizes the updates to the cdvd.Ready variable and adds the MECHA_INIT bit. The MECHA_INIT bit is a flag that indicates that the 'mecha' or mechanical part of the emulated CD/DVD drive has been initialized. This is used to make sure that certain games, such as Cold Fear, will run properly in the emulator. + +### VU + + + VU: Adjust path for conditional evil blocks + + +Branch, Branch, Branch! is a warning message that appears in PCSX2 when a game is making too many branches in a short amount of time. This can cause the emulator to run slower and can lead to graphical artifacts. A conditional evil branch is a branch that is performed in a VU (Vector Unit) that is not properly handled and is treated like a jump instead. This can cause the emulator to not handle the operation properly and can lead to graphical artifacts such as Pac-man World Rally. The bug caused shadows and other elements to appear incorrectly on the screen during transitions. + + + mVU: Rework multiple branch chaining + + + + EE/MicroVU: Elide COP2 flag updates where safe-ish + + +Meanwhile stenzek has been working hard to make the VU0/COP2 heavy games run more smoothly and came up with a new "optimization" option that skips some steps in the process to speed things up. It's like taking the shortcuts on a race track! This new option isn't 100% safe, but it's been tested and it works great for most games. It's like taking a risk to finish the race faster! There also made some other changes that will give you a boost in performance, anywhere from 3-10%, depending on the game. So buckle up and get ready for a smoother ride in your favorite VU0/COP2 heavy games! + + + VU: Run sync ahead on small blocks & Rework VU Kickstart + + +This PR aims to improve the performance of PCSX2 by running the VU (VU0 mainly) ahead when it's only running a small block. This reduces the overhead and makes the overall process more efficient. Additionally, the VU Kickstart option is now always on and replaced with a VU Sync option as less games require the sync. + +By running blocks of at least 3 cycles, this PR ensures that the program runs smoothly and avoids any inefficiencies that come from entering and exiting a recompiler. When combined with Pull Request 5571, this PR can give a boost of 10-20% in a number of games + + + + +### SPU2 + + + SPU2: Don't cap pitch setting on register write. + + + + Qt: Reduce max SPU - Change Speed Preset + + +As part of our ongoing effort to improve the performance and usability of PCSX2, we have made a change to the maximum SPU latency. The previous maximum of 3000 ms has been reduced to 200 ms, which will provide a more responsive experience for users on modern computers. Additionally, we have also changed the emulation speed preset from 1% to 2% to address some issues that have been reported like the gs dump speed. + +### PAD + + + Switch to SDL_GameControllerRumble for rumble + + + + PAD: Clean up the remains of the old logging code from when this was Onepad. + + +### USB + + + Fix some gcc warnings. + + + + USB: CaptureEye/OV511p webcam emulation + + +This Pull Request adds support for the CaptureEye/OV511p webcam, which is needed for games like Police 24/7 but other games still need specific Webcam device emulation. This again lowers the number of non-emulated devices by 1 from the list of missing USB/PAD devices. + +### DEV9 + + + DEV9: Add a socket based backend for DEV9 networking + + +This pull request adds a new socket-based backend for DEV9 networking, similar to the existing Winsock backend provided by CLR_DEV9. This new backend allows for easier configuration and joining of online/resurrected games however some will need specific DNS or DNAS patches. + +It's important to note that while this backend is able to join online games with minimal configuration, hosting online games with Sockets is not currently supported. Additionally, for LAN games, it allows joining a game hosted by actual hardware or hosted by an instance of PCSX2 using TAP/Pcap. + +For Mac and Linux users, the auto adapter selection feature will not be able to select an adapter, and you currently must specify an adapter manually. To support this, PR #4930 is reliant on it. + +Handling of ICMP Echo packets (performed by the Network Access Disc) also required platform-specific code, and it's not guaranteed that it works correctly on all platforms. + + + DEV9: Check for null ifa_addr in PCAPGetIfAdapter + + +This pull request includes a fix to prevent crashes on Linux systems with multiple adapters. It specifically addresses the issue of null ifa_addr, which is a field in some interface adapters that may not be set. This can cause the program to crash when trying to match the specified adapter to the list of adapters returned by the getifaddrs() function. This change adds a null check for ifa_addr in the PCAPGetIfAdapter() function to prevent this crash from occurring. + + + DEV9: Merge settings file into Pcsx2Config + + + + DEV9: Qt Settings Panel + + +The new Qt UI for configuring DEV9 settings makes it more user-friendly and easy to navigate. The host list has also been merged into the main settings file in Qt/Core. Additionally, there's now an option to configure DNS1 or DNS2 to use the internal server, which is only available in the Qt UI. + +Note that validation of Ethernet and HDD settings are no longer performed by the UI, and that the Ethernet Api/Type dropdown doesn't actually set the corresponding settings field. This was done to keep these two values in sync, such as when switching API & device mid-emulation. HDD creation is done on emulation start, with progress logged to the console. However, users will need to manually click on the "Create Image" button as the HDD will not auto-create an image. Modifying settings during emulation may behave unexpectedly, such as when enabling Ethernet before specifying an adapter, or adjusting HDD settings. + + + +### IPU + + + IPU: Fix software renderer FMV hack without AR change + + + + IPU DMA: If no underflow occurs on QWC = 0, end DMA. + + +Refraction, the author of this pull request, has identified a problem with the IPU_FROM DMA (the component that handles e.g. MPEG2 cutscenes). The issue arises when the QWC value is set to 0 at the start of the DMA and there is nothing waiting in the FIFO. In this scenario, the DMA will not underflow and will not end as intended. To address this problem, refraction has added a check for this specific scenario and implemented a solution to end the DMA when it occurs. This change is crucial for ensuring the proper functioning of Hudson games and their videos. In addition, refraction has also provided further explanation in the code to assist other developers in understanding the reasoning behind this change. + +### Debugger + + + Debugger: add register name patterns + + + + Debugger & Core: Lighten IOP breakpoints and fix the memory search + + +### Miscellanous Core + + + VTLB: Fix ppmap allocation in 64-bit + + + + Core: Export recompiler offsets + + + + Misc: Cleanup leftover 32bit code + + +## GS Improvements + +### GS + + + GS-hw, TC: improve tex in rt. + + +As a writer for PCSX2, I am excited to announce that we have made significant improvements to the tex in rt code. The logic is now encapsulated in the GSTextureCache::ComputeSurfaceOffset method, which considers two surfaces A and B and computes the offset from B to A in terms of B coordinates. This improved logic is able to fix and improve a number of issues in games such as Burnout 3, Xenosaga 3, The Getaway, Indiana Jones and the Emperor's Tomb, and Wild Arms 4. + +One of the major benefits of this change is that it allows us to handle higher blending loads with less performance impact. Additionally, the GSTextureCache::ComputeSurfaceOffset method is intended as future-proof, potentially useful for detecting overlaps between EE writes and cached Targets, or between cached Targets alone. + +We've also made a number of bonus improvements to the texture cache, such as inverting the order in which Target and Source are searched in the cache, reading back Targets from LRU to MRU, and partially dirty targets are now searched for valid data. + +This improved logic is enabled via the .ini file (UserHacks_TextureInsideRt = 1) for non Jak games, or from the GS HW hacks settings GUI. However, due to the nature of GS-hw TC, the logic cannot be always enabled without causing regressions. There is more context on the Pull Request with tons of images so I only outlined some of improvements, most already said by iMineLink and others there. + + + + + + GS: Various GSDumpGUI Improvements + + + + GS: Add dedicated functions for choosing renderers and adapters + + + + GS: fix loopPagesWithBreak last iteration logic. + + + + GS-d3d11: Enable amd broken point sampler hack only for amd. + + + + GS-hw: Improve DATE selection + + +The author, lightningterror, has made improvements to the DATE selection process in the PCSX2 emulator. Specifically, for the OpenGL renderer, a check for fbmask is now implemented and an accurate path for DATE_GL45 is used when present. Additionally, a check for FBA is added and the fast path DATE_one is used when all pixels are 128 or more. + +For the Direct3D renderer, a similar check for fbmask is added, however, the accurate path is not supported so only the DATE path is used. A check for FBA is also implemented and the fast path DATE_one is used when all pixels are 128 or more. + +This change is aimed at optimizing the performance of the emulator, specifically in regards to the handling of shadows and transparency in the games. + + + GS: Add a Vulkan renderer + + +Introducing Vulkanic, our new Vulkan renderer for PCSX2! (Just kidding, it's just called Vulkan.) We've been working hard to bring PCSX2 users a new renderer option, and it's finally here! The Vulkan renderer is a powerful new addition to our emulator that promises to take your gaming experience to the next level. + +The advantages of using the Vulkan renderer are numerous: + + Speed: It can handle high blending loads with ease, even outperforming the NVIDIA GL driver in certain cases. + Future-proofing: With the rise of Vulkan, it's important to keep up with the latest technology. + More efficient: In theory, Vulkan is more efficient than Direct3D and OpenGL. + +For users with AMD graphics cards, the Vulkan renderer has the added benefit of being less punishing on performance when using higher blending modes, compared to the OpenGL renderer. And for Linux users, we're happy to report that the Vulkan renderer is fully supported and runs exceptionally well on this platform. + +On Windows, the Vulkan renderer may have some performance advantage over OpenGL, but on Mac and Linux, the performance impact may vary and it depends on various factors. + +We're excited to see how the Vulkan renderer performs on a wide range of devices, so we encourage users to give it a try and let us know your thoughts. Whether you're running on an AMD, NVIDIA, or Intel graphics card, we want to hear from you! + + * Plugins are +gone already, don't worry about this image. + +Above is an alternative reality when plugins were still a thing and would've used the logo for Vulkan. Even PCSX2 plans can change on the spot, short-term or long-term. + + + GS/DX11: Implement merge feedback write + + + + GS-hw: Rename DATE_GL42 DATE_GL45. + + + + GS: More mipmapping fixes + + + + GS-hw: Move PABE shader bit to the top of sw blending. + + + + GS-wx: Fix d3d11 blend option, update tooltips + + + + GS-hw: Don't enable blending when only alpha is written. + + + + GS:SW: Fix crash when scanline count wasn't divisible by thread count + + + + GS: Don't apply offset when using SLBG + + + + GS: Support wrapping off-the-end offsets in new GSOffset + + + + GS/DX11: Add a shader cache + + +Introducing our shiny new DX11 shader cache! It's like putting a turbocharger on your graphics card, you'll be flying through games with lightning speed. + +Gone are the days of waiting for shaders to recompile every time you switch between hardware and software renderers. With the new cache, we're saving the program binaries in a disk cache, so the next time you need that shader, it's ready to go, no waiting around. + +Now, some of you may be thinking, "But my driver already has a built-in hash-based cache!" And you'd be right! But, not all drivers have this feature and even if they do, our cache is an added layer of optimization. Plus, who doesn't love a little redundancy? + +One thing to note, due to the use of a single program object, there may be more variants than before, but don't worry, they're all cached and shared between games. This means less stalls caused by shader compiling and more opportunities for inter-stage optimization from the driver. Last year OpenGL already had something similar for disk cache but it's now being expanded to D3D11. + + + GS: use xxHash to hash palettes. + + + + GS: improve targets clearing + + + + GS: Faster texture preloading + + +Are you tired of waiting for textures to load in your favorite PS2 games? Say goodbye to those pesky delays with the new and improved texture preloading feature in PCSX2! + +This latest update, brought to you by the talented stenzek, speeds up the preloading process by hashing the GS blocks that make up the texture rather than expanding the entire RGBA8 texture. This means less work for the CPU and faster loading times for you! + +And don't worry about a few false positives here and there - at worst, it'll just result in an extra upload. But when you consider the CPU savings from not expanding the texture, it's a small price to pay. + + + GS: optimize xxHash usage in palette hashing. + + + + GS/Vulkan: Fix combining DATE/barriers with HDR + + + + GS-hw: Implement BLEND CD. + + + + GS-hw: More blend work + + + + GS: Fix alpha blend factor clamping + + + + GS: Force Blend TFF when scanmsk is used on the frame + + + + GS: Misc fixes from refactoring/Vulkan renderer + + + + GS: fully support target rescaling in TC. + + + + GS-hw: Implement alternative hw blending for Cd*As, Cd*F. + + + + GS: Only autoflush on move/self blend (Perf test) + + + + GS: Adjust auto interlace mode with scanmask(frame) + + + + GS: Prefer one-frame-old textures + + + + GS-hw: Implement alternative hw blending for Cs*Ad, Cs*Ad + Cd, Cd - Cs*Ad + + +The changes in this PR improve the performance and accuracy of the graphics synthesizer (GS) hardware side in the emulator when it comes to blending colors. The change implements an alternative method for blending colors in certain situations where the previous method was not accurate. This leads to more accurate and visually pleasing graphics in the games being emulated. Additionally, this change also improves the performance of the GS hardware by reducing the workload of the software blending and shifting more of it to the hardware. This results in a faster and smoother gaming experience for the user. + + + + GS-wx: Add extra check for shader options when VK is selected + + + + GS-hw: Properly disable skipdraw when userhacks are disabled. + + + + GS: Get rid of extra binding for channel shuffle + + + + GS: fix overlap check in hw tc. + + + + Revert GS-hw: Exclude triangles from no prim overlap fb read on dx11. + + + + GS: Enable small framebuffers at 1x + + +We've made some exciting updates to the texture cache in our latest release. Our goal with these changes is to improve the speed and image quality of games on integrated GPUs with low memory bandwidth. + +Specifically, we've stopped the texture cache from downscaling targets when used as a source, enabled smaller framebuffers even when rendering at 1x, and added optimizations to move sampling to hardware when possible. This has had a noticeable impact on the performance of Burnout at 1x on integrated GPUs. Additionally, these changes have improved the image quality of Burnout when upscaled to a multiplier of your choice. + +We've made these updates by editing the vertex and fragment shaders to support rescaling normalized coordinates, though we did consider an alternative approach of allocating full scale textures. + + +* As you see in this example that even if you barely touch the upscaling multiplier +and run at 2x PS2 resolution it will still benefit and look less compressed/blurry +, but it benefits a ton of potential hardware configurations. + + GS: Fix region repeat bounds checking for zero crossings + + + + GS/HW: Don't disable depth testing for channel shuffle + + + + GS: target rescaling take 2. + + +#5285 take 2. iMineLink refined the process yet again: + +- Added full support for target rescaling in GS TC, respecting the texture aspect ratio. +- Avoid redundant clears when the target is going to be completely drawn when rescaling/converting. +- Merge the two ways to lookup render targets (for draw and frame) into a single slightly more complex method, to recycle the rescaling logic and other code. +- Avoid using upscaled size for targets requested at native resolution when upscaling. +- Correctly set texture scale for targets created in a frame lookup. +- Update targets from GS memory before converting color to depth. +- Update targets validity region when uploading dirty data from GS memory (especially useful in combination with preload frame data, which makes the initial validity region of the target non empty). + + + GS/Vulkan: Buffer flag changes, HostDisplay cleanup + + + + Various GSBlock shuffle improvements + + + + GS: Reset/restore API state when changing OSD scale + + + + GS/Vulkan: Use fence counter for upload cmdbuffer selection{" "} + + + + GS/DX11: Fix binding depth as tex + fbmask + + + + GS-hw: Implement hw, hw/sw, sw blending on Ad when alpha write is masked, and + more optimizations + + + + GS: Add depth copy convert shader + + + + GS/Vulkan: Fix HDR resolve to cleared target + + + + GS-hw: Optimize fbmask on 16bit format. + + + + GS-hw: Properly enable/disable each channel based on fbmask, adjust fbmask + detection when to do blending for 16bit/24bit. + + + + Gran Turismo 4 [PlayStation 2 Racing Pack] + + + + Disallow CLUT load condition processing on invalid format + + + + GS:HW: Fix scale of color → 8 bit converted textures + + + + GS-hw-tc: Remove JackieChanAdv crc hack. + + + + GS-hw: Cleanup crc stuff. + + + + GS: update target pitch on frame lookup. + + + + GS: update target pitch on write. + + + + GS-hw: Prefer sw blend when one barrier is already enabled and prims don't + overlap. + + + + GS-hw: Don't wrap on 16bit destination format for blend mix. + + + + GS-hw: Prefer sw blend for clr_blend1_2 on ultra blending. + + + + GS-hw: Partially revert #5540 + + + + GS-ogl: Remove GL_ARB_get_texture_sub_image. + + + + GS-hw: Disable dithering if blend mix is enabled. + + + + GS: Add hash based texture cache + + +This pull request introduces a new feature to the texture cache of the Graphics Synthesizer (GS) which is a hardware component of the PlayStation 2. The new feature is a hash-based cache that is added to the existing TEX0-key-based-cache. + +The hash-based cache works by creating a unique identifier for each texture based on its data, rather than its location in VRAM. This eliminates the need for texture uploads in games that frequently move textures to different locations in VRAM across frames. This can result in a significant performance boost in games that have a lot of texture uploads, such as Grand Theft Auto: San Andreas or Grand Theft Auto: Liberty City Stories. + +Another benefit of the hash-based cache is that it can be used for texture replacements. A proof-of-concept for this feature has been implemented and it has been shown to work well. + +In terms of implementation, the hash-based cache can be turned on or off in the configuration settings, and users can choose to use the default TEX0-key-based-cache, partial preloading with the hash-based cache or full preloading using the hash-based cache. It also has a maximum texture size that it can cache, to avoid caching too many large textures which would consume too much memory. + +Overall, this pull request offers a significant performance boost for games that heavily stream textures and provides a new feature for texture replacements, making it a valuable addition to the GS's texture cache. + +Though keep in mind that some games will abuse the texture cache in different ways and might have the opposite effect but that can be disabled or done by the team in automatic settings so that most don't need to worry. Please report if you see any Hash Cache stopping OSD message. + + * Example +of hash cache abuse bringing down performance. + + + GS/TextureCache: Fix target not getting invalidated in some cases + + + + GS: Add option to disable status indicators + + + + GS-hw: Don't trigger no overlap check for DATE_BARRIER on d3d11. + + + + PCSX2-GUI: Rename Interlacing to Deinterlacing + + +We've got a little mix-up on our hands, folks! We've been calling our "Interlacing" option something that it's not. So, we're giving it a new name that better reflects what it actually does. + +"Interlacing" is now officially known as "De-interlacing"! + +You might be wondering, "But wait, what does de-interlacing even mean?" Well, picture a checkerboard pattern on your screen. That's interlacing for you. It's a way for older TVs to display a higher resolution image, but it can look pretty janky on modern displays. Back then it was a way that analog television systems used to reduced bandwith to transmit the video signal. It works by transmitting only the even or odd lines of the image in each frame (called fields like bottom field and top field), rather than transmitting all the lines in each frame. This reduces the amount of data that needs to be transmitted, allowing the video signal to be transmitted using less bandwidth. The downside is that it can make the image appear less smooth and can cause flicker or other artifacts. + +De-interlacing smooths out that checkerboard pattern and makes the image look more like a progressive image. We've got a few different methods to choose from. + +Weave is like a saw-tooth pattern, Bob is the sharpest but can make things look like they're bouncing a bit, and Blending is a bit blurrier but the most consistent and has no bouncing. If you are still confused, just let it be automatic and it should switch to None De-interlacing automatically if it sees a progressive signal as to not make it ugly, however for interlaced signals it needs other deinterlacing methods. An exception is No-Interlacing patches which will also now switch to none De-interlacing but the game will think it's still interlaced. + +So there you have it, folks! A little change that goes a long way in making things less confusing for everyone. + + + GS: Remove upscaling dependency on PCTRC enabling. + + + + GS: Add texture dumping and replacement system + + +This pull request aims to add a feature that many have requested, the ability to dump and replace textures in-game. This allows users to customize the game's graphics to their liking, whether it be for improving the visuals or changing them entirely (see the image if you want a sample of cursed). + +The pull request includes: + + Basic texture dumping feature, allowing users to save the game's textures to their computer for editing or replacement. + Basic texture replacement feature, allowing users to load their own textures back into the game. + Asynchronous texture dumping and loading for improved performance. + Support for preloading textures to memory for faster texture loading during game-play. + Support for dumping mip-maps, which are smaller versions of a texture used for objects that are farther away from the camera. + Support for loading DDS files and compressed textures, which is an image file format that uses lossy compression to reduce the file size. + +Please note that while the developer is not planning on changing the texture filenames or hashes unless it's about refining the current implementation to be cleaner and better for users. + + * We do a +little bit of trolling. + + +* Okay, fine here is a nice example of what you can do if you were serious in expanding +experience. + + + GS: Ignore 24bit on DATE and Handle Reversed Color and Z + + + + GS: Texture replacement fixes + + + + + + GS/TextureCache: Don't let hash cache memusage go negative + + + + GS:OGL: Don't memset C++ objects + + + + GS-hw: Fix some warnings. + + + + GS: Handle Auto Flush across pages + improve performance + + + + GS-hw: Optimize blending when ALPHA.A is equal to ALPHA.B. + + + + GS-hw: Improve how we handle blending when output is Cd. + + + + GS/WX: Fix default adapter causing unnecessary GS restarts + + + + GS-hw: Move the Ad to As equation swap when alpha is masked to Basic blend + level and higher on gl/vk. + + + + GS: Add Auto Flush for Z buffer draws + + + + GS/Vulkan: Elide render pass restarts on depth buffer toggle + + + + GS: Support local to local transfers that overwrite themselves + + + + GS-hw: Attempt to improve half screen detection + + + + GameDatabase: Automatic GS hardware fixes + + + +* When most automatic fixes like VU/EE Rounding and clamping were added, there are +now new variables like rendering and upscaling that can be given on the GameDB. A +long manual process that will severely lessen the need of user's need of tinkering +per-game. This will also inflate the GameIndex/GameDatabase Pull Requests and lines +but that's just a small sacrifice to make. + + + GS: Improvements to MTBA Mip Mapping + + + + GS-Build: Fix Dump Verticles for linux + + + + GS/VertexTrace: Fix min/max when last provoking vertex unsupported + + + + Qt: Implement GS dump playback + + + + GS: Loosen requirement for half bottom + + + + GS: Adjust Auto Flush to catch edge cases + + + + GS-hw: Optimize blending equations based on alpha value. + + + + GS: Fix Wunused-variable warnings. + + + + GS: Add SW CPU usage and host GPU usage stats + + + + GUI: Rename Fast Texture Invalidation + + + + GS:SW: Fix LOD on x64 + + + + GS/DX11: Fix incorrect format check for compressed textures + + + + PCSX2-GUI: Rename skipdraw and IDC for Partial Invalidation + + + + Misc: Fix incorrect printf of std::string_view + + + + GS: Properly detect 16bit format on Texture Shuffle + Convert + + + + GS: Use pixel format mask for FBMSK checks + + + + GS: Utilize framebuffer fetch for blending/fbmask where available + + + + GS: Fix inverted dsb check + + + + GS/Vulkan: Fix crash is vertex/index buffer causes exec + + + + GS: Fix some edge cases with fbfetch + + + + GS/HW: Fix fbmask not inserting barriers + + + + GS/Vulkan: Implement FXAA and Shadeboost + + + + GS: Fix GetRecommendedCRCHackLevel for Vulkan.Issue #5312 + + +## Misc Improvements + +### GUI + + + ProgramLog: Comment out deleted keymapping + + + + Merge the Qt branch: Part 2 + + + * Image from +Qt is coming closer and closer to official release. + + + GSDump: Fix renderer override + + + + GUI: Make aspect ratio/frame limiter OSD messages keyed + + +This pull request aims to improve the user interface of the on-screen display (OSD) messages. The OSD is the in-game display that shows information such as frame rate and other settings. + +Specifically, this pull request addresses an issue where spamming the turbo or frame limiter keys would generate multiple messages, making it difficult for the user to understand the current settings. The changes made in this pull request prevent these messages from piling up, so that only the most recent message is displayed at a time. + +x69 gif + + + GUI: Convert Power plan name to UTF-8 + + + + Qt Part 4 + + +This pull request brings the power of the Qt framework to PCSX2. Qt is a modern, cross-platform framework that offers a lot of features and functionality out of the box. Compared to the existing WX Widgets, Winapi/winforms, and GTK for Linux, using Qt will make the codebase cleaner and easier to maintain, and will allow for much more flexibility and potential for improvements. + +For code enthusiasts, this pull request represents a huge step forward in terms of code quality and maintainability. The introduction of Qt will allow developers to take advantage of its powerful widgets and modules, which will make the code look much more polished and professional. Furthermore, the framework provides a lot of pre-built functionality that would have been extremely difficult to implement otherwise. + +For those who don't understand code, this change means that the emulator will be more stable, faster, and have a more polished user interface. The use of Qt will allow the development team to focus on improving the core functionality of the emulator, rather than spending a lot of time on making the user interface work correctly. + +Overall, this pull request is a significant step forward in the development of PCSX2, and will greatly benefit both code enthusiasts and regular users alike. + + + Qt: Enable SDL2 input source for Qt + + +This pull request enables the use of SDL2 for input source in the Qt version of PCSX2, the popular Playstation 2 emulator. This means that users will now be able to use their DualShock 4 controllers natively on both Windows and Linux. + +Previously, the Windows version of PCSX2 1.6 used a plugin called Lilypad, which only supported Xinput and preconfigured keybindings, making it difficult for users to customize their controller settings or to even see they have correct bindings. On the other hand, the Linux version of PCSX2 1.6 used a plugin called OnePad-legacy, which only allowed for keyboard hotkeys and had no automatic default mapping for controllers. + +With the implementation of SDL2 in the Qt version, users will now have a more intuitive and visually clear way to customize their controller settings, without any platform specific differences. This will make it easier for users to use their controllers and improve their overall experience with the emulator. + + + Qt: Add save state loading/loaded/saved events + + + + GS: Better support of dpi scaling + + + + Resource file cleanup + + + + Qt: Fix type table sizing + spaces + + +The main window's type table did not have enough width to display all text, especially when the filter button was used. This caused some text to be cut off and not fully visible to the user. Additionally, some strings within the table were not properly spaced, making it difficult to read and understand the information being displayed. + +To address these issues, this pull request increases the width of the type table and adds spaces to the strings within the table to make the information more legible and easy to understand. The filter button's width is also adjusted, so it will not push the string away anymore. + + + + + Qt: More sizing + improve hotkeys code + + +This pull request addresses several issues with the layout and design of the main window in PCSX2. Specifically, it addresses issues with the width of the "Type" table and the "Region" and "CRC" columns, which were not wide enough to display the full text. The pull request also improves the hotkeys code by adding missing hotkeys and organizing them in a more intuitive way on the GUI level. + +The new changes make the layout of the main window look better and more polished than before. Additionally, more hotkeys have been added, making the feature more complete. The developer has also provided images to show the new hotkeys that have been added. However, it is important to note that there are still some hotkeys missing and some old ones are not included in this update. + +For reference users should take a look at the PCSX2 hotkeys wiki page (https://wiki.pcsx2.net/Hotkeys) for more information about the new and missing hotkeys as there are some breaking changes like using only one - instead of -- in the old WX version. + + + Qt: Misc graphics settings fixes + + + + Qt: Resize Windows + Change Framerate Presets + Lower OSD time + + +This pull request addresses issues with the sizing and layout of the main window, Interface Settings and the OSD message display. The main window will now correctly display the full Toolbar, Interface Settings will not go out of bounds, and the OSD message display timing has been shortened from 10 seconds to something like 5 or 8 depending on severity. Additionally, the speed percentage presets have been changed for better user experience. + +The changes made in this pull request are meant to improve the overall user experience by addressing minor layout and display issues, and providing more customization options for speed percentage presets. + + + Fix some vsync related issues, implement Vulkan adaptive vsync + + + + Add icon for Cn BIOS + + + + QT: Add icon for Hk BIOS. + + + + Qt: Add per game settings UI + + + + Qt: Fix type on graphics panel + + + + Qt: Resize default headersize BIOS + Adding 4 new themes + + +This pull request brings some much needed eye candy to PCSX2 with the addition of four new custom themes! Say goodbye to boring, bland interfaces and hello to some retina-burning, soul-incinerating visuals. + +Introducing "Untouched Lagoon" - a light theme with a refreshing blue and green color scheme, perfect for those hot summer gaming sessions. "Baby Pastel" - a light theme with a soft and dreamy color palette, ideal for those who prefer a more delicate aesthetic. "PCSX2" - a light theme with the iconic PCSX2 blue color, perfect for those who want to represent their love for the emulator. And last but not least, "Scarlet Devil" - a dark theme with a bold and striking red color scheme, perfect for those who want to add a touch of edginess to their gaming experience. + +So go ahead, give your eyes the treat they deserve and switch up your theme. Just make sure to have your sunglasses handy, because these custom themes are not for the faint of heart! + + + + + + + Qt: Fix qt compilation on linux. + + + + cli: Extended argument support + + + + Pad: Fix connection of macOS GameController framework controllers + + + + WX: Make texture dump location configurable + + + + Qt: Assorted cleanups/add debug log options + + + + Qt: Fix live changing game settings not applying + + + + GUI: Log graphics driver info on startup + + + + Qt: Partial Invalidation + + + + Qt: Fix bugs relating to per-game settings + + + + Qt: Misc fixes + + + + GUI/Docs: update compatibility URLs + + + + Qt: GS Settings Fixes + + + + Qt: Implement BIOS check and shutdown hotkey + + + + Qt: Add missing null terminator in audio settings + + + + Qt: Few fixes for Linux + + +### GameDB + +Keep in mind there are hundreds of games improved in the GameDB and you only see a small snippet of screenshots as examples. + + + GameDB: Add VU Kickstart Hack to Dark Cloud 2/Dark Chronicle + + + + GameDB: GameDB: Removal of some patches and adding some fixes + + + + GameDB: add patches to Koukaku Kidoutai and fixes for other games + + + + GameDB: add some missing serials + + + + GameDB: fix some entries + + + + Gamedb: add gamefix to Cocoto Funfair + + + + GameDB: add patch to MX Unleashed Migrated and missing serials{" "} + + + + GameDB: add EETiming to 'Kya: Dark Lineage' + + + + GameDB: Add eeRoundMode to Teen Titans & Scaler and fixes to other games + + + + GameDB: add VUKickstartHack to Ghosthunter + + + + GameDB: add 'SkipMPEGHack' to \ + + + + GameDB: add fixes for Simple Series vol.7 and other games + + + + GameDB: remove EETimingHack from 'Paris-Dakar 2' + + + + GameDB: add 'EETimingHack' to 'Indiana Jones and the Emperor's Tomb' + + + + GameDB: add eerounding to 'Neopets - The Darkest Faerie' + + + + GameDB: Urban Reign + + + + GameDB: Beatmania entries + + + + GameDB: Add missing PAL games to GameIndex Correct AFL Football serial + + + + GameDB: Add missing NTSC-J games + + + + GameDB: Fix Bemani game titles + + + + GameDB: disable mVUFlagHack for Maken Shao + + + + GameDB: Add missing Gran Turismo demos + + + + GameDB: add EETimingHack to 'Obscure 2' and patch to 'Snoopy Vs Red Baron' + + + + GameDB: add 'VUKickstartHack' to 'Jet Li - Rise to Honor' + + + + GameDB: add 'VUSyncHack' to 'Tiger Woods PGA Tour 2002' and update + documentation + + + + GameDB: add patch for Cars + + + + GameDB: Katamari games + + + + GameDB: add VU clamping to 'DT Racer' and update MGS2 hack + + + + GameDB: Added a whole host of auto GS HW renderer fixes + + +Added automatic GS HW mode fixes for the following games: + +- Battlefield 2: Modern Combat. (Offset post processing) +- Beyond Good and Evil. (Helps with water rendering) +- Black. (Offset post processing) +- Chaos Legion. (Glitched boss shadows) Fixes #2409 +- Colin McRae Rally 2005. (Shadows, colours still broken) +- Dog's Life. (Jake turning black) Fixes #1004 +- Dr. Seuss' The Cat in the Hat. (Fixes heat effects) mentioned in #5507 +- Driv3r. (Offset post processing) +- DT Racer. (Corrupt textures) +- Some Harry Potter games. (Screen corruption) +- Jak 2. (Various heat/shadow effects) +- Jak 3. (Various heat/shadow effects) +- Legion - The Legend of Excalibur. (Missing floor textures) Fixes #4031 +- MLB 2005. (Cut off loading screen) +- Monster Lab. (Apparently fixes black screen) +- Power Drome. (Lights through objects) +- Prince of Persia - Warrior Within + Sands of Time. (Offset post processing) +- Ratchet Gladiator/Deadlocked. (Missing textures in some levels) +- Ratchet & Clank Going Commando/Locked & Loaded. (Fixes shadows) +- Ridge Racer V. (Fixes most of the intro corruption, not car textures) +- Rogue Galaxy. (Lighting effects) +- Sniper Elite. (Offset post processing) Fixes #3005 +- Syphon Filter - Dark Mirror. (lights through walls and sprites) Fixes #2249 +- Syphon Filter - Logan's Shadow. (lights through walls and sprites) +- XenoSaga Episode 1-3: (Shadows) + + + GameDB: Transformers Armada: Prelude to Energon + + + + GameDB: Metal Arms - Glitch in the System (PAL) + + + + + + GameDB: Auto GS HW renderer fixes for some NAMCO games + + +Align sprite to eliminate vertical black lines for: + +- Tekken 4 +- Tekken 5 +- Tekken Tag Tournament + + + GameDB: Documentation + + +Relevant to Pull Request 5593 where renderer and upscaling settings were added. Now if OSD complains about a specific option you know what it corresponds to the GUI and it also can be used as a guide for checking GameDB and adding new fixes. + + + + + GameDB: correct and update serials + + + + GameDB: Upscaling GS Batch 1 + + +Fixes the lint and adds a bunch of upscaling fixes. + +Align Sprite for: + +- Colin McRae Rally 3/4 +- Enthusia Professional Racing +- Finding Nemo +- Lifeline (Also known as Operator's side) +- Taiko Drum Masters +- Toca Race Driver 1/2/3 +- Tokyo Xtreme Racer 3 + +Merge Sprite for: + +- Drakengard 2 +- God Hand +- Medal of Honor - Vanguard +- Naruto - Uzumaki Chronicles + +Half-pixel offsets for; + +1 Normal (Vertex): + +- Drakengard 2 +- Forgotten Realms - Demon Stone +- Harry Potter and the Half-Blood Prince +- Kingdom Hearts 1/2 +- True Crime - New York City +- WRC II + +2 Special (Texture): + +- Burnout Revenge/Dominator/Takedown +- Commandos - Strike Force +- Crash Twinsanity +- Dark Cloud +- Devil May Cry 3 +- Fatal Frame +- Kuon +- Legaia 2 - Duel Saga +- Legend of Spyro, The - A New Beginning +- Legend of Spyro, The - Dawn of the Dragon +- Legend of Spyro, The - The Eternal Night +- Medal of Honor - Vanguard +- Project Zero + +3 Special (Texture-Aggressive): + +- Bratz - The Movie + +Software Renderer gamefix: + +- Final Fantasy X-2 + + + GameDB: Rogue Galaxy + + + + GameDB: Add gsHWFixes for Shutokou Battle 01. + + + + GameDB: GS HW renderer fixes for Tales of the Abyss + + + + GameDB: Add Software FMV to Grandia 2 and Xtreme + + + + GameDB: Add Upscaling Fixes to Onimusha 3 + + + + GameDB: Upscaling GS Batch 2 + + +Preload Frame Data: + +- Growlanser - Heritage of War + +Half-pixel offsets for; + +1 Normal (Vertex): + +- Baroque +- Dragon Quest VIII +- Mercenaries - Playground of Destruction +- Radiata Stories +- Shadow Hearts Covenant +- Sims Bustin' Out +- Star Wars Battlefront II +- Star Wars - Episode III - Revenge of the Sith +- Suikoden IV +- Valkyrie Profile 2 - Silmeria + +2 Special (Texture): + +- Speed Racer +- SSX 3 + +3 Special (Texture-Aggressive): + +- TimeSplitters - Future Perfect + +Roundsprite; + +Half: + +- Ar Tonelico 1 +- Ar Tonelico 2 +- Atlantis III +- Dragon Quest VIII +- Final Fantasy X-2 +- Tribes - Aerial Assault +- Wild ARMs 4/5 + +Full: + +- Star Ocean 3 +- Final Fantasy X +- Shadow Hearts - From the New World + +Wild Arms: + +- Global Defence Force + +Half Screen: + +- Mercenaries - Playground of Destruction + +SoftwareRendererFMV: + +- Monster Rancher 4 +- Megaman X8 +- Onimusha Dawn of Dreams +- Robot Alchemic Drive +- Rygar - The Legendary Adventure +- Taz Wanted + +Texture in RT: + +- Japanese entries for Wild ARMs 4 + + + GameDB: Add gsHWFixes for GTA LCS/VCS + + + + + + GameDB: Dog Island and COD Final Fronts + + + + + + + + GameDB: Ace Combat + Soul Calibur + Metal Gear Solid Series + + +Align Sprite: + +- Soul Calibur II / III +- Ace Combat Zero / 4 / 5 + +Mipmap + +- Europese Ace Combat Variants + +Half-pixel offsets for; + +2 Special (Texture): + +- Metal Gear Solid 2 (Substance) / 3 (Subsistence) + +Roundsprite; + +Full: + +- Ace Combat Zero / 4 / 5 + + + GameDB: Add a bunch of hw fixes and upscaling fixes + + +- Brave - The Search for Spirit Dancer +- Chronicals of Narnia, The - The Lion, The Witch and the Wardrobe +- Die Hard - Vendetta +- Ghost Rider +- God of War 2 (Added round sprite to get rid of chromatic effect) +- Kya - Dark Lineage +- Matrix, The - Path of Neo +- Psychonauts +- Scarface - The World is Yours (Still not perfect, but much better) +- Silent Hill - Shattered Memories +- Simpsons The - The Game +- Sly 2 +- Sly 3 +- Snoopy Vs the Red Baron +- Stolen (Upscaling and performance) +- Thrillville +- Thrillville - Off the Rails + + + GameDB: More GS HW Fixes + + +- Alter Echo +- Beyond Good and Evil +- Dragon Ball Z - Budokai Tenkaichi 2 +- Fatal Frame 1 / 3 +- Ghost in the Shell - Stand Alone Complex +- Global Defence Force +- Xenosaga 1 / 2 / 3 + + + GameDB: Add gsHWFixes for Tales of Symphonia + + + + GameDB: Add DMABusy fix to Shining Wind + + + + GameDB: Haunting Ground + 50 Cent and Level 5 + + +- 50cent - Bulletproof +- Dark Cloud 1 / 2 +- Haunting Ground +- Rogue Galaxy +- Tomb Raider - Legend + + + GameDB: HW fixes for Rockman X8 + + + + GameDB: Rename fastTextureInvalidation + + + + GameDB: HW fixes for Mega Man/Rockman X7 + Clamping mode fix + + + + GameDB: remove no longer needed comments + + + + GameDB: Add fixes for Tak Games + + + + GameDB: Add GS HW fixes for Wild Arms Alter Code F + + + + GameDB: Even more GS HW Fixes + + +- Ape Escape 3 +- Armored Core Last Raven +- Berserk +- Forever Kingdom +- Front Mission 4 / 5 +- Need For Speed Underground 1 / 2 +- Kings Field 4 - The Ancient City +- Test Drive Unlimited +- Jak 2 / 3 / X + + + GameDB: Remove VU rounding form 'Hitman - Contracts' + + + + GameDB: adds 'VUSyncHack' to Panzer Elite Action - Fields of Glory + + + + GameDB: add missing serials + + + + GameDB: GS HW Batch X + + +- Bully +- Colosseum - Road to Freedom +- Dark Chronicle (Dark Cloud 2) +- Killzone +- God of War +- Gun +- Midnight Club 3 +- Mortal Kombat - Deadly Alliance +- Need for Speed Carbon / Most Wanted / Undercover +- Prince of Persia - Sand of Time / The Two Thrones / Warrior Within +- Resident Evil 4 (BioHazard 4) +- Thrillville / Off the Rails + + + GameDB: Fixes to TeamICO games. + + + + GameDB: Fix Midnightclub 3 + Add Evangelion Jo + + + + GameDB: Fix 'SLES-54453' title + + + + GameDB: add 'VUSyncHack' to Totally Spies! Totally Party + + + + GameDB: Remove outdated comments + + + + GameDB: Megaman + Nicktoons + + + + GameDB: GS HW Fix XI + + +- Atelier Iris 3 - Grand Phantasm +- Baldur's Gate - Dark Alliance 1 / 2 +- Call of Duty 2 - Big Red One +- Dark Cloud 1 / 2 +- Mana Khemia 1 / 2 +- Sims 2 - Castaway +- Valkyrie 2 - Silmeria + + + GameDB : various game improvements + + + + GameDB: ':' to '-' + GS and other fixes + + +GameDB serials with ':' replaced with ' - ' + + + + + +GS HW Fixes and other fixes for: + +- Adventures of Cookie & Cream, The +- Brothers in Arms - Earned in Blood / Road to Hill 30 +- Black +- Chaos Legion +- God Hand +- Knockout Kings 2001 +- Kuon +- Outrun 2006 / 2 SP +- Project Eden +- Psi-Ops - The Mindgate +- Punisher, The +- Ratchet Deadlocked (USA) / Gladiator (Europe) / 3 Up Your Arsenal +- Silent Hills Origins / Shattered Memories / 3 / 4 +- SoulCalibur II / III + + + GameDB: Corrected GSHW Fixes for Radiata Stories + + + + GameDB : Atelier Marie + Elie: Salburg no Renkinjutsushi 1&2 + + + + GameDB: Silent Hill Origins + + + + GameDB: Add Zwei AutoFix + + + + GameDB: Fixes for Tomb Raider Games + + + + GameDB: Caspian + + + + GameDB: Patch for Midnight Club 2 T-Bit + + + + GameDB: Add Ratchet & Clank demo and Spider-Man 3 Fixes + ... + +This pull request updates the PCSX2 GameDB, adding new entries for the Ratchet & +Clank demo and Spider-Man 3. It also includes several fixes for these games, such +as rounding fixes for Ratchet 1 titles to improve Hydrodisplacer behavior. Additionally, +the pull request removes an unnecessary fix for the Virtual On ontario program and +corrects an oversight made for Spiderman 3 in the past. Overall, these changes will +improve the overall performance and accuracy of these games in the emulator. + + + GameDB: Add mipmapping/trilinear for Hot Shots/Everybody's Golf games + + + + GameDB: Add partial preloading to Stolen + + + + GameDB: Add alignSprite to GOW 2.Fixes water vertical lines. + + + + GameDB: Correct Kessen 2 Korean patch + + + + GameDB: Give slightly clearer message for GS Fix override + + +### Maintenance + + + 3rdparty: Remove freetype + + + + gitignore: update gs debug gl filename. + + + + 3rdparty: Add Vulkan Memory Allocator + + + + 3rdparty: Add xxhash.h + + + + CMake: Pass -fsanitize=address as a link option when USE_ASAN is used + + + + vcxproj: Add vulkan shaders and group shaders in renderer category. + + + + Build: Use git tag for file version on windows, attempt 2 + + + + Bump node-fetch from 2.6.5 to 2.6.7 in + /.github/workflows/scripts/releases/generate-release-notes + + + + Bump node-fetch from 2.6.5 to 2.6.7 in + /.github/workflows/scripts/releases/upload-release-artifacts + + + + Bump node-fetch from 2.6.5 to 2.6.7 in + /.github/workflows/scripts/releases/announce-release + + + + CMake: Prevent people from doing in-tree builds + + + + CI: Build Qt binaries on Windows + + + + Readme: add note about Vulkan drivers + + + + CI: Automatically label Qt + + + + cmake: copy resources in build folder. + + + + CI: Label Qt into GUI/Qt + + + + CMake: add back HarfBuzz to fix build + + + + actions: Add windows category for SDL + + + + Bump actions/setup-node from 2 to 3 + + + + Disable warnings on several third party libraries. + + + + Bump actions/checkout from 2 to 3 + + + + Docs : Add GS hardware fixes and MTVUSpeedHack + + + + CI - Remove 32bit Builds + + +PCSX2 is proud to announce that we have officially removed 32-bit builds from our continuous integration (CI) process. This marks an important step in the future of the PCSX2 project, as we shift our focus to 64-bit builds. + +As technology continues to evolve, the PCSX2 team has made the decision to no longer support 32-bit builds. While the current builds of PCSX2 do not typically use more than 4 GB of RAM, the use of 64-bit builds allows for improvements in register usage and overall performance. + +In the interest of maintaining a smooth transition, we have made the smallest possible change to remove 32-bit builds from our CI process. There is still 32-bit scaffolding and code throughout the repository, but we will continue to work towards removing all traces of 32-bit support in the future. + +We have also added a link to our new build page and updated our scripts to no longer consider 32-bit artifacts. We apologize for any inconvenience this may cause for users still utilizing 32-bit systems, but we believe that this move towards 64-bit builds is necessary for the continued development and improvement of PCSX2. + + + deps: update `rapid-yaml` to `v0.4.1` + + + + CI: Update labeler to expand WX + + + + Build: Remove cross compiling from build.sh. + + + + Bump actions/cache from 2.1.7 to 3 + + + + Bump peter-evans/create-pull-request from 3 to 4 + + +### Other + + + pad-linux: Update to latest controller database + + + + SysThreadBase: Fix double init of SPU2 etc + + + + pad-linux: Update to latest controller database + + + + GIF: Separate GIF Reset and GIF DMA Reset + + + + pad-linux: Update to latest controller database + + + + R5900: Use unsigned math for add/sub instructions + + + + Build: Use git tag for the file version on windows + + + + pad-linux: Update to latest controller database + + + + InputManager/XInput: Fix inverted/incorrect axes + + + + pad-linux: Update to latest controller database + + + + memcard: Fix folder memory card regressions + + + + GS: remove bw equality check in tex in rt. + + + + pad-linux: Update to latest controller database + + + + GS-hw: Apply clamp/wrap when FBMask enabled + + + + COP2: Move COP2 timing messages to release builds. + + + + GS-hw: Increase 32->16bit conversion accuracy + + + + pad-windows/unix: Update to latest controller database + + + + GS-HW: Use integers for depth conversion shaders + + + + GS/Vulkan: Fix warning when compiling RGBA8->RGB5A1 shader + + + + Core: remove not needed logging + + + + pad-windows/unix: Update to latest controller database + + + + PAD: Update to latest controller database + + + + GS:Mac: Fix Vulkan init + + + + EE/JIT: Flush const on LDL/LDR instructions + + + + VMManager: Fix brief unpause before shutdown + + + + PAD: Update to latest controller database + + + + Filesystem: Properly convert stat return to bool. + + + + DEV9: Merged confg fixes + + + + x86emitter: Fix x64 8-bit rmw codegen + + + + Gif_Unit: Vectorize analyzeTag() + + + + PAD: Update to latest controller database + + + + Build: Remove 32bit configs from vsprops + + + + PAD: Update to latest controller database + + + + GSDumpReplayer: Fix ReadFIFO2 packet executing on wrong thread + + + + Qt: Implement automatic controller mapping + + + + +Gone are the days of fiddling with 1 or more controllers, you can finally bind (most) controller by simply going to the correct window and pressing on automatic mapping when you have your controller(s) connected. You can access this menu by either enabling Toolbar and then controllers or Settings > Controllers > Controller Port 1 > Automatic Mapping > YourControllerName. +By default there is a keyboard mapping so make sure to bind it correctly, we use SDL mapping maintained by the community not only limited to PCSX2: https://github.com/gabomdq/SDL_GameControllerDB if you ever wondered seeing latest controller database builds. Are your controllers not working then it's best to contact us in the Discord or if needed contact upstream if the config doesn't have a mapping yet. +You can check yourself on Windows or Linux here: https://gitlab.com/ryochan7/sdl2-gamepad-mapper/-/releases or use other methods states on the first URL. + +* Example of a +config already ready to be used for automatic mapping in PCSX2. + + + PAD: Update to latest controller database + + + + ShaderCache: Don't delete cache when running 2 instances (D3D11/VK) + + +### Ambiguous + + + GS SW: Adjust order SW is destroyed, fixes GS Dump crash + + + + VIF: If Force break + Reset requested, Reset gets priorityFixes #5275 + + + + github: auto labeler: Add GS Vulkan label. + + + + GS-hw: Purge WildArms4 and WildArms5 crc hacks.Issue got resolved before 1.6 + release. + + + + GS-hw: Add/remove crc ids.Add CRCs for (almost) all versions of R&C, WOC, & + J&D.Remove all non-retail crc versions.Re-add Crash 4 version CRC, it's retail + actually.Original PR #4535Close #4535 + + + + GS-hw: Add crc ids for Ape Escape 2.Sp, De, It, Fr versions. + + + + GS-hw: dbg: Fix blend debug logs. + + + + Revert \ + + + + GS-hw: Disable BLEND CD when full barrier is already enabled. + + + + Qt Part 3 + + + + GS-hw: Fix clr 1 case shader.Forgot to rename. + + + + GS-hw: Remove useless shader line from CLR As/Af case. + + + + GS-hw: Exclude triangles from no prim overlap fb read on dx11.Fixes mgs3 + regression on ultra blending. + + + + GS-hw: Replace depth +bilinear assert with log, also do some cost, fix some + logs.Assert was annoying when debugging, being hit too often. + + + + Build-QT: Fix error in VS Project + + + + QT: Remove 32bit build targets (which don't exist)Use a separate environment + varible for our QT folder to save conflicts + + + + QT-SDL: Fix SDL Input compilation + + + + GS: Add Point Pallete SW Render for 120-en no HaruFixes #5211 + + + + GS-hw: Enable Ad to As blend swap when it detects barrier(fbmask) on + d3d11..Allow to run it on basic level, fb is already read so there is no extra + cost and is more accurate. + + + + GS-hw: No PABE for hw clr_blend1_2 optimization.Will require sw blend. + + + + GS-hw: Re add alpha c check for clr_blend1_2.Removed it by accident, nobody + saw nothing. + + + + GS-hw: Purge LordOfTheRingsThirdAge crc hack.Shadows are now rendered + correctly on all renderers. + + + + QT: Add missing Texture Inside RT option. + + + + Make Xcode Happy + + + + GS-hw: Fix d3d11 depth sample shader.Also adjust some comments to match + updated shader names. + + + + GH-workflows: Remove os mentions for auto pad db update.Not needed anymore. + + + + GS-hw: Adjust DATE selection.Remove fbmask check from DATE,Enable DATE_BARRIER + with one barrier when alpha isn't written and there is no alpha test. + + + + GUI/Qt: Fix loading ELF files from menu + + + + GUI/Qt: Fix startup project for debugger + + + + GS: Adjust Tekken 5 CRC hack for fire effect, fixes sun bleed.Fixes #2766 + + + + GS: Fix compilation of GS SW Int Rasterizer + + + + MTVU: Try to make T-Bit more reliable + Add MTVU option to GameDB + + +Tries to make T-Bit more reliable in MTVU, but it is slow and probably shouldn't be used. Also added option to disable MTVU in the GameDB, it seems reliable, hopefully :/ + +T-bit is just broken in MTVU, since the EE thread needs to know when the VU program has finished and if it was a T-Bit finish or E-Bit finish, and the threading makings this a total mess. Plus it turns out a bunch of games which use this actually have DMA problems which are masked with MTVU off. + +Games which are affected and have MTVU forcefully disabled in the DB (known): + +- The Sims +- Spiderman 3 +- Sharks Tale +- Over the Hedge +- Pitfall: The Lost Expedition + + + GS-Config: Clear missing manual GS fixes + + + + Qt: Fix Round sprite hack not applying. + + + + GS Debugger: Fix hw hacks behavior not properly disabling. + + + + Qt: Allow skipdraw up to 10k max. + + + + Build: Remove 32bit code from project + + + + Core: Remove unused code + + + + Core: Remove memcmp_mmx. + + + + GS-hw: Purge Evangelion crc hack.It's broken, HPO special does the job.Someone + should add it to the hw gamefixes. + + + + readme: Update to reflect recent drop of 32bit. + + + + misc: A few more 32bit cleanups. + + + + Qt: Implement (partial) audio settings and memory card settings + + + + GS-hw: Purge GodOfWar 1 and 2 crc hacks.Not needed, can be solved with + upscaling hw hacks, and gs db fixes are a thing. + + +## Metadata + +See you in Q2 2022. + +Q1 2022: +(dev2186 to dev2548) (2022-01-01 - 2022-03-31) diff --git a/docs/usage/setup/index.md b/docs/usage/setup/index.md index 7579f031..e2ae6237 100644 --- a/docs/usage/setup/index.md +++ b/docs/usage/setup/index.md @@ -269,7 +269,7 @@ PlayStation 2 game discs are unencrypted DVDs and CDs. This means they can be du - Put your game disc into an optical drive - Create an image file from a disc inside ImgBurn (highlighted in screenshot below) -{{< img cols="6" src="./img/imgburn.webp">}} + ## Alternative: Dumping PlayStation 2 discs with Media Preservation Frontend (more advanced) @@ -293,4 +293,4 @@ This tool is currently only available on Windows, but Linux support may be added One quick note, the lower the drive speed of the optical drive the more likely you are to get a good dump of the disc. The fastest drive speed will take much less time, but may be incomplete, corrupted, or inaccurate. It could also be perfectly fine, so depending on your drive and your media, try different things and see what works best for you. -{{< img cols="6" src="./img/MPF.webp">}} + diff --git a/scripts/hugo-to-docu.py b/scripts/hugo-to-docu.py index acf8e0a6..8caa5a30 100644 --- a/scripts/hugo-to-docu.py +++ b/scripts/hugo-to-docu.py @@ -104,7 +104,7 @@ def convert_article(orig_path): # TODO - lint over HTML tags that i skipped in the original migration, catch them now content = article.content # recreate folder structure - new_dir = os.path.dirname(orig_path).replace("content", "pcsx2-net") + new_dir = os.path.dirname(orig_path).replace("content/", "") os.makedirs(new_dir, exist_ok=True) # copy contents copy_tree(os.path.dirname(orig_path), new_dir) @@ -154,7 +154,7 @@ def convert_article(orig_path): with open("scripts/track.json") as f: track_data = json.load(f) -subfolders = [ f.path for f in os.scandir("content/blog/2020") if f.is_dir() ] +subfolders = [ f.path for f in os.scandir("content/blog/2022") if f.is_dir() ] for article in subfolders: article = article.replace("\\", "/") diff --git a/src/data/latestBlogs.js b/src/data/latestBlogs.js index 49fe5072..267cedac 100644 --- a/src/data/latestBlogs.js +++ b/src/data/latestBlogs.js @@ -1,14 +1,14 @@ // docusaurus does not have a query engine layer, so these can be set manually or at build-time // (manually for now) -import latestProgressReportImage from "/blog/2022/q4-2021-progress-report/feature-progrepq42021-bgonly.jpg"; +import latestProgressReportImage from "/blog/2023/q1-2022-progress-report/feature-progrepq1-2022-bgonly.webp"; import latestBlogImage from "/blog/2022/life-is-short/feature-nobbs66.webp"; -import previousProgressReportImage from "/blog/2021/q3-2021-progress-report/feature-progrepq32021.webp"; +import previousProgressReportImage from "/blog/2022/q4-2021-progress-report/feature-progrepq42021-bgonly.jpg"; import previousBlogImage from "/blog/2021/aethersx2-brings-pcsx2-to-mobile/feature-AetherSX2sm.webp"; export const latestProgressReport = { - url: "/blog/2022/q4-2021-progress-report", - title: "Q4 2021 Progress Report", + url: "/blog/2023/q1-2022-progress-report", + title: "Q1 2022 Progress Report", img: latestProgressReportImage, }; export const latestBlog = { @@ -17,8 +17,8 @@ export const latestBlog = { img: latestBlogImage, }; export const previousProgressReport = { - url: "/blog/2021/q3-2021-progress-report", - title: "Q3 2021 Progress Report", + url: "/blog/2022/q4-2021-progress-report", + title: "Q4 2021 Progress Report", img: previousProgressReportImage, }; export const previousBlog = { diff --git a/src/mdx/PRLink/PCSX2PRLink.js b/src/mdx/PRLink/PCSX2PRLink.js index fb294796..5e976adf 100644 --- a/src/mdx/PRLink/PCSX2PRLink.js +++ b/src/mdx/PRLink/PCSX2PRLink.js @@ -1,107 +1,107 @@ -import React from "react"; -import { GoGitCommit, GoGitPullRequest } from "react-icons/go"; -import { Avatar, Grid, Tooltip } from "@nextui-org/react"; -import { IconContext } from "react-icons"; -import styles from "./PCSX2PRLink.module.css"; - -function generatePRLinks(prNums) { - if (!prNums) { - return null; - } - const nums = prNums.split(","); - if (nums.length === 0) { - return null; - } - let icons = []; - let i = 0; - for (const num of nums) { - icons.push( - - - - - {num} - - ); - } - return icons; -} - -function generateCommitLinks(commitShas) { - if (!commitShas) { - return null; - } - const shas = commitShas.split(","); - if (shas.length === 0) { - return null; - } - let icons = []; - let i = 0; - for (const sha of shas) { - icons.push( - - - - - {sha.substr(0, 6)} - - ); - } - return icons; -} - -const authorsWithoutAvatars = ["github-actions"]; - -function generateAuthorAvatars(authors) { - if (!authors) { - return null; - } - const authorNames = authors.split(","); - if (authorNames.length === 0) { - return null; - } - let avatars = []; - let i = 0; - for (const author of authorNames) { - avatars.push( - - - - ); - } - return ( - 1} - style={{ marginRight: "0.5em" }} - > - {avatars} - - ); -} - -export default function PCSX2PRLink({ children, prNums, shas, authors }) { - return ( - - - {children} - - - {generateAuthorAvatars(authors)} - {generatePRLinks(prNums)} - {generateCommitLinks(shas)} - - - ); -} +import React from "react"; +import { GoGitCommit, GoGitPullRequest } from "react-icons/go"; +import { Avatar, Grid, Tooltip } from "@nextui-org/react"; +import { IconContext } from "react-icons"; +import styles from "./PCSX2PRLink.module.css"; + +function generatePRLinks(prNums) { + if (!prNums) { + return null; + } + const nums = prNums.split(","); + if (nums.length === 0) { + return null; + } + let icons = []; + let i = 0; + for (const num of nums) { + icons.push( + + + + + {num} + + ); + } + return icons; +} + +function generateCommitLinks(commitShas) { + if (!commitShas) { + return null; + } + const shas = commitShas.split(","); + if (shas.length === 0) { + return null; + } + let icons = []; + let i = 0; + for (const sha of shas) { + icons.push( + + + + + {sha.substr(0, 6)} + + ); + } + return icons; +} + +const authorsWithoutAvatars = ["github-actions"]; + +function generateAuthorAvatars(authors) { + if (!authors) { + return null; + } + const authorNames = authors.split(","); + if (authorNames.length === 0) { + return null; + } + let avatars = []; + let i = 0; + for (const author of authorNames) { + avatars.push( + + + + ); + } + return ( + 1} + style={{ marginRight: "0.5em" }} + > + {avatars} + + ); +} + +export default function PCSX2PRLink({ children, prNums, shas, authors }) { + return ( + + + {children} + + + {generateAuthorAvatars(authors)} + {generatePRLinks(prNums)} + {generateCommitLinks(shas)} + + + ); +}