Skip to content

Instantly share code, notes, and snippets.

Hey, all --
I wanted to let you know that I'm planning on retiring from work in the public hacking scene.
Atmosphere (and my work on the Switch) have been an enormous labor of love for me for the past eight and a half years, and it's been an honor for me to dedicate so much of my life towards this kind of work.
That said, I am getting older. I find myself with less time to dedicate towards it, more responsibilities, and a changing personal life.
Particularly with my hoping to have kids in a foreseeable time horizon, I'm thinking I have to re-evaluate how much time I can spend on hobby projects.
This file has been truncated, but you can view the full file.
Fuck Centro
======
001 - Bulbasaur B#164 (Stage: 1)
======
Base Stats: 45.49.49.65.65.45 (BST: 318)
EV Yield: 0.0.0.1.0.0
Gender Ratio: 31
Catch Rate: 45

17.0.0 Save File Management

Hello! It's been a while since I've done any write-ups, but I thought I'd do one to (hopefully) bring a little clarity to a situation that's been causing a lot of confusion and misinformation.

I'm thinking I'll go through what the problem is and why it happens. So, I guess, let's dive in:

What's happening?

Some people are finding that upon updating to 17.0.0, their consoles are getting a blackscreen and refusing to boot further.

import sys
def is_diff(i_a, i_b):
if sorted(i_a.keys()) != sorted(i_b.keys()):
return False
for k in sorted(i_a.keys()):
if k in ['lr', 'vt', 'func']:
continue
if i_a[k] != i_b[k]:
return True

Sometimes you need a 2048-bit RSA keypair for testing various things.

If you, like myself, have a child's sense of humor, I offer the following for your general use:

P = 19
Q = 1696986749729493925354392349339746171297507422986462747526968361144447230710192316397327889522451749459854070558277878297255552508603806832852079596337539247651161831569525505882103311631577368514276343192042634740927726070847704397913856975832811679847928433261678072951551065705680482548543833651752439700272736498378724153330763357721354498194000536297732323628263256733931353143625854828275237159155585342783077681713929284136658773985266864804093157854331138230313706015557050002740810464618031715670281442110238274404626065924786185264268216336867948322976979393032640085259926883014490947373494538254895109731

N = 0xFF69696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696
z_wr0301_SymbolEncountPokemonGimmickSpawner_WR03_Common: (probably on Slippery Slope)
Location: (23828.3, 7721.5, 51077.1)
Normal: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
Overcast: Swablu Lv.60 (A0FFF45BFC2B16B8)
Raining: Swablu Lv.60 (A0FFF45BFC2B16B8)
Thunderstorm: Swablu Lv.60 (A0FFF45BFC2B16B8)
Intense Sun: Snorlax Lv.65 (A103685BFC2E11AB)
Snowing: Amaura Lv.60 (A0FFF85BFC2B1D84)
Snowstorm: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
Sandstorm: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
000 - Route 1:
All Weather (Lv. 2-5):
- Skwovet 40%
- Blipbug 30%
- Caterpie 15%
- Grubbin 10%
- Hoothoot 05%
001 - Route 2:
@SciresM
SciresM / gw_flash.py
Last active August 10, 2025 09:52
utility for interacting with gateway modchip updates
import sys
from struct import pack as pk, unpack as up
def u32(x):
return x & 0xFFFFFFFF
def tea_update_custom_mac(mac, v, k):
v0, v1 = v[0], v[1]
cur_sum = 0xC6EF3720
k0, k1, k2, k3 = k[0], k[1], k[2], k[3]
@SciresM
SciresM / ushabti.py
Last active March 28, 2021 22:28
Ushabti predictor for Spelunky 2 seeded runs.
import sys
# Spelunky 2 ushabti prediction for seeded runs, author SciresM.
def u32(v):
return v & 0xFFFFFFFF
def u64(v):
return v & 0xFFFFFFFFFFFFFFFF
@SciresM
SciresM / spelunky2_extract.py
Created September 30, 2020 11:44
Quick and dirty Spelunky 2 asset extraction. Assets are a weird chacha20 variant, there are at least two cryptographic errors due to typos....
import zstd
from struct import pack as pk, unpack as up
import subprocess as sp
# Quick and dirty Spelunky 2 asset extraction, author SciresM.
# Assets are protected by a weird chacha20 variant.
# The developers made an unfortunate set of typos that
# significantly weakens the asset crypto...
def rotate_left(a, b):