Skip to content

Instantly share code, notes, and snippets.

import csv
def get_condition(raw_rng):
condition_rng = raw_rng & 255
condition = 2
if condition_rng < (255 - 32):
condition = 1 if condition_rng < 32 else 0
if condition == 0:
output = ""
import csv
import tkinter as tk
from tkinter import font
def get_condition(raw_rng, initiative=False):
condition_rng = raw_rng & 255
condition = 2
if initiative:
condition_rng += -32 -1
if condition_rng < (255 - 32):
# needs ffxhd-raw-rng12-values.csv and ffxhd-raw-rng13-values.csv placed in the same folder to work
import csv
damage_rolls = {}
damage_rolls['auron'] = {}
damage_rolls['tidus'] = {}
damage_rolls['possible_rolls'] = {}
damage_rolls['possible_rolls']['tidus'] = (125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141)
"""This script is used to find a seed by inputting the first 3 damage values
from Tidus and the first 5 damage values from Auron. It will look for files
in the ffx_ps2_seeds directory and try to find the seed that corresponds
to those damage values.
"""
import os
import time
import datetime
import array
from typing import List, Optional
AURON_DAMAGE_VALUES = (
(
260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 291, 292, 293, 294
),
(
520, 522, 524, 526, 528, 532, 534, 536, 538, 540, 542,
import datetime
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)
seed = s32(s32(seed * 1108104919) + 11786)
import datetime
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)
seed = s32(s32(seed * 1108104919) + 11786)
from datetime import datetime, timedelta
import threading
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)

Intro

The times in brackets tell how long until the next non-X input
When optimizing equipment the updated equipment is in bold (E.g. Optimize (Mage Masher / Leather Hat / Wrist / Leather Shirt / -))

Credits

Based on this guide made by Muttski and petroesjka

The Run Begins!

(2:10)

Strategy explanation

In Mushroom Rock Road it's necessary to farm AP for Yuna and Kimahri: the strategy involves using Energy Ray on an encounter, doing a Sphere Grid to give Yuna (and Valefor) more Magic and Magic Defense, doing a second encounter to recharge Valefor's Overdrive then killing Raptors and Gandarewas until reaching a certain amount of AP on Yuna.

First fight (using Energy Ray)

The formation should be Tidus/Wakka/Auron; since Funguars give more AP compared to other monsters (44 vs 32), it's preferable to kill an encounter containing one but to avoid having to farm encounters at the end of the road kill anything that isn't a Garuda after fleeing 2 encounters.

As long as Kimahri and Wakka took a turn in battle and they are alive, you can Switch anyone for Yuna and Summon Valefor to Energy Ray with her (both Energy Ray and Energy Blast will kill anything but the former has a shorter animation), even on an Ambush.

Structure of the fight

  • Tidus > Switch > Kimahri