Hacking Pokemon Stadium

Поделиться
HTML-код
  • Опубликовано: 26 ноя 2024

Комментарии • 132

  • @ChromaLock
    @ChromaLock  6 месяцев назад +36

    Im a dumb and forgot to actually mention the exact library I'm using: github.com/NicoHood/Nintendo

    • @randomuploaderguy
      @randomuploaderguy 6 месяцев назад

      I think the issue with the gs codes not working is due to your sorting. I don't exactly know much about gs codes but I know if they're written in a certain order, you should keep them in that order.

    • @GeCareful
      @GeCareful 6 месяцев назад

      Yup! Really curious how you’re sorting all of this

  • @mashtonish
    @mashtonish 6 месяцев назад +83

    using ghidra on an executable with a compilable open source project is much funnier than it has any right to be.

    • @EvelynIsDeprecated
      @EvelynIsDeprecated 4 месяца назад +3

      Like... its open source?!?! If you have the knowledge to use ghidra, you can remove a single line of code and compile from source

  • @jnackmclain
    @jnackmclain 6 месяцев назад +91

    pit stopping to remove the popup is so funny to me

  • @LakituAl
    @LakituAl 6 месяцев назад +91

    As someone who has opened a hex editor once in my entire life, I find these videos really interesting and fascinating.

    • @internautaanonimo
      @internautaanonimo 6 месяцев назад +3

      I used a hex editor to make pokemon hacks. It was really incredible when I could do something without a tutorial, even if it was changing a simple text.

  • @jordanmynes2638
    @jordanmynes2638 6 месяцев назад +29

    "So I'm gonna get rid of it"
    Lost my shit when the Ghidra logo came up

  • @Kuikkamies
    @Kuikkamies 6 месяцев назад +27

    Fun fact; Pokémon Stardium Gold Silver /2 has a full-fledged Pokémon and save editor build into it. It's hidden away in the retail version, but there's a ROM out there where its enabled.

  • @deathstinger13
    @deathstinger13 6 месяцев назад +56

    fun fact: some models of N64 gameshark have parallel ports in back specifically to upload new codes to them

    • @fgregerfeaxcwfeffece
      @fgregerfeaxcwfeffece 6 месяцев назад +3

      Non N64 example:
      the X-Ploder I have for my PS1.

    • @NeoTechni
      @NeoTechni 6 месяцев назад +4

      fun fact: you can also use it to rip ROMs

    • @deathstinger13
      @deathstinger13 6 месяцев назад

      @@NeoTechni you can? neat

    • @XJ-0641
      @XJ-0641 6 месяцев назад +2

      Also useful for changing firmware, or in my instance, un-bricking it because i put a flash cart on top of it

    • @HammerStudioGames
      @HammerStudioGames 6 месяцев назад +1

      The GameShark in this very video has the port on the back.

  • @bkacjios
    @bkacjios 6 месяцев назад +34

    There's also a n64 gameshark version with a parallel port on the back that you can use to upload codes. I think it needs to be version 3.2 since 3.3 revisions had parts removed that it needs to work. The software is pretty ancient though and only works on Windows XP. You can also use it to dump carts or read the games memory on real hardware which is cool.

    • @ChromaLock
      @ChromaLock  6 месяцев назад +15

      Yeah definitely considered this, but most USB-to-parallel converters for modern machines seem to only work with printers, and otherwise id have to grab some 2000s hardware running xp to probably interface with it. Maybe something for a future vid tho!

    • @bkacjios
      @bkacjios 6 месяцев назад +10

      @@ChromaLock Seems my reply got shadow removed. Thanks youtube. But yeah, I had an old PC with a printer port on it and messed around with this stuff a few years ago. I still have the wepage bookmarked with a ton of information if you want it. Some guy even made an open source tool for communicating with it on Linux which worked much better iirc

    • @bkacjios
      @bkacjios 6 месяцев назад

      @@ChromaLock I'd be happy to send you a very useful webpage with a bunch of info on this

    • @renakunisaki
      @renakunisaki 6 месяцев назад +2

      It works on some 3.3 models.

    • @HammerStudioGames
      @HammerStudioGames 6 месяцев назад

      ​@@bkacjiosthat's awesome, thanks for sharing

  • @fgregerfeaxcwfeffece
    @fgregerfeaxcwfeffece 6 месяцев назад +28

    The "second" trainer name might be the trainer/catcher id. It's the thing the game checks for to see if the pokemon was traded for the exp bonus.

    • @NEEDbacon
      @NEEDbacon 6 месяцев назад

      Knowing next to zero about Pokemon, that was my guess too.

  • @MrCheeze
    @MrCheeze 6 месяцев назад +8

    This is kinda nostalgic to me, as someone who also looked at the Stadium pokemon data structure, I remember the exact same confusion about why they had trainer name in two different encodings (and yet not the nickname)... Anyway, looking forward to see more from the channel for sure.

  • @Daniel15au
    @Daniel15au 6 месяцев назад +6

    Great video! I really like your channel.
    The sorting algorithm you're using for the gameshark codes is essentially the same as an algorithm called "selection sort"

    • @drdca8263
      @drdca8263 6 месяцев назад

      Is it? This isn’t using a total order on the entries, just a metric..

    • @Daniel15au
      @Daniel15au 6 месяцев назад +1

      @@drdca8263 it's still selection sort, the only difference is that it's sorting the list based on a derived value (edit distance from the previous item) rather than by the values directly.

  • @KazoWAR
    @KazoWAR 6 месяцев назад +7

    one more pokemon stadium video and tou will forever be know as the guy obsessed with pokemon stadium

  • @ILostMyOreos
    @ILostMyOreos 6 месяцев назад +6

    I forgot you're such a small channel because of how good your video is. I live those other channels you draw inspiration from too.

    • @ChromaLock
      @ChromaLock  6 месяцев назад

      Thanks! Yeah Im hyped to see where the Wii-U tablet saga goes

  • @Blazingflare2000
    @Blazingflare2000 6 месяцев назад +1

    RUclips recommended your 3 most recent videos to me a few weeks apart, and I have to say they exactly caught my interest and earned you another subscriber.

  • @RonGrethel
    @RonGrethel 6 месяцев назад +1

    Holy crap. You did it! Well since you made a video idea out of my last comment, now I'm going to ask you to make an Arduino device that allows a game boy color to communicate with a 3DS wirelessly so that you can trade pokémon between your 3DS saves and your cartridge games. I know that you can buy 3DS Wi-Fi cards, and when you try to trade between 3DS pokémon virtual console games, it kind of enters this pause mode for the 3DS's to connect. So theoretically, if you can get something to mimic a 3DS wireless signal to connect to that plugs in to a game boy colors, trade cord slot, you could connect an actual gen 1 game with a virtual console game. This idea forever but I'm a junior developer and I do not understand enough to build it myself 😅.

  • @micheledeconti7535
    @micheledeconti7535 6 месяцев назад +4

    Your production values are excellent considering the size of your channel. I've been really enjoying your content and wish you the best of luck here on youtube :)

  • @syrusdffoo2520
    @syrusdffoo2520 6 месяцев назад +2

    I really like how this personal project is going for you. And it's even more amazing how entertaining you show it to other people. And hey it's Pokemon Stadium (guy)✌️

  • @amiandivh
    @amiandivh 6 месяцев назад +3

    oh I know I'm gonna love this video and would kill for a stadium 2 version of this (gen 2s my favorite generation)

  • @Zadamanim
    @Zadamanim 5 месяцев назад +1

    2:10 I wonder if the two trainer names are "original trainer" and "current trainer", so for example, if the Pokemon is traded it would have two different names there. I'm not sure if that information is ever used in the final game, but for sure it would make sense someone thought to program it in during development.

  • @KillianTwew
    @KillianTwew 6 месяцев назад +2

    8:11 You could probably speed it up by having it check the last character before moving onto the next one.

  • @evandroferreira32
    @evandroferreira32 6 месяцев назад +2

    I trust that one day, I'll be the first guy to make the Game Boy tower work

  • @ostint912
    @ostint912 6 месяцев назад +2

    Do you think that the second trainer name is space for the original trainer name in case it’s been traded?

  • @bthobbs
    @bthobbs 6 дней назад

    “Oh say can you see, by the dawns early light…”

  • @MarioManTV
    @MarioManTV 6 месяцев назад +1

    Though I fully appreciate the commitment to your specific approach, I can’t help but consider the more straightforward paths. The GameShark could’ve had codes set using the parallel port, or perhaps even save editing the GameShark itself. And then of course, there’s the fact that Pokémon Blue save editing is exceptionally mature. Dumping the save, modifying with PKHeX, then restoring the modified save would’ve been the most obvious and direct approach.

    • @ChromaLock
      @ChromaLock  6 месяцев назад +4

      Agreed for all practical intents. Though I will say I had a hard time finding resources to interact with the gameshark parallel port on modern machines, since most USB-to-Parallel converters seemed to only work with printers. I purchased a GB Operator recently just to try out some stuff and definitely using that would be the simplest. I guess this approach would be for those who, like me, have a lot of random retro hardware like gamesharks and arduinos lying around.

    • @titanisback1
      @titanisback1 6 месяцев назад +2

      ​@ChromaLock I appreciate the tinkering you do instead of using someone else's stuff. Doing it is how we learn as humans, not just relying on someone else to do it.

    • @MarioManTV
      @MarioManTV 6 месяцев назад

      @@titanisback1absolutely agreed! I hope I didn’t come off as detracting from the work here. Using the tools you already have can make for some interesting constraints and problem solving. Just using PKHeX or a parallel port would have completely deprived us of exploring Pokémon Stadium’s RAM, learning the data layout used to store Pokémon, figuring out the N64 controller communication protocol, etc. It’s all great stuff and has the makings to bootstrap future projects.
      Having a microcontroller run the inputs, for instance, makes it possible to play back a Pokémon R/B/Y arbitrary code execution TAS in Stadium, which could let you program all sorts of crazy things.

    • @Link_240
      @Link_240 6 месяцев назад +1

      or just get a gameboy gameshark lol. couldnt be simpler.

  • @mysterymann4225
    @mysterymann4225 6 месяцев назад +1

    I vaugely remember that RBY stores the trainer name twice and it interacts with the OLD MAN catching tutorial as the game temporarily changes the player name to OLD MAN before reverting it. I could be totally off though.

    • @Acorn_Anomaly
      @Acorn_Anomaly 6 месяцев назад +1

      Nah, that's not what that's for. It's more likely that the second copy of the name attached to each Pokémon is the original trainer's name, for when you trade the Pokémon to someone else.
      The copy made by the game when running that tutorial doesn't exist at all until you run that tutorial.
      It works by copying your trainer name to the place in memory where encounter data is stored, running the encounter, and then copying the player name back.
      That's why the Cinnabar Island surf glitch works the way it does. It winds up using the bytes of the player's name as the Pokémon encounter data.

    • @mysterymann4225
      @mysterymann4225 6 месяцев назад

      @@Acorn_Anomaly Thanks! I wasn't too sure about my comment, but this seems a lot more reasonable than what I thought!

  • @monorail0
    @monorail0 6 месяцев назад +4

    Does your GameShark have the serial port? I remember seeing that as a kid and always wondering what it was for

    • @ChromaLock
      @ChromaLock  6 месяцев назад +3

      Yeah! Its only on the pro versions AFAIK, my 2.1 version doesnt have it but my 3.2 version does. I dont know much about it but I know you can use it to update firmware on other gamesharks and also to dump n64 cartridge roms.

    • @monorail0
      @monorail0 6 месяцев назад

      Cool. I was wondering if you could also use it to upload codes. Also do you mean a race condition between the GameShark and the n64 reading code data? It would seem weird to me because my understanding is the GameShark is doing code replacement, not executing anything on the n64. Maybe you are trying to load too many codes and the GameShark is failing silently? Sorry if I'm speaking out of my ass.

    • @cooltaylor1015
      @cooltaylor1015 6 месяцев назад +1

      I thought it was a Parallel Port...
      Anyway, yeah. You can definitely use it to import codes. I did so in the old days.

  • @cooltaylor1015
    @cooltaylor1015 6 месяцев назад +2

    There are versions of the N64 GameShark with a Parallel Port that is there for the purpose of uploading codes from your computer...

    • @ChromaLock
      @ChromaLock  6 месяцев назад +1

      Very true, I havent done much research into it but it looked like most the software ran on windows xp/95 era hardware, and required a parallel port. It also seems like most commercially available usb to parallell adapters dont play well with it so Id need to grab a MOBO with parallel ports. Definitely something id be interested in for a future video though 🤔

    • @chestnu1
      @chestnu1 6 месяцев назад

      It also works in Linux surprisingly enough.

  • @kungfujesus06
    @kungfujesus06 6 месяцев назад +1

    Some n64 game sharks had a parallel port interface you could program them with

  • @HelloQro
    @HelloQro 6 месяцев назад +10

    meanwhile here i am, with a CS degree, a master's , and half a PhD and i can't do anything near what you do, i feel useless

    • @turnkey_hole
      @turnkey_hole 6 месяцев назад +3

      You wasted your money then. Anyone with intermediate cs prowess should be able to figure all of this out within a few hours of tinkering.

    • @alexs7670
      @alexs7670 6 месяцев назад

      Man I don't know.
      I can follow most of this and did a bunch of tinkering with game genie in the late 90's without any formal cs knowledge.
      I should think that intermediate knowledge is either much higher or much lower than figuring out how to hex edit.

    • @HelloQro
      @HelloQro 6 месяцев назад

      @@alexs7670 its easy to follow along when someone has already done all the heavy lifting for you, I'm talking about doing exactly what he did, no tutorial, no video to follow along, nothing.

    • @HelloQro
      @HelloQro 6 месяцев назад +1

      @@turnkey_hole it's almost as if you didn't read that last part about feeling useless

    • @nonyabusiness420
      @nonyabusiness420 Месяц назад

      We all have e the things we are good at and not good at. Don't feel bad about it, learn about it.

  • @Synth_Dragon
    @Synth_Dragon 6 месяцев назад +1

    I came for the pokemon stadium, i stayed for the pokemon stadium

  • @pao_lumu
    @pao_lumu 6 месяцев назад +1

    The algorithm has blessed me this day.
    Your content is great, and I look forward to what you end up doing in the future!

  • @Sierraffinity
    @Sierraffinity 6 месяцев назад

    Cool video! There's a parallel port on the back of the GameShark 64, right? At least the ones I have have one. Couldn't that be used to upload codes?

  • @ILostMyOreos
    @ILostMyOreos 6 месяцев назад +1

    This is cool as hell dawg

  • @AROAH
    @AROAH 6 месяцев назад

    So, I haven’t looked at it since I became old enough to drive, 15 years ago, so I have no idea how useful this would actually be, but DK64 had a ludicrously long Enable Code that might be worth looking at. I would imagine that if there is some kind of method of dealing with using a metric ton of GS codes at once, it’ll be in that Enable Code.

  • @unboundsoul3582
    @unboundsoul3582 6 месяцев назад

    Any chance you could drop that sick as hell chemical plant zone remix you used in the video? Great video, btw, this is genuinely fascinating!

    • @ChromaLock
      @ChromaLock  6 месяцев назад +1

      ruclips.net/video/YO5n6FUcwDA/видео.html
      and thanks!

  • @fgregerfeaxcwfeffece
    @fgregerfeaxcwfeffece 6 месяцев назад

    On the serial rate:
    Did you use the hardware serial pins on your board?
    Because all pins can emulate serial, but higher speed timings might get unreliable. And that might vary wildly in every way conceivable.

    • @ChromaLock
      @ChromaLock  6 месяцев назад

      Using USB serial, which i believe is hardware serial on the nano. I think its likely that the nintendo library im using is disabling interrupts, and because I'm sending controller status to the console so often, its probably disabling interrupts long enough to cause issues with receiving serial data. Just a rough hypothesis though

    • @fgregerfeaxcwfeffece
      @fgregerfeaxcwfeffece 6 месяцев назад

      @@ChromaLock Yes, the USB serial connection is probably only wired to hardware serial pins.
      So your hypothesis makes more sense.
      But in that case you could just use a vastly more powerful controller the atmega328 is ancient technology.
      RP2040 based boards are abundant and cheap. I could not find the N64 controller lib you used so I don't know how hard the port would be.

  • @SpeedyGwen
    @SpeedyGwen 6 месяцев назад +2

    its the pokemon stadium guy !!!!

  • @SnerdWilliams
    @SnerdWilliams 6 месяцев назад

    If there's a way to get rom hacks like Yellow Legacy and Crystal Legacy to work in the Stadium games, people would immediately flock to it.

  • @alimoo8531
    @alimoo8531 6 месяцев назад

    been loving the videos, just as good as matt and abe if you ask me.

  • @Alchemistake
    @Alchemistake 6 месяцев назад +3

    I have an idea for you: pokemon red ace to jail break from pokemon stadium

  • @Earthboundmike
    @Earthboundmike 6 месяцев назад

    A random look on the internet makes me think that the mhz of your chip was something weird.

  • @jane5886
    @jane5886 6 месяцев назад +1

    ✅ Can't RTFM
    ✅ Loves ZIF sockets
    ✅ Fw weird outdated hardware for fun
    ✅ Dropped out of CS
    Oh my god he's just like me fr

  • @noobtracker
    @noobtracker 4 месяца назад

    6:45 don't worry, having more CS knowledge would only allow you to know that there is no perfect solution :> (it's NP complete)

  • @TheDiller3497
    @TheDiller3497 5 месяцев назад

    Fantastic video. How do you figure out what the values are for specific species id and moves?

    • @ChromaLock
      @ChromaLock  5 месяцев назад +1

      Thanks! The values can be found in github.com/pret/pokered
      Move IDs are in the file move_constants.asm
      Pokedex IDs are in pokedex_constants.asm
      Species IDs are in pokemon_constants.asm
      Hope that helps!

    • @TheDiller3497
      @TheDiller3497 5 месяцев назад

      @@ChromaLock It worked thanks!

  • @e-2thesillyguy
    @e-2thesillyguy 2 месяца назад

    2:06 the gen 1 trainer name was probably for cross compatibility

  • @jellyface401
    @jellyface401 2 месяца назад

    Can you recompile the game and make a pc port? Like those new zelda pc ports?

  • @fazzitron
    @fazzitron 6 месяцев назад

    Dropping the baud rate might be because you're overloading the buffer before it can finish. Are you waiting for the code to finish inputting before sending it another?
    Also, with a simple state machine, you could have different button press delays to speed up the time it takes to input them.
    As for the race condition, unless changing the order of the codes messed with how they work, it's possible the gameshark maybe can't interrupt the console in time for values to actually be changed. But, I'm not sure. 🤔

    • @ChromaLock
      @ChromaLock  6 месяцев назад +1

      Yeah. For the baud rate issue Im wondering if the nintendo library was using some interrupts, and therefore causing issues with uart.
      I didnt mention, but to speed up some sections i have a "Fast Delay" during button presses in areas without menus, which does speed up the entry a bit, but its still like 1.5s to ensure nothing ever gets dropped.
      Definitely still an open question when it comes to the race condition.

    • @fazzitron
      @fazzitron 6 месяцев назад +1

      @@ChromaLock Hm, interesting. I'd have to look into the library. 300 shouldn't be necessary for something so simple.
      Dang, 1.5s and still dropping inputs? That's weird. Either the Gameshark is really slow to process the inputs or something else is screwy with the library.

  • @BelowAverageGaming
    @BelowAverageGaming 6 месяцев назад

    Pretty awesome man!

  • @silversonic1
    @silversonic1 6 месяцев назад

    The trainer data is there twice because of trading, I believe.

  • @jnjsorr
    @jnjsorr 6 месяцев назад +1

    I'm also a fan of lego island man

  • @SaishiYT
    @SaishiYT 4 месяца назад

    What happens if you took a broken named Pokemon into the later games in the series?

  • @thend4427
    @thend4427 Месяц назад

    As a pokemon stadium fan I approve

  • @chestnu1
    @chestnu1 6 месяцев назад

    Well if you would like a challenge could you create a code for stadium 2 to make the game think you beat rounds 1 and 2 to unlock Dodrio mode for the gen 2 games?

    • @ChromaLock
      @ChromaLock  6 месяцев назад

      Im sure its a simple boolean flag, but finding the exact location would be a cool challenge :D

  • @LastDemonAlive
    @LastDemonAlive 2 месяца назад

    At this point you should just make your own Gameshark

  • @GoldDragon20
    @GoldDragon20 6 месяцев назад

    You have done a service to PJ64 users everywhere.
    Also that’s receiving payment for Nintendo stuff they shouldn’t(sure it’s only delay of service but does Nintendo ever do that to us? No, they haven’t , especially not like this) because yeah it’s payment to remove that window.
    You’ve effectively given the people the method to make PJ64 truly free

  • @CoopersCrazy
    @CoopersCrazy 6 месяцев назад

    Oooh is that Professor Layton music I hear

  • @NeoTechni
    @NeoTechni 6 месяцев назад +1

    Did you bite your blue cartridge?

    • @ChromaLock
      @ChromaLock  6 месяцев назад +1

      mmmmmmmmmmmmm

    • @ChromaLock
      @ChromaLock  6 месяцев назад

      in reality no its from somebody else, came damaged

  • @Kamikaze_4
    @Kamikaze_4 6 месяцев назад

    Really cool video!

  • @dan_loeb
    @dan_loeb 6 месяцев назад

    is "green drink" a "brown bricks" joke?

  • @watchinyoutube8919
    @watchinyoutube8919 4 месяца назад

    Shout out mattkc

  • @dee-jayluig-jay5352
    @dee-jayluig-jay5352 6 месяцев назад

    You should have just use that game shark to re-enable the debug menu in Pokemon stadium 2 rather than all of this complex work

  • @ValiantValium
    @ValiantValium 6 месяцев назад +1

    You also dont have charming/creepy smile of MattKC, but none the less, keep up the good work!

  • @ChromaSlop
    @ChromaSlop 6 месяцев назад

    Good stuff

  • @X862go
    @X862go 4 месяца назад

    Never stop

  • @penaughty2
    @penaughty2 6 месяцев назад +2

    No Cat

  • @SilentVinyl
    @SilentVinyl 6 месяцев назад +1

    Neat

  • @Nahoc
    @Nahoc 6 месяцев назад +1

    how do you only have 2000 subs, crazy

  • @DrunkDoglol
    @DrunkDoglol 6 месяцев назад

    Real fed hours

  • @PixelKat5
    @PixelKat5 2 месяца назад

    If you were trying to write out “N64” in Japanese it would be ん64 and not na or ナ64

    • @ChromaLock
      @ChromaLock  2 месяца назад

      it says "nano 64", due to having an arduino nano in it

    • @PixelKat5
      @PixelKat5 2 месяца назад

      @@ChromaLock haha! That makes sense lol

  • @Jetsfan0786
    @Jetsfan0786 6 месяцев назад

    Could of made life easier by buying a game shark for gameboy lol

  • @GiuseppeGaetanoSabatelli
    @GiuseppeGaetanoSabatelli 6 месяцев назад +1

    Epic.

  • @na01jsn
    @na01jsn 2 месяца назад

    brainy a f

  • @moth.monster
    @moth.monster 6 месяцев назад

    Lol i get that intro, once i hacked out the license check from a thunderbird addon😊