Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,49 @@ object GameFixesRegistry {
GOG_Fix_2147483047,
GOG_Fix_1787707874,
GOG_Fix_1635627436,
STEAM_Fix_400,
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Duplicate fix registrations are silently overwritten when building the map with associateBy, leaving dead entries and increasing misconfiguration risk.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt, line 31:

<comment>Duplicate fix registrations are silently overwritten when building the map with `associateBy`, leaving dead entries and increasing misconfiguration risk.</comment>

<file context>
@@ -28,14 +28,49 @@ object GameFixesRegistry {
         GOG_Fix_2147483047,
         GOG_Fix_1787707874,
         GOG_Fix_1635627436,
+        STEAM_Fix_400,
+        STEAM_Fix_1637320,
         STEAM_Fix_22300,
</file context>
Fix with Cubic

STEAM_Fix_1637320,
STEAM_Fix_22300,
STEAM_Fix_22330,
STEAM_Fix_22380,
STEAM_Fix_283900,
STEAM_Fix_283910,
STEAM_Fix_283920,
STEAM_Fix_283930,
STEAM_Fix_283940,
STEAM_Fix_283960,
STEAM_Fix_283980,
STEAM_Fix_292240,
STEAM_Fix_292260,
STEAM_Fix_292280,
STEAM_Fix_292770,
STEAM_Fix_292780,
STEAM_Fix_292800,
STEAM_Fix_292820,
STEAM_Fix_292840,
STEAM_Fix_294530,
STEAM_Fix_294540,
STEAM_Fix_294550,
STEAM_Fix_294560,
STEAM_Fix_294660,
STEAM_Fix_294670,
STEAM_Fix_294680,
STEAM_Fix_294690,
STEAM_Fix_294700,
STEAM_Fix_294710,
STEAM_Fix_294720,
STEAM_Fix_317020,
STEAM_Fix_317030,
STEAM_Fix_22330,
STEAM_Fix_752580,
STEAM_Fix_400,
STEAM_Fix_413150,
STEAM_Fix_3373660,
STEAM_Fix_1637320,
STEAM_Fix_363050,
STEAM_Fix_363060,
STEAM_Fix_363070,
STEAM_Fix_376760,
STEAM_Fix_376770,
EPIC_Fix_b1b4e0b67a044575820cb5e63028dcae,
EPIC_Fix_dabb52e328834da7bbe99691e374cb84,
EPIC_Fix_59a0c86d02da42e8ba6444cb171e61bf,
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283900.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Joins the Parade (Steam)
*/
val STEAM_Fix_283900: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283900")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283910.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Goes to the Moon (Steam)
*/
val STEAM_Fix_283910: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283910")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283920.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Saves the Zoo (Steam)
*/
val STEAM_Fix_283920: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283920")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283930.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Travels Through Time (Steam)
*/
val STEAM_Fix_283930: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283930")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283940.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Freddi Fish and the Case of the Missing Kelp Seeds (Steam)
*/
val STEAM_Fix_283940: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283940")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283960.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam: No Need to Hide When It's Dark Outside (Steam)
*/
val STEAM_Fix_283960: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283960")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_283980.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Spy Fox in: Dry Cereal (Steam)
*/
val STEAM_Fix_283980: KeyedGameFix = ScummGameFix(GameSource.STEAM, "283980")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292240.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Spy Fox in: Cheese Chase (Steam)
*/
Comment thread
Pepelespooder marked this conversation as resolved.
val STEAM_Fix_292240: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292240")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292260.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Spy Fox in: Hold the Mustard (Steam)
*/
val STEAM_Fix_292260: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292260")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292280.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Spy Fox 2: Some Assembly Required (Steam)
*/
val STEAM_Fix_292280: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292280")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292770.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam 2: Thunder and Lightning Aren't So Frightening (Steam)
*/
val STEAM_Fix_292770: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292770")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292780.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam 3: You Are What You Eat From Your Head to Your Feet (Steam)
*/
Comment thread
coderabbitai[bot] marked this conversation as resolved.
val STEAM_Fix_292780: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292780")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292800.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam's Sock Works (Steam)
*/
val STEAM_Fix_292800: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292800")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292820.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam's Lost & Found (Steam)
*/
val STEAM_Fix_292820: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292820")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_292840.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam 4: Life Is Rough When You Lose Your Stuff! (Steam)
*/
val STEAM_Fix_292840: KeyedGameFix = ScummGameFix(GameSource.STEAM, "292840")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294530.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Freddi Fish 2: The Case of the Haunted Schoolhouse (Steam)
*/
val STEAM_Fix_294530: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294530")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294540.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Freddi Fish 3: The Case of the Stolen Conch Shell (Steam)
*/
val STEAM_Fix_294540: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294540")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294550.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch (Steam)
*/
val STEAM_Fix_294550: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294550")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294560.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Freddi Fish 5: The Case of the Creature of Coral Cove (Steam)
*/
val STEAM_Fix_294560: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294560")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294660.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Saves the Zoo (Steam)
*/
val STEAM_Fix_294660: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294660")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294670.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Travels Through Time (Steam)
*/
val STEAM_Fix_294670: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294670")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294680.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Enters the Race (Steam)
*/
val STEAM_Fix_294680: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294680")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294690.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt Joins the Circus (Steam)
*/
val STEAM_Fix_294690: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294690")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294700.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt: Pep's Birthday Surprise (Steam)
*/
val STEAM_Fix_294700: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294700")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294710.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt and Pep's Dog on a Stick (Steam)
*/
val STEAM_Fix_294710: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294710")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_294720.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Putt-Putt and Fatty Bear's Activity Pack (Steam)
*/
val STEAM_Fix_294720: KeyedGameFix = ScummGameFix(GameSource.STEAM, "294720")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_317020.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Pajama Sam: Games to Play on Any Day (Steam)
*/
val STEAM_Fix_317020: KeyedGameFix = ScummGameFix(GameSource.STEAM, "317020")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_317030.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Fatty Bear's Birthday Surprise (Steam)
*/
val STEAM_Fix_317030: KeyedGameFix = ScummGameFix(GameSource.STEAM, "317030")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_363050.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Let's Explore the Airport (Junior Field Trips) (Steam)
*/
val STEAM_Fix_363050: KeyedGameFix = ScummGameFix(GameSource.STEAM, "363050")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_363060.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Let's Explore the Farm (Junior Field Trips) (Steam)
*/
val STEAM_Fix_363060: KeyedGameFix = ScummGameFix(GameSource.STEAM, "363060")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_363070.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Let's Explore the Jungle (Junior Field Trips) (Steam)
*/
val STEAM_Fix_363070: KeyedGameFix = ScummGameFix(GameSource.STEAM, "363070")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_376760.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Big Thinkers Kindergarten (Steam)
*/
val STEAM_Fix_376760: KeyedGameFix = ScummGameFix(GameSource.STEAM, "376760")
8 changes: 8 additions & 0 deletions app/src/main/java/app/gamenative/gamefixes/STEAM_376770.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package app.gamenative.gamefixes

import app.gamenative.data.GameSource

/**
* Big Thinkers 1st Grade (Steam)
*/
val STEAM_Fix_376770: KeyedGameFix = ScummGameFix(GameSource.STEAM, "376770")
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package app.gamenative.gamefixes

import android.content.Context
import app.gamenative.data.GameSource
import com.winlator.container.Container

/**
* Applies multiple fixes for the same game key.
* Every fix in [fixes] runs in order.
*/
class CompositeGameFix(
private val fixes: List<GameFix>,
) : GameFix {
override fun apply(
context: Context,
gameId: String,
installPath: String,
installPathWindows: String,
container: Container,
): Boolean {
var allSucceeded = true
for (fix in fixes) {
val succeeded = fix.apply(context, gameId, installPath, installPathWindows, container)
if (!succeeded) {
allSucceeded = false
}
}
return allSucceeded
}
}

class KeyedCompositeGameFix(
override val gameSource: GameSource,
override val gameId: String,
fixes: List<GameFix>,
) : KeyedGameFix, GameFix by CompositeGameFix(fixes)
Loading