Skip to content

Instantly share code, notes, and snippets.

@UserUnknownFactor
UserUnknownFactor / split_by_sig.py
Created July 4, 2024 13:54
Split a file into two by binary signature
import argparse, shutil, os
def find_and_dump(file_path, signature, ext1, ext2):
"""Finds a byte signature in a file and dumps the content before and after that point.
Args:
file_path: Path to the file to search.
signature: Byte signature to search for.
ext: Extension to use for the output files.
@UserUnknownFactor
UserUnknownFactor / apply_texts.py
Last active June 30, 2024 10:21
Tools for mass image translation (text applying tested on PGMMV with images of the same type/size that only differ in text area)
import os, csv, glob, re
from PIL import Image, ImageDraw, ImageFont
"""
This tool can read translations from:
`original→translation→image_without_extension[;text_pos_x,text_pos_y;overlay_path;overlay_x,overlay_y;custom_font;font_size;font_color]`
formatted .csv file and apply it to all images in the specified folder, after replacing
background to a specified image at specified coordinates. Text supports colored borders
and style tags like <b>, <i> (not enabled now) or <color="#ff0000"> in the text.
All stuff is only configurable in the code.
"""
@UserUnknownFactor
UserUnknownFactor / pymd5.py
Last active May 24, 2024 08:18
Pure Python implementation of MD5 algorithm for experiments and custom mods
#!/usr/bin/python3
# RSA Data Security, Inc., MD5 message-digest algorithm
# Copyright (C) 1991-1992, RSA Data Security, Inc.
"""
## pymd5 module
### The MD5 hash implementation in pure Python
The module exposes same methods as hashlib.md5 and a couple of
low-level methods to help with crypto experiments.
@UserUnknownFactor
UserUnknownFactor / pgmmv_dec.py
Last active May 25, 2024 08:16
PGM MV file decryptor with a separate Twofish cryptography library
try:
from twofish import Twofish # use github.com/blazepaws/python-twofish
except:
from pytwofish import Twofish # since the included implementation is slow
import struct
from typing import List
from base64 import b64decode
import os
import json
@UserUnknownFactor
UserUnknownFactor / rpa_unpacker.py
Created March 8, 2024 12:47
Renpy raw .rpyc string extractor and repacker (useful if other tools fail to extract the strings)
#!/usr/bin/env python3
from __future__ import print_function
import sys
import os
import codecs
import errno
import random
try:
import pickle5 as pickle
var commandNames = {
"101":"Show Text",
"102":"Show Choices",
"103":"Input Number",
"104":"Select Item",
"402":"When [**]",
"403":"When Cancel",
"103":"Input Number",
"104":"Select Item",
"105":"Show Scrolling Text",
@UserUnknownFactor
UserUnknownFactor / Photoshop_Duplicate-to-All-Text-Change.jsx
Last active July 9, 2024 05:31
Photoshop JS script to duplicate a group of layers to all files
// This script duplicates the current selected text layer to every open document
// and replaces text in the each of those layers to the one specified in arrow
// separated CSV file in format: `{filename without extension}→Added text`
// it can automatically save modified files as PSDs and additionally
// hides the only image layer in each document if present.
if (app.documents.length > 0) {
var csvFile = File.openDialog("Select CSV file", "Arrow Separated Values:*.csv", false);
if (csvFile) {
var csvData = readCSV(csvFile);
@UserUnknownFactor
UserUnknownFactor / add_json_debug.cmd
Last active April 3, 2024 12:26
Plugin to better understand JSON loading errors source in RPG Maker MV/MZ games
@echo off
powershell.exe -ExecutionPolicy Bypass -Command "$_=((Get-Content \"%~f0\") -join \"`n\");iex $_.Substring($_.IndexOf(\"goto :\"+\"EOF\")+9)"
del add_json_debug.cmd
@goto :EOF
$pliginsName = ".\www\js\plugins.js"
$pluginsStr =(Get-Content $pliginsName)
if($pluginsStr -like '*DebugJSONLoad*') {
Write-Host "Already patched!"
} else {
@UserUnknownFactor
UserUnknownFactor / add_plugin.cmd
Created March 8, 2024 12:35
Plugin to set custom save directory instead of www/save for RPG Maker MV/MZ games
@echo off
powershell.exe -ExecutionPolicy Bypass -Command "$_=((Get-Content \"%~f0\") -join \"`n\");iex $_.Substring($_.IndexOf(\"goto :\"+\"EOF\")+9)"
del add_plugin.cmd
@goto :EOF
$pliginsName = ".\www\js\plugins.js"
$pluginsStr =(Get-Content $pliginsName)
if($pluginsStr -like '*RoamingSavePath*') {
Write-Host "Already patched!"
} else {
@UserUnknownFactor
UserUnknownFactor / dump_rbr_strings.py
Last active March 30, 2024 15:49
Bakin resource extractor
import os, re, argparse, glob
from unicodedata import category
from filetranslate.service_fn import write_csv_list, read_csv_list, read_csv_dict
from filetranslate.language_fn import tag_hash
# NOTE: This should work for both Bakin RPG Maker and Smile Game Builder files
def write_7bit_encoded_int(stream, value):
result = bytearray()
while True: