{"id":19649177,"url":"https://github.com/xan1242/pspmodbase","last_synced_at":"2025-04-30T17:23:09.186Z","repository":{"id":187948804,"uuid":"677748416","full_name":"xan1242/PSPModBase","owner":"xan1242","description":"Plugin base for easy PSP game modding and code injection!","archived":false,"fork":false,"pushed_at":"2024-12-26T19:20:51.000Z","size":94,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T18:12:13.284Z","etag":null,"topics":["base","code-injection","game-mod","game-modding","sony-psp","tutorial"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xan1242.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-12T14:05:31.000Z","updated_at":"2025-02-25T22:28:18.000Z","dependencies_parsed_at":"2024-12-26T18:01:23.767Z","dependency_job_id":null,"html_url":"https://github.com/xan1242/PSPModBase","commit_stats":null,"previous_names":["xan1242/pspmodbase"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FPSPModBase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FPSPModBase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FPSPModBase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FPSPModBase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xan1242","download_url":"https://codeload.github.com/xan1242/PSPModBase/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251749424,"owners_count":21637538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["base","code-injection","game-mod","game-modding","sony-psp","tutorial"],"created_at":"2024-11-11T14:51:58.047Z","updated_at":"2025-04-30T17:23:09.159Z","avatar_url":"https://github.com/xan1242.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PSP Mod Base\n\nThis is a pair of plugins and a collection of basic libraries for making game modding and code injection easier.\n\nThe goal is simple - make game modding with custom code easier on PSP!\n\nYou may freely use this as a basis for a plugin to build mods for PSP games and apps.\n\n## Usage\n\nIntended usage is either as a Visual Studio solution or as a regular makefile project.\n\nIn case you're using `make`, please make sure to set up the [PSPDEV Toolchain!](https://pspdev.github.io/)\n\n### PSPDEV side-note\n\n(TODO: write a shell script to automate this!)\n\n(You may skip this step it you're using Visual Studio and/or the pspsdk submodule)\n\nBe sure to get the CFW API libraries and headers. You'll need this regardless of if you use CFW or not. PSPSDK does not come with this pre-included.\n\nThe easiest place to acquire them currently is from the uofw/uofwinst repository:\n\nhttps://github.com/uofw/uofwinst/tree/master/include\n\nhttps://github.com/uofw/uofwinst/tree/master/libs\n\nFrom that repository, place include headers (all the .h files) into `$PSPDEV/psp/sdk/include` and libraries (all the .a files) into `$PSPDEV/psp/sdk/lib`\n\n### Windows\n\n- Clone the repository with `--recurse-submodules`\n\n- Open PSPModBase.sln in Visual Studio\n\n- Open source/PSPModBase/main.c of the PSPModBase project\n\n- Build as per usual\n\n### Make\n\n- Clone the repository without submodules\n\n- Install and set up [PSPDEV Toolchain](https://pspdev.github.io/) if you hadn't already!\n\n- Try to do: `make -C source/PSPModBase`\n\nIf all is well, you should end up with an elf and a prx in the `build` folder!\n\nNow you can modify the code to your needs and liking.\n\n## PSP CFW usage\n\nIn case you wish to run the userspace module (PSPModBase.prx), you will need to use the bootstrap.\n\nIncluded is code for a kernel plugin called `PSPModBaseBoot`.\n\nYou have to modify its code to match your needs.\n\n### Modifications for bootstrapper\n\nThe minimal modifications that are required are:\n\n1. Make sure `MODULE_NAME_INTERNAL` definition matches the one in PSPModBase!\n\n2. Make sure to name `MODULE_BOOT_TARGET` the same as your PRX filename!\n\nBy default this is already set up for `PSPModBase` but as you rename your project, you have to address these 2 things to get it working.\n\n### Runtime\n\nIn order to actually run your plugin, copy both your main plugin (PSPModBase.prx) and the bootstrapper (PSPModBaseBoot.prx) to the PSP. \n\n**NOTE** - these files must be placed next to each other!\n\nThen, in your CFW use PSPModBaseBoot.prx as the plugin for GAME (or your specific GameID if you're using a CFW such as ARK-4).\n\n### Recommended plugins for PSP debugging\n\n- [PSPLINK](https://pspdev.github.io/debugging.html#psplink) - required for runtime debugging. Enable it by adding \"psplink.prx\" to the plugins list. Also make sure that USB Charging is NOT enabled.\n\n- [libkprintf](https://github.com/Linblow/libkprintf) - an addon which hooks kernel printf functions to restore its functionality via sio and psplink. Use this in combination with psplink to get print output via pspsh. Keep in mind that it may take it a bit to hook in so you might not catch early prints.\n\n## PPSSPP usage\n\nSimply copy the files to: `memstick/PSP/PLUGINS/(plugin_name)`\n\nYou also need to create a plugin.ini (example included in the data folder).\n\n\n\nOptionally, if you want the build script to automatically copy files for each new build, define the `PPSSPPMemstick` environment variable in your system and the build script should automatically copy new builds directly into your emulator memstick folder.\n\n## Additional Info\n\nThis code is highly based on the [Widescreen Fixes Pack](https://github.com/ThirteenAG/WidescreenFixesPack) PSP plugins. \n\nFor more examples on what you can do with this base, you may explore the code for PPSSPP plugins such as [GTA Vice City Stories](https://github.com/ThirteenAG/WidescreenFixesPack/blob/master/source/GTAVCS.PPSSPP.WidescreenFix/main.c).\n\n### PSPSDK cygwin toolchain\n\nIncluded as a submodule (`external/pspsdk`) is a PSPDEV toolchain built under cygwin. This is mainly intended for Windows users. \n\nIt is a minimal configuration that can run only the toolchain, but you may also launch bash by running `launch-bash.ps1` from Powershell. Certain things are currently broken (such as `psp-pacman`) due to cygwin's inherent incompatibilites.\n\nIf you want to invoke `make` standalone in a Windows environment, you may do so by running `external/pspsdk/vsmake.ps1` from Powershell.\n\nAnd this should go without saying - if you're not building directly under Windows, you do not need to clone this submodule.\n\n## Credits\n\n- Portions of code based on [pspdev/psplinkusb](https://github.com/pspdev/psplinkusb) and [pspdev/pspsdk](https://github.com/pspdev/pspsdk) samples.\n\n- ThirteenAG for [Widescreen Fixes Pack](https://github.com/ThirteenAG/WidescreenFixesPack)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan1242%2Fpspmodbase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxan1242%2Fpspmodbase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan1242%2Fpspmodbase/lists"}