From f6170b535f3083c0961d7f0e9bdc1758a87f6c59 Mon Sep 17 00:00:00 2001 From: Tobias Ganter Date: Wed, 5 Aug 2026 13:41:47 +0200 Subject: [PATCH] init --- gameart.jpg | Bin 0 -> 53732 bytes index.js | 203 +++++++++++++++++++++++++++++++++++++++++++++++++++ info.json | 7 ++ package.json | 11 +++ 4 files changed, 221 insertions(+) create mode 100644 gameart.jpg create mode 100644 index.js create mode 100644 info.json create mode 100644 package.json diff --git a/gameart.jpg b/gameart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7f893f43cb1f6209cdb2958e4f2452c81ae8045 GIT binary patch literal 53732 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 literal 0 HcmV?d00001 diff --git a/index.js b/index.js new file mode 100644 index 0000000..72f2342 --- /dev/null +++ b/index.js @@ -0,0 +1,203 @@ +const path = require('path'); +const { fs, log, util } = require('vortex-api'); + +const GAME_ID = 'retrorewindvideostoresimulator'; +const STEAM_APP_ID = '3552140'; + +// all relative to gamePath == /common/RetroRewind +const REL_PAKS = path.join('RetroRewind', 'Content', 'Paks', '~mods'); +const REL_LOGICMODS = path.join('RetroRewind', 'Content', 'Paks', 'LogicMods'); +const REL_UE4SS = path.join('RetroRewind', 'Binaries', 'Win64', 'ue4ss', 'Mods'); + +const MODTYPE_LOGICMODS = 'retrorewind-logicmods'; +const MODTYPE_UE4SS = 'retrorewind-ue4ss'; + +const PAK_EXTS = ['.pak', '.ucas', '.utoc', '.sig']; + +// archive paths come from Vortex with the host separator, normalise to '/' +function norm(filePath) { + return filePath.split(/[\\/]/).join('/'); +} + +function isDirectory(filePath) { + return filePath.endsWith(path.sep) || filePath.endsWith('/'); +} + +let _api; + +// under a wine/proton-hosted Vortex (steamtinkerlaunch) there is no Steam client +// in the prefix, so the store lookup throws ENOENT on libraryfolders.vdf. +// Swallow it - Vortex then keeps the manually browsed/stored discovery path. +function findGame() { + return util.GameStoreHelper.findByAppId([STEAM_APP_ID]) + .then(game => game.gamePath) + .catch(err => { + log('info', 'Retro Rewind: steam store lookup unavailable, using manual discovery', + { error: err.message }); + return undefined; + }); +} + +// the game object handed to modType.getPath has no usable path while the game is +// still being discovered/managed, so read the discovery from state instead +function discoveryPath(game) { + if (util.getSafe(game, ['path'], undefined) !== undefined) { + return game.path; + } + return util.getSafe(_api.store.getState(), + ['settings', 'gameMode', 'discovered', GAME_ID, 'path'], undefined); +} + +function modTypePath(relPath) { + return (game) => { + const gamePath = discoveryPath(game); + if (gamePath === undefined) { + log('debug', 'Retro Rewind not discovered yet, modtype path unresolved', relPath); + return undefined; + } + return path.join(gamePath, relPath); + }; +} + +function prepareForModding(discovery) { + return Promise.all([REL_PAKS, REL_LOGICMODS, REL_UE4SS] + .map(rel => fs.ensureDirWritableAsync(path.join(discovery.path, rel)))); +} + +// ---------------------------------------------------------------- UE4SS mods +// layout: /Scripts/main.lua or /dlls/main.dll +const UE4SS_MARKER = /(^|\/)(scripts\/main\.lua|dlls\/main\.dll)$/i; + +function testUe4ssMod(files, gameId) { + const supported = (gameId === GAME_ID) + && files.some(file => UE4SS_MARKER.test(norm(file))); + return Promise.resolve({ supported, requiredFiles: [] }); +} + +function installUe4ssMod(files, destinationPath) { + const marker = files.find(file => UE4SS_MARKER.test(norm(file))); + // strip "Scripts/main.lua" (2 segments) to get the mod root inside the archive + const markerSegments = norm(marker).split('/'); + const rootSegments = markerSegments.slice(0, markerSegments.length - 2); + const rootPath = rootSegments.join('/'); + + // mod name: the folder holding Scripts/, else the staging folder name + const modName = rootSegments.length > 0 + ? rootSegments[rootSegments.length - 1] + : path.basename(destinationPath).replace(/\.installing$/, ''); + + const filtered = files.filter(file => !isDirectory(file) + && (rootPath === '' || norm(file).startsWith(rootPath + '/'))); + + const instructions = filtered.map(file => ({ + type: 'copy', + source: file, + destination: path.join(modName, + rootPath === '' ? norm(file) : norm(file).substr(rootPath.length + 1)), + })); + + // UE4SS 3.x activates a mod folder that contains enabled.txt - no mods.txt edit, + // and the marker disappears again when Vortex purges the mod + instructions.push({ + type: 'generatefile', + data: Buffer.from(''), + destination: path.join(modName, 'enabled.txt'), + }); + + instructions.push({ type: 'setmodtype', value: MODTYPE_UE4SS }); + + log('info', 'installing Retro Rewind UE4SS mod', { modName, files: filtered.length }); + return Promise.resolve({ instructions }); +} + +// ------------------------------------------------------------ blueprint mods +// blueprint (LogicMods) paks ship inside a folder called LogicMods +const LOGICMODS_MARKER = /(^|\/)logicmods\//i; + +function testLogicMod(files, gameId) { + const supported = (gameId === GAME_ID) + && files.some(file => LOGICMODS_MARKER.test(norm(file)) + && PAK_EXTS.includes(path.extname(file).toLowerCase())); + return Promise.resolve({ supported, requiredFiles: [] }); +} + +function installLogicMod(files) { + const instructions = files + .filter(file => !isDirectory(file) + && PAK_EXTS.includes(path.extname(file).toLowerCase())) + .map(file => ({ + type: 'copy', + source: file, + destination: path.basename(file), + })); + + instructions.push({ type: 'setmodtype', value: MODTYPE_LOGICMODS }); + return Promise.resolve({ instructions }); +} + +// ------------------------------------------------------------------ pak mods +function testPakMod(files, gameId) { + const supported = (gameId === GAME_ID) + && files.some(file => path.extname(file).toLowerCase() === '.pak'); + return Promise.resolve({ supported, requiredFiles: [] }); +} + +// flatten into ~mods - archives commonly wrap the pak in one or more folders +function installPakMod(files) { + const instructions = files + .filter(file => !isDirectory(file) + && PAK_EXTS.includes(path.extname(file).toLowerCase())) + .map(file => ({ + type: 'copy', + source: file, + destination: path.basename(file), + })); + + return Promise.resolve({ instructions }); +} + +function main(context) { + _api = context.api; + + context.registerGame({ + id: GAME_ID, + name: 'Retro Rewind - Video Store Simulator', + mergeMods: true, + queryPath: findGame, + queryModPath: () => REL_PAKS, + logo: 'gameart.jpg', + executable: () => 'RetroRewind.exe', + requiredFiles: ['RetroRewind.exe'], + setup: prepareForModding, + supportedTools: [], + environment: { + SteamAPPId: STEAM_APP_ID, + }, + details: { + steamAppId: parseInt(STEAM_APP_ID, 10), + }, + }); + + context.registerModType(MODTYPE_UE4SS, 25, + gameId => gameId === GAME_ID, + modTypePath(REL_UE4SS), + () => Promise.resolve(false), + { name: 'UE4SS Mod' }); + + context.registerModType(MODTYPE_LOGICMODS, 25, + gameId => gameId === GAME_ID, + modTypePath(REL_LOGICMODS), + () => Promise.resolve(false), + { name: 'Blueprint Mod (LogicMods)' }); + + // lower number == higher priority, so UE4SS wins over the generic pak installer + context.registerInstaller('retrorewind-ue4ss', 25, testUe4ssMod, installUe4ssMod); + context.registerInstaller('retrorewind-logicmods', 26, testLogicMod, installLogicMod); + context.registerInstaller('retrorewind-pak', 27, testPakMod, installPakMod); + + return true; +} + +module.exports = { + default: main, +}; diff --git a/info.json b/info.json new file mode 100644 index 0000000..36ea331 --- /dev/null +++ b/info.json @@ -0,0 +1,7 @@ +{ + "name": "game-retro-rewind", + "author": "Interstellarcodes", + "version": "1.1.2", + "description": "Vortex support for Retro Rewind - Video Store Simulator (pak, LogicMods and UE4SS mods)", + "url": "https://www.nexusmods.com/retrorewindvideostoresimulator/mods/66" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2ae6450 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "game-retro-rewind", + "version": "1.1.2", + "description": "Vortex support for Retro Rewind - Video Store Simulator", + "main": "index.js", + "author": "Interstellarcodes", + "license": "MIT", + "dependencies": { + "vortex-api": "^1.0.0" + } +}