ROM Hack Pokemon Transfer Utilities

Supercool330

Well-Known Member
OP
Member
Joined
Sep 28, 2008
Messages
752
Trophies
1
XP
1,131
Country
United States
With the release of Pokemon HOME, I've been thinking about how to make the best experience for transferring Pokemon form all of the games with a single device using as close to official means as possible. The 3DS is capable of playing every Gen 1-7 Pokemon game (with the use of GBARunner2 for Gen 3).

The transfers that are straight forward:
  • Gen 1 (VC) -> Bank: Poke Transporter
  • Gen 2 (VC) -> Bank: Poke Transporter
  • Gen 6 -> Bank: Poke Transporter
  • Gen 7 -> Bank: Native
  • Bank -> HOME: Native
The transfers that are straight forward using retail cartridges:
  • Gen 5 -> Bank: Poke Transporter
This leaves the following transfers that can't be done now:
  • Gen 3 -> Gen 4: Pal Park (3DS doesn't have a slot 2)
  • Gen 4 -> Gen 5: Transfer Lab (Requires 2 devices and doesn't support ROMs)
  • Gen 5 (ROM) -> Bank: Poke Transporter (doesn't support ROMs)
For Gen 3 -> Gen 4, the best possibility is Slot2 support in nds-bootstrap / TwilightMenu. It looks like this is actually a planned feature (see https://github.com/ahezard/nds-bootstrap/issues/19 and https://github.com/DS-Homebrew/TWiLightMenu/issues/794), at which point this transfer should be easy.

For Gen 5 (Rom) -> Bank, it feels like the best option would be some sort of slot-1 redirect while using Poke Transporter. This could probably be done as a Luma3DS firmware module, or NTR CFW Plugin, but I'm not totally sure (and nothing like this exists AFAIK).

Gen 4 -> Gen 5 would be more complicated. Interestingly, all the code for this transfer is located in the Gen 5 games which use a DS Download play app to extract the data from the Gen 4 save. A (heavy) ROM hack could possibly run the download play code in-process and redirect the slot-1 access, but this would require a ton of reverse engineering. Even with 2 devices, using Transfer Lab would be tricky, as you would need some sort of slot-1 redirect for the Download Play app.

Has anything like this ever been attempted, or is there anything obvious I'm overlooking?




Edit: It looks like Slot2 support in nds-bootstrap may not be that far off. There were actually a couple commits that started adding this functionality (https://github.com/ahezard/nds-bootstrap/commit/dfeff685cc8391e52d1840d8d7d6fc629b9ae08a and https://github.com/ahezard/nds-bootstrap/commit/e77b6e4f962493daa49778d41f91389e02851d69).

I've also been thinking more about the other transfers. For Gen 5 (Rom) -> Bank, an NTR CFW Plugin or patch to the binary probably isn't the best approach. It seems like a patch to the FS sysmodule that redirects that card commands would be best, but this would be complicated. Patching the existing FS module would be tricky, but neither Luma or Atmosphere has an open-source FS module. Creating a new FS module from scratch would have other potential benefits though (e.g. exfat support).

For the Gen 4 -> Gen 5, I've sort of given up on doing that with only one device. It would be doable, but prohibitively complicated, and require massive changes to the ROMs. A better more general approach may be to add slot-1 redirect to nds-bootstrap, then load download play with slot-1 redirected to the ROM.




Edit 2: Turns out binary patch to the Poke Transporter ROM was the simplest way to do Gen 5 -> Bank. A patch was created based on zaksabeast's Dream Radar redirect patch, and then implemented as a PKSM script that dynamically generates a patch now available in the latest PKSM release.

Now we just need Slot2 support in nds-bootstrap, and some sort of solution for Gen 4 -> Gen 5
 
Last edited by Supercool330,

Supercool330

Well-Known Member
OP
Member
Joined
Sep 28, 2008
Messages
752
Trophies
1
XP
1,131
Country
United States
hi! love this post very useful. So any progress on gen 3 to 4? and gen 4 to 5? not using pkhex obviously.
Best bet for both gen 3 to 4 and 4 to 5 is nds-bootstrap. Gen 3 to 4 support is actually pretty close; Platinum slot-2 emulation is already checked-in (link), and will likely be available in release 100 (whenever that happens). Gen 4 to 5 is definitely further out and will require 2 DS (or 3DS) consoles (though likely only one will need to be running nds-bootstrap). There is an issue requesting this feature (link) and I discussed it a bit with RocketRobz on discord, but so far there are no concrete plans.
 
Last edited by Supercool330,
  • Like
Reactions: nicotina117

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    BigOnYa @ BigOnYa: :shit: "BigOnYa Shat Here - 11/14/24"