Skip to content

Instantly share code, notes, and snippets.

View it-is-final's full-sized avatar

final it-is-final

  • RMIT
  • Naarm/Melbourne, Victoria
  • 20:40 (UTC +10:00)
View GitHub Profile
@it-is-final
it-is-final / fast_clone_search.py
Last active May 16, 2025 16:51
Script that searches through a Pokemon Emerald ROM for fast clone species
from pathlib import Path
CURRENT_FOLDER = Path(__file__).resolve().parent
outfile = CURRENT_FOLDER / "out.txt"
MOVING_MON_OFFSET = 4998
IN_BOX_MOVING_OFFSET = 5345
SPECIES_NAMES_OFFSET = 0x3185c8
SPECIES_NAME_SIZE = 10
@it-is-final
it-is-final / HOCK-2O-Guide.markdown
Last active May 30, 2025 06:32
Temporary guide for HOCK 2.O

HOCK 2.O

Note

This is just a temporary written tutorial for HOCK 2.O.

Details might be different for other languages.

When a video tutorial by Papa Jefe is released, people should be redirected to use that instead. For the written tutorial, redirect to pokemon-ace-notes if a page is made there for this.

@it-is-final
it-is-final / frlg-r0-bootstrap.md
Last active December 26, 2024 15:58
A guide on creating an exit code bootstrap for FRLG grab ACE

Exit Code Bootstrap for FRLG grab ACE

This is a newer version of the exit code bootstrap, found here. Please note that it works differently to the older version which will be explained later.

The purpose of this bootstrap is to allow more complex ACE payloads such as the hexwriter, and the hexecutor to be able to exit out of execution and hand back control to the game.

Prequisites

  • Box 14 must have a BX lr opcode written to it, it should be named Foì
    • Refer to the 'Restoring BX lr box name' section of this guide to get this box name.
@it-is-final
it-is-final / mini_iv_calc.py
Last active December 7, 2024 09:16
Quick and dirty demonstration script for using algebra to calculate possible IVs for a Pokemon
from math import ceil
# solve_hp_iv and solve_other_iv calculates the lowest possible IV that can
# reproduce the stat. The ceil function ensures that these formulas output
# an integer that is within the range of possible IVs (floor may sometimes
# output a result that is outside the range).
def solve_hp_iv(
base_stat: int,
ev: int,
@it-is-final
it-is-final / easy_chat_eng.csv
Last active November 28, 2024 15:35
Pokemon Emerald Easy chat system words
Index Group Word
0019 POKéMON PIKACHU
001A POKéMON RAICHU
001B POKéMON SANDSHREW
001C POKéMON SANDSLASH
0025 POKéMON VULPIX
0026 POKéMON NINETALES
0027 POKéMON JIGGLYPUFF
0028 POKéMON WIGGLYTUFF
0029 POKéMON ZUBAT
@it-is-final
it-is-final / Emerald_Mail_README.md
Last active December 18, 2024 17:36
How to get 0x40E9 via mail glitch in Pokemon Emerald (U).

Requirements

  • Python 3.10+
  • Some knowledge on RNG manipulation, if you don't know how go to im a blisy ._. for Retail-style RNG or PokemonRNG (though you might need to join their Discord for finer details) for emulator with LuaScript for more information on the method.

How-to

  1. Download searcher.py from this gist and the easy chat word list from here, and place both of them in the same folder.
  2. Open terminal and type python searcher.py and follow instructions given by the script.
    • This should give you a list of RNG advancements with PIDs compatible with this trick along with the first word needed to corrupt a Pokemon into 0x40E9
  3. Obtain the Pokemon on a listed RNG advancement described in step 2.
  4. Decide on another word to use for this mail corruption and note down its index.
  5. Do the following maths opera
@it-is-final
it-is-final / JPN_EasyChatSystem.csv
Last active April 2, 2025 23:43
Wordlist for easy chat system in Japanese FRLG
Index Group Word
0019 ポケモン2 ピカチュウ
001A ポケモン2 ライチュウ
001B ポケモン2 サンド
001C ポケモン2 サンドパン
0025 ポケモン2 ロコン
0026 ポケモン2 キュウコン
0027 ポケモン2 プリン
0028 ポケモン2 プクリン
0029 ポケモン2 ズバット
@it-is-final
it-is-final / Characteristics.json
Last active November 24, 2024 05:46
Scraped characteristics data (from Bulbapedia) and pre-computed natures lookup table
{
"Loves to eat": {
"Stat": "HP",
"IVs": [
0,
5,
10,
15,
20,
25,
@it-is-final
it-is-final / combined_scraper.py
Last active November 9, 2024 04:20
I found out it is easier to create a script that combines my previous two scripts
import argparse
import csv
import requests
from itertools import groupby
from pathlib import Path
from typing import TypedDict
from bs4 import BeautifulSoup
fieldnames = ('Number', 'Name', 'Form',
@it-is-final
it-is-final / clean_csv_up.py
Last active November 8, 2024 17:34
Python script I used to make Pokemon forms map correctly to their field in the CSV
import argparse
import csv
import itertools
from typing import Any, Literal
from pathlib import Path
fieldnames = (
"Number",
"Name",