Skip to content

Instantly share code, notes, and snippets.

@Europia79
Europia79 / ips_count.sh
Created July 24, 2026 17:42
IPS patch analyzer that does Binary Fingerprint Analysis to look for suspicious writes, and determine (in)compatibility with respect to Headers that change offsets.
#!/bin/bash
# cmp -l base hack | wc -l
# cmp -l base hack | while IFS= read -r line; do set $line; printf "%08X %02X %02X\n" $(($1 - 1)) 0$2 0$3 ; done
##########################################
# CONFIG #
##########################################
declare -gi max_per_record=32; # 0xFFFF
susreport_sfc="zsusreport_sfc.csv"; # OR NULL
susreport_smc="zsusreport_smc.csv"; # OR NULL
ips_file="patch.ips"; # patch file under inspection
@Europia79
Europia79 / IUPAG-Naming-Convention.md
Last active July 23, 2026 02:47
An alternate naming convention for ROMs & Romhacks.
@Europia79
Europia79 / IUPAG-SNES.txt
Last active February 15, 2025 14:38
Example of IUPAG nomenclature.
[1R] Daimakaimura - Super Ghouls 'N Ghosts (@Capcom)-(#Europe)-(v1991-11-28)-(rev10)-(T-En) [!]-{1A}.zip
[1R] Daimakaimura - Super Ghouls 'N Ghosts (@Capcom)-(#USA)-(v1991-11-28)-(rev01)-(T-En) []-{1A}-(Beta).zip
[1R] Daimakaimura - Super Ghouls 'N Ghosts (@Capcom)-(#USA)-(v1991-11-28)-(rev10)-(T-En) [!]-{1A}.zip
[1R] Daimakaimura - Super Ghouls 'N Ghosts (@Capcom)-(#USA,Europe)-(v2006-11-19)-(rev20)-(T-En) [!]-{1A}-(Virtual Console, Classic Mini, Switch Online).zip
[1R] Gunman Clive - (@Horberg)-(#World)-(v2016-05-30)-(rev00)-(T-En) [x]-{1A}-(Unl; Aftermarket; Demo).zip
[1R] Jurassic Park 2 - The Chaos Continues (@Ocean)-(#Europe)-(v1993-12-29)-(rev10)-(T-En,Fr,De,It) [!]-{2P}.zip
[1R] Jurassic Park 2 - The Chaos Continues (@Ocean)-(#USA)-(v1993-11-30)-(rev00)-(T-En,Fr,De,It) []-{2P}-(Beta).zip
[1R] Jurassic Park 2 - The Chaos Continues (@Ocean)-(#USA)-(v1993-11-30)-(rev10)-(T-En,Fr,De,It) [!]-{2P}.zip
[2R] Jeff's Shoot'Em Up - (@Iguana)-(#USA)-(v1991-08-23)-(rev00)-(T-En) []-{1P}-(Proto).zip
[2R] Pocky & Ro
@Europia79
Europia79 / iupag-snes.dat
Last active February 15, 2025 14:30
An example of IUPAG nomenclature (naming specification).
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="UTF-8"?>
<datafile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://datomatic.no-intro.org/stuff https://datomatic.no-intro.org/stuff/schema_nointro_datfile_v3.xsd">
<header>
<id>49</id>
<name>IUPAG-SNES</name>
<description>SNES Set using IUPAG nomenclature</description>
<category>games</category>
<version>v2025-02-15</version>
<date>2025-02-15</date>
<author>Europia79</author>
@Europia79
Europia79 / _FIX_HEADER.sh
Created October 18, 2023 08:45
Automatically fixes headers for VGM Player v3.30
#!/bin/bash
# _FIX_HEADER.sh by Europia79
##########################################
# README #
##########################################
# (1) This script requires Linux, Mac, or Git-for-Windows:
# https://gitforwindows.org/
# https://git-scm.com/download/win
# (2) Requires a ROM set:
# https://r-roms.github.io/
@Europia79
Europia79 / _save_headers.sh
Created October 18, 2023 08:44
Save Headers for Sega Mega Drive ; Genesis ; 32x
#!/bin/bash
# _save_headers.sh by Europia79
##########################################
# README #
##########################################
# (1) This script requires Linux, Mac, or Git-for-Windows:
# https://gitforwindows.org/
# https://git-scm.com/download/win
# (2) Requires a ROM set:
# https://r-roms.github.io/
#!/bin/bash
# NES Flips Wrapper by Europia79
##########################################
# README #
##########################################
# (1) This script requires Linux, Mac, or Git-for-Windows:
# https://gitforwindows.org/
# https://git-scm.com/download/win
# (2) This script also requires Floating IPS (flips) v1.31:
# https://github.com/Alcaro/Flips
01.[00].<W> Anaheim MightyDucks| (ANA):(Team Scrooge McDuck)
02.[01].<W> Atlantis Islanders | (ATL):(Team Stargate)
03.[02].{E} Boston Bronies | (BOS):(Team Swagger,Bourne,Wick)
04.[03].{E} Buffalo Sabertooths| (BUF):(Team Magneto & Sabertooth)
05.[04].<W> Carolina Dobermans | (CAR):(Team Superman & Supergirl)
06.[05].<W> Chicago Blackhawks | (CHI):(Team Iron-Man)
07.[06].{E} Col Moose-Knuckles | (COL):(Team South-Park)
08.[07].<W> Columbus Commanders| (CLB):(Team Star-Trek)
09.[08].<W> Dallas S.T.A.R.S. | (DAL):(Team Sony)
10.[09].{E} Detroit Ragnaroks | (DET):(Team Thanos)
public boolean in3050(int a, int b) {
Range range3 = new Range(30, 40);
Range range4 = new Range(40, 50);
return range3.contains(a,b) || range4.contains(a,b);
}
class Range {
int min;
int max;
public Range(int min, int max) {
@Europia79
Europia79 / Main.vc
Last active December 19, 2017 12:34
[C%] Experimental syntax called Function Builder Notation
class Main {
/**
* main() function that demonstrates the syntax of Function Builder Notation
*
* .returns(void) would be optional since it doesn't actually return anything
* .captures() is optional since it doesn't actually capture anything
* .throws() is optional since it doesn't actually throw any Exceptions
*
* This notation attempts to provide a consistent way to declare