Portfolio

Portfolio

This page is a summary of most of the public software I have made or substantially contributed to. I’ve excluded most mods from it, to see them check out my GameBanana page. If you want to see all of the programming stuff I’ve done, you can check out my GitHub profile.

Unless otherwise specified, all of these projects are written in C# (it’s a nice language).

(Sorry there aren’t many pretty pictures, I don’t do much GUI stuff)

Aemulus Contributions

Aemulus Package Manager is a mod manager for console Persona games which I have made contributions to (full list) such as:

Inaba Exe Patcher - ExPatches

Inaba Exe Patcher is a framework originally made by Tekka that allows other mods to patch P4G’s exe on boot using a binary file. I extended it to use a plain-text format known as ExPatches to make it easy for mods to inject assembly code or replace strings in any game’s executable on boot. An example of a simple expatch that changes a hardcoded colour is:

1
2
3
4
5
6
7
8
9
10
const rColour = 255
const gColour = 255
const bColour = 255

[patch Persona Details Menu Patch]
pattern = FF 75 ?? FF 75 ?? FF 75 ?? 57 51 8B 4D ?? F3 0F 11 04 24 E8 ?? ?? ?? ?? F3 0F 10 45 ?? 83 C4 14
order = only
push {rColour}
push {gColour}
push {bColour}

This has now been used in many mods such as Thieves Den Expanded, Tiny Fixes 64, and P4 Style Text Boxes. I also use it often for prototyping simple code mods.

P3F Item Renamer

P3F Item Renamer is a command line tool for creating pnaches to rename items in Persona 3 FES.

P3F has all item names hardcoded in its executable so to rename them pnach files are needed (PCSX2’s patching format). This tool streamlines the creation of these files as they are tedious to manually create, requiring you to convert the name to hex characters and calculate the offset of it. An example of this is:

1
2
3
// Burger
patch=1,EE,207CB6D0,word,67727542
patch=1,EE,207CB6D4,word,00007265

With the tool, the user just enters the old and new names and the pnach is automatically created.

Persona Event Message Editor

Persona Event Message Editor is a WiP interactive editor for event messages in Persona games.

Normally messages would need to be decompiled to text files using Atlus Script Tools then recompiled and injected back into the game to see changes, this tool simplifies the process by giving a real time preview of how changes will look. It also generally provides a more user friendly experience by stripping out boilerplate tags used in messages and allowing easy selection of bustups and voice lines.

Persona Event Message Editor Screenshot A screenshot of the WiP Persona Event Message Editor (excuse the ugly UI, functionality is a priority)

This program is my first serious attempt at making a full GUI program using Avalonia and the MVVM pattern.

Unreal Essentials

Unreal Essentials is a framework for replacing files in Unreal Engine game. I created it in the hopes of providing a universal way for people to mod Unreal Engine games that doesn’t require putting files in the game’s folder.

Files can be loaded loosely from mod folders due to a number of hooks I made to Unreal Engine code after studying the source and getting help from people who’d done it previously. Additionally, loose files from UTOCs are possible thanks to integration with UTOC Emulator which Rirurin created. The combination of these should make it easier for people to create mods and minimise compatibility issues.

Persona 3 Reload Essentials Thumbnail The thumbnail for P3R Essentials, the main mod to utilise Unreal Essentials currently (thumbnail by Lynn)

Currently it’s only really used by Persona 3 Reload through the P3R Essentials mod however, I hope more communities will pick it up in the future.

Persona Modding Docs

The Persona Modding Docs site is a community driven documentation project that I’m running. The aim of it is to create a centralised place to get information on modding all aspects of various Persona games as currently information is scattered between random discord channels and different websites if it’s publicly available at all.

The site is hosted using GitHub pages with the Just The Docs Jekyll theme to build the site from markdown files. It contains all the information needed for anyone, regardless of prior knowledge, to add to the site and submit changes with a pull request in the hopes of getting as many contributors as possible.

It being fully open-source also means, should I ever stop maintaining it, anyone else could pick up the project, protecting the information in it.

File Emulation Framework Contributions

File Emulation Framework is a framework made by Sewer56 that allows mods to “emulate” files, mainly for the sake of allowing multiple mods to edit the same file without causing conflicts. The framework relies on “emulators” to actually make this happen for a specific file type, I’ve contributed two so far:

PAK Emulator

PAK files are archives, commonly used in the games to group together related files.

PAK Emulator was initially developed by Lt. Sophia but then picked up by me when she was no longer able to work on it. It lets multiple mods edit files inside of a single archive without conflicts by creating a stream that emulates a pak file with all of the changes merged. The majority of the hard work for this was done by Sophia but I also did a lot of work cleaning it up and making it integrate properly with Persona Essentials.

BF Emulator

BF files are compiled code files which contain much of the game’s logic. They are a propriery format that can be decompiled to source code (called Flowscript) and recompiled using TGE’s Atlus Script Compiler.

BF Emulator lets multiple mods edit different procedures in the same BF file by running provided source code through Atlus Script Tools to create a merged file. This both improves compatibilty and makes it easier to create Flowscript mods since source code is automatically compiled on launch instead of needing to be manually compiled by the creator (it gets very tedious doing it manually).