Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pcsx2 for openSUSE:Factory checked 
in at 2026-02-16 13:11:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsx2 (Old)
 and      /work/SRC/openSUSE:Factory/.pcsx2.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pcsx2"

Mon Feb 16 13:11:42 2026 rev:3 rq:1333199 version:2.7.121~git20260215

Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsx2/pcsx2.changes      2025-10-18 
14:37:59.606867458 +0200
+++ /work/SRC/openSUSE:Factory/.pcsx2.new.1977/pcsx2.changes    2026-02-16 
13:17:56.887621671 +0100
@@ -1,0 +2,559 @@
+Sun Feb 15 09:32:11 UTC 2026 - Yunhe Guo <[email protected]>
+
+- Update to version 2.7.121~git20260215:
+  * GS: Remove OpenGL/CL compat check
+  * GS/HW: Use bounding octagon for overlap detection.
+  * GS/HW: Simplify overlap heuristics, remove axis-aligned tristrip check.
+  * GS/HW: Save tristrips in draw list computation to avoid recomputing.
+  * GS/HW: Clean up drawlist computation.
+  * GS/HW: Paste together tristrips that share common end points.
+  * GS/HW: Detect tri strips with 2 triangles in drawlist.
+  * CMake: Remove dead link
+  * [ci skip] Qt: Update Base Translation.
+  * SPU: Move the isa selection for reverb resampling
+  * SPU: Multi-isa mixer
+  * SPU: Convert V_Core::Mix to free function
+  * SPU: Remove old comment
+  * SPU: Moved mixer definitions to top of file
+  * Patch: Show correct place value when mixing labelled/unlabelled patches
+  * Qt: Cleanup comments + replace lambda
+  * Qt: Add helper function for older config
+  * Qt: Prevent empty Gamelist header + reset option
+  * Qt: Refactor SettingWidgetBinder::BindWidgetToDateTimeSetting
+  * Qt: Run clang-format on all the source files in the pcsx2-qt directory
+  * GS/DX11: Expand caching constant buffer updates.
+  * GS: Add some GSVector4i methods.
+  * [ci skip] Qt: Update Base Translation.
+  * GameDB: localized titles for "Buzz! The Big Quiz" and "Buzz! The Sports 
Quiz"
+  * GS/VK : Remove skip barrier optimization.
+  * Achievements: show subset stats and title in header when viewing a subset
+  * Achivements: Use badges for achievement types
+  * Achievements: Show notification when subset is completed
+  * Achievements: add sidebar UI for subset selection
+  * GS/VK: Provide VkSwapchainPresentModesCreateInfo as per best practices
+  * GS/VK: Make use of aliased swapchain maintenance types
+  * IOP: Fix IRQ edges for SIO2 and CDVD and SIO2 ISTAT usage
+  * GS/TC: Recycle instead of delete targets involved in native scaling
+  * [ci skip] Qt: Update Base Translation.
+  * [ci skip] PAD: Update to latest controller database.
+  * [ci skip] Qt: Update Base Translation.
+  * Qt: Don't steal focus when a modal dialog is open
+  * GameDB: Replace upscaling settings for Genki titles
+  * SPU: Fix and simplify SPU IRQ's
+  * IPU: Reset dc dct precision on soft reset
+  * Debugger: Prevent duplicate saved addresses from being loaded
+  * Deps: Use vswhere to find Visual Studio
+  * SIO2: Rename registers
+  * Qt: Update copyright year in AsyncDialogs.cpp and AsyncDialogs.h
+  * Qt: Fix "Prompt On State Load/Save Failure" help message
+  * Deps: Dont build harfbuzz-gobject
+  * Deps: Dont include GTK when building Qt
+  * Bump peter-evans/create-pull-request in the ci-deps group
+  * Qt: Only show "Applied" label for cheat tree items that are checkable
+  * [ci skip] Qt: Update Base Translation.
+  * Deps: Update Qt to 6.10.2
+  * Qt: Don't set a layout for the log window central widget twice
+  * Debugger: Replace calls to QDialog::exec with QDialog::open
+  * Debugger: Replace QMessageBox with AsyncMessageBox
+  * Debugger: Replace QInputDialog with AsyncInputDialog
+  * Qt: Add asynchronous dialog box helper functions
+  * [ci skip] PAD: Update to latest controller database.
+  * [ci skip] Qt: Update Base Translation.
+  * GS/DX11: Preemptively bind shader resources if possible.
+  * GS: Update Shader/texture copies counter handling.
+  * [ci skip] Qt: Update Base Translation.
+  * GS/DX11: Add console logs for supported features.
+  * GS/DX11: Check if RGBA16 UNORM supports hw blending.
+  * GS/DX11: Check if conservative depth is supported.
+  * GS/DX11: Clear out render/depth stencil views before swap chain present.
+  * Darwin: Implement Mach exceptions ports instead of signals
+  * GS/DX12: Check for typed casting support
+  * GS/DX12: Init enhanced barriers to false
+  * GS/DX11: Align drawlist bounding box to 4 pixel boundaries.
+  * [ci skip] Qt: Update Base Translation.
+  * Docs: update Gamedb documentation
+  * GameDB: remove  left over schemea options
+  * GS/HW: Require 32 bit RT for accumulation blend on max blend.
+  * SPU: Slow down DMA
+  * [ci skip] Qt: Update Base Translation.
+  * GameDB: Add fixes for Puchi Copter 2
+  * GSDumpRunner: Use utf-8 encoding for opening files.
+  * GS/TC: More fixes for dst_matches and old target deletion.
+  * GS/TC: Remove targets in reverse lookup if the targets are old.
+  * GS/TC: Update depth lookup when looking up targets.
+  * FullscreenUI: Run translation script
+  * Tools: Refactor translation string extraction to support multiple source 
files
+  * FullscreenUI: Cleanup headers
+  * FullscreenUI: Extract Settings into separate source and add internal header
+  * GS: Update the stored transfer rect if worked out to be different
+  * GS/HW: On EE->GS transfer only invalidate area actually transferred
+  * GS/TC: Allow creation of target during GS->GS transfer with offset
+  * GS/DX: Fix per game fullscreen mode setting
+  * [ci skip] Qt: Update Base Translation.
+  * SPU: Emulate voice decode buffers
+  * SPU: Remove unused voice struct members
+  * SPU: clang-format mixer.cpp
+  * Debugger: Allow removing conditions from the breakpoint dialog
+  * GS/DX12: Fix recreating swapchain failing on vsync mode changes
+  * Deps: Bump ffnvcodec to 13.0.19.0
+  * [ci skip] Qt: Update Base Translation.
+  * GS/DX/VK: Properly align uniform buffers.
+  * UI : rename fast boot option heading
+  * GameDB: Add EE Nearest Rounding to Steambot Chronicles (Bumpy Trot)
+  * [ci skip] Qt: Update Base Translation.
+  * GS/DX12: Check if D3D12GetInterface is supported first.
+  * Qt: Fix shortcut creation when special folders have been moved.
+  * [ci skip] PAD: Update to latest controller database.
+  * GS/HW: Enable Z floor only when needed.
+  * GS/HW: Use conservative depth for shader depth output.
+  * GS/HW: Reduce barriers in triangle strips/fans.
+  * Memcard: Purge automatic save management
+  * GS/HW: Ignore point draws for a single black pixel in the top left
+  * GS/TC: Enhance depth clear behaviour to improve heuristics
+  * GS/HW: Further improve clear behaviour
+  * GS/TC: Improve wrapping behaviour for inside target lookups
+  * GS/HW: Clear GS memory if not zero or target overwrite
+  * [ci skip] CI/Linux: Fix contribute link
+  * [ci skip] Qt: Update Base Translation.
+  * GS: Default to DX12 on  NV/AMD.
+  * Revert "GS/VK: Use the compute queues for present"
+  * GS/HW: Clear downscale source on draw to avoid cross game corruption
+  * GS/DX12: Don't end render passes on enhanced barriers.
+  * cmake: remove Qt6::GuiPrivate dependency on WIN32 and APPLE
+  * [ci skip] Qt: Update Base Translation.
+  * Deps: Add DX12 Agility SDK
+  * GS/DX12: Use Enhanced Barriers API
+  * GS/VK: Fix the Nvidia present fix
+  * GS/VK: Hackfix impatient present on Nvidia
+  * QT: Focus the main window when the DisplayWidget is focused to get its 
toolbar
+  * 3rdparty: Update rcheevos to 12.2.1
+  * GS/HW: Use old hazard copy method when there's no multidraw or barriers
+  * GS/HW: Add detection for continuous possible vertical shuffles
+  * GS/HW: Support offsetting for channel shuffle instead of copying
+  * GameDB: Add necessary fixes for MotoGP
+  * GS/HW: Improve channel shuffle detection and use on 24bit sources
+  * GS/TC: Delete empty target after height adjust
+  * GameDB: Remove Preload Frame from PachiPara as it just causes problems
+  * GS/HW: Fix up iRem CRC hack to be more accurate
+  * GS/TC: Small optimization to local memory invalidation
+  * GS/HW: Improve fog modulation accuracy in HW renderers
+  * GS/TC: Only bilinearly scale render target if preserve_scale is not set
+  * GS/TC: Only bilinear filter depth scales
+  * GS/HW: Properly scale depth up if required when native scaling is in use
+  * GS/HW: Optimize source sizes when using CLAMP_CLAMP
+  * Revert "Qt: Patch for distinguishing left and right variants of 
shift/alt/ctrl keys"
+  * Revert "PAD: Fix hotkeys to differentiate between left and right keyboard 
keys"
+  * Translations: Fix BPM crash on Chinese Traditional
+  * GS/DX12: Adjust partial depth copies.
+  * GS/DX11: Make sure source and destination rect matches for depth copies.
+  * GS/TC: Do a shader copy/blit for depth textures when doing tc moves.
+  * [ci skip] Qt: Update Base Translation.
+  * Copyright: Change year from 2002-2025 to 2002-2026
+  * GS/DX: Fix exclusive fullscreen potentially using wrong resolution
+  * Qt: Fix exclusive fullscreen sometimes appearing on wrong screen
+  * GS: Correct GS to GS direction check and simplify
+  * GS/VK: Fixes to queue creation
+  * FullscreenUI: Remove unnecessary menu scrollbars, standardize dialogs, and 
improve textboxes
+  * GS/VK: Use the compute queues for present
+  * GS: remove unused function BitCast
+  * Misc: use concepts instead of SFINAE
+  * EE JIT: Fix LUT weirdness
+  * PAD: Fix hotkeys to differentiate between left and right keyboard keys
+  * [ci skip] Qt: Update Base Translation.
+  * GameDB: add patch for Street Mahjong Trans-Asakami 2
+  * GS/TC: Check format matches on invalidation rect translation
+  * Qt/FSUI: Mark DX11 as Legacy.
+  * GS: Improve PCRTC offset wrapping and simplify some deinterlacing
+  * GS: Fix copy/paste typo in TextureMinMax calculation, clean up code
+  * [ci skip] PAD: Update to latest controller database.
+  * [ci skip] Qt: Update Base Translation.
+  * GS/HW: Small improvement to texture shuffle heuristics
+  * Deps: Update SDL3 to v3.4.0
+  * FSUI: Adds more icons
+  * Deps: Remove version number from fontawesome
+  * Deps: Bump FontAwesome to 7.1.0
+  * UI: Rename Limit Depth to 24 Bits option values
+  * Qt: Rename Limit 24 Bit Depth to Limit Depth to 24 Bits
+  * GS: Correct scaling of image for screenshots when Bilinear Sharp is enabled
+  * [ci skip] Qt: Update Base Translation.
+  * USB: Fix missing Train Mascon case warning
+  * Debugger: Properly reset the breakpoint skip first when skipped
+  * GameDB: SFOS cop2 fixes. (#13460)
+  * GS/HW: Tweak Native Scale Upscaled to work in more scenarios
+  * [ci skip] Qt: Update Base Translation.
+  * GS/HW: Only enable depth writes/floor calculation if depth is output
+  * GS/HW: Floor depth writes to improve Z testing
+  * GS/HW: Add Limit 24 Bit Depth Hack
+  * GS: Fix up adding GS_to_GS transfers to the draw_transfers list
+  * GS: Disallow flipped GS->GS transfer when destination overwrites source
+  * microVU: Ignore MAC flags in block match if not required
+  * DiscordRPC: Simplify Game Icon Retrieval
+  * Qt: Patch for distinguishing left and right variants of shift/alt/ctrl keys
+  * Revert "CI/Windows: Disable Qt's PCRE2 JIT"
+  * Qt: Add an EE SIO RX input textbox to the log window
+  * Core: Use deque for EE SIO RX/TX FIFOs
+  * GameDB: Add post-bloom alignment and native scaling for Urban Reign
+  * GS/DX12: Backport DATE stencil one single pass from DX11/VK
+  * Qt: Fix alternate row colors for Ruby/Emerald/Sapphire theme
+  * Qt: Cobalt Sky theme refresh
+  * Qt: AMOLED theme refresh
+  * UI: remove unnecessary uses of QOverload
+  * GS, UI: use u32 instead of s32 for width and height
+  * [ci skip] Qt: Update Base Translation.
+  * GameDB: Added various memory card filters
+  * cmake: only require Qt modules when Qt UI is enabled
+  * Mac: Update MoltenVK to v1.4.1
+  * USB: Train Mascon and Master Controller emulation
+  * GS/D3D: Default to DX12 on older GCN amd cards.
+  * [ci skip] Qt: Update Base Translation.
+  * GS/DX12: Use cmdlist parameter for read depth transitions
+  * [ci skip] PAD: Update to latest controller database.
+  * [ci skip] GameDB: CMR 2005 Fixes (#13782)
+  * [ci skip] Release 2.6
+  * Achievements: Store token to separate ini
+  * Translations: Syncing Crowdin translations
+  * Qt: Don't show the dev name if it equals the displayname
+  * FSUI: Don't show the name if it equals the displayname when listing
+  * FullscreenUI: Update auto mapping to include device names with display 
names
+  * Debugger: Check PC instead of cycles when stopping for a breakpoint
+  * GS/DX12: Fix validation errors when depth testing and sampling
+  * GameDB: Various fixes
+  * [ci skip] PAD: Update to latest controller database.
+  * GS/DX12: Don't move to next command list until after wait
+  * GS/DX12: Correct descriptor allocation error messages
+  * GS/DX12: Free from correct descriptor heap in error handling
+  * GS/DX12: Always require barrier of feedback read
+  * GameDB: Warhammer 40k FW Fixes
+  * GameDB: Guitar Hero Smash Hits fixes
+  * 3rdparty: Update rcheevos to 12.2.0
+  * GS/HW: Split draws before modifying the index buffer
+  * [ci skip] Qt: Update Base Translation.
+  * [ci skip] Qt: Update Base Translation.
+  * GS/HW: Use copies if barriers aren't supported properly.
+  * GS/VK: Enable surface maintenance extension if supported
+  * FullscreenUI: Fix crash during HDD creation
+  * [ci skip] Qt: Update Base Translation.
+  * Qt: Add missing include
+  * [ci skip] Qt: Update Base Translation.
+  * Qt: Add RA Logo to Achievement Login Dialog
+  * GS/DX12: Fix handling of stencil DATE one
+  * GS/DX12: Enable GBV with the debug device
+  * GS/DX12: Use aliasing resources for feedback
+  * GameDB: Juiced post fixes
+  * GS/VK: Support VK_KHR_swapchain_maintenance1
+  * GS/VK: Don't reference old swapchain when recreating on AMD
+  * GS/VK: Reduce spam when swapchain needs to be recreated
+  * GS/VK: Don't recreate swapchain during EndPresent
+  * Qt: Don't contain display surface when entering fullscreen/separate on 
Windows
+  * [ci skip] Qt: Update Base Translation.
+  * Qt: Display when the hovered cheat will be applied in the UI
+  * Patch: Fix bug causing the UI to show the wrong place value
+  * [ci skip] PAD: Update to latest controller database.
+  * SaveState: Swap two OSD error messages that were the wrong way round
+  * [ci skip] Bump the ci-deps group with 4 updates (#13708)
+  * [ci skip] Qt: Update Base Translation.
+  * Patch: Restore original behaviour of PPT_ONCE_ON_LOAD, add new 
PPT_ON_LOAD_OR_WHEN_ENABLED place option, and display when a patch is applied 
in the GUI (#13698)
+  * FSUI/Qt: Add Center/Tile background modes and remove redundant Qt null 
checks (#13564)
+  * SaveState: Fix error handling in SaveState_ZipToDisk
+  * VMManager: Reword save state error messages
+  * SaveState: Rework error handling when saving states
+  * Qt: Add setting to show state load errors using a dialog or OSD message
+  * FSUI: Add Start Big Picture UI Option
+  * Qt: Misc Shortcut Cleanups
+  * Qt: Fixup statefile shortcut and icon name
+  * Qt: Don't use wildcard disconnection for some settings combo boxes
+  * GS/DX12: Add debug log when end stencil is discarded.
+  * GS/DX12: Preserve end stencil when doing fb copies.
+  * Deps: Update libpng-apng patch to v1.6.53
+  * Deps: Update libpng to v1.6.53
+  * CDVD: Fix an out of bounds read exploit in MG SCMD handlers
+  * [ci skip] GitHub: Update issue template program version. (#13691)
+  * Qt/FSUI: Base Translation Update
+  * Qt: Add Dedup Comment hint to toolbar buttons
+  * Qt: Fix untranslatable strings
+  * Qt/Shortcut: Fix missing parenthesis
+  * Qt: Remove unused String
+  * Qt/FSUI: Unify VSync String
+  * FSUI: Translation Strings Fixes
+  * Qt: Translation Fixes From Crowdin
+  * Qt/FSUI: Few Save State String Fixes
+  * Qt/FSUI: Fix FIFA case spelling
+  * Qt: Unify Bilinear Dirty Upscale string
+  * Qt: Unify Skip Draw String
+  * Qt: Clarify open directory menu
+  * Qt/Host: Clarify download error message
+  * Qt/Debugger: Dont translate symbolSourceErrorMessage
+  * Qt: Fix DEV9 Host name header title
+  * Qt: Fix audio sync description confusion
+  * GS/HW: Detect offset shuffle on TexIsFB
+  * [ci skip] Qt: Update Base Translation.
+  * GS/HW: Prevent assertion in StretchRect().
+  * FullscreenUI: use RegionToFlagFilename for flag textures
+  * GameList: Add RegionToFlagFilename function to map regions to flag 
filenames
+  * Resources: Add new SVG flag icons for various countries and remove 
obsolete flag files
+  * Qt: Add language flag icons to settings and setup
+  * VMManager: Improve error handling for initialization functions
+  * Host: Remove ConfirmMessage and ConfirmFormattedMessage functions
+  * VMManager: Fix deadlock when asking to disable hardcore in fullscreen
++++ 262 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/pcsx2/pcsx2.changes
++++ and /work/SRC/openSUSE:Factory/.pcsx2.new.1977/pcsx2.changes

Old:
----
  pcsx2-2.5.233~git20251018.tar.xz

New:
----
  pcsx2-2.7.121~git20260215.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pcsx2.spec ++++++
--- /var/tmp/diff_new_pack.cktoJ1/_old  2026-02-16 13:17:58.863706041 +0100
+++ /var/tmp/diff_new_pack.cktoJ1/_new  2026-02-16 13:17:58.879706725 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package pcsx2
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           pcsx2
-Version:        2.5.233~git20251018
+Version:        2.7.121~git20260215
 Release:        0
 Summary:        Sony PlayStation 2 Emulator
 License:        GPL-2.0-only AND GPL-3.0-only AND LGPL-2.1-only AND 
LGPL-3.0-only

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.cktoJ1/_old  2026-02-16 13:17:59.139717826 +0100
+++ /var/tmp/diff_new_pack.cktoJ1/_new  2026-02-16 13:17:59.175719363 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/PCSX2/pcsx2.git</param>
-              <param 
name="changesrevision">a159256b07e92d53947e6bd8b6a14e9fe1b6b2d8</param></service></servicedata>
+              <param 
name="changesrevision">fa85ef3f926baa71b4a48307401be34d942a4133</param></service></servicedata>
 (No newline at EOF)
 

++++++ patches.zip ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAPX-90203_55CE5111.pnach 
new/PAPX-90203_55CE5111.pnach
--- old/PAPX-90203_55CE5111.pnach       2025-10-13 18:10:04.000000000 +0200
+++ new/PAPX-90203_55CE5111.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -110,6 +110,753 @@
 gsinterlacemode=1
 patch=0,EE,2023FF70,extended,00000000
 
+[Car select]
+description=Use dpad left/right to select the car in the menus.
+author=Silent, original research by Xenn765
+
+// NOTES:
+
+// Code caves:
+// 0200C8C - 0200D1C
+// 0200CF8 - 0200D1C - EXHAUSTED
+// 0201488 - 02014C4 - EXHAUSTED
+// 0204E08 - 0204E98 - free from 00204E88
+// 020AA04 - 020AA9C - free from 0020AA10
+// 020BBBC - 020BD00 - EXHAUSTED
+// 021617C - 02161C4 - EXHAUSTED
+// 02161DC - 0216204 - EXHAUSTED
+// 02181CC - 0218270
+// 022D5B0 - 022D77C - free from 0022D768
+// 022EC50 - 022EC74 - free from 0022EC5C
+
+// Unused functions that are used here (not suitable for code caves):
+// 020BB88 - gt2k_menu::SelectColorUnit::SetSampleGradient
+// 020BBBC - gt2k_menu::SelectColorUnit::StopAnimations (moved from 020BC00)
+// 020BD08 - gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+// 020BD60 - gt2k_menu::SelectColorUnit::SelectColorUnit
+
+// 020BD04 - gt2k_menu::Transitive<1>::ApplyAnimation (recreated)
+
+// Expand gt2k_menu::TaikenSequence by 16 bytes to fit an extra menu entry
+patch=0,EE,10201334,extended,00E8
+
+// Shrink userSelections::colorIndex to 2 bytes
+patch=0,EE,1020928A,extended,84E2 // lh v0,(a3).colorIndex (0x0)
+patch=0,EE,1020A09E,extended,A483 // sh v1,(a0).colorIndex (0x0)
+
+// Shrink FrontendCarInfo::m_carColor to 2 bytes
+patch=0,EE,1020A246,extended,A602 // sh v0,(s0).m_carColor (0x4A0)
+patch=0,EE,1020EBA6,extended,8643 // lh v1,(s2).m_carColor (0x4A0)
+
+// Replace the hardcoded 0 model with FrontendCarInfo::m_carIndex
+// and populate it from the menu
+patch=0,EE,2020EB64,extended,848504A2 // lh a1,(a0).m_carIndex (0x4A2)
+patch=0,EE,2020A238,extended,8E0300D8 // lw v1,(s0).m_carSelect.value (0xD8)
+patch=0,EE,2020A240,extended,0C082A81 // jal CodeCave_SetCarIndex
+
+// Replace the hardcoded 0 model with FrontendCarInfo::m_carIndex
+// in FrontendCarInfo::Initialize
+patch=0,EE,2020E5EC,extended,848504A2 // lh a1,(a0).m_carIndex (0x4A2)
+
+// CodeCave_SetCarIndex:
+patch=0,EE,2020AA04,extended,A60304A2 // sh v1, (s0).m_carIndex (0x4A2)
+patch=0,EE,2020AA08,extended,0808C9BE // j Control::getButtons(void)
+patch=0,EE,2020AA0C,extended,0220202D // move a0,s1
+
+// Repurpose RaceEntryBase::field_4 (unused, set to 6 once, number of cars in 
the race?) as a current player car index
+patch=0,EE,2021740C,extended,00000000 // nop
+
+// Split PrepareRaceHolding into two functions - one initializing the race 
organization, the other initializing
+// the array of cars in RaceEntryBase
+
+// Prepare PrepareRaceHolding_split2
+patch=0,EE,2021617C,extended,27BDFFC0 // addiu sp,sp,-0x40
+patch=0,EE,20216180,extended,FFB20020 // sd s2,0x20(sp)
+patch=0,EE,20216184,extended,FFB10010 // sd s1,0x10(sp)
+patch=0,EE,20216188,extended,FFB00000 // sd s0,0x0(sp)
+patch=0,EE,2021618C,extended,FFBF0030 // sd ra,0x30(sp)
+patch=0,EE,20216190,extended,1000FFE9 // b 0x00216138
+patch=0,EE,20216194,extended,0000882D // move s1,zero
+
+// PrepareRaceHolding_split2_Call
+patch=0,EE,20216198,extended,27BDFFE0 // addiu sp,sp,-0x20
+patch=0,EE,2021619C,extended,FFB00000 // sd s0,0x0(sp)
+patch=0,EE,202161A0,extended,FFBF0010 // sd ra,0x10(sp)
+patch=0,EE,202161A4,extended,86700002 // lh s0,0x2(s3)
+patch=0,EE,202161A8,extended,0C085744 // jal RaceEntryBase::clear
+patch=0,EE,202161AC,extended,8E440000 // lw a0,(s2).m_raceEntry
+patch=0,EE,202161B0,extended,0C08585F // jal PrepareRaceHolding_split2
+patch=0,EE,202161B4,extended,00000000 // nop
+patch=0,EE,202161B8,extended,8C430000 // lw v1,(v0).m_raceEntry
+patch=0,EE,202161BC,extended,AC700004 // sw s0,(v1).m_playerCarIndex
+patch=0,EE,202161C0,extended,10000006 // beq zero,zero,0x002161DC
+patch=0,EE,202161C4,extended,8C620008 // lw v0,(v1).m_entries
+
+patch=0,EE,202161DC,extended,00101880 // sll v1,s0,0x02
+patch=0,EE,202161E0,extended,00431021 // addu v0,v0,v1
+patch=0,EE,202161E4,extended,24050002 // addiu a1,zero,0x2
+patch=0,EE,202161E8,extended,8C420000 // lw v0,0x0(v0)
+patch=0,EE,202161EC,extended,DFBF0010 // ld ra,0x10(sp)
+patch=0,EE,202161F0,extended,DFB00000 // ld s0,0x0(sp)
+patch=0,EE,202161F4,extended,03E00008 // jr ra
+patch=0,EE,202161F8,extended,27BD0020 // addiu sp,sp,0x20
+
+// raceOrganization->m_raceEntry->m_entries will be 0 at this point so NOP the 
access
+patch=0,EE,202003BC,extended,00000000 // nop
+
+// Call PrepareRaceHolding_split2 before dereferencing s1
+// and swap v0/s1 around so we don't need to save the return value of this 
'function'
+// PrepareRaceHolding_split2 needs to return the current car in v0
+patch=0,EE,20200448,extended,0C085866 // jal PrepareRaceHolding_split2_Call
+patch=0,EE,2020044C,extended,87B100E0 // lh s1,0x140+userOptions(sp) (0xE0)
+patch=0,EE,10200452,extended,AC51 // sw s1,?(v0)
+patch=0,EE,10200456,extended,8FB1 // lw s1,?(sp)
+patch=0,EE,20200460,extended,0011882B // sltu s1,zero,s1
+patch=0,EE,1020046A,extended,AC51 // sw s1,?(v0)
+patch=0,EE,10200472,extended,AC43 // sw v1,?(v0)
+patch=0,EE,1020047A,extended,AC44 // sw a0,?(v0)
+
+// Prepare a new gt2k_menu::TaikenSequence::UpdateColorSelect(this) method
+patch=0,EE,2022D610,extended,27BDFFF0 // addiu sp,sp,-0x10
+patch=0,EE,2022D614,extended,FFBF0000 // sd ra,0x0(sp)
+
+patch=0,EE,2022D618,extended,8C8500D8 // lw a1,(a0).m_carSelect.value (0xD8)
+patch=0,EE,2022D61C,extended,3C06002A // lui a2,0x002A
+patch=0,EE,2022D620,extended,00053880 // sll a3,a1,0x02
+patch=0,EE,2022D624,extended,24C60858 // addiu a2,a2,0x858
+patch=0,EE,2022D628,extended,278883C0 // addiu t0,gp,-0x7C40
+patch=0,EE,2022D62C,extended,00C73021 // addu a2,a2,a3
+patch=0,EE,2022D630,extended,8CC60000 // lw a2,0x0(a2)
+patch=0,EE,2022D634,extended,8CC70000 // lw a3,0x0(a2)
+patch=0,EE,2022D638,extended,0000182D // move v1,zero
+patch=0,EE,2022D63C,extended,AC8700A0 // sw a3,(a0).m_colorSelect.maxValue 
(0xA0)
+patch=0,EE,2022D640,extended,24C60004 // addiu a2,a2,0x4
+patch=0,EE,2022D644,extended,240A0001 // li t2,0x1
+patch=0,EE,2022D648,extended,54A00001 // bnel a1,zero,UpdateColorSelect_SetTile
+patch=0,EE,2022D64C,extended,240A0003 // li t2,0x3
+
+// UpdateColorSelect_SetTile:
+patch=0,EE,2022D650,extended,0067102B // sltu v0,v1,a3
+patch=0,EE,2022D654,extended,1040000F // beq v0,zero,UpdateColorSelect_HideTile
+patch=0,EE,2022D658,extended,24090003 // li t1,0x3
+patch=0,EE,2022D65C,extended,C4CC0000 // lwc1 f12,0x0(a2)
+patch=0,EE,2022D660,extended,C4CD0004 // lwc1 f13,0x4(a2)
+patch=0,EE,2022D664,extended,C4CE0008 // lwc1 f14,0x8(a2)
+patch=0,EE,2022D668,extended,C4CF000C // lwc1 f15,0xC(a2)
+patch=0,EE,2022D66C,extended,C4D00010 // lwc1 f16,0x10(a2)
+patch=0,EE,2022D670,extended,C4D10014 // lwc1 f17,0x14(a2)
+patch=0,EE,2022D674,extended,0C082EE2 // jal 
gt2k_menu::SelectColorUnit::SetSampleGradient
+patch=0,EE,2022D678,extended,8D040000 // lw a0,0x0(t0)
+patch=0,EE,2022D67C,extended,AC800048 // sw zero,0x48(a0)
+patch=0,EE,2022D680,extended,AC8A0110 // sw t2,0x110(a0)
+patch=0,EE,2022D684,extended,25080004 // addiu t0,t0,0x4
+patch=0,EE,2022D688,extended,24C60018 // addiu a2,a2,0x18
+patch=0,EE,2022D68C,extended,1000FFF0 // b UpdateColorSelect_SetTile
+patch=0,EE,2022D690,extended,24630001 // addiu v1,v1,0x1
+
+// UpdateColorSelect_HideTile:
+patch=0,EE,2022D694,extended,2C62000C // sltiu v0,v1,0x000C
+patch=0,EE,2022D698,extended,10400006 // beq v0,zero,UpdateColorSelect_End
+patch=0,EE,2022D69C,extended,8D040000 // lw a0,0x0(t0)
+patch=0,EE,2022D6A0,extended,AC890048 // sw t1,0x48(a0)
+patch=0,EE,2022D6A4,extended,AC890110 // sw t1,0x110(a0)
+patch=0,EE,2022D6A8,extended,25080004 // addiu t0,t0,0x4
+patch=0,EE,2022D6AC,extended,1000FFF9 // b UpdateColorSelect_HideTile
+patch=0,EE,2022D6B0,extended,24630001 // addiu v1,v1,0x1
+
+// UpdateColorSelect_End
+patch=0,EE,2022D6B4,extended,DFBF0000 // ld ra,0x0(sp)
+patch=0,EE,2022D6B8,extended,03E00008 // jr ra
+patch=0,EE,2022D6BC,extended,27BD0010 // addiu sp,sp,0x10
+
+
+// Prepare a new gt2k_menu::TaikenSequence::UpdateBadgeVisibility(this) method
+patch=0,EE,2022D6C0,extended,8C8400D8 // lw a0,0xD8(a0)
+patch=0,EE,2022D6C4,extended,240A0001 // li t2,0x1
+patch=0,EE,2022D6C8,extended,0000582D // li t3,zero
+patch=0,EE,2022D6CC,extended,54800002 // bnel 
a0,zero,UpdateBadgeVisibility_ToggleCarBadge
+patch=0,EE,2022D6D0,extended,240A0003 // li t2,0x3
+patch=0,EE,2022D6D4,extended,240B0001 // li t3,0x1
+
+// UpdateBadgeVisibility_ToggleCarBadge
+patch=0,EE,2022D6D8,extended,8F848BB4 // lw a0,-0x744C(gp) (gCarBadgeTexture)
+patch=0,EE,2022D6DC,extended,AC8B00C4 // sw t3,0xC4(a0)
+patch=0,EE,2022D6E0,extended,8C840008 // lw a0,0x8(a0)
+
+// UpdateBadgeVisibility_ToggleCarBadge_Child:
+patch=0,EE,2022D6E4,extended,50800004 // beql 
a0,zero,UpdateBadgeVisibility_ToggleCarSpecs
+patch=0,EE,2022D6E8,extended,8F848BC0 // lw a0,-0x7440(gp) (gCarSpecsSlider)
+patch=0,EE,2022D6EC,extended,AC8A0024 // sw t2,0x24(a0)
+patch=0,EE,2022D6F0,extended,1000FFFC // b 
UpdateBadgeVisibility_ToggleCarBadge_Child
+patch=0,EE,2022D6F4,extended,8C840004 // lw a0,0x4(a0)
+
+// UpdateBadgeVisibility_ToggleCarSpecs
+patch=0,EE,2022D6F8,extended,AC8B00C4 // sw t3,0xC4(a0)
+patch=0,EE,2022D6FC,extended,8C840008 // lw a0,0x8(a0)
+
+// UpdateBadgeVisibility_ToggleCarSpecs_Child:
+patch=0,EE,2022D700,extended,50800004 // beql 
a0,zero,UpdateBadgeVisibility_ToggleCarSpecs_ToggleCarPower
+patch=0,EE,2022D704,extended,8F848BB8 // lw a0,-0x7448(gp) (g4WDText)
+patch=0,EE,2022D708,extended,AC8A0024 // sw t2,0x24(a0)
+patch=0,EE,2022D70C,extended,1000FFFC // b 
UpdateBadgeVisibility_ToggleCarSpecs_Child
+patch=0,EE,2022D710,extended,8C840004 // lw a0,0x4(a0)
+
+// UpdateBadgeVisibility_ToggleCarSpecs_ToggleCarPower
+patch=0,EE,2022D714,extended,AC8A0024 // sw t2,0x24(a0)
+patch=0,EE,2022D718,extended,8F848BBC // lw a0,-0x7444(gp) (gCarPowerText)
+
+// UpdateBadgeVisibility_ToggleCarSpecs_End
+patch=0,EE,2022D71C,extended,03E00008 // jr ra
+patch=0,EE,2022D720,extended,AC8A0024 // sw t2,0x24(a0)
+
+
+// Prepare a new gt2k_menu::TaikenSequence::FadeCarOnSelect() method
+patch=0,EE,2022D724,extended,27BDFFF0 // addiu sp,sp,-0x10
+patch=0,EE,2022D728,extended,FFBF0000 // sd ra,0x0(sp)
+
+patch=0,EE,2022D72C,extended,3C05002A // lui a1,0x002A
+patch=0,EE,2022D730,extended,8F8483B0 // lw a0,-0x7C50(gp) (gCameraMan)
+patch=0,EE,2022D734,extended,0C082F41 // jal 
gt2k_menu::Transitive<1>::ApplyAnimation
+patch=0,EE,2022D738,extended,24A52248 // addiu a1,a1,0x2248
+patch=0,EE,2022D73C,extended,3C05002A // lui a1,0x002A
+patch=0,EE,2022D740,extended,8F8483B8 // lw a0,-0x7C48(gp) (gCarModel)
+patch=0,EE,2022D744,extended,0C082F41 // jal jal 
gt2k_menu::Transitive<1>::ApplyAnimation
+patch=0,EE,2022D748,extended,24A52128 // addiu a1,a1,0x2128
+patch=0,EE,2022D74C,extended,3C05002A // lui a1,0x002A
+patch=0,EE,2022D750,extended,8F8483BC // lw a0,-0x7C44(gp) (gCarModelShadow)
+patch=0,EE,2022D754,extended,0C082F41 // jal jal 
gt2k_menu::Transitive<1>::ApplyAnimation
+patch=0,EE,2022D758,extended,24A521B8 // addiu a1,a1,0x21B8
+
+patch=0,EE,2022D75C,extended,DFBF0000 // ld ra,0x0(sp)
+patch=0,EE,2022D760,extended,100081EF // b gt2k_menu::CameraMan::ResetRotation
+patch=0,EE,2022D764,extended,27BD0010 // addiu sp,sp,0x10
+
+
+// Initialize the new menu option in gt2k_menu::TaikenSequence::PreMenu
+// Reuse the unwind code paths for this
+patch=0,EE,202092E0,extended,84E20002 // lh v0,(a3).carIndex (0x2)
+patch=0,EE,202092E8,extended,AE2200D8 // sw v0,(s1).m_carSelect.value (0xD8)
+patch=0,EE,202092EC,extended,AE2300E4 // sw v1,(s1).m_carSelect.clampValues 
(0xE4)
+patch=0,EE,202092F0,extended,24020006 // li v0,0x6
+patch=0,EE,202092F4,extended,AE2000DC // sw zero,(s1).m_carSelect.minValue 
(0xDC)
+patch=0,EE,202092F8,extended,AE2200E0 // sw v0,(s1).m_carSelect.maxValue (0xE0)
+
+patch=0,EE,202092FC,extended,0C08B584 // jal 
gt2k_menu::TaikenSequence::UpdateColorSelect
+patch=0,EE,20209300,extended,0220202D // move a0,s1
+patch=0,EE,20209304,extended,1000000F // b 0x00209344
+
+// Call gt2k_menu::TaikenSequence::UpdateBadgeVisibility when initializing 
badges
+patch=0,EE,2020620C,extended,0200202D // move a0,s0
+patch=0,EE,20206210,extended,0808B5B0 // j 
gt2k_menu::TaikenSequence::UpdateBadgeVisibility
+
+patch=0,EE,20206244,extended,1000FFF1 // b 0x0020620C
+
+
+// Update the race paramaters using the newly added menu option
+patch=0,EE,20201488,extended,8E0300D8 // lw v1,(s0).m_carSelect.value (0xD8)
+patch=0,EE,2020148C,extended,1000FF04 // b sub_2010A0
+patch=0,EE,20201490,extended,A4830002 // sh v1,(a0).carIndex (0x2)
+patch=0,EE,2020A0B4,extended,0C080522 // jal sub_201488
+
+// Change the color select sound to the "secondary selection" high pitched one,
+// as we'll use the "main selection" lower pitched one for the car selection
+patch=0,EE,10209580,extended,000A // li a0,0xA
+
+// Update the camera manager pan out animation not to destroy the object, but 
to loop it
+patch=0,EE,202A2368,extended,00000001 // SkipFrames
+
+// Store the pointer to the camera manager for later
+patch=0,EE,2020DF1C,extended,AF8483B0 // sw a0,-0x7C50(gp) (gCameraMan)
+patch=0,EE,202027C8,extended,0C0837C7 // jal 
gt2k_menu::CameraMan::SetPointerAndResetRotation
+
+// Instead, mark it for destruction when fading out the UI elements when 
backing out
+patch=0,EE,20204E78,extended,8F8483B0 // lw a0,-0x7C50(gp) (gCameraMan)
+patch=0,EE,20204E7C,extended,24020001 // addiu v0,zero,0x1
+patch=0,EE,20204E80,extended,1000F1B3 // b 
gt2k_menu::TaikenSequence::NotifyAnimationDone
+patch=0,EE,20204E84,extended,AC82001C // sw v0,0x1C(a0)
+
+patch=0,EE,202A3BCC,extended,00204E78 // NotifyAnimationDone_DestroyCameraMan
+
+// Add dpad left/dpad right menu navigation
+
+// CodeCave1:
+patch=0,EE,20201494,extended,0C08C9C0 // jal Control::getButtonDown(void)
+patch=0,EE,20201498,extended,0220202D // move a0,s1
+patch=0,EE,2020149C,extended,30432000 // andi v1,v0,0x2000
+patch=0,EE,202014A0,extended,10600003 // beq v1,zero,0x002014B0
+patch=0,EE,202014A4,extended,30428000 // andi v0,v0,0x8000
+patch=0,EE,202014A8,extended,10000003 // b 0x002014B8
+patch=0,EE,202014AC,extended,24050001 // li a1,0x1
+patch=0,EE,202014B0,extended,10402073 // beq v0,zero,0x00209680
+patch=0,EE,202014B4,extended,2405FFFF // li a1,-0x1
+patch=0,EE,202014B8,extended,0C0838E6 // jal AdvanceMenuOption
+patch=0,EE,202014BC,extended,260400D8 // addiu a0,s0.m_carSelect (0xD8)
+patch=0,EE,202014C0,extended,1000FE0D // b CodeCave2
+
+// CodeCave2:
+patch=0,EE,20200CF8,extended,14400005 // bne v0,zero,0x00200D10
+patch=0,EE,20200CFC,extended,24040005 // li a0,0x5
+patch=0,EE,20200D00,extended,0C080434 // jal PlayUISound
+patch=0,EE,20200D04,extended,24040006 // li a0,0x6
+patch=0,EE,20200D08,extended,1000225D // b 0x00209680
+patch=0,EE,20200D0C,extended,00000000 // nop
+patch=0,EE,20200D10,extended,0C08B56C // jal SwitchCarInMenu
+patch=0,EE,20200D14,extended,0200202D // move a0,s0
+patch=0,EE,20200D18,extended,10002259 // b 0x00209680
+patch=0,EE,20200D1C,extended,00000000 // nop
+
+patch=0,EE,20209610,extended,1040DFA0 // beq v0,zero,CodeCave1
+
+// Perform car switching in the menu
+
+// SwitchCarInMenu:
+// Falls through to gt2k_menu::TaikenSequence::UpdateColorSelect by design!
+patch=0,EE,2022D5B0,extended,27BDFFD0 // addiu sp,sp,-0x30
+patch=0,EE,2022D5B4,extended,FFB10020 // sd s1,0x20(sp)
+patch=0,EE,2022D5B8,extended,FFB00010 // sd s0,0x10(sp)
+patch=0,EE,2022D5BC,extended,FFBF0000 // sd ra,0x0(sp)
+patch=0,EE,2022D5C0,extended,0080802D // move s0,a0
+patch=0,EE,2022D5C4,extended,8C9100D8 // lw s1,(a0).m_carSelect.value (0xD8)
+patch=0,EE,2022D5C8,extended,0C080434 // jal PlayUISound
+patch=0,EE,2022D5CC,extended,24040005 // addiu a0,zero,0x5
+
+patch=0,EE,2022D5D0,extended,3C040027 // lui a0,0x0027
+patch=0,EE,2022D5D4,extended,0220282D // move a1,s1
+patch=0,EE,2022D5D8,extended,0C0867D2 // jal SetUpCarPartsDataForMenu
+patch=0,EE,2022D5DC,extended,248493B8 // addiu a0,a0,-0x6C48
+
+patch=0,EE,2022D5E0,extended,8F838B9C // lw v1,-0x7464(gp) (gSideRuler)
+patch=0,EE,2022D5E4,extended,2402000A // li v0,0xA
+patch=0,EE,2022D5E8,extended,AE000098 // sw zero,(s0).m_colorSelect.value 
(0x98)
+patch=0,EE,2022D5EC,extended,0C08B5B0 // jal 
gt2k_menu::TaikenSequence::UpdateBadgeVisibility
+patch=0,EE,2022D5F0,extended,0200202D // move a0,s0
+patch=0,EE,2022D5F4,extended,0C08B5C9 // jal 
gt2k_menu::TaikenSequence::FadeCarOnSelect
+patch=0,EE,2022D5F8,extended,AC6200D8 // sw v0,0xD8(v1)
+
+patch=0,EE,2022D5FC,extended,0200202D // move a0,s0
+patch=0,EE,2022D600,extended,DFBF0000 // ld ra,0x0(sp)
+patch=0,EE,2022D604,extended,DFB00010 // ld s0,0x10(sp)
+patch=0,EE,2022D608,extended,DFB10020 // ld s1,0x20(sp)
+patch=0,EE,2022D60C,extended,27BD0030 // addiu sp,sp,0x30
+
+
+// Switch cars in race
+patch=0,EE,20216A24,extended,26250048 // addiu a1,s1,0x48
+patch=0,EE,20216A28,extended,03E00008 // jr ra
+patch=0,EE,20216A2C,extended,AC82000C // sw v0,0xC(a0)
+
+patch=0,EE,202161FC,extended,8C660004 // lw a2,0x4(v1)
+patch=0,EE,20216200,extended,03E00008 // jr ra
+patch=0,EE,20216204,extended,00063080 // sll a2,a2,0x02
+
+patch=0,EE,202182DC,extended,0C08587F // jal 0x002161FC
+patch=0,EE,202182E8,extended,00C23021 // addu a2,a2,v0
+patch=0,EE,202182EC,extended,8CC30000 // lw v1,0x0(a2)
+patch=0,EE,202182F4,extended,AE230030 // sw v1,0x30(s1)
+
+patch=0,EE,2022E84C,extended,0C08BB14 // jal 0x0022EC50
+patch=0,EE,2022E850,extended,8C620000 // lw v0,0x0(v1)
+patch=0,EE,1022E856,extended,AE86 // sw a2,?(s4)
+
+patch=0,EE,2022EC50,extended,8C460004 // lw a2,0x4(v0)
+patch=0,EE,2022EC54,extended,03E00008 // jr ra
+patch=0,EE,2022EC58,extended,8C430000 // lw v1,0x0(v0)
+
+// Expand the color picker to have 12 entries max
+
+// Rebuild gt2k_menu::SelectColorUnit::StopAnimations in a different place so 
our code cave isn't split
+patch=0,EE,2020BBBC,extended,AC8001B0 // sw zero,0x1B0(a0)
+patch=0,EE,2020BBC0,extended,03E00008 // jr ra
+patch=0,EE,2020BBC4,extended,AC8000E8 // sw zero,0xE8(a0)
+
+// Build gt2k_menu::Transitive<1>::ApplyAnimation by offsetting a this pointer
+// into gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BD04,extended,2484FFDC // addiu a0,a0,-0x24
+
+// Build a helper function
+// gt2k_menu::SelectColorUnit::CreateNoColorName(gt2k_menu::Object* parent, 
int position)
+// and modify gt2k_menu::SelectColorUnit::SelectColorUnit for our needs
+patch=0,EE,1020BDD8,extended,0020
+patch=0,EE,1020BDF4,extended,3B30 // li ?, 
gt2k_menu::SideRuler::RectanglePreRender (0x00203B30)
+patch=0,EE,1020BF20,extended,3C60 // li ?, 
gt2k_menu::SideRuler::RectanglePreRender (0x00203C60)
+patch=0,EE,1020C018,extended,0003 // li ?,0x3
+
+patch=0,EE,2020BBC8,extended,27BDFFD0 // addiu sp,sp,-0x30
+patch=0,EE,2020BBCC,extended,FFB10000 // sd s1,0x0(sp)
+patch=0,EE,2020BBD0,extended,FFB00010 // sd s0,0x10(sp)
+patch=0,EE,2020BBD4,extended,FFBF0020 // sd ra,0x20(sp)
+patch=0,EE,2020BBD8,extended,00A0882D // move s1,a1
+patch=0,EE,2020BBDC,extended,0080802D // move s0,a0
+patch=0,EE,2020BBE0,extended,3C040026 // lui a0,0x0026
+patch=0,EE,2020BBE4,extended,240501BC // li a1,0x1BC (gGt2k_menu_allocator)
+patch=0,EE,2020BBE8,extended,24846BC8 // addiu a0,a0,0x6BC8
+patch=0,EE,2020BBEC,extended,0C0919C2 // jal pdistd::Allocator::allocate
+patch=0,EE,2020BBF0,extended,24060010 // li a2,0x10
+patch=0,EE,2020BBF4,extended,0040202D // move a0,v0
+patch=0,EE,2020BBF8,extended,0220402D // move a4,s1
+patch=0,EE,2020BBFC,extended,0200482D // move a5,s0
+patch=0,EE,2020BC00,extended,8F878B9C // lw a3,-0x7464(gp) (gSideRuler)
+patch=0,EE,2020BC04,extended,DFBF0020 // ld ra,0x20(sp)
+patch=0,EE,2020BC08,extended,DFB00010 // ld s0,0x10(sp)
+patch=0,EE,2020BC0C,extended,DFB10000 // ld s1,0x0(sp)
+patch=0,EE,2020BC10,extended,10000053 // b 
gt2k_menu::SelectColorUnit::SelectColorUnit
+patch=0,EE,2020BC14,extended,27BD0030 // addiu sp,sp,0x30
+
+// Expand InitializeSelectColorUnits
+patch=0,EE,20204E00,extended,2405000F // li a1,0xF
+
+patch=0,EE,20204E08,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E0C,extended,0260202D // move a0,s3
+patch=0,EE,20204E10,extended,AF8283D4 // sw v0,-0x7C2C(gp)
+patch=0,EE,20204E14,extended,24050010 // li a1,0x10
+patch=0,EE,20204E18,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E1C,extended,0260202D // move a0,s3
+patch=0,EE,20204E20,extended,AF8283D8 // sw v0,-0x7C28(gp)
+patch=0,EE,20204E24,extended,24050011 // li a1,0x11
+patch=0,EE,20204E28,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E2C,extended,0260202D // move a0,s3
+patch=0,EE,20204E30,extended,AF8283DC // sw v0,-0x7C24(gp)
+patch=0,EE,20204E34,extended,24050012 // li a1,0x12
+patch=0,EE,20204E38,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E3C,extended,0260202D // move a0,s3
+patch=0,EE,20204E40,extended,AF8283E0 // sw v0,-0x7C20(gp)
+patch=0,EE,20204E44,extended,24050013 // li a1,0x13
+patch=0,EE,20204E48,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E4C,extended,0260202D // move a0,s3
+patch=0,EE,20204E50,extended,AF8283E4 // sw v0,-0x7C1C(gp)
+patch=0,EE,20204E54,extended,24050014 // li a1,0x14
+patch=0,EE,20204E58,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E5C,extended,0260202D // move a0,s3
+patch=0,EE,20204E60,extended,AF8283E8 // sw v0,-0x7C18(gp)
+patch=0,EE,20204E64,extended,24050015 // li a1,0x15
+patch=0,EE,20204E68,extended,0C082EF2 // jal 
gt2k_menu::SelectColorUnit::CreateNoColorName
+patch=0,EE,20204E6C,extended,0260202D // move a0,s3
+patch=0,EE,20204E70,extended,1000000A // b 0x00204E9C
+patch=0,EE,20204E74,extended,AF8283EC // sw v0,-0x7C14(gp)
+
+// Expand ResetSelectColorUnits
+patch=0,EE,20205100,extended,10001AC5 // b 0x0020BC18
+
+patch=0,EE,2020BC18,extended,ACA001B0 // sw zero,0x1B0(a1)
+patch=0,EE,2020BC1C,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC20,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC24,extended,8F8483D4 // lw a0,-0x7C2C(gp)
+patch=0,EE,2020BC28,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC2C,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC30,extended,8F8483D8 // lw a0,-0x7C28(gp)
+patch=0,EE,2020BC34,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC38,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC3C,extended,8F8483DC // lw a0,-0x7C24(gp)
+patch=0,EE,2020BC40,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC44,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC48,extended,8F8483E0 // lw a0,-0x7C20(gp)
+patch=0,EE,2020BC4C,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC50,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC54,extended,8F8483E4 // lw a0,-0x7C1C(gp)
+patch=0,EE,2020BC58,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC5C,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC60,extended,8F8483E8 // lw a0,-0x7C18(gp)
+patch=0,EE,2020BC64,extended,0280282D // daddu a1,s4,zero
+patch=0,EE,2020BC68,extended,0C082F42 // jal 
gt2k_menu::SelectColorUnit::ApplyColorSampleAnimation
+patch=0,EE,2020BC6C,extended,8F8483EC // lw a0,-0x7C14(gp)
+patch=0,EE,2020BC70,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC74,extended,8F8483D4 // lw a0,-0x7C2C(gp)
+patch=0,EE,2020BC78,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC7C,extended,8F8483D8 // lw a0,-0x7C28(gp)
+patch=0,EE,2020BC80,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC84,extended,8F8483DC // lw a0,-0x7C24(gp)
+patch=0,EE,2020BC88,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC8C,extended,8F8483E0 // lw a0,-0x7C20(gp)
+patch=0,EE,2020BC90,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC94,extended,8F8483E4 // lw a0,-0x7C1C(gp)
+patch=0,EE,2020BC98,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BC9C,extended,8F8483E8 // lw a0,-0x7C18(gp)
+patch=0,EE,2020BCA0,extended,0C082EEF // jal 
gt2k_menu::SelectColorUnit::StopAnimations
+patch=0,EE,2020BCA4,extended,8F8483EC // lw a0,-0x7C14(gp)
+patch=0,EE,2020BCA8,extended,1000E517 // b 0x00205108
+patch=0,EE,2020BCAC,extended,00000000 // nop
+
+// Move the remaining options down on the ruler so new colors don't overlap 
them
+patch=0,EE,10207604,extended,001B
+patch=0,EE,102077BC,extended,001B
+patch=0,EE,10209740,extended,001B
+patch=0,EE,10209A54,extended,001B
+patch=0,EE,1020803C,extended,0020
+patch=0,EE,102081F4,extended,0020
+patch=0,EE,10209958,extended,0020
+patch=0,EE,10209C58,extended,0020
+patch=0,EE,10208834,extended,0025
+patch=0,EE,102089EC,extended,0025
+patch=0,EE,10208BA4,extended,0025
+patch=0,EE,10209B58,extended,0025
+
+// Create the color tables
+patch=0,EE,202A0870,extended,00000005
+patch=0,EE,202A0874,extended,3F800000 // 1
+patch=0,EE,202A0878,extended,3F800000 // 1
+patch=0,EE,202A087C,extended,3F800000 // 1
+patch=0,EE,202A0880,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0884,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0888,extended,3F30B0B1 // 0.690196
+patch=0,EE,202A088C,extended,3F74275B // 0.953725
+patch=0,EE,202A0890,extended,3F74275B // 0.953725
+patch=0,EE,202A0894,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0898,extended,3F189899 // 0.596078
+patch=0,EE,202A089C,extended,3F189899 // 0.596078
+patch=0,EE,202A08A0,extended,3F109091 // 0.564706
+patch=0,EE,202A08A4,extended,3E1A33CD // 0.150588
+patch=0,EE,202A08A8,extended,3E1A33CD // 0.150588
+patch=0,EE,202A08AC,extended,3E1A33CD // 0.150588
+patch=0,EE,202A08B0,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A08B4,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A08B8,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A08BC,extended,3F674DB4 // 0.903529
+patch=0,EE,202A08C0,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A08C4,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A08C8,extended,3F109091 // 0.564706
+patch=0,EE,202A08CC,extended,3D008081 // 0.0313725
+patch=0,EE,202A08D0,extended,3D008081 // 0.0313725
+patch=0,EE,202A08D4,extended,3F800000 // 1
+patch=0,EE,202A08D8,extended,3F5A740E // 0.853333
+patch=0,EE,202A08DC,extended,00000000 // 0
+patch=0,EE,202A08E0,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A08E4,extended,3F088889 // 0.533333
+patch=0,EE,202A08E8,extended,00000000 // 0
+patch=0,EE,202A08EC,extended,00000008
+patch=0,EE,202A08F0,extended,3F800000 // 1
+patch=0,EE,202A08F4,extended,3F800000 // 1
+patch=0,EE,202A08F8,extended,00000000 // 0
+patch=0,EE,202A08FC,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0900,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0904,extended,00000000 // 0
+patch=0,EE,202A0908,extended,00000000 // 0
+patch=0,EE,202A090C,extended,3E9A33CD // 0.301176
+patch=0,EE,202A0910,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A0914,extended,00000000 // 0
+patch=0,EE,202A0918,extended,3E40C0C1 // 0.188235
+patch=0,EE,202A091C,extended,3D808081 // 0.0627451
+patch=0,EE,202A0920,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A0924,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0928,extended,3F008081 // 0.501961
+patch=0,EE,202A092C,extended,3D808081 // 0.0627451
+patch=0,EE,202A0930,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0934,extended,3EA0A0A1 // 0.313725
+patch=0,EE,202A0938,extended,3F800000 // 1
+patch=0,EE,202A093C,extended,3F800000 // 1
+patch=0,EE,202A0940,extended,3F800000 // 1
+patch=0,EE,202A0944,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0948,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A094C,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0950,extended,3F800000 // 1
+patch=0,EE,202A0954,extended,3F800000 // 1
+patch=0,EE,202A0958,extended,3F800000 // 1
+patch=0,EE,202A095C,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A0960,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A0964,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A0968,extended,3F1A33CD // 0.602353
+patch=0,EE,202A096C,extended,3F1A33CD // 0.602353
+patch=0,EE,202A0970,extended,3F1A33CD // 0.602353
+patch=0,EE,202A0974,extended,3EC0C0C1 // 0.376471
+patch=0,EE,202A0978,extended,3EC0C0C1 // 0.376471
+patch=0,EE,202A097C,extended,3EC0C0C1 // 0.376471
+patch=0,EE,202A0980,extended,3E808081 // 0.25098
+patch=0,EE,202A0984,extended,3E808081 // 0.25098
+patch=0,EE,202A0988,extended,3E808081 // 0.25098
+patch=0,EE,202A098C,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0990,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0994,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0998,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A099C,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A09A0,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A09A4,extended,3EF0F0F1 // 0.470588
+patch=0,EE,202A09A8,extended,3D008081 // 0.0313725
+patch=0,EE,202A09AC,extended,3D808081 // 0.0627451
+patch=0,EE,202A09B0,extended,00000005
+patch=0,EE,202A09B4,extended,3F800000 // 1
+patch=0,EE,202A09B8,extended,3F800000 // 1
+patch=0,EE,202A09BC,extended,3F800000 // 1
+patch=0,EE,202A09C0,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A09C4,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A09C8,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A09CC,extended,3E1A33CD // 0.150588
+patch=0,EE,202A09D0,extended,3E1A33CD // 0.150588
+patch=0,EE,202A09D4,extended,3E1A33CD // 0.150588
+patch=0,EE,202A09D8,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A09DC,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A09E0,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A09E4,extended,3F800000 // 1
+patch=0,EE,202A09E8,extended,3F4D9A67 // 0.803137
+patch=0,EE,202A09EC,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A09F0,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A09F4,extended,3F008081 // 0.501961
+patch=0,EE,202A09F8,extended,3E008081 // 0.12549
+patch=0,EE,202A09FC,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0A00,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0A04,extended,3ECD9A67 // 0.401569
+patch=0,EE,202A0A08,extended,3E008081 // 0.12549
+patch=0,EE,202A0A0C,extended,3E008081 // 0.12549
+patch=0,EE,202A0A10,extended,3E808081 // 0.25098
+patch=0,EE,202A0A14,extended,3F800000 // 1
+patch=0,EE,202A0A18,extended,3F800000 // 1
+patch=0,EE,202A0A1C,extended,3F800000 // 1
+patch=0,EE,202A0A20,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0A24,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0A28,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0A2C,extended,00000005
+patch=0,EE,202A0A30,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0A34,extended,00000000 // 0
+patch=0,EE,202A0A38,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0A3C,extended,3F109091 // 0.564706
+patch=0,EE,202A0A40,extended,00000000 // 0
+patch=0,EE,202A0A44,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0A48,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0A4C,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0A50,extended,3F1A33CD // 0.602353
+patch=0,EE,202A0A54,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0A58,extended,3E008081 // 0.12549
+patch=0,EE,202A0A5C,extended,3EC0C0C1 // 0.376471
+patch=0,EE,202A0A60,extended,3F800000 // 1
+patch=0,EE,202A0A64,extended,3F800000 // 1
+patch=0,EE,202A0A68,extended,3F800000 // 1
+patch=0,EE,202A0A6C,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0A70,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0A74,extended,3F30B0B1 // 0.690196
+patch=0,EE,202A0A78,extended,3F74275B // 0.953725
+patch=0,EE,202A0A7C,extended,3F74275B // 0.953725
+patch=0,EE,202A0A80,extended,3F74275B // 0.953725
+patch=0,EE,202A0A84,extended,3F189899 // 0.596078
+patch=0,EE,202A0A88,extended,3F189899 // 0.596078
+patch=0,EE,202A0A8C,extended,3F189899 // 0.596078
+patch=0,EE,202A0A90,extended,3E808081 // 0.25098
+patch=0,EE,202A0A94,extended,3E808081 // 0.25098
+patch=0,EE,202A0A98,extended,3E808081 // 0.25098
+patch=0,EE,202A0A9C,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0AA0,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0AA4,extended,3E20A0A1 // 0.156863
+patch=0,EE,202A0AA8,extended,00000007
+patch=0,EE,202A0AAC,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A0AB0,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0AB4,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0AB8,extended,3D008081 // 0.0313725
+patch=0,EE,202A0ABC,extended,3E008081 // 0.12549
+patch=0,EE,202A0AC0,extended,3EF0F0F1 // 0.470588
+patch=0,EE,202A0AC4,extended,3F800000 // 1
+patch=0,EE,202A0AC8,extended,3F800000 // 1
+patch=0,EE,202A0ACC,extended,3F800000 // 1
+patch=0,EE,202A0AD0,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0AD4,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0AD8,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0ADC,extended,3F74275B // 0.953725
+patch=0,EE,202A0AE0,extended,3F74275B // 0.953725
+patch=0,EE,202A0AE4,extended,3F74275B // 0.953725
+patch=0,EE,202A0AE8,extended,3F189899 // 0.596078
+patch=0,EE,202A0AEC,extended,3F189899 // 0.596078
+patch=0,EE,202A0AF0,extended,3F189899 // 0.596078
+patch=0,EE,202A0AF4,extended,3F4D9A67 // 0.803137
+patch=0,EE,202A0AF8,extended,3F4D9A67 // 0.803137
+patch=0,EE,202A0AFC,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0B00,extended,3F008081 // 0.501961
+patch=0,EE,202A0B04,extended,3F008081 // 0.501961
+patch=0,EE,202A0B08,extended,3F109091 // 0.564706
+patch=0,EE,202A0B0C,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0B10,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0B14,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0B18,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0B1C,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0B20,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0B24,extended,3F4D9A67 // 0.803137
+patch=0,EE,202A0B28,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A0B2C,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A0B30,extended,3F008081 // 0.501961
+patch=0,EE,202A0B34,extended,3D008081 // 0.0313725
+patch=0,EE,202A0B38,extended,3D808081 // 0.0627451
+patch=0,EE,202A0B3C,extended,3F800000 // 1
+patch=0,EE,202A0B40,extended,3F800000 // 1
+patch=0,EE,202A0B44,extended,00000000 // 0
+patch=0,EE,202A0B48,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0B4C,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0B50,extended,00000000 // 0
+patch=0,EE,202A0B54,extended,0000000C
+patch=0,EE,202A0B58,extended,00000000 // 0
+patch=0,EE,202A0B5C,extended,3F0D5A27 // 0.552157
+patch=0,EE,202A0B60,extended,3EE74DB4 // 0.451765
+patch=0,EE,202A0B64,extended,00000000 // 0
+patch=0,EE,202A0B68,extended,3EB0B0B1 // 0.345098
+patch=0,EE,202A0B6C,extended,3E909091 // 0.282353
+patch=0,EE,202A0B70,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A0B74,extended,3EB3E71A // 0.351373
+patch=0,EE,202A0B78,extended,3F270D74 // 0.652549
+patch=0,EE,202A0B7C,extended,3D808081 // 0.0627451
+patch=0,EE,202A0B80,extended,3E60E0E1 // 0.219608
+patch=0,EE,202A0B84,extended,3ED0D0D1 // 0.407843
+patch=0,EE,202A0B88,extended,3DCD9A67 // 0.100392
+patch=0,EE,202A0B8C,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0B90,extended,3ECD9A67 // 0.401569
+patch=0,EE,202A0B94,extended,3D808081 // 0.0627451
+patch=0,EE,202A0B98,extended,3E008081 // 0.12549
+patch=0,EE,202A0B9C,extended,3E808081 // 0.25098
+patch=0,EE,202A0BA0,extended,3F800000 // 1
+patch=0,EE,202A0BA4,extended,3F800000 // 1
+patch=0,EE,202A0BA8,extended,3F800000 // 1
+patch=0,EE,202A0BAC,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0BB0,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0BB4,extended,3F38B8B9 // 0.721569
+patch=0,EE,202A0BB8,extended,3F800000 // 1
+patch=0,EE,202A0BBC,extended,3F800000 // 1
+patch=0,EE,202A0BC0,extended,3F800000 // 1
+patch=0,EE,202A0BC4,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A0BC8,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A0BCC,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A0BD0,extended,3F800000 // 1
+patch=0,EE,202A0BD4,extended,3F800000 // 1
+patch=0,EE,202A0BD8,extended,3F800000 // 1
+patch=0,EE,202A0BDC,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A0BE0,extended,3F28A8A9 // 0.658824
+patch=0,EE,202A0BE4,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A0BE8,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0BEC,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0BF0,extended,3F674DB4 // 0.903529
+patch=0,EE,202A0BF4,extended,3F109091 // 0.564706
+patch=0,EE,202A0BF8,extended,3F109091 // 0.564706
+patch=0,EE,202A0BFC,extended,3F109091 // 0.564706
+patch=0,EE,202A0C00,extended,3EB3E71A // 0.351373
+patch=0,EE,202A0C04,extended,3EB3E71A // 0.351373
+patch=0,EE,202A0C08,extended,3ECD9A67 // 0.401569
+patch=0,EE,202A0C0C,extended,3E60E0E1 // 0.219608
+patch=0,EE,202A0C10,extended,3E60E0E1 // 0.219608
+patch=0,EE,202A0C14,extended,3E808081 // 0.25098
+patch=0,EE,202A0C18,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0C1C,extended,3E1A33CD // 0.150588
+patch=0,EE,202A0C20,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0C24,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0C28,extended,3DC0C0C1 // 0.0941176
+patch=0,EE,202A0C2C,extended,3E008081 // 0.12549
+patch=0,EE,202A0C30,extended,3F40C0C1 // 0.752941
+patch=0,EE,202A0C34,extended,3D4D9A67 // 0.0501961
+patch=0,EE,202A0C38,extended,3E4D9A67 // 0.200784
+patch=0,EE,202A0C3C,extended,3EF0F0F1 // 0.470588
+patch=0,EE,202A0C40,extended,3D008081 // 0.0313725
+patch=0,EE,202A0C44,extended,3E008081 // 0.12549
+patch=0,EE,202A0C48,extended,3F4D9A67 // 0.803137
+patch=0,EE,202A0C4C,extended,3EE74DB4 // 0.451765
+patch=0,EE,202A0C50,extended,00000000 // 0
+patch=0,EE,202A0C54,extended,3F008081 // 0.501961
+patch=0,EE,202A0C58,extended,3E909091 // 0.282353
+patch=0,EE,202A0C5C,extended,00000000 // 0
+patch=0,EE,202A0C60,extended,3F800000 // 1
+patch=0,EE,202A0C64,extended,3F800000 // 1
+patch=0,EE,202A0C68,extended,00000000 // 0
+patch=0,EE,202A0C6C,extended,3F30B0B1 // 0.690196
+patch=0,EE,202A0C70,extended,3F20A0A1 // 0.627451
+patch=0,EE,202A0C74,extended,00000000 // 0
+
+patch=0,EE,202A0858,extended,002A0870
+patch=0,EE,202A085C,extended,002A08EC
+patch=0,EE,202A0860,extended,002A09B0
+patch=0,EE,202A0864,extended,002A0A2C
+patch=0,EE,202A0868,extended,002A0AA8
+patch=0,EE,202A086C,extended,002A0B54
+
 [Auto-activate analogs]
 description=Automatically put gamepads in an analog mode, like in later Gran 
Turismo games.
 author=Silent
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SCKA-20055_83B9AE36.pnach 
new/SCKA-20055_83B9AE36.pnach
--- old/SCKA-20055_83B9AE36.pnach       1970-01-01 01:00:00.000000000 +0100
+++ new/SCKA-20055_83B9AE36.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -0,0 +1,22 @@
+gametitle=MN - Mystic Nights (K)(SCKA-20055)
+
+[Widescreen 16:9]
+description=Widescreen Hack by Arapapa
+gsaspectratio=16:9
+author=Arapapa
+
+//Zoom
+patch=1,EE,0016aa5c,word,3c0243c0 //3c024400
+//patch=1,EE,00168dd0,word,3c023fe9 //3c023f80
+
+//Y-Fov
+patch=1,EE,0016aa74,word,3c023f36 //3c023f08
+patch=1,EE,0016aa78,word,34429cfe //3442f5c3
+
+[No-Interlacing]
+description=Attempts to disable interlaced offset rendering.
+gsinterlacemode=1
+author=NineKain
+
+//Remove Interlacing
+patch=1,EE,001015B4,extended,00000000
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLES-55675_40931C38.pnach 
new/SLES-55675_40931C38.pnach
--- old/SLES-55675_40931C38.pnach       1970-01-01 01:00:00.000000000 +0100
+++ new/SLES-55675_40931C38.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -0,0 +1,15 @@
+gametitle=Pro Evolution Soccer 2014 [E] (SLES-55675)
+
+[Widescreen 16:9]
+gsaspectratio=16:9
+comment=Widescreen hack (PAL by Arapapa)
+
+// 16:9 (00000000 00000000 43ad1346 00000000)
+patch=1,EE,001043fc,word,3c013f40 // 00000000 hor fov
+patch=1,EE,00104400,word,44810000 // 00000000
+patch=1,EE,00104408,word,4600c602 // 00000000
+
+// Render fix by El_Patas (803f053c 4400023c)
+patch=1,EE,00125f4c,word,3C053FAB //3C053F80 (increases hor. render area)
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLPS-25842_E84AA114.pnach 
new/SLPS-25842_E84AA114.pnach
--- old/SLPS-25842_E84AA114.pnach       1970-01-01 01:00:00.000000000 +0100
+++ new/SLPS-25842_E84AA114.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -0,0 +1,9 @@
+gametitle=MN - Tales of Destiny - Director's Cut (J)(SLUS-20347)
+
+[No-Interlacing]
+description=Attempts to disable interlaced offset rendering.
+gsinterlacemode=1
+author=Unknown
+
+//Remove Interlacing
+patch=1,EE,20109FA8,extended,A620066C
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLUS-20347_8BE3D7B2.pnach 
new/SLUS-20347_8BE3D7B2.pnach
--- old/SLUS-20347_8BE3D7B2.pnach       2025-10-13 18:10:04.000000000 +0200
+++ new/SLUS-20347_8BE3D7B2.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -1,14 +1,21 @@
-gametitle=Shadow Hearts SLUS_203.47
-
-[Widescreen 16:9]
-gsaspectratio=16:9
-description=Widescreen Hack
-patch=1,EE,0028d4f0,word,3c043f40
-patch=1,EE,00282394,word,3c023f40
-//patch=1,EE,00324530,word,3c023f40 // field
-//patch=1,EE,0034a728,word,3c033f50 //3c033f80  font size
-patch=1,EE,0039fe08,word,3c023f40
-patch=1,EE,003d5704,word,3c023f40
-patch=1,EE,003eec44,word,3c023f40
-
-
+gametitle=Shadow Hearts SLUS_203.47
+
+[Widescreen 16:9]
+gsaspectratio=16:9
+description=Widescreen Hack
+patch=1,EE,0028d4f0,word,3c043f40
+patch=1,EE,00282394,word,3c023f40
+//patch=1,EE,00324530,word,3c023f40 // field
+//patch=1,EE,0034a728,word,3c033f50 //3c033f80  font size
+patch=1,EE,0039fe08,word,3c023f40
+patch=1,EE,003d5704,word,3c023f40
+patch=1,EE,003eec44,word,3c023f40
+
+[No-Interlacing]
+description=Attempts to disable interlaced offset rendering.
+gsinterlacemode=1
+author=pcsx480p60
+
+//Remove Interlacing
+patch=1,EE,202016EC,extended,00000000
+patch=1,EE,20305630,extended,A2200279
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLUS-20946_398E4DC2.pnach 
new/SLUS-20946_398E4DC2.pnach
--- old/SLUS-20946_398E4DC2.pnach       1970-01-01 01:00:00.000000000 +0100
+++ new/SLUS-20946_398E4DC2.pnach       2025-10-24 06:39:16.000000000 +0200
@@ -0,0 +1,264 @@
+gametitle=Grand Theft Auto: San Andreas (SLUS-20946) / Ver 1.03 [Subset - 
Vehicle Enthusiast]
+
+// This file is a copy of SLUS-20946_399A49CA.pnach, please keep these two in 
sync!
+// This game version is a dummy patch for a "Vehicle Enthusiast" 
RetroAchievements subset:
+// https://retroachievements.org/game/35111
+
+[Widescreen 16:9]
+gsaspectratio=16:9
+author=PeterDelta, DanielSantos, ThirteenAG, kesterstudios
+description=GTA San Andreas Modern Widescreen Fix for 1.03
+patch=1,EE,006FF98F,extended,01 //Widescreen fix by PeterDelta
+patch=1,EE,0021DFE0,extended,A2
+patch=1,EE,0020A498,extended,AC
+patch=1,EE,0020817C,extended,AC
+patch=1,EE,002EC9C0,extended,40
+patch=1,EE,002ECA10,extended,D0
+//-------------------------------------------------HUD-------------------------------------------------//
+//patch=0,EE,20663C00,extended,3f666666 //Wanted Height
+patch=0,EE,20663C04,extended,3ecccccd //Wanted Width
+//patch=0,EE,20663C0C,extended,3f8a3d71 //Wanted Shadow Height
+patch=0,EE,20663C10,extended,3ef5c28f //Wanted Shadow Width
+//patch=0,EE,202AA78C,extended,3c023fc0 //Wanted Vertical Padding
+patch=0,EE,2026E03C,extended,3c084280 //Radar Width
+patch=0,EE,2026ED00,extended,3c024280 //Radar Mask Width
+patch=0,EE,2026EE30,extended,3c034280 //Radar Mask Width
+patch=0,EE,2026EF18,extended,3c034280 //Radar Mask Width
+patch=0,EE,20269528,extended,3c024280 //Radar Width unknown
+patch=0,EE,2026E658,extended,3c024280 //Radar Width plane green overlay
+patch=0,EE,202AC8F8,extended,3c024258 //Radar Width plane overlay
+patch=0,EE,202AC964,extended,3c024270 //Radar Heigth plane overlay
+patch=0,EE,202ACC4C,extended,3c0341e3 //Radar Disc Width left up - a esquerda 
dessa porra aqui
+patch=0,EE,202ACC50,extended,3c0243aa //Radar Disc Width left up - a parte de 
cima dessa porra aqui
+patch=0,EE,202ACC60,extended,3c034280 //Radar Disc Width left up - a direita 
dessa porra aqui
+patch=0,EE,202ACC64,extended,3c0243bf //Radar Disc Width left up - a parte de 
baixo dessa porra aqui
+patch=0,EE,202ACC98,extended,3c0342c6 //Radar Disc Width right up - a esquerda 
dessa porra aqui
+patch=0,EE,202ACC9c,extended,3c0243aa //Radar Disc Width right up - a parte de 
cima dessa porra
+patch=0,EE,202ACCac,extended,3c034280 //Radar Disc Width right up - a direita 
dessa porra aqui
+patch=0,EE,202ACCb0,extended,3c0243bf //Radar Disc Width right up - a parte de 
baixo dessa porra
+patch=0,EE,202ACCE4,extended,3c0341e3 //Radar Disc Width left down - a 
esquerda dessa porra aqui
+patch=0,EE,202ACCE8,extended,3c0243d4 //Radar Disc Width left down - a parte 
de cima dessa porra
+patch=0,EE,202ACCF8,extended,3c034280 //Radar Disc Width left down - a direita 
dessa porra aqui
+patch=0,EE,202ACCFC,extended,3c0243bf //Radar Disc Width left down - a parte 
de baixo dessa porra
+patch=0,EE,202ACD30,extended,3c0342c6 //Radar Disc Width right down - a 
esquerda dessa porra aqui
+patch=0,EE,202ACD34,extended,3c0243d4 //Radar Disc Width right down - a parte 
de cima dessa porra
+patch=0,EE,202ACD44,extended,3c034280 //Radar Disc Width right down - a 
direita dessa porra aqui
+patch=0,EE,202ACD48,extended,3c0243bf //Radar Disc Width right down - a parte 
de baixo dessa porra
+patch=0,EE,2026AE54,extended,3c034270 //Radar Blip disc Width
+patch=0,EE,2026E04C,extended,3c064280 //Radar X Pos
+//patch=0,EE,2026E0A0,extended,3c0443BF //Radar Y Pos
+patch=0,EE,2026ED10,extended,3c024280 //Radar Mask X Pos
+patch=0,EE,2026EE3C,extended,3c044280 //Radar Mask X Pos
+patch=0,EE,2026EF34,extended,3c044280 //Radar Mask X Pos
+patch=0,EE,2026AE6C,extended,3c034280 //Radar Blip disc X Pos
+patch=0,EE,2026E674,extended,3c024280 //Radar X Pos plane green overlay
+patch=0,EE,202AC900,extended,3c034280 //Radar X Pos plane overlay
+patch=0,EE,202A9EF4,extended,3C024210 //Fist Icon Width
+patch=0,EE,202A9E34,extended,3c024190 //Weapon Icon Width
+patch=0,EE,202ABA40,extended,2405020D //Weapon Icon Pos X
+patch=0,EE,202ABA7C,extended,2405020D //Weapon Icon Pos X - Player 2
+patch=0,EE,20663748,extended,3e800000 //Ammo Width
+patch=0,EE,202ABA90,extended,2405021F //Ammo X Pos
+patch=0,EE,202ABACC,extended,2405021F //Ammo X Pos - Player 2
+patch=0,EE,202A9B84,extended,3c0242A8 //Health bar width
+patch=0,EE,202A9904,extended,2404002F //Armour bar width
+patch=0,EE,202A9A04,extended,2404002F //Breath bar width
+patch=0,EE,202AB51C,extended,24050231 //Armour bar pos x
+patch=0,EE,202AB560,extended,24050231 //Armour bar pos x
+patch=0,EE,202AB6B0,extended,24050231 //Breath bar pos x
+patch=0,EE,202AB6F8,extended,24050231 //Breath bar pos x
+
+//CHud::DrawBustedWastedMessage width
+patch=0,EE,202AF568,extended,3C033F90 //lui $v1, 0x3f90
+patch=0,EE,202AF56C,extended,0C0AA200 //jal _ZN5CFont8SetScaleEf # Jump And 
Link
+patch=0,EE,202AF570,extended,44836000 //mtc1 $v1, $f12
+patch=0,EE,202AF574,extended,0C0AA2F4 //jal _ZN5CFont15SetProportionalEh # 
Jump And Link
+patch=0,EE,202AF578,extended,24040001 //li $a0, 1 # Load Immediate
+patch=0,EE,202AF57C,extended,0C0AA310 //jal _ZN5CFont10SetJustifyEh # Jump And 
Link
+patch=0,EE,202AF580,extended,0000202D //move $a0, $zero
+patch=0,EE,202AF584,extended,0C0AA314 //jal _ZN5CFont14SetOrientationEh # Jump 
And Link
+patch=0,EE,202AF588,extended,0000202D //move $a0, $zero
+patch=0,EE,202AF58C,extended,0C0AA27C //jal _ZN5CFont12SetFontStyleEh # Jump 
And Link
+patch=0,EE,202AF590,extended,0000202D //move $a0, $zero
+patch=0,EE,202AF594,extended,0C0AA2EC //jal _ZN5CFont7SetEdgeEa # Jump And Link
+patch=0,EE,202AF598,extended,24040003 //li $a0, 3 # Load Immediate
+patch=0,EE,202AF59C,extended,3C01007C //lui $at, 0x7C # '|' # Load Upper 
Immediate
+patch=0,EE,202AF5A0,extended,3C024F00 //lui $v0, 0x4F00 # Load Upper Immediate
+patch=0,EE,202AF5A4,extended,C42132D8 //lwc1 $f1, _styledText3Alpha # Load 
Word to FPU
+patch=0,EE,202AF5A8,extended,44820000 //mtc1 $v0, $f0 # Move to FPU
+
+//CHud::DrawSuccessFailedMessage width
+patch=0,EE,202AF0FC,extended,3C033f59 //lui $v1, 0x3f59
+patch=0,EE,202AF100,extended,0C0AA200 //jal _ZN5CFont8SetScaleEf # Jump And 
Link
+patch=0,EE,202AF104,extended,44836000 //mtc1 $v1, $f12
+patch=0,EE,202AF108,extended,0C0AA2F4 //jal _ZN5CFont15SetProportionalEh # 
Jump And Link
+patch=0,EE,202AF10C,extended,24040001 //li $a0, 1 # Load Immediate
+patch=0,EE,202AF110,extended,0C0AA310 //jal _ZN5CFont10SetJustifyEh # Jump And 
Link
+patch=0,EE,202AF114,extended,0000202D //move $a0, $zero
+patch=0,EE,202AF118,extended,0C0AA314 //jal _ZN5CFont14SetOrientationEh # Jump 
And Link
+patch=0,EE,202AF11C,extended,0000202D //move $a0, $zero
+patch=0,EE,202AF120,extended,2402024E //li $v0, 0x24E # Load Immediate
+patch=0,EE,202AF124,extended,44820000 //mtc1 $v0, $f0 # Move to FPU
+patch=0,EE,202AF128,extended,0C0AA29C //jal _ZN5CFont13SetCentreSizeEf # Jump 
And Link
+patch=0,EE,202AF12C,extended,46800320 //cvt.s.w $f12, $f0 # Floating-point 
Convert to Single Fixed-Point Format
+patch=0,EE,202AF130,extended,0C0AA27C //jal _ZN5CFont12SetFontStyleEh # Jump 
And Link
+patch=0,EE,202AF134,extended,24040003 //li $a0, 3 # Load Immediate
+patch=0,EE,202AF138,extended,0C0AA2EC //jal _ZN5CFont7SetEdgeEa # Jump And Link
+patch=0,EE,202AF13C,extended,24040002 //li $a0, 2 # Load Immediate
+patch=0,EE,202AF140,extended,3C01007C //lui $at, 0x7C # '|' # Load Upper 
Immediate
+patch=0,EE,202AF144,extended,3C024F00 //lui $v0, 0x4F00 # Load Upper Immediate
+patch=0,EE,202AF148,extended,C42132D0 //lwc1 $f1, flt_7C32D0 # Load Word to FPU
+patch=0,EE,202AF14C,extended,44820000 //mtc1 $v0, $f0 # Move to FPU
+
+//CRadar::DrawRadarSprite width
+patch=0,EE,2026D384,extended,3C034100 //lui $v1, 0x4100 # Load Upper Immediate
+patch=0,EE,2026D388,extended,0200102D //move $v0, $s0
+patch=0,EE,2026D38C,extended,44831000 //mtc1 $v1, $f2 # Move to FPU
+patch=0,EE,2026D390,extended,3C0340C6 //lui $v1, 0x40C6
+patch=0,EE,2026D394,extended,44831800 //mtc1 $v1, $f3 # Move to FPU
+patch=0,EE,2026D398,extended,27A50050 //addiu $a1, $sp, 0x70+var_20 # a2
+patch=0,EE,2026D39C,extended,27A6006C //addiu $a2, $sp, 0x70+var_4 # rgbaColor
+patch=0,EE,2026D3A0,extended,4603A801 //sub.s $f0, $f21, $f3 # Floating-point 
Subtract
+patch=0,EE,2026D3A4,extended,00021880 //sll $v1, $v0, 2 # Shift Left Logical
+patch=0,EE,2026D3A8,extended,3C020070 //li $v0, dword_703A70 # Load Immediate
+patch=0,EE,2026D3AC,extended,24423A70 //
+patch=0,EE,2026D3B0,extended,00432021 //addu $a0, $v0, $v1 # a1
+patch=0,EE,2026D3B4,extended,E7A00050 //swc1 $f0, 0x70+var_20($sp) # Store 
Word from FPU
+patch=0,EE,2026D3B8,extended,4603A800 //add.s $f0, $f21, $f3 # Floating-point 
Add
+patch=0,EE,2026D3BC,extended,E7A00058 //swc1 $f0, 0x70+var_18($sp) # Store 
Word from FPU
+patch=0,EE,2026D3C0,extended,4602A041 //sub.s $f1, $f20, $f2 # Floating-point 
Subtract
+patch=0,EE,2026D3C4,extended,4602A000 //add.s $f0, $f20, $f2 # Floating-point 
Add
+patch=0,EE,2026D3C8,extended,E7A1005C //swc1 $f1, 0x70+var_14($sp) # Store 
Word from FPU
+patch=0,EE,2026D3CC,extended,0C0AC258 //jal 
_ZN9CSprite2d4DrawERK5CRectRK5CRGBA # Jump And Link
+patch=0,EE,2026D3D0,extended,E7A00054 //swc1 $f0, 0x70+var_1C($sp) # Store 
Word from FPU
+patch=0,EE,2026D3D4,extended,0200282D //move $a1, $s0
+patch=0,EE,2026D3D8,extended,0C09A670 //jal _ZN6CRadar19AddBlipToLegendListEhi 
# Jump And Link
+patch=0,EE,2026D3DC,extended,0000202D //move $a0, $zero
+patch=0,EE,2026D3E0,extended,DFBF0040 //ld $ra, 0x70+var_30($sp) # Load 
Doubleword
+patch=0,EE,2026D3E4,extended,C7B50004 //lwc1 $f21, 0x70+var_6C($sp) # Load 
Word to FPU
+patch=0,EE,2026D3E8,extended,7BB20030 //lq $s2, 0x70+var_40($sp) # Load 
Quadword
+patch=0,EE,2026D3EC,extended,C7B40000 //lwc1 $f20, 0x70+var_70($sp) # Load 
Word to FPU
+patch=0,EE,2026D3F0,extended,7BB10020 //lq $s1, 0x70+var_50($sp) # Load 
Quadword
+patch=0,EE,2026D3F4,extended,7BB00010 //lq $s0, 0x70+var_60($sp) # Load 
Quadword
+patch=0,EE,2026D3F8,extended,03E00008 //jr $ra # Jump Register
+patch=0,EE,2026D3FC,extended,27BD0070 //addiu $sp, 0x70 # Add Immediate 
Unsigned
+
+//CRadar::DrawBlips - Radar Centre
+patch=0,EE,2026863C,extended,24050006
+patch=0,EE,20268644,extended,24060008
+patch=0,EE,20268674,extended,24050006
+patch=0,EE,2026867C,extended,24060008
+patch=0,EE,202ADA20,extended,3c033ecc //mission timers
+patch=0,EE,202AD82C,extended,3c023f33 //Vehicle name width
+patch=0,EE,202AFCAC,extended,3c023f33 //Mission title width
+patch=0,EE,202AD29C,extended,c78c8384 //Area name width hook - 0x663474
+patch=0,EE,20663bc8,extended,3ecccccd //Money Width
+patch=0,EE,20663C58,extended,3ecccccd //Subtitles Width
+patch=0,EE,20663674,extended,3EB33333 //Help box Width
+patch=0,EE,202AC440,extended,C78C82BC //DrawVitalStats weekday width hook
+patch=0,EE,202AC438,extended,C78D899C //DrawVitalStats weekday height hook
+patch=0,EE,2023E5C4,extended,3c023f33 //CMenuManager::DrawWindow title width
+patch=0,EE,202ACAB4,extended,3C0341d4 //AltitudeBar width
+patch=0,EE,202ACC10,extended,3C0241e5 //AltitudeCounter width
+patch=0,EE,202ACC00,extended,3C034190 //AltitudeCounter X Pos
+
+//-------------------------------------------------Menu------------------------------------------------//
+
+patch=0,EE,20234A44,extended,24040001 //Set Menu Text Body
+
+patch=0,EE,20234A14,extended,c78c8b68 //Hook Menu Items Width to Subtitles 
width
+patch=0,EE,202354F8,extended,c78c8b68 //Hook Menu Items Width to Subtitles 
width
+patch=0,EE,20242190,extended,3c023ecc //Set Menu Labels Width
+
+[No-Interlacing]
+description=Attempts to disable interlaced offset rendering.
+gsinterlacemode=1
+patch=1,EE,2054986C,word,00000000
+
+[Remove Ghosting Effects]
+author=Silent, PeterDelta
+description=Removes the ghosting effect from radiosity and color filter post 
effects, preserving the slight bloom effect. Also disables the seam remover 
post effect.
+
+patch=0,EE,006684DC,extended,00 // CPostEffects::m_bSeamRemover
+patch=0,EE,20668564,extended,00000000 // CPostEffects::m_RadiosityFilterPasses
+
+// These values are read from stream.ini from the init overlay, so we have to 
patch them every frame
+patch=1,EE,206685A8,extended,00000000 // CPostEffects::m_colourLeftUOffset
+patch=1,EE,206685AC,extended,00000000 // CPostEffects::m_colourRightUOffset
+patch=1,EE,206685B0,extended,00000000 // CPostEffects::m_colourTopVOffset
+patch=1,EE,206685B4,extended,00000000 // CPostEffects::m_colourBottomVOffset
+
+[Remove Color Filter]
+author=Silent
+description=Removes the color filter, making the game look more like the PC 
version, without the yellow tint.
+
+patch=0,EE,20515568,extended,00000000 // NOP CPostEffects::ColourFilter
+
+[60 FPS]
+author=asasega
+description=Make sure you set your EE Cycle Rate to 130-180%
+patch=1,EE,006678CC,extended,00000001
+
+[Silentpatch Lite Fixes]
+author=DanielSantos, with consideration to Silent
+description=Silentpatch Lite Fixes for 1.03
+
+//------------------------------------------------Fixes------------------------------------------------//
+
+//Linear Filtering for License Plates
+patch=0,EE,204A48A4,extended,34630002 //ori $v1, 2 //RWLINEARFILTER
+
+//Fixed ammo for melee weapons in cheats
+patch=0,EE,2059D88C,extended,24060001 //li $s2 1 //knife
+patch=0,EE,2059D998,extended,24060001 //li $s2 1 //knife
+patch=0,EE,2059DB60,extended,24060001 //li $s2 1 //chainsaw
+patch=0,EE,2059DC34,extended,24060001 //li $s2 1 //chainsaw
+patch=0,EE,2059F67C,extended,24060001 //li $s2 1 //parachute
+patch=0,EE,2059F3BC,extended,24060001 //li $s2 1 //katana
+
+//014C cargen counter fix (by spaceeinstein)
+patch=0,EE,20295AF0,extended,2C61FFFF //slti => sltiu
+patch=0,EE,20295AF4,extended,10000004 //beqz => b
+
+// Don't clean the car BEFORE Pay 'n Spray doors close, as it gets cleaned 
later again anyway!
+patch=0,EE,202E41CC,extended,00000000 //nop
+
+// Fixed muzzleflash not showing from last bullet
+patch=0,EE,204071F4,extended,00000000 //nop
+
+// Help boxes showing with big message
+// Game seems to assume they can show together
+patch=0,EE,202AE3A0,extended,00000000 //nop
+
+// Impound garages working correctly
+patch=0,EE,201C6088,extended,0C0BAA58 //jal 
CGarages::IsPointWithinAnyGarage(CVector &)
+patch=0,EE,201C63C0,extended,0C0BAA58 //jal 
CGarages::IsPointWithinAnyGarage(CVector &)
+patch=0,EE,201C6510,extended,0C0BAA58 //jal 
CGarages::IsPointWithinAnyGarage(CVector &)
+
+// Impounding after busted works
+patch=0,EE,202A09A4,extended,00000000 //nop
+
+// Weapon icon fix (crosshairs mess up rwRENDERSTATEZWRITEENABLE)
+patch=0,EE,202AAB44,extended,00000000 //nop
+patch=0,EE,202AB284,extended,00000000 //nop
+patch=0,EE,202AB2B4,extended,00000000 //nop
+
+//Fix 4th texture memory leak on effects
+patch=0,EE,203D4D50,extended,8E240018
+patch=0,EE,203D4D64,extended,AE200018
+
+
+[Outlines On Text Subtitles]
+author=ThirteenAG, DanielSantos, kesterstudios
+description=Replaces the drop shadows on subtitles with black outlines.
+
+//Set drop shadows to outline
+patch=0,EE,202A8B90,extended,3c01007c
+patch=0,EE,202A8B94,extended,a0202346
+patch=0,EE,202A8B98,extended,3c01007c
+patch=0,EE,202A8B9C,extended,a024234b
+patch=0,EE,202A8Ba8,extended,a024234c
+
+
+
+

++++++ pcsx2-2.5.233~git20251018.tar.xz -> pcsx2-2.7.121~git20260215.tar.xz 
++++++
/work/SRC/openSUSE:Factory/pcsx2/pcsx2-2.5.233~git20251018.tar.xz 
/work/SRC/openSUSE:Factory/.pcsx2.new.1977/pcsx2-2.7.121~git20260215.tar.xz 
differ: char 15, line 1

Reply via email to