Specialist when it comes to arbitrary code execution setups in the 2nd gen of pokémon games.
Made a set of ACE setups for all language releases of gen 2.
@flag3833753 I recall that LuckyTyphlosion referred to them as “friendly clones”which you could consider using as a term?
I think the term originates from the fact that “friendly clones” won’t cause any issues whatsoever on Gold/Silver.
Poké Transporter GB v1.1.1 has been released! This release fixes a handful of bugs and re-enables Pokémon Yellow (thanks to a new entry point found by @Timo_VM !).
With the 0xFE bug fixed and Yellow re-enabled, my focus has fully become adding in language compatibility
@mco_ogdenm Hopefully in the coming weeks. The RCE payload has to be rewritten based on an exploit that @Timo_VM discovered- their documentation is great though, so it should hopefully not be too painless
Setup for unnamed clone on 3DS Virtual Console:
Box 1 must never have been full.
- Put pokémon with item in box 1, save. Deposit one other pokémon and exit, don’t save.
- Use PokéTransporter. When done, box 1 still has a pokémon in it, but a box count of 0.
- Repeat the video:
@im_a_blisy In a way, yes!
If box 1 is active, Transporter takes pokémon from the active box 1 (updated through normal gameplay) instead of the actual saved version of box 1.
If the active box 1 happens to have more pokémon than the saved box 1, the saved box count underflows.
Experimenting a bit with Poké Transporter. There’s a pretty huge issue for the Virtual Console releases of gen 2 where Poké Transporter can be used to get a box 1 with a box count of 255 in it.
Looks like this could be used to set up ACE without needing a frame perfect trick.
A nice upgrade to ACE: a simple payload that lets you connect to your PC with a custom GTS server, and send any code to instantly execute it.
You no longer have to enter any code manually on the DS. Here I used it to give myself all items.
I'm extremely excited to announce that Poke Transporter GB v1.0.0 has just released!
A lot went into this, but the largest part is a complete visual overhaul by the amazing @LJSTAR_!
You can also check out my new video detailing the project here!
https://t.co/FGQvGaxeHG
My newest video is now online! It focuses on an improved setup for the Celebi Egg Glitch.
It allows you to obtain any pokémon in Gold/Silver/Crystal without using ACE.
This improved setup preserves the egg’s DVs, allowing shiny hatches!
Link below:
https://t.co/ElLPSlxjLK
Working on a new video!
This time I’m straying from ACE topics and instead focusing on a Celebi Egg Glitch setup.
The first draft of the video is currently undergoing a round of feedback, should be done either tomorrow or somewhere next week depending!
@lan_de_gu_sha You might be interested in pfero’s code:
4F 15 08 05 C9 00 [code] 37 C9
4F changes the write location to the start of the second text line, while 08 05 C9 sets up the sequence E6 F5 05 C9, returning to main text.
Too long for JP names, though
Source: https://t.co/02XwvIsS0X
@flag3833753 Finally, the various “slots” for the special call ACE setup are essentially abstractions. You can freely place code within the entire area.
I’m working on an update for this setup, the Crystal setup crashes during some move animations. Should be done by the weekend!
@flag3833753 There’s been a recent effort by other members of the community to develop a framework for Red/Blue in which a RAM writer can be activated just by pressing select. Still pretty bulky, but might provide a good starting point!
Experimented a bit over the last week and I’ve adopted RGBDS for writing my ACE code.
Having a working assembler does wonders for how fast it is to code stuff, and while RGBDS isn’t perfectly suited (since it’s intended for writing actual GB ROMs) it’s adaptable enough for use.
@lan_de_gu_sha Most of the mobile adapter related code is still intact in the English version, but with slightly different RAM pointers compared to the JP version: https://t.co/23C59QZzxO
This code isn’t properly documented on our side, likely because it’s both complex and goes unused here.
@lan_de_gu_sha Command $0B does something very similar, buffering values in a similar way, but its function seems to be related to printing numbers of some kind instead.
I assume that this means that the address pointer ends up being different compared to $0A, which ends up leading to a crash.