The PokéCommunity Forums

The PokéCommunity Forums (https://www.pokecommunity.com/index.php)
-   Sideshow Showcase (https://www.pokecommunity.com/forumdisplay.php?f=204)
-   -   Red Shin Pokemon Red/Blue/Green/JP builds (Bugfix, AI, and QoL patch) (https://www.pokecommunity.com/showthread.php?t=427398)

jojobear13 November 27th, 2020 4:19 PM

Minor text edits for the Green build have been pushed to the github repositories. Too minor to bother with a patch.
--> Digglett sculptures are re-translated more accurately as Buddha statues.
--> The Bike Shop's name is restored to Miracle Cycle.
--> The sneezing Hiker with hay fever is re-translated more accurately as laughing from having eaten funny-tasting mushrooms. Lol...get it? "Funny"-tasting? I'll let myself out.

But for real, the Hiker's japanese dialogue is a goofy pun. Psychedelic shrooms are called "laughing mushrooms" in japanese. The joke is that he ate some laughing mushrooms which pokemon (and presumably the child playing it) interprets in a literal way; they are fanciful mushrooms that make a person laugh uncontrollably. It took me a while to think up a lame pun in english that kinda worked and kept the double-meaning.

Synyster117 November 29th, 2020 12:51 PM

Thank you for making this hack. I really enjoy playing it! :)

How do pokemon like haunter or graveler evolve? Are their final evolutions out there in the wild?
Btw I was able to encounter Mew without having the diploma. The sprite was glitched but once caught, it became a normal looking Mew.

jojobear13 November 29th, 2020 6:14 PM

Quote:

Originally Posted by Synyster117 (Post 10236354)
Thank you for making this hack. I really enjoy playing it! :)

How do pokemon like haunter or graveler evolve? Are their final evolutions out there in the wild?
Btw I was able to encounter Mew without having the diploma. The sprite was glitched but once caught, it became a normal looking Mew.

Do you remember the encounter location?

Trade evolutions evolve by level in the mid to late 40’s

jojobear13 November 29th, 2020 8:16 PM

Quote:

Originally Posted by Synyster117 (Post 10236354)
Thank you for making this hack. I really enjoy playing it! :)

How do pokemon like haunter or graveler evolve? Are their final evolutions out there in the wild?
Btw I was able to encounter Mew without having the diploma. The sprite was glitched but once caught, it became a normal looking Mew.

Never mind. I found what's causing Mew to glitch. It's a small oversight that is easy to fix. Good news is that glitch sprites don't ruin your Hall of Fame anymore.

Anyway, you can always find evolution and level-up information in the data/evos_moves.asm file.

Synyster117 November 30th, 2020 2:18 AM

Quote:

Originally Posted by jojobear13 (Post 10236463)
Never mind. I found what's causing Mew to glitch. It's a small oversight that is easy to fix. Good news is that glitch sprites don't ruin your Hall of Fame anymore.

Anyway, you can always find evolution and level-up information in the data/evos_moves.asm file.

Thanks. It was right next to Mewtwo. Got all 151 registered now. Again, great hack!

jojobear13 December 7th, 2020 8:04 PM

I've been working on PP tracking for both AI trainers and wild pokemon. Coming soon to a patch near you.

Martdon December 8th, 2020 12:49 AM

Downloaded and played through today. Just going to say that I loved it, however, giving trainers improved changing actually makes battles a lot easier. Half the opponents moves are spent changing. Making it very easy to whittle them down.

Many changes don't even make sense. I have my haunter going to use psychic against a tentacruel. The trainer changes to a blastoise. (which doesn't make sense, as I hadn't used psychic yet, but not a huge deal)

Psychic hits the blastoise, next turn, he switches back to the tentacruel. Which makes no sense as the blastoise should've stayed in.

Just one example, but rival, gyms, elite four, all their new moves and AI can't compensate for the fact they never attack you. They just change.

Apologies if this has been brought up before, found this hack today, and didn't read through to full thread.

jojobear13 December 8th, 2020 11:01 AM

Quote:

Originally Posted by Martdon (Post 10241303)
Downloaded and played through today. Just going to say that I loved it, however, giving trainers improved changing actually makes battles a lot easier. Half the opponents moves are spent changing. Making it very easy to whittle them down.

Many changes don't even make sense. I have my haunter going to use psychic against a tentacruel. The trainer changes to a blastoise. (which doesn't make sense, as I hadn't used psychic yet, but not a huge deal)

Psychic hits the blastoise, next turn, he switches back to the tentacruel. Which makes no sense as the blastoise should've stayed in.

Just one example, but rival, gyms, elite four, all their new moves and AI can't compensate for the fact they never attack you. They just change.

Apologies if this has been brought up before, found this hack today, and didn't read through to full thread.

Tentacruel gets switched out to avoid a super effective Psychic. Then Blastoise gets switched out because of low health and Tentacruel was internally scored as the best option. Yes, the computer knows what moves you pick and acts accordingly (the GB’s processor is 80’s tech after all).

Intelligent switching is really hard to get right, so feedback is always appreciated. I am considering the following adjustments:
- don’t consider switching due to low health if you out-speed the player
- reduce the weight of super effective moves when considering a switch
- when switching in a mon, flag it so it cannot be switched out. Clear the flag when The player changes the active mon.

darthbr December 8th, 2020 4:15 PM

Quote:

Originally Posted by jojobear13 (Post 10241654)
Tentacruel gets switched out to avoid a super effective Psychic. Then Blastoise gets switched out because of low health and Tentacruel was internally scored as the best option. Yes, the computer knows what moves you pick and acts accordingly (the GB’s processor is 80’s tech after all).

Intelligent switching is really hard to get right, so feedback is always appreciated. I am considering the following adjustments:
- don’t consider switching due to low health if you out-speed the player
- reduce the weight of super effective moves when considering a switch
- when switching in a mon, flag it so it cannot be switched out. Clear the flag when The player changes the active mon.

That would be great. Its a bit annoying those AI moves. Sometimes prefer vanila non switching. But what u suggested is a good one.

jojobear13 December 8th, 2020 11:52 PM

Here's what I'm playtesting with so far. Chances to switch have been reduced:
-->toxic poison - changed probability from 50% to 34%
-->super effective moves - probability weight reduced by 25%
-->only switch out from low HP if player outspeeds enemy
-->an enemy mon is flagged when sent out; non-volatile status or low hp cannot initiate switching until the player sends out a new mon (which clears the flag).

The code can be seen in the latest commit to master_dev and lite_dev. I had to move some stuff out of core.asm to make room in the memory bank.

EDIT: Another change I've added. If a super effective move instigates the AI to switch, the mon getting sent back gets flagged while it is benched. The scoring system applies a penalty for this flag. Once again, switching flags are cleared when the player sends out a new mon. The idea is that since the enemy mon was recalled due to taking a super effective hit, the scoring system for choosing what to send out should be dissuaded from sending it out again if the player's mon hasn't changed. This will help the AI account for player mons with type coverage.

Mono-type teams (like swimmers) are kind of hosed since nothing they switch to is particularly good if you have a stab super effective move, but then again they were always hosed in that way. They probably won't switch from super-effective moves anyway due to how the scoring works.

EDIT 2: Another change. I found it was possible to cheese using the sleep status again (it's very powerful in gen 1). The switching AI now has a 12.5% chance to switch a sleeping mon each turn that it's sleep counter is > 3. The idea is to simulate a situation where the opponent is hoping his active mon wakes up, but there's a chance he gets impatient and switches. The cutoff of 3 is so the opponent doesn't use Rest and then switch for the lols. 12.5% is chosen to help reduce situations of switching back and forth between sleeping mons (switching in gen 1 does not decrement the sleep counter).

jastolze007 December 10th, 2020 7:26 AM

I'm still on version 1.15 (I think) since I've made some changes to weaker, fully evolved PKMN that gave low EXP and some moves / PKMN type changes (Arbok is part Dragon, Marowak and Ninetales are now part Ghost) Would you consider making these changes in the official branch, or other type changes so there are more Ghost and Dragon types?

What about bringing the three new types in from Gen II+? Could you make an optional patch or branch for that? It does get rid of the retro typing, but at least Magnemite will gain its secondary steel type!

Loving this so far. I've since started a new game and am using the same team as last playthrough.

jojobear13 December 10th, 2020 12:54 PM

Quote:

Originally Posted by jastolze007 (Post 10242597)
I'm still on version 1.15 (I think) since I've made some changes to weaker, fully evolved PKMN that gave low EXP and some moves / PKMN type changes (Arbok is part Dragon, Marowak and Ninetales are now part Ghost) Would you consider making these changes in the official branch, or other type changes so there are more Ghost and Dragon types?

What about bringing the three new types in from Gen II+? Could you make an optional patch or branch for that? It does get rid of the retro typing, but at least Magnemite will gain its secondary steel type!

Unfortunately this is not within the scope of the project. Part of why I keep this open source is so people can download, customize to their own tastes, and recompile. It’s the only way to please everyone.

jojobear13 December 11th, 2020 8:53 PM

Since there is some confusion on what version people are running when I receive bug reports, I made it so the game will display the current patch version on the main menu. This will take effect in the upcoming v1.18 and onward.

MoriyaFaith December 13th, 2020 6:42 PM

Oh, My little mini-project was actually used for something! Cool!

I also do have a few things to make sure of, particularly with Shiny Pokemon and Missingno.

In terms of shiny pokemon, was the way DVs were calculated changed at all? I know that in the originals, it's impossible to get Shinies of most species because wild Pokemon can't be shiny.

And in terms of missingno, How accurate is it's sprite? I know that in my own PokeJP project, the sprite isn't quiiite right, as shown here.https://cdn.discordapp.com/attachments/225418244461166592/787864267624939520/unknown.png
I actually have no idea if it would even be possible to fix its sprite to always one of two signature set of blocks, but....

jojobear13 December 13th, 2020 8:06 PM

Quote:

Originally Posted by MoriyaFaith (Post 10244231)
Oh, My little mini-project was actually used for something! Cool!

You do good work. I'm really impressed.

Quote:

In terms of shiny pokemon, was the way DVs were calculated changed at all? I know that in the originals, it's impossible to get Shinies of most species because wild Pokemon can't be shiny.
Not entirely correct. This has to do with the RNG. The short of it is that the original RNG would never produce certain results on certain maps. This made it impossible for some species to have perfect DVs or be shiny since they only appear on a map where the RNG does not generate the required combination of numbers. DVs are the same as in the original, but I've ported over the general RNG from Pokemon Prism. That should help greatly with the problem.

Quote:

And in terms of missingno, How accurate is its sprite?
I've just been using fossil kabutops. Initially it was a placeholder to prevent HoF corruption. The HoF can't corrupt anymore from glitched graphics ever since I fixed the decompression bug that causes it, but I haven't bothered to change it to anything else.

MoriyaFaith December 13th, 2020 8:40 PM

Quote:

Originally Posted by jojobear13 (Post 10244248)
You do good work. I'm really impressed.

Eh, it's not THAT much, mostly just finding every small difference. Including the weird ones. Did you know that the JP version of Red and Green have a slightly different SGB color pallete, and the one in International RB is from Japanese Blue? Thanks for the compliments, though. It was just a little side project to see if I could. Might do more stuff to it if there's anything I missed.

Quote:

Originally Posted by jojobear13 (Post 10244248)
Not entirely correct. This has to do with the RNG. The short of it is that the original RNG would never produce certain results on certain maps. This made it impossible for some species to have perfect DVs or be shiny since they only appear on a map where the RNG does not generate the required combination of numbers. DVs are the same as in the original, but I've ported over the general RNG from Pokemon Prism. That should help greatly with the problem.

Ah, okay. Anything else ported from Prism? That 60 fps it has is kinda cool, but I don't know if that can work in RB. makes the running shoes look nice rather than just being "feet bike." That's always been a pet peeve of mine.

Quote:

Originally Posted by jojobear13 (Post 10244248)
I've just been using fossil kabutops. Initially it was a placeholder to prevent HoF corruption. The HoF can't corrupt anymore from glitched graphics ever since I fixed the decompression bug that causes it, but I haven't bothered to change it to anything else.

I'd probably say.....the original main Sprite? If it uses RG graphics, use the RG sprite (It's different.) even if it was just originally garbage data, I don't really think it would be Missing No without it.

Unless it's on the fossil and ghost hex ids, then use those, etc.

jojobear13 December 13th, 2020 9:20 PM

Quote:

Originally Posted by MoriyaFaith (Post 10244231)
I know that in my own PokeJP project, the sprite isn't quiiite right, as shown here.

You can probably re-create missingno by initiating its encounter in the BGB emulator and drawing it pixel-by-pixel. From a visual point of view, it's made up of 18 bgmap tiles that are 8x8 pixels each. Once it's on the screen, go to the VRAM viewer, select the BG map tab, then select the 9C00 radio button. Missingno will now appear in the bgmap window. You can mouse-over each tile to get a zoomed-in view on the right. Just recreate all 18 tiles and assemble them together.

jojobear13 December 13th, 2020 10:03 PM

1 Attachment(s)
Quote:

Originally Posted by MoriyaFaith (Post 10244266)
Did you know that the JP version of Red and Green have a slightly different SGB color pallete, and the one in International RB is from Japanese Blue?

Vaguely. It seems they tweaked it a bit to up the vibrancy. Even on my old Trinitron the RG palettes look a tad bit muted.

Quote:

Anything else ported from Prism? That 60 fps it has is kinda cool, but I don't know if that can work in RB. makes the running shoes look nice rather than just being "feet bike." That's always been a pet peeve of mine.
Nothing else. Fun fact though, the gameboy runs at 60 fps natively. Prism just modified the graphical engine to use extra frames. Really tough to do with a gameboy, but the GBC makes it a lot easier with the extra slot of vram.

Quote:

I'd probably say.....the original main Sprite? If it uses RG graphics, use the RG sprite (It's different.) even if it was just originally garbage data, I don't really think it would be Missing No without it. Unless it's on the fossil and ghost hex ids, then use those, etc.
The unused hex IDs can no longer appear in Shin Pokemon (or at least you'd have to work really hard at it). The missingo that can be initiated is effectively a custom-made easter egg / super boss. Everything is controlled and contained to prevent glitches. Its front sprite and its base stats are predefined. Its encounter is actually a trainer battle so it cannot be caught. Even its item duplication is now controlled (constrained to a max of 99 of a non-key item in the 6th bag slot and only if you win).

That said, I took an hour and recreated the front sprite. I think I'll use this in future versions. You're right in that it's simply too iconic.

MoriyaFaith December 13th, 2020 10:07 PM

Quote:

Originally Posted by jojobear13 (Post 10244311)
Vaguely. It seems they tweaked it a bit to up the vibrancy. Even on my old Trinitron the RG palettes look a tad bit muted.

Weird part is that the white is a slightly different shade of white. A green one compared to a more red one if i'm remembering right.

Quote:

Originally Posted by jojobear13 (Post 10244311)
Nothing else. Fun fact though, the gameboy runs at 60 fps natively. Prism just modified the graphical engine to use extra frames. Really tough to do with a gameboy, but the GBC makes it a lot easier with the extra slot of vram.

Damn, that sucks. I still stand by the fact that most Running shoes in gen 1-2 hacks look sloppy, since the running animation isn't any different from the walking animation. It just looks crudely made.


Quote:

Originally Posted by jojobear13 (Post 10244311)
The unused hex IDs can no longer appear in Shin Pokemon (or at least you'd have to work really hard at it). The missingo that can be initiated is effectively a custom-made easter egg / super boss. Everything is controlled and contained to prevent glitches. Its front sprite and its base stats are predefined. Its encounter is actually a trainer battle so it cannot be caught. Even its item duplication is now controlled (constrained to a max of 99 of a non-key item in the 6th bag slot and only if you win).

That's actually really interesting, good to know.

jojobear13 December 13th, 2020 11:09 PM

Quote:

Originally Posted by MoriyaFaith (Post 10244312)
Weird part is that the white is a slightly different shade of white. A green one compared to a more red one if i'm remembering right.

It's really obvious on all our modern LCD screens. But I swear, both the off-white-red and the off-white-green show up as a stark white on my CRT. Probably has something to do with the phosphor illumination.

It must have been some kind of quick-reference for the dev team. Nobody would notice in 1996 unless they hooked their Super Gameboy up to a very expensive high quality monitor. Not to mention that Blue version still has the reddish-white. Since Blue was made on its own after the release of Red and Green, the white differentiation would have not been needed. I guess they grabbed the code for Red version and started working from there. They certainly weren't going for a color-coded tint aesthetic.

MoriyaFaith December 14th, 2020 6:54 AM

Quote:

Originally Posted by jojobear13 (Post 10244342)
Since Blue was made on its own after the release of Red and Green, the white differentiation would have not been needed. I guess they grabbed the code for Red version and started working from there.

Pretty sure the JP release of red and green had the same SGB pallete. I’m guessing they edited it for Blue to give better palletes, and that was used as the base for Red and Blue......resulting in translation errors, and a different Cerulean Cave map.....and more.....

Oh, and a small nitpick, but there isn't any patch to restore Red or Blue to their Japanese Version. Red has the graphics and whatnot from green, just with Red's wild data, while Blue has entirely new wild pokemon and gift pokemon data, as well as trades. Sure, it's a very nitpicky thing, but just having the Green Patch be redundant since it's just a slightly different version of Blue seems weird to me.

jojobear13 December 14th, 2020 1:29 PM

Quote:

Originally Posted by MoriyaFaith (Post 10244545)
Oh, and a small nitpick, but there isn't any patch to restore Red or Blue to their Japanese Version. Red has the graphics and whatnot from green, just with Red's wild data, while Blue has entirely new wild pokemon and gift pokemon data, as well as trades. Sure, it's a very nitpicky thing, but just having the Green Patch be redundant since it's just a slightly different version of Blue seems weird to me.

Yeah, it's weird. But I kept getting messages from people wanting a green version to go with their US red & blue. I guess some people just want a graphics swap of US blue for the novelty.

I'll probably add a compiler option for jp-red and jp-blue until I can find a solution for batch-making ips patches.

jojobear13 December 16th, 2020 1:40 AM

Quote:

Originally Posted by MoriyaFaith (Post 10244266)
Ah, okay. Anything else ported from Prism? That 60 fps it has is kinda cool, but I don't know if that can work in RB. makes the running shoes look nice rather than just being "feet bike." That's always been a pet peeve of mine.

I'm not sure how Prism implements it exactly, but I suspect certain updater functions have been rewritten to update sprites twice as often. Using this suspicion I've been able to replicate the running shoes visual effect by adjusting the player sprite inter-frame counter limit. Normally it's set to 4, which translates to the game displaying 4 frames of the "neutral" pose followed by 4 frames of the "stepping" pose. Your brain and the gameboy's TFT screen ends up blending it together into one smooth movement. Prism seems to play the walk animation at double-speed, so for Gen 1 games that's an inter-frame limit of 2 to be used only when in a state of running. To be honest, double-speed looks a little janky and makes me a bit queasy (the player sprite has a slight up & down bob). I set the limit to 3 so the animation gets a 50% speed increase; it looks more natural and is fairly subtle.

MoriyaFaith December 16th, 2020 6:09 PM

Yeah, that works. I just thought that the typical rom hack running shoes just look like they're gliding across the floor if anything.

jojobear13 December 25th, 2020 8:56 PM

Merry Christmas! Version 1.18 has been released. Here's the changelog:

Master & Lite branches
- Incredibly minor text edits in Green to match the japanese script
- Palette & sound edits in Green
- PP usage is now tracked for both wild and AI trainer pokemon
- There is a chance for the AI to switch a sleeping pokemon based on the sleep counter
--> chance is 0% if counter <= 3
--> chance is 12.5% if counter > 3
- Chances to switch have been reduced:
--> toxic poison - changed probability from 50% to 34%
--> super effective moves - probability weight reduced by 25%
--> only switch out from low HP if player outspeeds enemy (gives the enemy one last shot at dealing damage)
--> an enemy mon is flagged when sent out; non-volatile (except sleeping) status or low hp cannot initiate switching
--> enemy mon that is recalled back due to a super effective move is flagged; it is demerited from being switched-in
--> switch flags are all cleared when player sends out a new mon since the situation is now different
- Patch version now shows on main menu
- Fixed a scrolling text artifact in the credits when running in GBC-mode


Master branch only
- Fixed Mew appearing with glitched graphics
- Mew's encounter has been changed a bit
--> It's wild encounter rate has been reduced
--> You will get a message about a "tingling feeling" if mew is encounterable
--> You can only find it in the wild once
--> Mew won't appear again after encountering; a message says the tingling feeling goes away
- Beating the future red fight now also resets Mew's encounter
- Missingno now has its iconic "L-block" appearance
- When holding B to go faster, the player animation is sped-up by 50% to avoid the "ice skating" appearance

jojobear13 December 27th, 2020 10:15 AM

There was a typo in the object data of the unknown dungeon basement that affects the Green patches. I've fixed it and re-uploaded new Green patches. Please try again with these new patches if you are using Green version.

jojobear13 January 1st, 2021 11:43 PM

After some discussion with my Reddit liaison, I've started work on a very simple randomizer for Shin Pokemon. I'm planing to have it be a unix bash script that can be run under cygwin with core utilities. The user will be prompted to input the name of the rom file as well as the banks and hex addresses of some important labels I'm adding to the .sym files (the .sym files will be added to the github). From there, the script will automatically do the necessary hex-editing on the rom file.

While it does require a little more skill than the nice GUI options for other game, the tradeoff is that it is compatible with all unix-based operating systems and environments (very handy for developers). It will also continue to work when I make new updates to Shin Pokemon.

Initial plans are as follows:
--Mew, Mewtwo, and the bird trio are unaffected since their encounters are handled by map scripts and I don't want to mess with that yet.
--Likewise, scripted pokemon (gifts, in-game trades, fossils, game corner, etc) are slated for later.
--But your starters will get randomized of course.
--151 availability is only in the master branch since that is already built into the rom itself.
--Random encounter-able land & water pokemon will be randomized on a global scale (all instances of one species become all one other species).
--Super rod pokemon will be randomized on a global scale.
--Trainer pokemon will be randomized on a global scale.
--Pokemon are put into A, B, and C tier lists. Randomization occurs within each separate list to prevent something like Brock throwing 2nd-stage evolutions at you.
--No move randomizer planned yet since it takes a while to do it in a way that prevents soft-locking.

Current status: I can accurately write bytes to a rom file, and I can randomize an array of pokemon hex values. Looking feasible but I have a long way to go.

jojobear13 January 3rd, 2021 10:46 PM

So the randomizer bash script is making progress. I had to make sure VIM was installed to Cygwin so I could access the xxd command. Starter pokemon and trainer rosters can now be randomized.

zycain January 4th, 2021 6:37 AM

Hey Jojo, hope youre keeping well, good to see progress is still going well with this rom :) so i discovered the New Game+ mechanism and played around with it a bit, saving my party to a box first then setting up with a junk pokemon ready to switch over (i actually did this several times to get it all just how i wanted it and experiment with the mechanism, and i believe i have found a bug, i left the old game with 80 pokemon in the bank and switched into the new game with only 78, when i got to the pokedex i can see whats going on, even though i have bulbasaur in the bank and i picked charmander this time, the pokedex is showing bulbasaur as not owned (no pokeball) so i'm guessing its something to do with the initial selection process clearing out the pokedex for the options i didnt pick? or something is re-setting any found status on the first 3 as you select one? not sure but yeah have at it :)
All the best :)

jojobear13 January 4th, 2021 11:20 AM

Quote:

Originally Posted by zycain (Post 10255822)
Hey Jojo, hope youre keeping well, good to see progress is still going well with this rom :) so i discovered the New Game+ mechanism and played around with it a bit, saving my party to a box first then setting up with a junk pokemon ready to switch over (i actually did this several times to get it all just how i wanted it and experiment with the mechanism, and i believe i have found a bug, i left the old game with 80 pokemon in the bank and switched into the new game with only 78, when i got to the pokedex i can see whats going on, even though i have bulbasaur in the bank and i picked charmander this time, the pokedex is showing bulbasaur as not owned (no pokeball) so i'm guessing its something to do with the initial selection process clearing out the pokedex for the options i didnt pick? or something is re-setting any found status on the first 3 as you select one? not sure but yeah have at it :)
All the best :)

Wait, did Pokémon get deleted from the PC? Or is it the owned Pokémon in the Pokédex?

zycain January 4th, 2021 11:53 AM

1 Attachment(s)
Quote:

Originally Posted by jojobear13 (Post 10255984)
Wait, did Pokémon get deleted from the PC? Or is it the owned Pokémon in the Pokédex?

it didnt get deleted from the pc, just in the pokedex it's not showing as owned, and actually i just withdrew bulbasaur from the bank to test if that would trigger it to show again and it's still not showing in the pokedex as owned (with a pokeball symbol)

jojobear13 January 4th, 2021 12:20 PM

Quote:

Originally Posted by zycain (Post 10256002)
it didnt get deleted from the pc, just in the pokedex it's not showing as owned, and actually i just withdrew bulbasaur from the bank to test if that would trigger it to show again and it's still not showing in the pokedex as owned (with a pokeball symbol)

Ah, I see. That's good to know. I was worried I had a much bigger problem to solve. This is an easy fix. The issue is the StarterDex function that gets called every time you look at one of Oak's pokeballs.
Code:

; this function temporarily makes the starters (and Ivysaur) seen
; so that the full Pokedex information gets displayed in Oak's lab
StarterDex:
        ld a, %01001011 ; set starter flags
        ld [wPokedexOwned], a
        predef ShowPokedexData
        xor a ; unset starter flags
        ld [wPokedexOwned], a
        ret


The problem is that the whole byte gets cleared to zero after viewing the pokedex entry and then it is placed back into wPokedexOwned. Fine if you assume that the player has no pokemon, but a problem for NG+. It should be like this instead.
Code:

StarterDex:
        ld a, [wPokedexOwned]
        push af
        ld a, %01001011 ; set starter flags
        ld [wPokedexOwned], a
        predef ShowPokedexData
        pop af
        ld [wPokedexOwned], a
        ret


I've posted an issue on the github and slated the fix for the next version.

zycain January 4th, 2021 1:35 PM

Quote:

Originally Posted by jojobear13 (Post 10256027)
Ah, I see. That's good to know. I was worried I had a much bigger problem to solve. This is an easy fix. The issue is the StarterDex function that gets called every time you look at one of Oak's pokeballs.
Code:

; this function temporarily makes the starters (and Ivysaur) seen
; so that the full Pokedex information gets displayed in Oak's lab
StarterDex:
        ld a, %01001011 ; set starter flags
        ld [wPokedexOwned], a
        predef ShowPokedexData
        xor a ; unset starter flags
        ld [wPokedexOwned], a
        ret


The problem is that the whole byte gets cleared to zero after viewing the pokedex entry and then it is placed back into wPokedexOwned. Fine if you assume that the player has no pokemon, but a problem for NG+. It should be like this instead.
Code:

StarterDex:
        ld a, [wPokedexOwned]
        push af
        ld a, %01001011 ; set starter flags
        ld [wPokedexOwned], a
        predef ShowPokedexData
        pop af
        ld [wPokedexOwned], a
        ret


I've posted an issue on the github and slated the fix for the next version.

Thats fantastic, thanks for all your hard work :)

Jurei January 5th, 2021 7:02 AM

Hey jojobear13, I love this hack so far (actually my favorite one) but I would like to ask you if a japanese version of it is planned ? I've been digging through the net for a disassembly of the Green version with no success. If it's not in your plans, how would I proceed to make a translation of your hack ? (if you allow me of course). Thanks !

jojobear13 January 5th, 2021 10:02 AM

Quote:

Originally Posted by Jurei (Post 10256529)
Hey jojobear13, I love this hack so far (actually my favorite one)

Glad you enjoy it.

Quote:

but I would like to ask you if a japanese version of it is planned ?
Not planned. I'm not multilingual.

Quote:

I've been digging through the net for a disassembly of the Green version with no success. If it's not in your plans, how would I proceed to make a translation of your hack ? (if you allow me of course). Thanks !
Shin Pokemon is open source. You can clone the github repository, set up cygwin and rgbds to compile things, and start tinkering around. The first thing you'd want to do is restore the japanese characters by either replacing the text in gfx/font.png or restoring the japanese characters somehow. Then you would want to go to charmap.asm and remap the hex values from the english letters to the japanese letters.

This is not a beginner's-level endeavor.

darthbr January 7th, 2021 8:29 AM

How to make legendaries not spawn after beating future red?

jojobear13 January 8th, 2021 1:13 PM

Quote:

Originally Posted by darthbr (Post 10257796)
How to make legendaries not spawn after beating future red?

Go to Route25Script3 and start commenting stuff out that you want to exclude.

jojobear13 January 8th, 2021 2:08 PM

Attn all. A basic bash script randomizer, "randoshinred", is now in beta test for those who compile the master development branch.

Lord Gengar January 8th, 2021 6:33 PM

The randomizer sounds awesome; something that I feel more of these "expansion" hacks should implement as it creates a whole new experience- I'm tired of using the same dang 3 starters each time! lol

aicaimze January 8th, 2021 7:18 PM

do external randomizers still work?

jojobear13 January 9th, 2021 12:33 AM

Quote:

Originally Posted by aicaimze (Post 10258626)
do external randomizers still work?

No. Generic external randomizers for vanilla red/blue edit bytes that have changed addresses in Shin Pokemon. The game just crashes as a result. That's why I had to make my own external randomizer from scratch.

jojobear13 January 9th, 2021 1:56 AM

Quote:

Originally Posted by Lord Gengar (Post 10258612)
The randomizer sounds awesome; something that I feel more of these "expansion" hacks should implement as it creates a whole new experience- I'm tired of using the same dang 3 starters each time! lol

I've learned that this is harder than it looks. A few things I discovered:
  • A built-in randomizer should not go editing its own rom addresses. It will not write anything if using a flash card. If an emulator even allows this in the first place, the rom changes just get lost once you close out. The rom needs to be randomized again with every startup unless there is a way to save the modified rom from the emulator. BGB will let you save, but many people play rom hacks using phone emulators nowadays.
  • So another option is for a built-in randomizer to do its randomizing on the fly. Essentially just load random mons into party rosters and whatnot as needed. This takes lots of code to implement well, and doubly so if you want a lot of different choices (bank sizes can become an issue in GBC games). It also means you cannot track wild pokemon with your 'Dex because it references the wild tables stored in the game rom.
  • Finally, and most practical, is to simply edit the rom file with an external script or program. This requires that the randomizer knows the exact bytes that need to change and their exact positions within the rom file. If an assumed position is off by even one bit, then the whole rom file is probably hosed. Programs like Universal Randomizer are created with vanilla roms in mind where all the relevant byte addresses are well-researched and set in stone. Sometimes they work for rom hacks that just so happen to avoid shifting or changing any byte addresses used by the randomizer. Often, like in Shin Pokemon's case, some assumption the randomizer makes isn't true anymore and the rom file gets hosed somewhere.
  • So that leaves me with the little external bash script I wrote. Run it in a unix terminal. Externally edit the rom. Prompt the user for banks and hex addresses from the rom's matching sym file. Then use the input from the user to point to the correct locations. Better than having to update the dang thing every time I make a small change to the game code. Anyone can see inside the .sh script file to either adapt it for their own project or (more than likely) make fun of my atrocious coding practices.

jastolze007 January 12th, 2021 5:59 AM

I thought I'd report that upon testing to see if my PKMN could indeed correctly level up past 100 via the cap change I made, while rare candies work, the said PKMN doesn't gain any exp on 100. If I used a rare candy to raise it above 100 and then go into battle, it will reset to 100 and try to learn all of its level up moves. With that said, I've noticed in past Red builds I've made, that this only is affected when using a gift Pokemon. For instance, my Gyarados that I paid for when it was a Magikarp on Route 4 or starter PKMN. I know this isn't a problem from your code, but it's kinda unfortunate as I would have liked to continue to play.

jojobear13 January 12th, 2021 10:23 AM

Quote:

Originally Posted by jastolze007 (Post 10260587)
I thought I'd report that upon testing to see if my PKMN could indeed correctly level up past 100 via the cap change I made, while rare candies work, the said PKMN doesn't gain any exp on 100. If I used a rare candy to raise it above 100 and then go into battle, it will reset to 100 and try to learn all of its level up moves. With that said, I've noticed in past Red builds I've made, that this only is affected when using a gift Pokemon. For instance, my Gyarados that I paid for when it was a Magikarp on Route 4 or starter PKMN. I know this isn't a problem from your code, but it's kinda unfortunate as I would have liked to continue to play.

What did you set as the level cap?

jastolze007 January 12th, 2021 10:34 AM

Quote:

Originally Posted by jojobear13 (Post 10260774)
What did you set as the level cap?

I believe it was 250. I was at 101 via rare candy to test it and went into a battle via the randomized trainer.

jojobear13 January 12th, 2021 12:38 PM

Quote:

Originally Posted by jastolze007 (Post 10260784)
I believe it was 250. I was at 101 via rare candy to test it and went into a battle via the randomized trainer.

Pokemon structures only have 3 bytes allotted for experience. A max level of 250 causes the CalcExperience function to overflow into 4 bytes. This will be different depending on a mon's growth rate.

Let's look at mewtwo for example. Math will be done in hex so it's easy to see the bytes being used. 250 in hex is $A8. Mewtwo's growth rate is "slow", so the exp it needs to hit the level cap i$s 5/4 n^3. Calculating ($A8)^3 gives $485a00. That's three bytes, so we're good so far. Now multiply by 5 to get $0169C200. Uh oh, that's 4 bytes. You've overflowed so that leftmost 01 gets tossed out of calculations. That leaves $69C200 / 4 to give a final result of $1A7080. This is an incorrect exp result that corresponds to a much lower level.

By my calculations, the highest value for max_level without initiating an overflow for any of the growth rates is 140.

jastolze007 January 12th, 2021 1:19 PM

Quote:

Originally Posted by jojobear13 (Post 10260839)
Pokemon structures only have 3 bytes allotted for experience. A max level of 250 causes the CalcExperience function to overflow into 4 bytes. This will be different depending on a mon's growth rate.

Let's look at mewtwo for example. Math will be done in hex so it's easy to see the bytes being used. 250 in hex is $A8. Mewtwo's growth rate is "slow", so the exp it needs to hit the level cap i$s 5/4 n^3. Calculating ($A8)^3 gives $485a00. That's three bytes, so we're good so far. Now multiply by 5 to get $0169C200. Uh oh, that's 4 bytes. You've overflowed so that leftmost 01 gets tossed out of calculations. That leaves $69C200 / 4 to give a final result of $1A7080. This is an incorrect exp result that corresponds to a much lower level.

By my calculations, the highest value for max_level without initiating an overflow for any of the growth rates is 140.

140? That sucks. This is so much easier in gen 3 hacks, where I can go to 255 with no overflow errors. Thanks for the info. I was using a modified Gyarados with a medium slow exp formula instead of slow so it could go higher but that doesn't matter as much now, I suppose.

jojobear13 January 12th, 2021 2:56 PM

Quote:

Originally Posted by jastolze007 (Post 10260862)
140? That sucks. This is so much easier in gen 3 hacks, where I can go to 255 with no overflow errors. Thanks for the info. I was using a modified Gyarados with a medium slow exp formula instead of slow so it could go higher but that doesn't matter as much now, I suppose.

Not all is lost. The engine for doing multiplication and division actually uses 4 bytes, so there is a bit of leeway the function for calculating experience. I whipped up a little something in about an hour.

Try implementing the changes in this commit. This updates the CalcExperience function to do math with 4 bytes instead of 3 bytes. This will prevent the left-most byte from being dropped and give accurate math. Since pokemon are still restricted to 3 bytes of exp, I also made it so that it dynamically lowers the max_level for each pokemon (based on growth rate) such that the maximum experience achievable stays within 3 bytes. Theoretically, mons with the fast growth rate can go all the way to level 255 now while mons at the slow growth rate are capped to level 237.

jastolze007 January 12th, 2021 5:08 PM

Quote:

Originally Posted by jojobear13 (Post 10260919)
Not all is lost. The engine for doing multiplication and division actually uses 4 bytes, so there is a bit of leeway the function for calculating experience. I whipped up a little something in about an hour.

Try implementing the changes in this commit. This updates the CalcExperience function to do math with 4 bytes instead of 3 bytes. This will prevent the left-most byte from being dropped and give accurate math. Since pokemon are still restricted to 3 bytes of exp, I also made it so that it dynamically lowers the max_level for each pokemon (based on growth rate) such that the maximum experience achievable stays within 3 bytes. Theoretically, mons with the fast growth rate can go all the way to level 255 now while mons at the slow growth rate are capped to level 237.

I appreciate you doing all that man! I still need to find a way to update from 1.15 to more recent. I've been playing on Goomba and haven't been able to transfer save without starting over. Could I just apply the changes you made in the older version of code I have?

Also, would this work with a previous save? Or would I need to start over?

jojobear13 January 12th, 2021 6:41 PM

Quote:

Originally Posted by jastolze007 (Post 10260976)
I appreciate you doing all that man! I still need to find a way to update from 1.15 to more recent. I've been playing on Goomba and haven't been able to transfer save without starting over. Could I just apply the changes you made in the older version of code I have?

Also, would this work with a previous save? Or would I need to start over?

Yeah, it should work if you just apply those changes.

In terms of updating your game save, have you tried saving outside in pallet town and using the softlock teleport?

jojobear13 January 12th, 2021 7:31 PM

Quote:

Originally Posted by jastolze007 (Post 10260976)
I've been playing on Goomba and haven't been able to transfer save without starting over.

Go ahead and save in pallet town. Then post your save file here. I'll see what I can do in spite of goomba's format.

As for preserving your code changes for a v1.18 update, you'd probably be fine with either Git Pull or Git Rebase.

jastolze007 January 13th, 2021 4:16 AM

Quote:

Originally Posted by jojobear13 (Post 10261047)
Go ahead and save in pallet town. Then post your save file here. I'll see what I can do in spite of goomba's format.

As for preserving your code changes for a v1.18 update, you'd probably be fine with either Git Pull or Git Rebase.

I'll get to it when I can access my PC. Probably later today. I didn't know there was an option to pull only the changes from the source code on GitHub, but that actually makes a lot of sense. Thanks again.

JOBO January 13th, 2021 2:32 PM

Hey jojobear! I absolutely love this hack and have put around 70ish hours into it now. I just wanted to thank you again for all of your hard work. Do you have any plans to give gen 2 the same treatment?

jastolze007 January 13th, 2021 3:25 PM

1 Attachment(s)
Quote:

Originally Posted by jojobear13 (Post 10261047)
Go ahead and save in pallet town. Then post your save file here. I'll see what I can do in spite of goomba's format.

As for preserving your code changes for a v1.18 update, you'd probably be fine with either Git Pull or Git Rebase.

Here's the .sav. I saved in the player's room in Pallet Town.

jojobear13 January 13th, 2021 9:26 PM

2 Attachment(s)
Quote:

Originally Posted by jastolze007 (Post 10261482)
Here's the .sav. I saved in the player's room in Pallet Town.

Hmm...I'm not sure why this goomba sav is larger than 64 KB.

Regardless, I was able to extract the save data from the goomba .sav file into a raw gbc .sav format. I loaded it up in BGB emulator with a v1.18M rom. I got invisible walls but no crashes (as expected). I used the softlock teleport to reload the overworld and the invisible walls cleared (also as expected). Everything checks out. I attached the raw gbc .sav file for you as a backup.

I took the raw gbc .sav and compressed it back into the goomba .sav file. It was truncated to 64KB, but the compressed gbc save data should still be intact. It's also attached, so give it a try.

MonadoBoy January 14th, 2021 7:00 AM

I recently did a hardcore nuzlocke (nuzlocke + no items, no overleveling, battle every trainer) and it was so fun (version 1.17). This romhack is amazing.

Though i have to point out something. I don't know if it's intentional or not, but Hypnosis seems to have 100% accuracy (the AI missed 0 times with that, and used it quite a lot), and this makes Agatha way more difficult than the rest of the game. I had very little problems everywhere else, but I almost died there. I lost 1 pokemon and the rest ended up with ~10 HP each (and almost all asleep).

Also, the champion's Rhydon crit me like 4/8 hits. Assuming critical hits still work with base speed, that's odd. It might have been extremely bad luck, but just in case you want to look into it or something.

Anyway, excelent job!

jojobear13 January 14th, 2021 8:40 AM

Quote:

Originally Posted by MonadoBoy (Post 10261852)
I recently did a hardcore nuzlocke (nuzlocke + no items, no overleveling, battle every trainer) and it was so fun (version 1.17). This romhack is amazing.

Thank you. Glad you had fun. I'm kind of surprised the Rocket in Mt Moon with the raticate didn't end your run.

Quote:

Though i have to point out something. I don't know if it's intentional or not, but Hypnosis seems to have 100% accuracy (the AI missed 0 times with that, and used it quite a lot), and this makes Agatha way more difficult than the rest of the game. I had very little problems everywhere else, but I almost died there. I lost 1 pokemon and the rest ended up with ~10 HP each (and almost all asleep).

Also, the champion's Rhydon crit me like 4/8 hits. Assuming critical hits still work with base speed, that's odd. It might have been extremely bad luck, but just in case you want to look into it or something.
You just had abysmal luck. Like, Xcom levels of bad luck.

A note on move accuracy though. Retail red/blue had pretty poor rng to where 60% accuracy moves were actually more like 50% accuracy. Enemy status moves also had a flat 25% chance to miss on top of this to make the game easier. In retail red/blue, Agatha only has around 37% to 40% chance of actually landing hypnosis. She gets the full 60% accuracy in this hack, so that's a huge boost relative to the original games and you really feel it.

jastolze007 January 14th, 2021 8:47 AM

I tested the .sav you made, but it lead to a new game being started. I believe I'm SOL when it comes to Goomba on my RevoK101 Plus. I'm pretty sure the reason its save file structure is larger is because it stores FW information in the save. Just a guess. Anyway, if you can absolutely guarantee if I start a new game, that I'll be able to go to my said Level cap without issues via that build you made, then I'll start fresh.

jojobear13 January 14th, 2021 10:02 AM

Quote:

Originally Posted by jastolze007 (Post 10261900)
I tested the .sav you made, but it lead to a new game being started. I believe I'm SOL when it comes to Goomba on my RevoK101 Plus. I'm pretty sure the reason its save file structure is larger is because it stores FW information in the save. Just a guess. Anyway, if you can absolutely guarantee if I start a new game, that I'll be able to go to my said Level cap without issues via that build you made, then I'll start fresh.

What happens if you just use your original save but use an updated rom?

jastolze007 January 14th, 2021 10:45 AM

Quote:

Originally Posted by jojobear13 (Post 10261927)
What happens if you just use your original save but use an updated rom?

Normally, I can continue progress. But this rom specifically erased my save when I updated a few months ago. Same rom name and all. I had a backup fortunately.

I appreciate all the help you've given me regardless.

jojobear13 January 14th, 2021 11:36 AM

1 Attachment(s)
Quote:

Originally Posted by jastolze007 (Post 10261946)
Normally, I can continue progress. But this rom specifically erased my save when I updated a few months ago. Same rom name and all. I had a backup fortunately.

I appreciate all the help you've given me regardless.


I think this is an issue with your K101 doing some kind of hash check. I'll see if I can bypass it.

I'm using a few different tools:
  • There's goombasav (I use GoombasavCore.WinForms.x64.exe).
  • Also the Revo save converter.
  • Goomba color.
  • And finally the good ol' VBA emulator.
  1. As before, I use goombasav to extract a raw gbc sav from your k101 sav.
  2. I use goomba color to compile the updated gbc rom into a gba rom.
  3. I open VBA, check my save type settings (automatic & 64k flash), and load the goombafied rom. I start a new game and then save the game after it drops me into the player's room. This generates a dummy VBA sav.
  4. I use goombasav again to load the VBA dummy sav. This time I use the raw gbc sav from before to replace the saved data in the dummy sav.
  5. I take the modified dummy sav and use it to fire up VBA with the goombafied rom. The saved game is detected and loads with invisible walls. Softlock teleport clears the invisible walls. Game is saved again. So far so good.
  6. I go into the gooba options (L + R) and go into and out of the save manager. This is just so that goomba updates its own save structure. This results in a cleaned VBA sav for the goombafied rom.
  7. Finally I use the Revo save converter to convert the cleaned VBA sav into a K101 sav. See attached.

So the file I ended up with is the same size as the file you initially posted. That's a good sign. But what a task it is to cut through not one but two special save structures. 136KB K101 save --> 32KB raw gbc save --> 64KB goomba GBA save --> 136 KB K101 save.

EDIT: You might want to replicate this process using your own compiled rom update just to make sure everything is consistent between the rom and the sav.

jastolze007 January 14th, 2021 1:58 PM

Quote:

Originally Posted by jojobear13 (Post 10261964)
I think this is an issue with your K101 doing some kind of hash check. I'll see if I can bypass it.

I'm using a few different tools:
  • There's goombasav (I use GoombasavCore.WinForms.x64.exe).
  • Also the Revo save converter.
  • Goomba color.
  • And finally the good ol' VBA emulator.
  1. As before, I use goombasav to extract a raw gbc sav from your k101 sav.
  2. I use goomba color to compile the updated gbc rom into a gba rom.
  3. I open VBA, check my save type settings (automatic & 64k flash), and load the goombafied rom. I start a new game and then save the game after it drops me into the player's room. This generates a dummy VBA sav.
  4. I use goombasav again to load the VBA dummy sav. This time I use the raw gbc sav from before to replace the saved data in the dummy sav.
  5. I take the modified dummy sav and use it to fire up VBA with the goombafied rom. The saved game is detected and loads with invisible walls. Softlock teleport clears the invisible walls. Game is saved again. So far so good.
  6. I go into the gooba options (L + R) and go into and out of the save manager. This is just so that goomba updates its own save structure. This results in a cleaned VBA sav for the goombafied rom.
  7. Finally I use the Revo save converter to convert the cleaned VBA sav into a K101 sav. See attached.

So the file I ended up with is the same size as the file you initially posted. That's a good sign. But what a task it is to cut through not one but two special save structures. 136KB K101 save --> 32KB raw gbc save --> 64KB goomba GBA save --> 136 KB K101 save.

EDIT: You might want to replicate this process using your own compiled rom update just to make sure everything is consistent between the rom and the sav.

Thanks for the help. I actually use the revo K save manager. But, what command line did you use to get it to work with gbc saves? For gba, I do a "Converter.exe" "Pokemon Mod" 128. And that allows me to use Revo GBA saves on VBA.

jojobear13 January 14th, 2021 2:43 PM

Quote:

Originally Posted by jastolze007 (Post 10262007)
Thanks for the help. I actually use the revo K save manager. But, what command line did you use to get it to work with gbc saves? For gba, I do a "Converter.exe" "Pokemon Mod" 128. And that allows me to use Revo GBA saves on VBA.

There are two separate converter exe files. The one you are talking about is called K1toVBA. To convert in the other direction you need to use the other exe called VBA2K1 (it doesn’t use the 128 argument).

jojobear13 January 30th, 2021 12:19 AM

It's the end of the month, so I figured I'd put out version 1.19.

Changelog for the master branch:
  • Fixed a minor bug where the first byte of pokedex "owned" gets cleared on a new game+
  • Fixed minor desync with abbreviated rival music
  • Fixed poison/burn/leechseed damage sometimes being applied twice
  • Minor changes to support external randomizer
  • Updated title screen to use kanji instead of katakana
  • Fixed an artifact when title screen 'mons scroll left in GBC-mode
  • Fixed a bug in AI roster scoring when evaluating type matchups for switching
  • Tweaked item usage for cooltrainers and Giovanni
  • Increased encounter rate from 3/256 to 11/256 for the following pokemon
    • charmander, bulbasaur, squirtle, eevee
    • bellsprout (red), oddish (blue), vulpix (red), oddish (blue)
    • farfetch'd (route 12)
  • Increased mew's encounter rate from 1.5/256 to 3/256
  • Improved exp calculation for developers who want a level cap between 101 and 255
    • EXP calculation routine now does math in 4 bytes instead of 3 bytes
    • Exp calculation result is still capped to 3 bytes regardless of level cap to prevent overflow
    • The byte cap on the exp result means that certain growth rates may have a level cap
    • For example, the "slow" growth rate is theorized to cap at level 237
  • Trainer battle prize money uses 3 bytes instead of 2, lifting the 9999 cap on winnings
  • To prevent infinite loops, Rage ends after 2 to 3 turns (attack boosts are kept)
  • AI will not do actions during Rage or when recharging

Changelog for the lite branch:
  • fixed minor desync with abbreviated rival music
  • fixed poison/burn/leechseed damage sometimes being applied twice
  • minor changes to support external randomizer
  • AI will not do actions during Rage or when recharging
  • Improved exp calculation for developers who want a level cap between 101 and 255
    • EXP calculation routine now does math in 4 bytes instead of 3 bytes
    • Exp calculation result is still capped to 3 bytes regardless of level cap to prevent overflow
    • The byte cap on the exp result means that certain growth rates may have a level cap
    • For example, the "slow" growth rate is theorized to cap at level 237
  • Trainer battle prize money uses 3 bytes instead of 2, lifting the 9999 cap on winnings
  • To prevent infinite loops, Rage ends after 2 to 3 turns (attack boosts are kept)
  • Fixed an artifact when title screen 'mons scroll left in GBC-mode
  • Fixed a bug in AI roster scoring when evaluating type matchups for switching

The bash script for randomizing the rom, "randoshinred", has also been added to the released master branch. It seems to work okay so far. I'll see how this one goes.

zxcfs January 30th, 2021 9:47 AM

nice update, i was just about to ask if bulbasaur and bellsprout really exist lol
i spent almost 4 hours and not even got a glimpse of them.
Edit : just caught a bulbasaur, like 5 mins only after the update !

jojobear13 February 4th, 2021 3:40 AM

Attention all. If you are on version 1.18 or 1.19 of either the lite or master branch, please update your game to version 1.19.1 hotfix 1. It's been found that trainer AI completely ignores move preferences due to a major oversight in how I implemented PP tracking. This causes the AI to choose moves like a wild pokemon.

Version 1.19.1 re-works the implementation so that trainer AI will check its move preferences against moves that are unusable due to Disable or having 0 PP. If the most preferable move cannot be used, then the next most-preferable move will be used instead. This follows in sequence until no moves are available and Struggle is initiated.

I offer my humble apologies.

darthbr February 5th, 2021 11:08 AM

for legendaries respawm. i took out this 2 parts in script route 25, follow the image, i just left the above red part, is that ok??? (game wont bug)?

my doubt it, the game compiled... like i left in image

https://i.ibb.co/jk9Y68B/doubt.png

jojobear13 February 5th, 2021 11:40 AM

Quote:

Originally Posted by darthbr (Post 10275515)
for legendaries respawm. i took out this 2 parts in script route 25, follow the image, i just left the above red part, is that ok??? (game wont bug)?

my doubt it, the game compiled... like i left in image

https://i.ibb.co/jk9Y68B/doubt.png

You missed one detail. Go to the "Route25TextRed:" function and near the bottom remove these lines.
Code:

ld a, $3
ld [wRoute25CurScript], a
ld [wCurMapScript], a


This tells the map script routine to load script pointer #3 (that being Route25Script3) on the next frame refresh. Since you removed Route25Script3, you must remove these lines as well or else the game will jump into garbage data and crash.

darthbr February 5th, 2021 12:33 PM

Quote:

Originally Posted by jojobear13 (Post 10275521)
You missed one detail. Go to the "Route25TextRed:" function and near the bottom remove these lines.
Code:

ld a, $3
ld [wRoute25CurScript], a
ld [wCurMapScript], a


This tells the map script routine to load script pointer #3 (that being Route25Script3) on the next frame refresh. Since you removed Route25Script3, you must remove these lines as well or else the game will jump into garbage data and crash.

oh thank you for help, so deleting this last part, i dont have to worry?

jojobear13 February 5th, 2021 9:27 PM

Quote:

Originally Posted by darthbr (Post 10275546)
oh thank you for help, so deleting this last part, i dont have to worry?

I think you're okay. You can always check it against the commit history.

jastolze007 February 7th, 2021 7:48 AM

Hey, so I'm likely to start a fresh playthrough of this mod on the most recent version once I finish playing Unbound. Can you confirm that leveling up past 100 works in battle? Rare candies seem to work according to the set level cap but battle EXP is a different story.

jojobear13 February 7th, 2021 11:43 AM

Quote:

Originally Posted by jastolze007 (Post 10276904)
Hey, so I'm likely to start a fresh playthrough of this mod on the most recent version once I finish playing Unbound. Can you confirm that leveling up past 100 works in battle? Rare candies seem to work according to the set level cap but battle EXP is a different story.

See the v1.19 changelog. The exp calculation function has been modified to handle the math better. It also won’t let you overflow the exp.

It’s been working okay so far, but I really need to sit down sometime and grind from 100 to 255 on a few different growth rate ‘mons.

jastolze007 February 8th, 2021 7:54 AM

Quote:

Originally Posted by jojobear13 (Post 10277066)
See the v1.19 changelog. The exp calculation function has been modified to handle the math better. It also won’t let you overflow the exp.

It’s been working okay so far, but I really need to sit down sometime and grind from 100 to 255 on a few different growth rate ‘mons.

Well, I modified the usual team I use to have a Medium Slow growth rate. I'm sure that can reach at least 250 (The set cap) before the overflow.

Thanks for helping me with this man. I appreciate all the work you do. Hopefully this does in fact solve the issues I was having with leveling past 100.

I'll report to you what happens. I never use rare candies so it'll be at least a month before I hit a team of 6 at level 100+.

More people should incorporate the rematch system like you implemented. It really gives the game fresh post game life. Also, the randomized scaling trainer is amazing.

jojobear13 February 8th, 2021 11:09 AM

Quote:

Originally Posted by jastolze007 (Post 10277644)
Well, I modified the usual team I use to have a Medium Slow growth rate. I'm sure that can reach at least 250 (The set cap) before the overflow.

Thanks for helping me with this man. I appreciate all the work you do. Hopefully this does in fact solve the issues I was having with leveling past 100.

I'll report to you what happens. I never use rare candies so it'll be at least a month before I hit a team of 6 at level 100+.

More people should incorporate the rematch system like you implemented. It really gives the game fresh post game life. Also, the randomized scaling trainer is amazing.

Sounds good. This kind of stuff interests me, so I'm glad I can help.

The maximum amount of exp that is supported by 3 bytes is 16,777,215.
According to my calculations, here are the level caps for each growth rate.
  • medium-slow - 245
  • slow - 237
  • medium-fast - 255
  • fast - 255

So even though you set the max_level constant to 250, that will be ignored for your medium-slow teammates. The function in battle that handles exp calculation for level-up passes max_level into register 'd' then calls CalcExperience to determine if the level cap experience has been reached. But CalcExperience will decrement the value in 'd' and try again if the result exceeds 3 bytes. The result is that the max_level value gets lowered on the fly.

Come to think of it, I should probably make adjustments to rare candies and the daycare man. Rare candies can be wasted and I don't know what will happen with the daycare man.
EDIT: Oh this is interesting. Apparently Game Freak hard-coded the day care to not increase 'mon exp past 5,242,880. Looks like I can just increase that cap and everything will still work.

Glad you like the randomized trainer. It was actually kind of easy to do one I figured out how to hijack the process that loads trainer data.

charphantom96 February 8th, 2021 12:54 PM

Any chance of you making a shin Pokemon yellow hack?

jastolze007 February 9th, 2021 9:00 AM

I got a really lucky roll for my Magikarp's DV's: 15 HP, 13 ATK, 14 DEF, 14 SPD 15 SPC

Anyways, I can't remember, but does EV growth ever stop at Level 100? I thought I heard somewhere it does.

Also, regarding the randomized scaled trainer: How will the game handle an opponent PKMN if it's a slow growth rate and my PKMN is level 240 or higher? Would be interesting to see how the game would react.

darthbr February 9th, 2021 11:42 AM

Can you explain this in item usage part: (im changing some, i created one for Erika, instead of super potion)

cp $20
jr nc, .sabrinareturn
ld a, $A
call AICheckIfHPBelowFraction
jp c, AIUseHyperPotion
.sabrinareturn
ret

(she will use hyper potion when pkmn reach 20% of life? ) -- i want make Erika use Hyper Potion when reach red life, so, wich one is correct, Sabrina os erika?

cp $80
jr nc, .erikareturn
ld a, $A
call AICheckIfHPBelowFraction
jp c, AIUseHyperPotion
.erikareturn
ret

________________

; unused? joenote - repurposing for a new vendor on celadon dept store floor 3
CeladonMart3ClerkText::

(is this guy in game, or no?) if not, how do i activate him? is it too hard?

jojobear13 February 9th, 2021 8:55 PM

Quote:

Originally Posted by jastolze007 (Post 10278973)
I got a really lucky roll for my Magikarp's DV's: 15 HP, 13 ATK, 14 DEF, 14 SPD 15 SPC

Anyways, I can't remember, but does EV growth ever stop at Level 100? I thought I heard somewhere it does.

Also, regarding the randomized scaled trainer: How will the game handle an opponent PKMN if it's a slow growth rate and my PKMN is level 240 or higher? Would be interesting to see how the game would react.

EVs do not exist until gen 3. Instead you have stat experience. There is no cap on the total or with level. For each stat, it starts at $0000 and can go all the way to $ffff. Grinding still nets you stat exp regardless of level. Back when I was a kid, my friends and I would do the box trick to recalculate our higher stats after hitting lvl 100.

The experience cap does not apply to AI teams because they do not have experience nor do they level-up. Their level is set to whatever and it’s used for calculating stats and other things. I’m pretty sure I capped the random trainer to 255 some months. I’ll have to double check that later.

Quote:

Originally Posted by darthbr (Post 10279061)
Can you explain this in item usage part: (im changing some, i created one for Erika, instead of super potion)

cp $20
jr nc, .sabrinareturn
ld a, $A
call AICheckIfHPBelowFraction
jp c, AIUseHyperPotion
.sabrinareturn
ret

(she will use hyper potion when pkmn reach 20% of life? ) -- i want make Erika use Hyper Potion when reach red life, so, wich one is correct, Sabrina os erika?

cp $80
jr nc, .erikareturn
ld a, $A
call AICheckIfHPBelowFraction
jp c, AIUseHyperPotion
.erikareturn
ret

________________

; unused? joenote - repurposing for a new vendor on celadon dept store floor 3
CeladonMart3ClerkText::

(is this guy in game, or no?) if not, how do i activate him? is it too hard?

Here’s how to read the item usage code. Note that ‘$’ signifies a hex number. I prefer to work in hex since it makes bits line up nicely in debugging tools.

If the value in register ‘a’ is less than $20 (basically a $20 out of $ff random chance), then check to see if hp is less than 1/$A of max (basically check if hp is down to 1/10th). If hp is in fact that low, use a hyper potion.

The extra celadon vendor is only in the master branch. You would have to re-add all the needed scripts for that map and add his sprite to the map’s object header file. I’m stuck phone-posting for a while, so I can’t really provide detailed instruction at this time.

jojobear13 February 9th, 2021 8:59 PM

Quote:

Originally Posted by charphantom96 (Post 10278031)
Any chance of you making a shin Pokemon yellow hack?

There’s a non-zero chance, but I’m currently at max capacity when it comes to projects.

darthbr February 10th, 2021 2:05 AM

Quote:

Originally Posted by jojobear13 (Post 10279366)
EVs do not exist until gen 3. Instead you have stat experience. There is no cap on the total or with level. For each stat, it starts at $0000 and can go all the way to $ffff. Grinding still nets you stat exp regardless of level. Back when I was a kid, my friends and I would do the box trick to recalculate our higher stats after hitting lvl 100.

The experience cap does not apply to AI teams because they do not have experience nor do they level-up. Their level is set to whatever and it’s used for calculating stats and other things. I’m pretty sure I capped the random trainer to 255 some months. I’ll have to double check that later.



Here’s how to read the item usage code. Note that ‘$’ signifies a hex number. I prefer to work in hex since it makes bits line up nicely in debugging tools.

If the value in register ‘a’ is less than $20 (basically a $20 out of $ff random chance), then check to see if hp is less than 1/$A of max (basically check if hp is down to 1/10th). If hp is in fact that low, use a hyper potion.

The extra celadon vendor is only in the master branch. You would have to re-add all the needed scripts for that map and add his sprite to the map’s object header file. I’m stuck phone-posting for a while, so I can’t really provide detailed instruction at this time.

No problem mate. Im using Master one. Its Just to know if its in game. Thank you!!

__

what is the possibility to have pokemon following you and each one have his own miniature?
https://www.pokecommunity.com/showthread.php?t=382380

you can check here too
https://tcrf.net/Proto:Pok%C3%A9mon_Gold_and_Silver/Spaceworld_1997_Demo/Pok%C3%A9mon

_ other point <
the symbols are great, but they dont show if my pokemon is male or female ;(

jojobear13 February 10th, 2021 9:27 AM

Quote:

Originally Posted by darthbr (Post 10279536)
No problem mate. Im using Master one. Its Just to know if its in game. Thank you!!

__

what is the possibility to have pokemon following you and each one have his own miniature?
https://www.pokecommunity.com/showthread.php?t=382380

you can check here too
https://tcrf.net/Proto:Pok%C3%A9mon_Gold_and_Silver/Spaceworld_1997_Demo/Pok%C3%A9mon

_ other point <
the symbols are great, but they dont show if my pokemon is male or female ;(

I added male/female symbols as an aide for gen 2 compatibility. If a player is catching a 'mon in gen 1 with the intent to transfer it to gen 2, then it is useful to know what sex it is. Pokemon that are unsexed, always male, or always female do not show a symbol at this time. It's mostly cutting out a redundancy to save on rom bank space.

I've been looking into adding following pokemon. The main hurdle is to first backport the follower pikachu from yellow and get it working correctly. There's some problems I haven't quite figured out. Like with backporting GBC color, I'll probably try a few things, fail utterly, then come back to it some weeks later and have more success.

darthbr February 10th, 2021 12:30 PM

attacks:

db LT_SURGE,$1
db 1,1,THUNDERSHOCK
db 3,1,THUNDERBOLT

i want make pikachu use thundershock as priority move, like first move, is it right?

cha0ticbrah February 10th, 2021 1:29 PM

Love the edition of green version, how would one go about randomizing wild encounters and trainer pokemon at the very least?

jojobear13 February 10th, 2021 6:46 PM

Quote:

Originally Posted by darthbr (Post 10280080)
attacks:

db LT_SURGE,$1
db 1,1,THUNDERSHOCK
db 3,1,THUNDERBOLT

i want make pikachu use thundershock as priority move, like first move, is it right?

Here is how to read this:
Line 1 - find trainer instance 1 of the LT_SURGE trainer type.
Line 2 - ‘mon in roster position 1, move slot 1, override to Thundershock.
Line 3 - ‘mon in roster position 3, move slot 1, override to Thunderbolt.

jojobear13 February 10th, 2021 6:52 PM

Quote:

Originally Posted by cha0ticbrah (Post 10280117)
Love the edition of green version, how would one go about randomizing wild encounters and trainer pokemon at the very least?

There is a bash script that was written to do this. Check the randoshinred folder. If on windows, you need a Unix terminal to run it. The terminal must also be able to run VIM. You can install Cygwin (choosing VIM as an option in the installer) in order to run the script.

darthbr February 11th, 2021 4:44 AM

Quote:

Originally Posted by jojobear13 (Post 10280302)
Here is how to read this:
Line 1 - find trainer instance 1 of the LT_SURGE trainer type.
Line 2 - ‘mon in roster position 1, move slot 1, override to Thundershock.
Line 3 - ‘mon in roster position 3, move slot 1, override to Thunderbolt.

sorry if im dumb, but i just want to know, if 1 is like priority move, will be the first attack... i didnt get the '' find trainer instance 1 of the LT_SURGE trainer type.''
so, Surge raichu, is 3 right? move slot 1, the first move always will be thunderbolt?

jastolze007 February 11th, 2021 9:09 AM

Were you ever able to test the level cap thing? I tried doing it myself by using rare candies and then leveling up after compiling the mod, but it started a new game on me and I couldn't test it without starting over. The only change I made was purchasing rare candies early and changing the price to something more affordable. Not sure why it started a new game, but whenever you're able to get a chance could you confirm that leveling on level 101 in battle doesn't reset your EXP? I'd really appreciate that. I love this game regardless of what happens.

jojobear13 February 11th, 2021 9:55 AM

Quote:

Originally Posted by darthbr (Post 10280459)
sorry if im dumb, but i just want to know, if 1 is like priority move, will be the first attack... i didnt get the '' find trainer instance 1 of the LT_SURGE trainer type.''

Trainer Types are how trainers are categorized; these are your Youngsters, Rockets, Gentlemen, etc. There are of course multiple team rosters within each type, so you have to specify which team to point to for that category. For example: db SONY3, $3 points to the champion rival team that contains Charizard.

Quote:

so, Surge raichu, is 3 right? move slot 1, the first move always will be thunderbolt?
Thunderbolt will always be in Raichu's slot 1. It will not have priority in the same way Quick Attack has priority. It's just one of the four move slots that every pokemon has.

Moves can be given priority in func_battle.asm under the HighPriorityMoves function. You can see where I've commented-out lines for adding additional moves. This applies globally to the battle engine, so giving Thundershock priority here will make that true for all pokemon using Thundershock.

jojobear13 February 11th, 2021 2:20 PM

Quote:

Originally Posted by jastolze007 (Post 10280711)
Were you ever able to test the level cap thing? I tried doing it myself by using rare candies and then leveling up after compiling the mod, but it started a new game on me and I couldn't test it without starting over. The only change I made was purchasing rare candies early and changing the price to something more affordable. Not sure why it started a new game, but whenever you're able to get a chance could you confirm that leveling on level 101 in battle doesn't reset your EXP? I'd really appreciate that. I love this game regardless of what happens.

I'll do some testing this weekend and get back to you.

jastolze007 February 12th, 2021 12:26 PM

Quote:

Originally Posted by jojobear13 (Post 10280911)
I'll do some testing this weekend and get back to you.

Just wanted to let you know I ran a test on my starter at level 101 and it actually gained XP, which is what I was after. Thanks again, man!

Also, a request for the randomizer: Could you make it an option to make all trainers have random teams after the initial battle? Like, each time you challenge them, they have a different team, but the same amount and keep their levels? That would require a lot of work, I'm sure. But, if that were possible and you had time, I'd definitely give it a go!

jojobear13 February 13th, 2021 1:06 AM

Quote:

Originally Posted by jastolze007 (Post 10281507)
Just wanted to let you know I ran a test on my starter at level 101 and it actually gained XP, which is what I was after. Thanks again, man!

Also, a request for the randomizer: Could you make it an option to make all trainers have random teams after the initial battle? Like, each time you challenge them, they have a different team, but the same amount and keep their levels? That would require a lot of work, I'm sure. But, if that were possible and you had time, I'd definitely give it a go!

I'll think about it.

I did find some problems that I'm trying stress-test:
  • Medium-slow and slow rate 'mons reaching their soft level cap in battle causes an infinite loop.
  • On top of that, under the same conditions in the master branch, the exp bar function does a divide-by-zero.
  • The experience on the status screen, after exceeding 10-million exp, displays the wrong amount because the function that prints it is limited to seven digits.

You might want to run with version 1.19.2-development. I think I've fixed the listed problems.

Meister_anon~Master_o f_None February 15th, 2021 3:37 AM

Quote:

Originally Posted by jojobear13 (Post 10095577)
You could deposit all but your fainted pokemon in the pc, and then watch as you black out after taking 3 steps.

XD lol kill bill?! I thought this was pokemon.

jojobear13 March 14th, 2021 8:54 PM

Just wanted to chime-in. I've started making decent use of the labels for issues on github. Take a look at the issues tab to see what I've been up to. You can see the bugs and enhancements that I'm tracking, the investigations that I'm working on, which issues are found in a retail copy of red & blue, and which ones have a fix and are going into the next patch.

charphantom96 March 18th, 2021 5:59 AM

Quote:

Originally Posted by jojobear13 (Post 10312722)
Just wanted to chime-in. I've started making decent use of the labels for issues on github. Take a look at the issues tab to see what I've been up to. You can see the bugs and enhancements that I'm tracking, the investigations that I'm working on, which issues are found in a retail copy of red & blue, and which ones have a fix and are going into the next patch.

Nice, looking forward to it
This is my favorite Gen 1 rom hack

Fennekinluvr1116 March 21st, 2021 2:02 PM

I know you implemented the softlock warp, but there's one issue with it; you can only use it if you have all the pause menu options unlocked (meaning you have the Pokémon and Pokédex items in the menu), meaning if you get softlocked before getting the Pokédex you're legitimately softlocked. Granted this isn't as much of an issue since it's at the very beginning of the game and you can get back to that point after only a couple minutes of in-game time (plus I believe there's only one or two ways to softlock before you get the Pokédex and you have to do it intentionally or just incredibly dumb), but I thought it was worth mentioning regardless. It's really nice to be able to re-fight trainers to grind, though, saves so much time and so much money on replacement FitBits lol. Keep up the great work, I'm sure I'll be usng this hack for many years to come! 😘

jojobear13 March 22nd, 2021 12:04 AM

Quote:

Originally Posted by Fennekinluvr1116 (Post 10320018)
I know you implemented the softlock warp, but there's one issue with it; you can only use it if you have all the pause menu options unlocked

Interesting...I'll have to look into that. Glad you are enjoying things.

jojobear13 March 25th, 2021 11:25 PM

Quote:

Originally Posted by Fennekinluvr1116 (Post 10320018)
I know you implemented the softlock warp, but there's one issue with it; you can only use it if you have all the pause menu options unlocked (meaning you have the Pokémon and Pokédex items in the menu),

Here's what I've discovered. You always have the "Pokemon" menu option. It just won't open if you have no pokemon. That just leaves the "Pokedex" menu option to look at. It was easy to implement around this, but I quickly discovered two issues that the softlock warp causes if you don't have the pokedex: 1) You can skip the first rival battle. 2) You can skip getting your first pokemon. Given this, I've decided that the softlock warp should require the pokedex for stability. I'll make it so the "It's not the time to use that" text plays if the player tries to use the warp invalidly.

Now as for early-game softlocking, the only one I know of that applies to Shin Pokemon right now was discovered by Shenanagans Smash a few years ago. This madman managed a 2-minute softlock by abusing the bug that de-constrains NPC movement. The next version of Shin Pokemon will not allow this as one of my dev commits fixes this bug. Roaming NPCs will be constrained to 5 steps on each axis so the girl NPC cannot move beyond the top-right tip of Red's house (x=8, y=3).

Aside from that one, there are no other pre-pokedex softlocks in the US red/blue versions that are currently known.

jojobear13 March 28th, 2021 8:47 PM

The Easter Bunny has come early with a release of version 1.20! This release focuses on increasing the stability of the hack. There's more support for offshoot projects that want a higher level cap, some improvements to vblank periods that alleviate graphical artifacts, improvements to how overworld sprites update to account for scripted movement, and a whole host of minor retail-present glitches and oversights that I've ignored until now.

That doesn't mean there's no candy to be found among all these vegetables. The rival's missing text when you lose has been restored. Furthermore, players who run the master branch in SET style are in for a special challenge when attempting to catch mewtwo; it won't let you use master balls and picks its moves using trainer AI.


Quote:

#Hack-Induced Bugfixes & Adjustments since last version:
-----------
- Prevent infinite loop for 'mons hitting level softcap when maxl_level is set greater than 237
- Fixed water tile strangeness during vblank
- Prevent vblank from running twice in a row during direct-SCX scrolling; fixes scroll artifacting
- Fixed a problem where lack of a move terminator on one NPC was causing writes to the shadow ram
- Fixed rare candies to recognize a level softcap when maxl_level is set greater than 237
- Fixed infinite loop at 100+ level softcaps
- Fix exp bar divide by zero at 100+ level softcaps
- Fixed an issue where overworld sprites won't load after scripted movement during map scrolling
- Attempt at fixing issues where NPCs face the wrong way during scripted events
- Fixed an issue where catching a transformed ditto gives it 0 DVs
- Softlock teleport will now say it cannot be used if you don't have the pokedex yet
- Fixed Ditto showing up in the gender ratio list (master branch only)
- Tower ghosts no longer display a gender or caught symbol (master branch only)
- Corrected the encounter table in the power plant (lite branch only)
Quote:

#New features & adjustments since last version:
-----------
- Adjusted daycare to allow exp values over $500000
- Allow up to 8 digits when displaying experience on the status screen
- L: block doesn't disappear when level hits three digits
- Fixed bugged npc movement constraints
- Reactivated lost text that was meant to play when you lose to your rival
- Fixed the instant-text glitch that can happen in the bike shop
- Fixed using escape rope in bill's house and the fan club
- Fixed amazing man glitch when triggered by a hidden object
- Fixed amazing man glitch in the route 16 gate
- Fixed holding left to force past the cycling road guards
- Fixed tower ghost pic not loading after exiting status screen
- Fixed being able to leave the safari zone without clearing the event
- Fixed bumping into invisible shrub
- Minor tweak to Pallet Town object data for Prof Oak
- Added ledge to route 25 to prevent softlock
- Fixed menu not clearing if A is held after saving
- Minor tweaks to the Rival's object data in various maps
- In SET battle mode, Mewtwo has AI when picking moves and prevents you from using master balls (master branch only)
- Male-only and female-only pokemon will show a gender symbol if the feature is active (master branch only)

jojobear13 March 30th, 2021 7:08 PM

Marky Sparky (SparkStarMAS89) is doing a playthrough of Shin Pokemon Red. I would be remiss to not send some traffic his way.

jojobear13 April 10th, 2021 11:03 PM

2 Attachment(s)
Something new coming down the pipe. I managed to implement a basic gamma shader for built-in color correction. See my report over at Decomp & Disassembly. I've attached before & after images. This is great if play with an IPS-moded gameboy or an AGS-101 SP.


All times are GMT -8. The time now is 8:52 AM.


Like our Facebook Page Follow us on Twitter © 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.

Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.