Pokémon Homebrew Bank
Have you made a video? Please share it in the thread, I will take care of a small list.
Here is my first homebrew.
It is used to manage Pokémon storage with a Bank, like the Pokébank, but as free service (and a local storage solution).
This homebrew is not intended to cheat (not even cloning). It's just a storage solution!!
The source code is available on github!
What this Homebrew can do:
- Navigate through PC boxes from ORAS save.
- Navigate through Bank boxes.
- Select one Pokémon and move it to another box slot.
- Swap a box content to another (pc <-> bank)
- Export/Import savedata to/from game (/main).
- Load/Save bankdata to/from bank (/pkbank/bank).
- Autocomplete Pokédex when transfering Pokémon (Only OR/AS).
- Prompt a dialog to save/exit/backup during execution.
- Work on o3DS AND n3DS!
How to install:
- Just extract the archive at (to?) the root of you SD Card.
- It must contain /pkbank/data/en/[DataFiles] and /3ds/PHBank/[PHBankFiles].
Controls:
Everywhere:
- DPad/CPad: Move the cursor inbox.
- L/R: Change box.
- LZ/RZ: Switch from PC to Bank and vice versa.
- Touchscreen: some funny stuff.
- Move inbox.
- Switch boxes.
- Switch PC/Bank.
- Drag & Drop Pokémon.
- Change selection mode.
- Start: Open the savexit menu.
- Select: Switching selection mode. (Single -> Quick -> Multiple Select)
- L+R+A+B+X+Y: Emergency exit... That's fun!
In Single Selection mode (Red):
- A: Select Pokémon / Move Pokémon if one already selected.
- B: Cancel selection.
In Quick Selection mode (Blue):
- A: Select Pokémon / Move Pokémon if one already selected.
- B: Cancel selection.
- Y: Swap the current PC box content with the current Bank box content.
In Multiple Selection mode (Green):+ You can use the touchscreen, it should be corrected.
- Y: Active the box selector.
Todo list:
- Complete the auto-completion Pokédex feature ( :o ).
- Add a multiple selection. (lazyness...)
- Display more specific information per Pokémon. (Tabs for contest/met/etc)
- Enhance more the GUI.
Nota Bene:
- I only tested this homebrew with Pokémon Alpha Sapphire on a cartridge and a N3DS.
- I'm not an english speaker, correct me please!
- This homebrew is not intended to cheat. It's just a storage solution.
Pre-GUI:
Post-GUI:
Thanks to @suloku for all of your work on the project.
Thanks to @Kaphotics & @Asia81 (and PKHex's contributors) for the save functions (offsets, and algorithms) and data.
Thanks to @Stracker (and PCHex's contributors) for some of his functions, and the pattern design. Merci !
Thanks to @xerpi (and SF2D's contributors) for the Graphic library.
Disclaimer: I'm not responsible for you losing or corrupting your save by using this homebrew. It mays contain bugs within the normal intended use. Use it at your own risk.
ALWAYS MAKE A BACKUP! (Hold L while launching homebrew or/and use svdt)
Alpha v0.1:
- Inital αlpha-release.Alpha v0.3:
- Box transfer.Alpha v0.3a:
- Pokédex auto-completion (ORAS).
- Reorder input by Selection mode.
- Icon changed.
- Fix with Pokédex A-C.Alpha v0.3b:
- Fix a problem with the names (FS_Streams).Alpha v0.3c:
- Maybe a fix for digital games load file.Beta v1.0:
- Don't wanna list...Beta v1.0.1:
- Added a GUI, is that enough?Beta v1.0.2:
- Fixed the previous buggy touchscreen.Beta v1.0.3:
- Double tap to select (double mean, tap again while in the slot).
- Fixed some issues with save from SD.Beta v1.0.4:
- Added a start-key menu.
- Implemented Drag&Drop.Beta v1.0.5 (removed):
- Integrated Filters use & fix.Beta v1.0.5-a:
- More displayed informations.
- Fix the move filter.Beta v1.0.6:
- Very basic box selector.Beta v1.0.6-a:
- Improved the basic box selector DPad controls.Beta v1.0.6-b:
- Completed the navigation in box
Didn't I told you that the main purpose of this homebrew is to steal Pokémon for the glory of the Team Rocket?!
Infact, the OT name is coded in 16bytes ("normal characters" are coded in 8bytes). That's why I used a placeholder (it was in a test variable too ).
Im not sure what I would be looking for to a close font that looks like the Pokemon one, but Google's Roboto font is able to be used and I am sure that would look decent.It's possible, but I don't want to search a font...
If you find one, which is free and open (no rights on). I can integrate it!
// Pokédex completion
if (srcBanked && !dstBanked)
addDex(src);
if (!srcBanked && dstBanked) //<----
addDex(dst);
// Pokédex completion
if (srcBanked && !dstBanked)
if(!isPkmEmpty(src)) addDex(src);
if (!srcBanked && dstBanked)
if(!isPkmEmpty(dst)) addDex(dst);
There's always an inherent risk when messing with save files.any risk on using this? will it harm my pokemon save files? is it available for X & Y save files?
sorry if i'm asking too much, i just need this n i would never pay for a pokebank account.
I've updated the font to Roboto.Im not sure what I would be looking for to a close font that looks like the Pokemon one, but Google's Roboto font is able to be used and I am sure that would look decent.
I already did it yesterday but I only commited now. -> https://github.com/gocario/PHBank/blob/master/source/pkbank.cpp#L1108-L1124@Gocario am I reading this wrong or are you adding dex item when moving a pokemon from ORAS save to bank?
EDIT: OK, that's ok for swapping pokemon, but won't this try to add empty slots too?
Code:// Pokédex completion if (srcBanked && !dstBanked) addDex(src); if (!srcBanked && dstBanked) //<---- addDex(dst);
Shouldn't it be this?
Maybe it's better to add the check to addDex() method itself.Code:// Pokédex completion if (srcBanked && !dstBanked) if(!isPkmEmpty(src)) addDex(src); if (!srcBanked && dstBanked) if(!isPkmEmpty(dst)) addDex(dst);
Edit: actually, wouldn't it be better to update dex when savibg savefile, just like the update to notOT handler? It's what pokemon bank does and will only update for those pokemon that are in the savegame at the end of thr bank session
Also, what is weird about xy dex outside the foreing pokemon flags?
I can understand why people hates Comis Sans... I like it! (Easter egg: On Skype, when using the Comis Sans MS font, the emoticon is sad)Please please please do not use comic sans if you were actually going to conssider that;-;
There is always a risk. Just make a backup, by using SVDT or by holding L button while starting the PHBank. The backup will be stored in "/pkbank/backup/ as main_ALOTOFNUMBER"any risk on using this? will it harm my pokemon save files? is it available for X & Y save files?
sorry if i'm asking too much, i just need this n i would never pay for a pokebank account.
Great! I'm still interested in what's different from XY to ORAS pokedex though, if you would be so kindI already did it yesterday but I only commited now. -> https://github.com/gocario/PHBank/blob/master/source/pkbank.cpp#L1108-L1124
I am currently working on the Pokédex feature, to be used with XY and ORAS.
.
Hmmm?Great! I'm still interested in what's different from XY to ORAS pokedex though, if you would be so kind
So in the end only difference were the foreign flags? Glad to see it already implemented, at this speed the project will be finished before we know it
Can you try to work on making it so the OT is are trainers name?So in the end only difference were the foreign flags? Glad to see it already implemented, at this speed the project will be finished before we know it
And then I'll make endless tests to ensure everything works like the actual official bank... (not really looking forward to that part).
You mean in the status screen?Can you try to work on making it so the OT is are trainers name?
#pragma once
static inline void unicodeToChar(char* dst, u16* src, int max)
{
if(!src || !dst)return;
int n=0;
while(*src && n<max-1){*(dst++)=(*(src++))&0xFF;n++;}
*dst=0x00;
}
The problem is how to render 16bit (2bytes) characters... I am trying with the wchar_t, but I am still not succeeding! (It's the same for nicknames)Can you try to work on making it so the OT is are trainers name?
I will contact mashers if I can do it this evening.Speaking of which, @Gocario, mashers developed a font engine for his HBL mod and it supports 2 byte encoding and uses roboto font, you should contact him for that matter.
Meanwhile, HBL has a nice function to at least get latin names displayed in some way (extended ascii I guess):
Code:#pragma once static inline void unicodeToChar(char* dst, u16* src, int max) { if(!src || !dst)return; int n=0; while(*src && n<max-1){*(dst++)=(*(src++))&0xFF;n++;} *dst=0x00; }
Ye, I know, I didn't even fixed the buggy 'é'. Don't worry!@Gocario
I'm not sure if this was done on purpose but the icon has noticeable black spots on the corners. There appear to be 2 on each corner
If this is on purpose then ignore this post. If not is there a way to fix it?