• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Red hack: Shin Pokemon Red/Blue/Green/JP builds (Bugfix, AI, and QoL patch)

536
Posts
4
Years
    • Seen today
    Could this be put on the 3DS as a custom VC inject and possibly be compatible with Pokemon Bank, or is that latter part unlikely?

    This is something that is in-progress over in the pokered disassembly discord server. Early research indicates that it's possible with Shin Pokemon, but it's not something I have planned for the immediate future.

    thanks that covers everthing i have one more question why do i always get a level 247 dratini and how can i evolve it? (it's lvl 247 if i have space in my party, 255 if it's stored on pc and after i draw it, it becomes lvl 237 in my party :/

    That's not supposed to happen. Under what conditions are you getting this dratini? Need more details.
    EDIT: Make sure you apply your patch correctly. This is the #1 reason crazy stuff happens to people.

    It's a victory, because that gave me the missing folders and also Nuzlocke mode. So, you may want to revise the code in master_dev's INSTALL.md.

    The _dev branches aren't really official releases. They're more or less for archiving and tracking my scratchwork. Regardless, the "git pull" command will help keep you updated.
     
    Last edited:
    18
    Posts
    12
    Years
  • Hi! I think I found a bug in the blue lite version v1.23.03L that I downloaded from the lite_dev branch a few weeks ago, applied to a clean Blue version. I don't know if it is already fixed.

    This just happened to me with a Weepinbell in Erika's gym: Using Spearow I attack first with Peck, then it paralyzed my Spearow, next turn it obviously moves first and used Wrap, so Spearow is immobilized and next turn I switch to Vulpix. Everything OK when switching in, Weepinbell didn't attack. Next turn It outspeeds but uses Poison Powder and poisons Vulpix. I use Ember. Then it uses Wrap, I'm immobilized and so next turn I switch to Spearow, but as soon as Spearow enters the battle, Weepinbell uses Wrap again. I feel like maybe it was a one-time thing so I switch back to Vulpix, same thing happens. So I switch to Butterfree thinking the same is going to occur, but Weepinbell doesn't attack once again.

    So yeah tl;dr Wrap users get to attack when the player switches if the Pokémon switching in has a status ailment, I just described the scenario in detail in case it was needed. I don't know if it's fixed already but I don't see any report in the github.

    **Edit to avoid double post**

    Oh and this one is just a small question but is there a version of Shin PokeRed/Blue that has the better movesets of Yellow? Not asking for new moves or movesets from other Gens, just the movesets of Yellow.

    **Edit: additional glitch details and testing**
    I just did another test with another trainer, this time with a Bellsprout, and this time I let myself get attacked with wrap on a statused Pokémon, then next turn I switch to another statused one (opponent uses Wrap at switch-in as expected) but then I immediately switch to a Pokémon without status and the same happens, wrap at switch-in. So I switch back to one of the previous ones with status effect, but this time around it does nothing at switch-in.

    Now I'm doing further testing as I type, and switching between a statused Pokémon and a healthy one doesn't trigger any kind of glitch, no matter the order. Trainer ran out of Wrap PP so I restart. I switch a lot between my healthy Pokémon in my next test, Bellsprout doesn't status my Pokémon. In all of those switches, the alleged glitch never arises.
    Next test I let it poison, paralyze and put to sleep a bunch of my Pokémon, with Spearow in particular being poisoned instead of paralyzed, and then switch into and from a bunch of Wraps. The glitch never shows up.
    Then in the last test I recreate the first time's condition of Spearow being paralyzed and Vulpix being poisoned, while the rest of my team was healthy. I take a Wrap with paralyzed Spearow, and can't execute my attack for that turn. Switch to Vulpix. Nothing. I really start to believe it was a random glitch that's just not happening anymore. But then I let Vulpix take a Wrap after doing a non-damaging move, and switch to Spearow. Bellsprout Wraps again at switch-in. I switch to Vulpix, no further actions happen on that turn. I take a Wrap once again and next turn I switch to Spearow and the same happens. I repeat this one last time. It keeps happening.


    ...Long story short, I did a bunch of testing and the only setup I found that could replicate the glitch every time was having a poisoned Vulpix take a Wrap to the face, then switch to a paralyzed Spearow and the opponent would move before I could select any further action. I have no idea what is happening, and there's a chance that this was fixed in a more recent update, but this was so bizarre that I had to share it.

    **Last edit I swear**
    Something else NOT regarding the alleged glitch from before. I noticed that the AI keeps using status moves if I heal myself in-battle, so they decide their action after player item use. Is that intended or not?
     
    Last edited:
    536
    Posts
    4
    Years
    • Seen today
    Good post. Lot's of nitty gritty details for me to comb through.

    Something else NOT regarding the alleged glitch from before. I noticed that the AI keeps using status moves if I heal myself in-battle, so they decide their action after player item use. Is that intended or not?

    There's a check I wrote that randomly "blinds" the AI to your lack of status if you used an item or switched. It's 50%. But I think I need to make some adjustments. Since AI routines are run on each move individually, this means the 50% is per-move that can cause a status. Which is fine if you're up against a paras with scratch and stun spore as its moves. But it's a different story with something like a bellsprout with wrap, poison powder, sleep powder, and stun spore. Since the 50% blinding check is run on each of the three status moves, the actual probability that it will use any of its status moves is 1-(0.5)^3 = 87.5%. Hence why it can sometimes feel like an enemy is always countering your usage of items.

    Oh and this one is just a small question but is there a version of Shin PokeRed/Blue that has the better movesets of Yellow? Not asking for new moves or movesets from other Gens, just the movesets of Yellow.

    I've merged them into the level-up lists in the master branch. Some tweaking was required on some pokemon, notably the eevee lines, in order to smooth out some rough edges with progression.

    So yeah tl;dr Wrap users get to attack when the player switches if the Pokémon switching in has a status ailment, I just described the scenario in detail in case it was needed. I don't know if it's fixed already but I don't see any report in the github.

    I was able to use your descriptions to recreate a test scenario and preserve it as a saved state. I've set things up against a high-speed ekans with wrap as its only move (note: I can directly edit opponents in the debugger to be whatever I need). Switching out of a trapping move is supposed to make the opponent lose a turn. But if your switch-in choice has a status then it is letting the opponent choose a move (not supposed to happen), so wrap gets chosen. I suspect that this is due to an oversight in how status effects are handled within the turn sequence. I will experiment more and look for a solution.

    EDIT: Found the problem. Two issues are causing the observations.
    1 - I have it so that, when a trapped pokemon switches, the trapper has FF written as its chosen move. This is a null value that is treated as "no move". In the section where an enemy's chosen move is recorded, either from a link cable value or from the AI making a selection, that FF from earlier is getting overwritten. This is how the opponent is able to use wrap when not allowed.
    2 - When the player switches out of a trapping move, I made it so an EnemyActed bit gets set. This makes the battle engine treat the opponent as if it already used an item or switched. The result is a full turn denial. But I neglected to make this a two-way street since it's only supposed to apply to the AI; a player is (and always was even in vanilla) able to use items or switch in the midst of a trapping move even if the opponent switches on the same turn. This means that the check for the EnemyActed bit only gets run if the player's new pokemon is faster than the opponent's pokemon, and it was covering-up the aforementioned 1st issue. But if player switches out of a trapping move into a pokemon slower than the enemy trapper, then the cover-up never happens.

    Solution: Make sure the FF null move is not overwritten. The player switching out of a trapping enemy should not set the EnemyActed bit. Instead, the null move should be checked-for during the TrainerAI (switching and item-use) function. If the null move is found, the AI will not switch or use an item. The enemy will then execute the null move as expected.
     
    Last edited:
    18
    Posts
    12
    Years
  • (...) Found the problem. Two issues are causing the observations.
    1 - I have it so that, when a trapped pokemon switches, the trapper has FF written as its chosen move. This is a null value that is treated as "no move". In the section where an enemy's chosen move is recorded, either from a link cable value or from the AI making a selection, that FF from earlier is getting overwritten. This is how the opponent is able to use wrap when not allowed.
    2 - When the player switches out of a trapping move, I made it so an EnemyActed bit gets set. This makes the battle engine treat the opponent as if it already used an item or switched. The result is a full turn denial. But I neglected to make this a two-way street since it's only supposed to apply to the AI; a player is (and always was even in vanilla) able to use items or switch in the midst of a trapping move even if the opponent switches on the same turn. This means that the check for the EnemyActed bit only gets run if the player's new pokemon is faster than the opponent's pokemon, and it was covering-up the aforementioned 1st issue. But if player switches out of a trapping move into a pokemon slower than the enemy trapper, then the cover-up never happens. (...)

    Oh wow. I was suspecting it had something to do with the speed but I couldn't manage to get conclusive evidence so I thought the status effect was the most likely culprit. I guess not!
     
    536
    Posts
    4
    Years
    • Seen today
    I figured out a thing. I was able to increase the maximum game clock to 32767 hours (about 3.74 years).
     
    56
    Posts
    5
    Years
    • Seen Apr 19, 2024
    I have another suggestion, could there be an optional npc in the japanese builds that brings back the flashing animations for some of the moves? It would be a pretty neat touch up.
     
    Last edited:
    536
    Posts
    4
    Years
    • Seen today
    I have another suggestion, could there be an optional npc in the japanese builds that brings back the flashing animations for some of the moves? It would be a pretty neat touch up.

    Gotta say no to this one. Apparently I'm in the minority of people negatively affected by the original flashing. It makes me kinda barfy and gives me headaches.
     
    56
    Posts
    5
    Years
    • Seen Apr 19, 2024
    That's why i was suggesting for it to be optional.
    I also never expected for you to be affected by the flashing, anyway thanks for your work jojo.
     
    536
    Posts
    4
    Years
    • Seen today
    That's why i was suggesting for it to be optional.

    I know, but I'd still have to reverse-engineer it and debug it. Which means hours and hours spent staring at it. I don't think I'm physically capable of implementing such a feature.
     
    6
    Posts
    2
    Years
    • Seen May 22, 2022
    That's not supposed to happen. Under what conditions are you getting this dratini? Need more details.
    EDIT: Make sure you apply your patch correctly. This is the #1 reason crazy stuff happens to people.
    ordinary conditions and im sure i patched correctly i found many other bugs including seismic toss not working on ghost types and hyper beam recharging after KOing an opponent
     
    536
    Posts
    4
    Years
    • Seen today
    ordinary conditions

    Doesn't help. I need to recreate the issue. Game Corner? Wild encounter? What Route? What version? Post .SAV file?

    i found many other bugs including seismic toss not working on ghost types and hyper beam recharging after KOing an opponent

    Those are intentional bugfixes.
     
    6
    Posts
    2
    Years
    • Seen May 22, 2022
    Doesn't help. I need to recreate the issue. Game Corner? Wild encounter? What Route? What version? Post .SAV file?


    Those are intentional bugfixes.
    im playing the full shin_pokemon_blue_origback_v1.23.ips patch no custom changes this happened in the game corner. how can i post my .sav file here?
     
    536
    Posts
    4
    Years
    • Seen today
    im playing the full shin_pokemon_blue_origback_v1.23.ips patch no custom changes this happened in the game corner. how can i post my .sav file here?

    That helps. I found a typo that affected Blue and Green prize corner pokemon. You can re-patch fresh using the attached hotfix patch. The dratini can't be rolled back, but the prize corner should be fixed now.
     

    Attachments

    • shin_pokemon_blue_origback_v1.23hotfix.ips
      437.7 KB · Views: 0
    2
    Posts
    2
    Years
    • Seen Apr 3, 2023
    I've been playing Green version 1.23 (not the hotfix) as an inject on my 3ds, and Misty's Staryu came up shiny when I battled Misty for the first time. I replayed the battle afterwards and the Staryu was normal the second time, so I assume it's just an oddity with shininess.
     
    Last edited:
    536
    Posts
    4
    Years
    • Seen today
    I've been playing Green version 1.23 (not the hotfix) as an inject on my 3ds, and Misty's Staryu came up shiny when I battled Misty for the first time. I replayed the battle afterwards and the Staryu was normal the second time, so I assume it's just an oddity with shininess.

    Aw man, my condolences. The next patch will be adding a 'mercy' feature for enemy trainer shinies.

    Anyway, shiny-ness in generation 2 is determined solely by DVs. This what allows it to be backwards-compatible with generation 1 (and why the red gyarados stays red after trading it back and forth through the time capsule). Playing in SET mode makes enemy trainers have semi-random DVs assigned to their pokemon, so there is a chance they can come up shiny.
     
    2
    Posts
    2
    Years
    • Seen Apr 3, 2023
    Aw man, my condolences. The next patch will be adding a 'mercy' feature for enemy trainer shinies.

    Anyway, shiny-ness in generation 2 is determined solely by DVs. This what allows it to be backwards-compatible with generation 1 (and why the red gyarados stays red after trading it back and forth through the time capsule). Playing in SET mode makes enemy trainers have semi-random DVs assigned to their pokemon, so there is a chance they can come up shiny.

    Huh, neat. Either way, it's nice to hear that a mercy feature will be added in the future since nobody likes uncatchable shinies.
     
    18
    Posts
    12
    Years
  • Wow, so now I found a completely different and crazy glitch in the same Shin Blue Lite v1.23.03L. But instead of writing a wall of text explaining the glitch like last time, I just recorded myself explaining it (badly lol).

    https://youtu.be/8KAXUUpDKDw


    In summary I encountered a glitch when booting up TM 17 Submission, canceling, then trying to boot TM 9 Take Down and the game goes crazy, starts to play the Low HP beep, some random cry, then you can't use the item, get stuck in a loop, and sometimes crashes depending on what happens.

    The vid is still useful to see the glitch in action, however I later found that the glitch only happens with TM 9 Take Down, and the conditions for reproducing it seem to be pressing B at any point in the menu then trying to use TM 9. I don't think I've found any alternative info

    (Also lol I forgot your username when recording the video so I'm sorry 🤣)
     
    536
    Posts
    4
    Years
    • Seen today
    Wow, so now I found a completely different and crazy glitch in the same Shin Blue Lite v1.23.03L. But instead of writing a wall of text explaining the glitch like last time, I just recorded myself explaining it (badly lol).

    https://youtu.be/8KAXUUpDKDw


    In summary I encountered a glitch when booting up TM 17 Submission, canceling, then trying to boot TM 9 Take Down and the game goes crazy, starts to play the Low HP beep, some random cry, then you can't use the item, get stuck in a loop, and sometimes crashes depending on what happens.

    The vid is still useful to see the glitch in action, however I later found that the glitch only happens with TM 9 Take Down, and the conditions for reproducing it seem to be pressing B at any point in the menu then trying to use TM 9. I don't think I've found any alternative info

    (Also lol I forgot your username when recording the video so I'm sorry 🤣)

    It looks like it's got more to do with booting a TM at the end of a list. An offset is not being calculated correctly and is causing the game to access echo ram (which is a big no-no). A workaround is to move your cursor upwards once or twice more before booting the second TM (see attached video).

    I think the best way to fix this is to remove Gamefreak's TM/HM code and replace it with what I wrote for the master branch. Gamefreak has the tm and hm names generated on the fly in order to avoid wasting space on a name list, but this in turn can end up causing problems when one goes around and modifies stuff.
     

    Attachments

    • 2022-05-07 12-41-16.mp4
      4.4 MB
    36
    Posts
    13
    Years
    • Seen Sep 5, 2023
    I dont know if its because I am using a Red save file I downloaded to just test some of the later parts of the hack or something but I'm getting pokemon "leveling down" to level 50 when in the SS Anne tournament or in the random trainer.
     
    Back
    Top