It sees the game, but it says it doesn't see the save data. I copied the save file into the N64 save folder, but same results.
Anyone got the Transfer Pak to work with PKMN Stadium?
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
-
- Core Developer
- Posts: 385
- Joined: Sat May 23, 2020 12:55 pm
- Has thanked: 42 times
- Been thanked: 414 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
It cannot use the gb core save file, it uses it's own format currently.
This may change in the future.
Format of the n64 save(assuming Pokemon Stadium): first 128kbyte are flash save of pokemon stadium, next 32kbyte are big-endian swapped gb save, next 96kbyte are unused
And yes, i completed the GB game(german Red) inside Pokemon Stadium and also some cups with Pokemon of the GB save. But i didn't import any existign gb save.
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
FPGAzumSpass wrote: ↑Sun Oct 29, 2023 9:00 amIt cannot use the gb core save file, it uses it's own format currently.
This may change in the future.Format of the n64 save(assuming Pokemon Stadium): first 128kbyte are flash save of pokemon stadium, next 32kbyte are big-endian swapped gb save, next 96kbyte are unused
And yes, i completed the GB game(german Red) inside Pokemon Stadium and also some cups with Pokemon of the GB save. But i didn't import any existign gb save.
Hi Robert, thanks for the reply.
Putting aside the fact that Nintendo's GB emulator inside of the Pokemon Stadium games is pretty weak, it only plays the official Pokemon games, so ROM hacks won't work (Gen II graphic mod for example).
Also, many other games use the transfer pak besides Pokemon games. Mario Tennis and Mario Golf are great sport RPGs on the GBC and the save data are used to unlock stuff in their respective N64 games.
If it's loading the GB save data is tricky, then perhaps a program to convert a GB save data to N64?
Cheers
-
- Core Developer
- Posts: 385
- Joined: Sat May 23, 2020 12:55 pm
- Has thanked: 42 times
- Been thanked: 414 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
I mostly wanted to get the basic internal core features working and that goal is reached.
At this point it "just" needs to be improved for better user experience and some other memory controllers (MBC) added.
As this is less important than other core work, i postponed it.
I'm pretty sure at some point it will get a better handling, either by me or some other dev who wants to improve it.
Of course a simple program to extract/append gb saves could be done. I would assume it costs less than 1 hour to do so.
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Hello, I made a small tutorial to use the current Transfer Pak implementation with Pokemon Stadium 1&2, I hope you will be able to play your game
Note1: I assume you will use compatible games, so if you play Pokemon Stadium PAL French version, I assume you will use a Pokemon French version too from Yellow, Red or Blue.
Note2: I can confirm this method is ok with Pokemon Stadium 2 with Pokemon Yellow. My Pokemon Cristal save is not 32KB/Ko but 33 and I dont know why... So it didn't worked for me for this version ; but I don't know if it's just my personal Cristal save which is wrong or if this method is not adapted for this game in perticular... Let me know
Also, my tutorial is for Windows users, I'm sorry Linux fans but I've no doubt someone will be able to bring you the solution.
From GB to Stadium
1. Pre-required Free Softwares
- HxD (for Hex editing)
- NotePad++ (for RegEx usage)
2. Prepare your saves
Copy your Pokemon Stadium save from MiSTer to your PC
Copy your Pokemon GameBoy save to your PC (MiSTer or other)
Ensure your Pokemon GameBoy save file size is 32 KB/Ko
Ensure your Pokemon GameBoy save file extension (format) is ".sav": if it's ".srm" you can just rename it to ".sav" and confirm
Ensure your Pokemon Stadium save file size is either 128KB/Ko or 256KB/Ko
MAKE A COPY of those saves, a "backup", so you won't lose anything if things go wrong!
3. Stadium file size to 256
If your Pokemon Stadium file size is already at 256KB/Ko, it means it already includes a GameBoy save: you can go to step 4.
If your Pokemon Stadium file size is 128KB/Ko, we will fill it with blank data so the nexts steps of this tutorial will be the same for all users.
- Open your Stadium save with HxD
- Go to the latest line: CTRL+G to go to offset 00020000
- Ensure to set the cursor to the latest value of this latest line, if not you can use your keyboard "END" key
- On the toolbar menu click on Edit -> Insert bytes...
- Set the Bytecount to "00020000", keep the "hex" checkbox, fill pattern with "00", and confirm
- Save (CTRL+S) and check your save file size: must be 256KB/Ko
4. Convert the GB save Byte order (endian)
- Open your GB save with HxD
- Select all with CTRL+A and copy with CTRL+C
- Open Notepad++ and click on the new file button (CTRL+N)
- Past the GB hex data in it (CTRL+V)
- Do not lose the selection, ensure all is selected using CTRL+A
- Open the Search and Replace tool with CTRL+H
- Ensure to select the Regular Expression mode (RegEx) as search mode
- Ensure the "In Selection" checkbox is checked
- On the search field you will enter this: ([^ ]{2}) ([^ ]{2}) ([^ ]{2}) ([^ ]{2})
- On the replace field you will enter this: $4 $3 $2 $1
- Then click on the Replace ALL button, only once (should affect 8192 matches if not it's not good!), and close this Search&Replace tool
- Save as a new txt file (or keep it opened)
5. Inject the converted GB save into Stadium save (256)
- Open your converted GB save txt file (from step 4) with Notepad++
- Select all with CTRL+A and copy with CTRL+C
- Open your Stadium 256KB/Ko save with HxD
- On the toolbar menu click on Edit -> Select Block... (CTRL+E)
- Start at 00020000, end at 00027FFF, confirm
- Past the converted GB save with CTRL+V
- Save (CTRL+S) and check your save file size: must be 256KB/Ko
6. Go play!
- Ensure to have your gb game rom file on N64 core games directory (can be in subfolder)
- Ensure to replace you Stadium save file by the new one
- Start you N64 core without loading any game
- Load your GB game rom file first
- Select TransfertPAK for Player One input
- Then you can load you Stadium game and enjoy!
From Stadium to GB
1. Pre-required Free Softwares
- HxD (for Hex editing)
- NotePad++ (for RegEx usage)
2. Prepare your saves
Copy your Pokemon Stadium save from MiSTer to your PC
Ensure your Pokemon Stadium save file size is 256KB/Ko ; if not you don't have any GB save in it!
MAKE A COPY of those saves, a "backup", so you won't lose anything if things go wrong!
3. Extract the GB save from Stadium save and convert Byte order (endian)
- Open your Stadium save with HxD
- On the toolbar menu click on Edit -> Select Block... (CTRL+E)
- Start at 00020000, end at 00027FFF, confirm
- Copy with CTRL+C
- Open Notepad++ and click on the new file button (CTRL+N)
- Past the GB hex data in it (CTRL+V)
- Do not lose the selection, ensure all is selected using CTRL+A
- Open the Search and Replace tool with CTRL+H
- Ensure to select the Regular Expression mode (RegEx) as search mode
- Ensure the "In Selection" checkbox is checked
- On the search field you will enter this: ([^ ]{2}) ([^ ]{2}) ([^ ]{2}) ([^ ]{2})
- On the replace field you will enter this: $4 $3 $2 $1
- Then click on the Replace ALL button, only once (should affect 8192 matches if not it's not good!), and close this Search&Replace tool
- Save as a new txt file (or keep it opened)
4. Update your old GB save
- Open your converted GB save txt file (from step 3) with Notepad++
- Select all with CTRL+A and copy with CTRL+C
- Open your old GB save with HxD
- Select all with CTRL+A and replace all with CTRL+V
- Save (CTRL+S) and check your save file size: must be 32KB/Ko
5. Go play!
- Check if this gb save is correctly generated by enjoying it
Note that depending on where you play, you may need to rename its extension from ".sav" to ".srm".
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
@Phoenix
yeah, I think I'll wait for someone to make a program for this.
- pgimeno
- Top Contributor
- Posts: 710
- Joined: Thu Jun 11, 2020 9:44 am
- Has thanked: 277 times
- Been thanked: 226 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Sounds like something solvable with a single line of the 'dd' command. For GB to Stadium:
Code: Select all
dd if=<GBSave> of=<StadiumSave> seek=131072 count=32768 conv=notrunc,swab,count_bytes,seek_bytes
And the other way around:
Code: Select all
dd if=<StadiumSave> of=<GBSave> skip=131072 count=32768 conv=swab,count_bytes,skip_bytes
Untested, might need some tuning.
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Can confirm that all English language Gen 1 and 2 saves taken from GB cartridges will work in Stadium 1/2.
Using a submodule gb01 all saves from GB cartridges came out as 32KB. Byte swapped and inserted into N64 sav files they all work.
As of the latest core todays date, the only thing that does not work is GB Tower for Gen 2 games in Stadium 2. Otherwise you can import teams from Red/Blue/Yellow/Gold/Silver/Crystal, move boxes around, items, GB Pokémon in minigames, etc. Even mystery gift works! (No RTC yet so I guess for one "day" only).
- mysterypaint
- Posts: 2
- Joined: Sun Nov 12, 2023 1:09 am
- Location: Kirkland, WA
- Been thanked: 4 times
- Contact:
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
I have created a Python script to replicate the instructions Phoenix posted earlier in this thread:
https://github.com/mysterypaint/MiSTer-N64-Save-Utility
Usage instructions are on the GitHub page too... would love to get this script running directly from MiSTer eventually! Hoping it will speed up the save-editing process a bit (:
- meauxdal
- Posts: 152
- Joined: Mon Nov 23, 2020 3:28 am
- Location: atlanta
- Has thanked: 39 times
- Been thanked: 126 times
- Contact:
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Fantastic work, mysterypaint. Any chance you can extend the tool to also work with Controller Pak saves? I have a mess of ghosts for Mario Kart, Wave Race, and Excitebike that I'd love to use on the core, but haven't been able to figure out importing/exporting them on my own.
Unrelated: is it true that Gen 2 doesn't work on GB Tower in Pokemon Stadium 2 currently? My experience when testing was that only Crystal failed to load (hangs on the loading screen). I was able to load Gold and Silver from the Transfer Pak normally and boot them up. That said, I didn't actually get into gameplay in either so maybe it gets messed up at some point, but they at least boot and the attract modes play normally, unlike Crystal. This testing was all done with USA roms.
I'll go test again on my end here in a minute and report back.
Edit: Had no issue playing Pokemon Silver via Pokemon Stadium 2 through the introductory section. I wonder if people are testing Crystal (which doesn't load currently) and concluding that Gen 2 doesn't work...
- mysterypaint
- Posts: 2
- Joined: Sun Nov 12, 2023 1:09 am
- Location: Kirkland, WA
- Been thanked: 4 times
- Contact:
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
meauxdal wrote: ↑Sun Nov 12, 2023 3:24 pmFantastic work, mysterypaint. Any chance you can extend the tool to also work with Controller Pak saves? I have a mess of ghosts for Mario Kart, Wave Race, and Excitebike that I'd love to use on the core, but haven't been able to figure out importing/exporting them on my own.
Unrelated: is it true that Gen 2 doesn't work on GB Tower in Pokemon Stadium 2 currently? My experience when testing was that only Crystal failed to load (hangs on the loading screen). I was able to load Gold and Silver from the Transfer Pak normally and boot them up. That said, I didn't actually get into gameplay in either so maybe it gets messed up at some point, but they at least boot and the attract modes play normally, unlike Crystal. This testing was all done with USA roms.
I'll go test again on my end here in a minute and report back.
Edit: Had no issue playing Pokemon Silver via Pokemon Stadium 2 through the introductory section. I wonder if people are testing Crystal (which doesn't load currently) and concluding that Gen 2 doesn't work...
https://github.com/mysterypaint/MiSTer-N64-Save-Utility
I have updated the tool to support CPaks/TPaks! Please read the instructions very carefully, because usage is significantly different (but hopefully equally as simple to use) since the last update.
As a potentially-temporary solution, please convert any DexDrive saves to .mpk using this online tool: https://savefileconverter.com/#/n64/dexdrive
The tool is also heavily untested, so please report any issues to me either on Discord (castierook on the MisterFPGA Discord Server) or (mysterypainto -> gmail).
Finally, remember to make save backups before using this tool: I am not responsible for any lost data!
Regarding Gen 2: I think GB Tower is an issue with the N64 Core. I am able to load a Crystal save without any issues if I check the contents of the imported save on the in-game Lab's PC:
-
- Core Developer
- Posts: 385
- Joined: Sat May 23, 2020 12:55 pm
- Has thanked: 42 times
- Been thanked: 414 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Yes, currently only MBC5 with fixed rom and ram size is really implemented, but second gen uses MBC3 and a different rom size, so they don't work yet.
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
mysterypaint wrote: ↑Fri Nov 17, 2023 2:03 amhttps://github.com/mysterypaint/MiSTer-N64-Save-Utility
I have updated the tool to support CPaks/TPaks! Please read the instructions very carefully, because usage is significantly different (but hopefully equally as simple to use) since the last update.
As a potentially-temporary solution, please convert any DexDrive saves to .mpk using this online tool: https://savefileconverter.com/#/n64/dexdrive
The tool is also heavily untested, so please report any issues to me either on Discord (castierook on the MisterFPGA Discord Server) or (mysterypainto -> gmail).
Finally, remember to make save backups before using this tool: I am not responsible for any lost data!
Regarding Gen 2: I think GB Tower is an issue with the N64 Core. I am able to load a Crystal save without any issues if I check the contents of the imported save on the in-game Lab's PC:
Hi there,
I've followed to instructions to the best of my knowledge, but it didn't work. Any idea what I did wrong?
Code: Select all
E:\Console Games\Utilities\MiSTer-N64-Save-Utility-main>python convert_n64_savedata.py -ini
Traceback (most recent call last):
File "E:\Console Games\Utilities\MiSTer-N64-Save-Utility-main\convert_n64_savedata.py", line 343, in
N64Database = populateN64Database()
^^^^^^^^^^^^^^^^^^^^^
File "E:\Console Games\Utilities\MiSTer-N64-Save-Utility-main\convert_n64_savedata.py", line 37, in populateN64Database
romName = line.split('#')[1].strip()
~~~~~~~~~~~~~~~^^^IndexError: list index out of range
E:\Console Games\Utilities\MiSTer-N64-Save-Utility-main>pause
Press any key to continue . . .
Here's my INI file:
Code: Select all
[PATHS]
InputN64SavePath = Before\Pokemon Stadium 1.sav ; Specify the input N64 save path, before the tool modifies the save file.
OutputSavePath = After\Pokemon Stadium 1.sav ; Specify the output save path, after the save has been modified with this tool.
; Specify the N64 Save's Cart ID or MD5 checksum, as it appears in N64-database.txt
; If you do not already have N64-database.txt, please download it:
; https://raw.githubusercontent.com/MiSTer-devel/N64_ROM_Database/main/N64-database.txt
[CART_ID]
CartID = NPO___
[OPTIONS]
DumpSaves = F ; Specify whether or not we should dump the CPak/TPak (and Gameboy) Save from the N64 Save File. Gets dumped to [OutputSavePath]
; If we are not dumping saves, specify the path for all TPaks, including any GB/GameBoy save files.
; If you are not using one, remove ALL text after the "=", like I did for TPak4 below.
; If you are using ANY CPaks, all of these fields must be blank.
; If the bytes are already in the correct format + don't need to be endian-flipped, add a * to the very beginning of your path like I did for TPak3.
; ^^^^If you do not understand what this means, you likely don't need to add the *: Gameboy .savs always
; need to be flipped, and unless you manually ripped the save yourself, you do not need to add the *
[TPAKS]
TPak1 = Before\Pokemon - Red Version Gen II GFX.sav
TPak2 =
TPak3 =
TPak4 =
; In port order, specify the path for all your CPaks.
; If you are not using one, remove ALL text after the "=", like I did for CPak4 below.
; If you are using ANY TPaks (Including any GB saves), all of these fields must be blank.
; If the bytes are already in the correct format + don't need to be endian-flipped, add a * to the very beginning of your path like I did for CPak3.
; ^^^^If you do not understand what this means, you likely don't need to flip them: .mpk files do not need the *
; Please remember to convert any of your CPak saves (e.g. DexDrive format) to the proper .mpk format prior to injection.
; I recommend this web-based tool to do the conversion: https://savefileconverter.com/#/n64/dexdrive (Make sure "Controller Pak" is highlighted when downloading the save.)
[CPAKS]
CPak1 =
CPak2 =
CPak3 =
CPak4 =
- PistolsAtDawn
- Posts: 359
- Joined: Fri Feb 18, 2022 7:29 pm
- Has thanked: 307 times
- Been thanked: 100 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
;Specify the N64 Save's Cart ID or MD5 checksum, as it appears in N64-database.txt
; If you do not already have N64-database.txt, please download it[CART_ID]
CartID = NPO___
Is that the right CartID?
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
ID:NPO___ flash128k|tpak # Pokémon Stadium
- PistolsAtDawn
- Posts: 359
- Joined: Fri Feb 18, 2022 7:29 pm
- Has thanked: 307 times
- Been thanked: 100 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
I guess the formatting of the ID just seemed weird to me. It looked like a placeholder rather than a valid code. I might try it without the underscores anyway.
-
- Top Contributor
- Posts: 939
- Joined: Mon Mar 01, 2021 3:10 pm
- Has thanked: 49 times
- Been thanked: 375 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Also flash128k|tpak are not a cart ID they are instructions to the N64 core to setup 128k of flash and allow a transfer pack
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
PistolsAtDawn wrote: ↑Thu Jan 25, 2024 3:22 pmI guess the formatting of the ID just seemed weird to me. It looked like a placeholder rather than a valid code. I might try it without the underscores anyway.
Well looking at the N64-database.txt file, each game has a unique ID made up by 3 characters or higher followed by a couple of underscores (removing them still gives me the error BTW). Wish mysterypaint would take a look ay this post or on the Github page in order to clarify this.
I know, I was just showing where I got the ID from and it was from that line.
-
- Top Contributor
- Posts: 939
- Joined: Mon Mar 01, 2021 3:10 pm
- Has thanked: 49 times
- Been thanked: 375 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Crash is on this line
romName = line.split('#')[1].strip()
which is getting a romname by splitting the inout line on the # character and then trying to find the 2nd entry of the split. So that suggets the file its parsing is incorrectly formatted. Its parsing the N64Database.txt at this point
So my guess is you have an incorrectly formatted N64Database,txt file
so a line is
62c1c8738ac652dce0c8df79f5dd53a6 ntsc|cic6102 # Bike Race '98 V1.2 by NAN
that code is splitting on that # symbol and trying to find whats on the right hand side. Now for whatever reason one of your n64database.txt lines is missing a # is my guess
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
FPGA64 wrote: ↑Fri Jan 26, 2024 7:59 amCrash is on this line
romName = line.split('#')[1].strip()
which is getting a romname by splitting the inout line on the # character and then trying to find the 2nd entry of the split. So that suggets the file its parsing is incorrectly formatted. Its parsing the N64Database.txt at this point
So my guess is you have an incorrectly formatted N64Database,txt file
so a line is
62c1c8738ac652dce0c8df79f5dd53a6 ntsc|cic6102 # Bike Race '98 V1.2 by NAN
that code is splitting on that # symbol and trying to find whats on the right hand side. Now for whatever reason one of your n64database.txt lines is missing a # is my guess
It's the official database: https://github.com/MiSTer-devel/N64_ROM ... tabase.txt
-
- Top Contributor
- Posts: 939
- Joined: Mon Mar 01, 2021 3:10 pm
- Has thanked: 49 times
- Been thanked: 375 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
Waifu4Life wrote: ↑Mon Jan 29, 2024 3:14 amFPGA64 wrote: ↑Fri Jan 26, 2024 7:59 amCrash is on this line
romName = line.split('#')[1].strip()
which is getting a romname by splitting the inout line on the # character and then trying to find the 2nd entry of the split. So that suggets the file its parsing is incorrectly formatted. Its parsing the N64Database.txt at this point
So my guess is you have an incorrectly formatted N64Database,txt file
so a line is
62c1c8738ac652dce0c8df79f5dd53a6 ntsc|cic6102 # Bike Race '98 V1.2 by NAN
that code is splitting on that # symbol and trying to find whats on the right hand side. Now for whatever reason one of your n64database.txt lines is missing a # is my guess
It's the official database: https://github.com/MiSTer-devel/N64_ROM ... tabase.txt
ok looks like a bug in the python its ignoring lines that begin with # but there are a lot of lines beginning with ;
Looks like someone changed the comment character
so
replace line 33 in convert_n64_savedata.py with this
if not line.startswith(";") and not line.isspace():
This changes the comment character looked for and in my extremely limited testing it can now populate a N64 database. Note I didnt go through the whole thing as I have no save files to convert, but the above will at least allow the database to be populated
- Waifu4Life
- Posts: 271
- Joined: Fri Jun 19, 2020 5:30 am
- Has thanked: 21 times
- Been thanked: 47 times
Re: Anyone got the Transfer Pak to work with PKMN Stadium?
FPGA64 wrote: ↑Mon Jan 29, 2024 8:14 amok looks like a bug in the python its ignoring lines that begin with # but there are a lot of lines beginning with ;
Looks like someone changed the comment characterso
replace line 33 in convert_n64_savedata.py with this
if not line.startswith(";") and not line.isspace():
This changes the comment character looked for and in my extremely limited testing it can now populate a N64 database. Note I didnt go through the whole thing as I have no save files to convert, but the above will at least allow the database to be populated
That worked, I'll try the save data later, thanks.
EDIT: Works perfectly, thanks again.
More or less off-topic, https://discord.com/channels/6479093974 ... 6806611064
On the Discord test-builds section, there's a new MiSTer build called MiSTer-N64GameBoy_20240129-2
Code: Select all
Hot off the press MiSTer Main test build that implements improved (I hope) save handling for Transfer Pak games.
Automatically tries to load .sav files from "saves/GAMEBOY/[Game Name].sav" (or whatever "games/[Core Name]/" folder you used).
Backs up your Game Boy saves before mounting to the N64.
Writes progress directly to the file in "saves/GAMEBOY/".
Kind of backwards compatible with the old .tpk format. If no matching .sav file is found in "saves/GAMEBOY", it copies the .tpk to this location with a new file extension.
BEWARE: Resets the N64 core when a new Transfer Pak game is selected.
This is interesting.