That is a really good idea! I'd love to look into that in the future. Stuff like fixing Emerald's RNG could also be done like that for people who want to update their games
How much could you do, though? The Berry Fix is a workaround, not a patch. You can't patch a ROM except at runtime. Could the Mystery Gift system push patches via some kind of ACE?
Could it not work with multiboots? I'm not sure if the gba itself is able to erase and write to the cartridge, but we'll have to see what is possible or not!
See, THIS is obscure. Every Pokémon "super obscure facts you didn't know" video talks about that Hiker but doesn't elaborate any further. You go the extra mile to inform and entertain. Here's hoping one day the algorithm blesses you like it has the piles and piles of surface level knowledge other creators put out. You do great work.
I really appreciate the effects that you used to explain the different scenes for the cable car sequence. Especially the mountain getting cut into multiple smaller pieces to move them from the right to the left!
The ending music makes it feel like we just finished a long, emotional journey, when it was really just tweaking a couple lines of code. Then again, Poochyena/Zigzagoon have been lost for years, so perhaps this is an emotional reunion after all.
found a shiny metapod in hgss right at 4:37. was bingeing your content while shiny hunting, and i actually got my target! really love how obscure and in depth your content is, it’s definitely something i’m super interested in
I think the -1 is definitely someone fearing that ARRAY_COUNT is going to create an out of bounds scenario by using the array length as an actual index, but since its being used in modulus that wouldnt happen.
I think it's because [rval % (ARRAY_COUNT(hikerGraphicsIds - 1)] will always output 0, 1, or 2, since n % (4-1) can never be 3. Since there are 4 NPCs coded, whichever one takes ID 3 can never be initialized in that line Edit: damn I was wrong, that was sneaky! Using the same rng value to do both the 1/64 check and the ID check is easy enough to overlook, I suppose
to fix this you could make rval a multiple of 5 by doing rval = rval / 64 * 5 and now you can do rval % ARRAY_COUNT(hikergraphids) to get a random value from 0,1,2,3 and get the 4 NPSs
@@suryasuresh533 >so any multiple of 64 % 3 would be 1 64 % 3 = 1 128 % 3 = 2 192 % 3 = 0 the comment was right, however just removing -1 doesn't fix it (and the comment didn't claim that)
I was thinking the - 1 was the culprit at first, but then I realized that it was using the same random value for all of the checks, which, at least in the way they're doing it, isn't a good idea, since the % 64 at the beginning forces only a few select values in and the rest aren't allowed.
It would be really cool if there was a mod that only fixes all the coding errors to see what the developers originally intended for it. 😊 Awesome video! I never knew there was others which I always wondered about there should be other hiker NPCs or at least Pokémon 😅
I know the Pret decompilation has an option to fix known glitches. Alternatively, there's also the RHHideout Expansion, which adds modern mechanics as well as fixing bugs.
Amazing! I remembered seeing the hiker when I was a kid, but it was the only time I saw it so I actually thought I imagined it for years later. It would have been so cool to see the pokemon going down the hill!
Huh... I never even knew this was a mechanic! My man, the dedication you show for this franchise is unrivaled. Godspeed, and good work. Honestly, Game Freak should consider hiring you for code development because you've really got your head on straight with the subject. Here's hoping they take advice from this video when they finally get around to porting the Gen3 games to the Switch's GBA emulator!
I'm hoping and dreaming that one day, we'll see this guy release a "berry glitch update" type of program that fixes the Gen3 Roamer IV glitch (setting every IV outside HP and Attack to 0) that works with legit carts... Thank you for the educational and entertaining video.
That Daganronpa music lol, but this was a great video and it's really interesting seeing the code and how these animations were programmed as well as how the coding mistake was made.
Would love if you could fix the bugs in these games and have a patch file that could be loaded onto the real carts, I love your content keep up the great work, (I hope you do all the E-Reader events as a event cart, would love to see that for these games)😊
years of acadamy training _not_ wasted! shoutouts to years of binary exploitation for teaching me to look out for re-used variables. also, I really feel like calling rng multiple times would've been the better solution in this case purely for clarity.
My guess is that the mistake is that the Rval is locked into always being a multiple of 64, which if you run a modulo of 2,4,8,16 or 32 on will always return 0. I'm guessing that generating a random number on the GBA's ARM7 CPU was a bit more costly, so they tried to use same for the entire sequence, but it would cause this bug. EDIT: I was correct!! All those years spent studying electronics and embedded C have not been a waste!!! XD
I remember seeing one of the NPC, and never seeing them again and wondering whether it ever happened or not... now I finally got my answer nearly 15 years later
You must've worked very hard on this video. You did an awesome job, keep up the good work. Most people wouldn't work so hard on such an obsure thing. It's so fucking insane that someone put in so much quality work making this video.
The tilting camera showing each layer of the cutscene at 1:20 looks phenominal! Also going into detail about each individual aspect that come together to form that cutscene was so cool.
7:34 Im pretty sure that song was in Black and White 1/2, not X & Y. I remember the neighbor rival talking about his sister's purrloin as this song plays in the background
It is in both games! The one from Black and White sounds a little different from this one, and I personally like the slight changes in this X and Y version
The type of content and way you provide it is the best! My favorite channel. Only one I will ever turn on notifications for. Can’t wait til you get more popular and get the recognition you deserve. And thank you for the fix on the distribution rom 🙏
I love the things pret (the decompilation project for pokemon used in this video) allows creators to do - both in easier rom hacking but also especially in analysing the code and decisions post-mortem Great video
The code block only executes if the rval is divisible by 64, and that same rval mod 4 is used to select the hiker. Since 64 is divisible by 4, you will always get index 0 in the hiker array
My attempt to answer why no zigzagoon/poochyena: They are stored as the integer 4: so after the 1/64 chance of a hiker showing up, is rolls again for a 1/4 chance of choosing one of the four hikers 1 to 4. zig/pooch are probably 4, so the minus 1 unfortunately means that they are never rolled since it now rolls between 0 to 3 instead of 1 to 4. I am leaning towards this because I have seen a similar integer mistake a few times before where someone wants to start at 0 so they subtract one which is correct in most cases, but they forget that they already have integers values that start at 1 instead of 0. Edit: brilliant video! ngl even after watching the video I needed to read the comments just to get it sheesh!
I think they’re lamp posts for the NPC’s walking up and down the mountain. I’ve heard about this feature before but it’s interesting to see someone fix it, anyway great video as always.
A sillier, slower and much more impractical method would be to pick a sequence of odd numbers like (63, 31, 15) or (31, 15, 7) and setting rval to rval % [number in the sequence] whenever we need a smaller interval. So values in [64, 65536) are remapped to [0, 63) in a way that changes their parity. In particular, the rval % 4 doesn't have to be 0 anymore. The dependence between mod 4 and mod 2 is solved in the same way. I think halving the modulo would be optimal because it keeps the parity of roughly half the numbers the same and only alternates those of larger numbers. If the initial modulo is larger than 64, then 64 itself would still present us with the "0 mod 4" problem. As this number increases, more multiplies of 64 would remain unfixed. If you want to give that one hiker a higher chance of appearing, I guess this could still be a useful option, but at this point we've already gone uselessly complex. Of course, given all the modulos we're doing here, the probabilities are likely to be very skewed to some NPC/direction combination. ...But at least the original problem is taken care of! That's... good enough, right?
Great video and explanation! I assumed someone was worried about an overflow and threw that -1 in for good measure causing the issue, I can see now how that assumption was wrong! For the solution, I personally would have replaced If ((rval % 64) == 0) with If ((rval % 256)
I find it funny that after all the times I rode the cable car when I played as a child, I never noticed the hiker mechanic, or the guy keeping track of how many times the player has ridden it. I love that on top of that there is a video devoted to the bugs in the programming for the stuff I didn't even notice (I'm a programmer myself).
regarding the pokemon never shown up, the type of array/list they used started a 1, but developers thought that it started at 0, hence the -1 part of the loop? guessing that they used two types of containers, or someone just made a mistake Edit, man didn't even think about the about the Random, just that why I stopped programming
interesting for sure. It almost makes me happy to see, as I do want to be a programmer someday, that even in the biggest games that impact many, there's little bugs here and there. So ill be fine.
I am not sure how that specific language handles it but "%" is often implemented as a remainder operator, and not a modulo one. A remainder operator can return negative numbers, while modulo will never. (if it is c then it is a remainder operator).
I thought something was weird about redoing the MOD operation for choosing spriteID, but figured that the function could just be doing something weird I was pleasantly surprised by your solution
I would ride the Cable Car so many times in a row, just to see what will happen. I remember talking to my friend about the Picnicker and the Hiker and he insisted it was a glitch on my game. I believed they were the trainers of the Jagged Pass walking around the mountain 🙃
so what i want now is for an addition to the code, so that if the npc goes the same direction as you, they appear in the cable car building when you arrive and give you rare items.
Is the bit shifting in your solution really necessary? AFAIK modern compilers will convert integer multiplication/division into bit shifts under the hood whenever possible, so that seems like needless obfuscation. (Loved the vid-I'm just being nit-picky. 😛)
Nintendo seems to have been expecting players to use the Cable Car many times, but that little mistake reduced the amount of things the player can see during their travels.
Just go to with %63 and call it a day? I'll bet that the first coder had 3 npc %1 %2 and default. And another coder came and added the special npc %11 else %7 else %5 else %3 And the 3rd coder came, and figured this was a bug, and they should all have the same chance to appear and ruined it on a %4 basis.
I have a habit of looking on //Comments on a line of code if I can't remember the purpose and the -1 gave it >.> But wow I love how it was a bunch of if else statements.
My guess as to how this made it into the game, while testing the code they removed the "(rval % 64) == 0" to get it to trigger every time and didn't realize how the that bit of code breaks everything
I first gathered footage of each background individually and made it transparent so you can see all of them stacked upon eachother. After I made it look like there was depth with the editing software to make it all seem like it's 3D!
Hmm… I think you could also use (rval % 5) % 2 for the npc direction selection, as the 5 possible modulo conditions for something divisible by 64 are 4, 3, 2, 1, and 0 (although that would trend towards going one direction more than another, it would still at least be a 60-40 chance). I would have probably made a more hacky solution for the spriteId variable by assigning an integer to (rval % 5) - 1, then making an if statement that ensures the assigned int is greater than 0 and manually assigns it to 0 if it’s not., then using that integer to select an index of the hikerGraphicsIds array. Your solution is much simpler and elegant, and follows coding conventions more accurately, that’s just my first thought if I came across a problem like this.
The next step from this is to make an event like the Berry Fix that can correct this error and allow for different hiker events on a legitimate cart
That is a really good idea! I'd love to look into that in the future. Stuff like fixing Emerald's RNG could also be done like that for people who want to update their games
How much could you do, though? The Berry Fix is a workaround, not a patch. You can't patch a ROM except at runtime. Could the Mystery Gift system push patches via some kind of ACE?
Could it not work with multiboots? I'm not sure if the gba itself is able to erase and write to the cartridge, but we'll have to see what is possible or not!
Wouldn't this be a similar process to what imablisey just did with adding the events in via e-reader?
@@CaptainBen10 wouldn't that only work for the poochyena for RS? IIRC FRLG and E all use a more restricting form of mystery gift
See, THIS is obscure. Every Pokémon "super obscure facts you didn't know" video talks about that Hiker but doesn't elaborate any further. You go the extra mile to inform and entertain. Here's hoping one day the algorithm blesses you like it has the piles and piles of surface level knowledge other creators put out. You do great work.
I guess the algorithm has blessed him. This video just showed up in my feed.
@@JosephWithaGyup
Yeah I was also confused why they would never elaborate. This explains everything!
Goppier on his quest to fix all the bugs in emerald.
C A B L E C A R
C A B L E C A R
C A B L E C A R
Gondola
C A R C A B L E
Car cable I need to watch sonic on kids wb
I really appreciate the effects that you used to explain the different scenes for the cable car sequence. Especially the mountain getting cut into multiple smaller pieces to move them from the right to the left!
Great stuff! The code walkthrough is easy to follow and the visuals are on point and pleasing to the eye. The videos keep getting better and better!
get out of my head
I was literally just about to write a comment saying this guy was like the Pokémon-obsessed version of you. Incredible.
What is this, a crossover episode?
Goppier on their way to explain the mechanics of something I never even thought about before
The ending music makes it feel like we just finished a long, emotional journey, when it was really just tweaking a couple lines of code.
Then again, Poochyena/Zigzagoon have been lost for years, so perhaps this is an emotional reunion after all.
What's the title of that ending music though?
@@slykhajiit2 "Emotion" or maybe "Unwavering Heart", from Pokemon Black/White.
@@slykhajiit2it is in the video
Those 'support' sprites are definitely a streetlight sprite they repurposed.
These technical deep dives are icredibly interesting, especially when it involves actual code. Also the graphics in this vid was top tier
found a shiny metapod in hgss right at 4:37. was bingeing your content while shiny hunting, and i actually got my target! really love how obscure and in depth your content is, it’s definitely something i’m super interested in
Congrats on the shiny metapod! Shiny hunting is a lot of fun hahaha
I was, indeed, distracted by the green comments
If the comments are wrong, they're bad comments.
I think the -1 is definitely someone fearing that ARRAY_COUNT is going to create an out of bounds scenario by using the array length as an actual index, but since its being used in modulus that wouldnt happen.
Yes this was also my thought looking at the code, it only serves to create a problem. A rval % (4-1) is always gonna be 0, 1 or 2... never 3.
I think it's because [rval % (ARRAY_COUNT(hikerGraphicsIds - 1)] will always output 0, 1, or 2, since n % (4-1) can never be 3. Since there are 4 NPCs coded, whichever one takes ID 3 can never be initialized in that line
Edit: damn I was wrong, that was sneaky! Using the same rng value to do both the 1/64 check and the ID check is easy enough to overlook, I suppose
Also the comment that pretends to spoil tge solution.
what? why do you say you were wrong, isn't that the reason?
@@nilkonom he was wrong because the rval is always a multiple of 64, so any multiple of 64 % 3 would be 1, you dont get 0, 1, 2
to fix this you could make rval a multiple of 5 by doing rval = rval / 64 * 5 and now you can do rval % ARRAY_COUNT(hikergraphids) to get a random value from 0,1,2,3 and get the 4 NPSs
@@suryasuresh533
>so any multiple of 64 % 3 would be 1
64 % 3 = 1
128 % 3 = 2
192 % 3 = 0
the comment was right, however just removing -1 doesn't fix it (and the comment didn't claim that)
The formulas used to move the player/cable car sprite are just the linear slopes of the cable lines
As soon as you showed the cable car background layering in 3D I instantly subbed - nice work dude!
I was thinking the - 1 was the culprit at first, but then I realized that it was using the same random value for all of the checks, which, at least in the way they're doing it, isn't a good idea, since the % 64 at the beginning forces only a few select values in and the rest aren't allowed.
It would be really cool if there was a mod that only fixes all the coding errors to see what the developers originally intended for it. 😊
Awesome video! I never knew there was others which I always wondered about there should be other hiker NPCs or at least Pokémon 😅
I know the Pret decompilation has an option to fix known glitches. Alternatively, there's also the RHHideout Expansion, which adds modern mechanics as well as fixing bugs.
Amazing! I remembered seeing the hiker when I was a kid, but it was the only time I saw it so I actually thought I imagined it for years later. It would have been so cool to see the pokemon going down the hill!
you know as soon as goppier uploads im clicking that notification
Huh... I never even knew this was a mechanic! My man, the dedication you show for this franchise is unrivaled. Godspeed, and good work. Honestly, Game Freak should consider hiring you for code development because you've really got your head on straight with the subject. Here's hoping they take advice from this video when they finally get around to porting the Gen3 games to the Switch's GBA emulator!
I adore these "unused" sprites, great vid the danganronpa music made this seem way more dramatic haha
I'm hoping and dreaming that one day, we'll see this guy release a "berry glitch update" type of program that fixes the Gen3 Roamer IV glitch (setting every IV outside HP and Attack to 0) that works with legit carts...
Thank you for the educational and entertaining video.
That Daganronpa music lol, but this was a great video and it's really interesting seeing the code and how these animations were programmed as well as how the coding mistake was made.
Would love if you could fix the bugs in these games and have a patch file that could be loaded onto the real carts, I love your content keep up the great work, (I hope you do all the E-Reader events as a event cart, would love to see that for these games)😊
years of acadamy training _not_ wasted!
shoutouts to years of binary exploitation for teaching me to look out for re-used variables.
also, I really feel like calling rng multiple times would've been the better solution in this case purely for clarity.
Wake up babe, new Goppier video just dropped
Finally, the cable car npc's can rest in peace
My guess is that the mistake is that the Rval is locked into always being a multiple of 64, which if you run a modulo of 2,4,8,16 or 32 on will always return 0.
I'm guessing that generating a random number on the GBA's ARM7 CPU was a bit more costly, so they tried to use same for the entire sequence, but it would cause this bug.
EDIT: I was correct!! All those years spent studying electronics and embedded C have not been a waste!!! XD
I remember seeing one of the NPC, and never seeing them again and wondering whether it ever happened or not... now I finally got my answer nearly 15 years later
You must've worked very hard on this video. You did an awesome job, keep up the good work. Most people wouldn't work so hard on such an obsure thing. It's so fucking insane that someone put in so much quality work making this video.
I wanted to say they look like lamp posts, but the sprite when you go off on the upper part suggest them being the support of the cable car
The tilting camera showing each layer of the cutscene at 1:20 looks phenominal! Also going into detail about each individual aspect that come together to form that cutscene was so cool.
Oh man I remember seeing the hiker and then never anything again, wondering if I was crazy
7:34 Im pretty sure that song was in Black and White 1/2, not X & Y. I remember the neighbor rival talking about his sister's purrloin as this song plays in the background
It is in both games! The one from Black and White sounds a little different from this one, and I personally like the slight changes in this X and Y version
The type of content and way you provide it is the best! My favorite channel. Only one I will ever turn on notifications for. Can’t wait til you get more popular and get the recognition you deserve. And thank you for the fix on the distribution rom 🙏
A rom patch to fix this would be nice
They could program how random mons spawn
But couldn't program how random sprites spawn
HOW
I love the things pret (the decompilation project for pokemon used in this video) allows creators to do - both in easier rom hacking but also especially in analysing the code and decisions post-mortem
Great video
The code block only executes if the rval is divisible by 64, and that same rval mod 4 is used to select the hiker. Since 64 is divisible by 4, you will always get index 0 in the hiker array
I feel like the bitshift just makes the code less readable, I'd be very surprised if the compiler didn't optimize a /64
the pylon/lamppost thing is a great example of why art should be analyzed in context.
My attempt to answer why no zigzagoon/poochyena:
They are stored as the integer 4: so after the 1/64 chance of a hiker showing up, is rolls again for a 1/4 chance of choosing one of the four hikers 1 to 4. zig/pooch are probably 4, so the minus 1 unfortunately means that they are never rolled since it now rolls between 0 to 3 instead of 1 to 4. I am leaning towards this because I have seen a similar integer mistake a few times before where someone wants to start at 0 so they subtract one which is correct in most cases, but they forget that they already have integers values that start at 1 instead of 0.
Edit: brilliant video! ngl even after watching the video I needed to read the comments just to get it sheesh!
I think they’re lamp posts for the NPC’s walking up and down the mountain. I’ve heard about this feature before but it’s interesting to see someone fix it, anyway great video as always.
Just want to say, I love these videos - diving into *how* the code in these games work.
Zigzagoons sprite Id is the same as the max size of the array isn't it?
Edit: should've probably took note of modulus lmao
A sillier, slower and much more impractical method would be to pick a sequence of odd numbers like (63, 31, 15) or (31, 15, 7) and setting rval to rval % [number in the sequence] whenever we need a smaller interval. So values in [64, 65536) are remapped to [0, 63) in a way that changes their parity. In particular, the rval % 4 doesn't have to be 0 anymore. The dependence between mod 4 and mod 2 is solved in the same way.
I think halving the modulo would be optimal because it keeps the parity of roughly half the numbers the same and only alternates those of larger numbers.
If the initial modulo is larger than 64, then 64 itself would still present us with the "0 mod 4" problem. As this number increases, more multiplies of 64 would remain unfixed. If you want to give that one hiker a higher chance of appearing, I guess this could still be a useful option, but at this point we've already gone uselessly complex.
Of course, given all the modulos we're doing here, the probabilities are likely to be very skewed to some NPC/direction combination.
...But at least the original problem is taken care of!
That's... good enough, right?
Great video and explanation! I assumed someone was worried about an overflow and threw that -1 in for good measure causing the issue, I can see now how that assumption was wrong! For the solution, I personally would have replaced If ((rval % 64) == 0) with If ((rval % 256)
I find it funny that after all the times I rode the cable car when I played as a child, I never noticed the hiker mechanic, or the guy keeping track of how many times the player has ridden it. I love that on top of that there is a video devoted to the bugs in the programming for the stuff I didn't even notice (I'm a programmer myself).
Gotta be honest, the Danganronpa music threw me for a loop there
I absolutely love the deep dives into the code, amazing video!
regarding the pokemon never shown up, the type of array/list they used started a 1, but developers thought that it started at 0, hence the -1 part of the loop?
guessing that they used two types of containers, or someone just made a mistake
Edit, man didn't even think about the about the Random, just that why I stopped programming
bro your video content is actually insane, you are opening my eyes years after I've played this game
Only ever saw the hiker twice in my life, amazing vid
This felt like Naegi was telling me how somebody committed a murder on a cable car with bad code or something.
"8 minutes later"
Ah yes, the cable car in a GBA Pokemon game 🚠
interesting for sure. It almost makes me happy to see, as I do want to be a programmer someday, that even in the biggest games that impact many, there's little bugs here and there. So ill be fine.
seeing my favorite game get meticulously picked apart similar to Chickasauras, theZZAZZGlitch, and Crystal_ absolutely warms my childhood
absolutely amazing video! Gen 3 is my favourite and most played gen and I never knew this was even a thing.
Got that Pokémon Snap soundtrack🥵
I had no idea the mountain pooch or zig were even a thing lol
I enjoy your editing in this video, and greatly appreciate how you display the music being played in video.
This is still so obscure since most players only ride the cable car once because the plot requires it.
Finding new information about a Pokemon game is always worth watching.
New Goppier video!
Neat analysis video! Thanks for uploading!
Hey dude! Would love to see more from you. Your video's are great, and of great quality. Hope we will see more from this channel in the future 😄
Recently uploaded again after a year!
@@Goppier I saw! Great video as always 👌
I am not sure how that specific language handles it but "%" is often implemented as a remainder operator, and not a modulo one. A remainder operator can return negative numbers, while modulo will never. (if it is c then it is a remainder operator).
I thought something was weird about redoing the MOD operation for choosing spriteID, but figured that the function could just be doing something weird
I was pleasantly surprised by your solution
I remember seeing the camper on my cartridge back in like 2003/4. No one at school believed me that I saw it, I barely believed it saw it myself!
I would ride the Cable Car so many times in a row, just to see what will happen. I remember talking to my friend about the Picnicker and the Hiker and he insisted it was a glitch on my game. I believed they were the trainers of the Jagged Pass walking around the mountain 🙃
so what i want now is for an addition to the code, so that if the npc goes the same direction as you, they appear in the cable car building when you arrive and give you rare items.
These videos are always so well put together and explained so clearly, nice one Goppier.
Is the bit shifting in your solution really necessary? AFAIK modern compilers will convert integer multiplication/division into bit shifts under the hood whenever possible, so that seems like needless obfuscation. (Loved the vid-I'm just being nit-picky. 😛)
Looks like they forgot to compute a new rval after the initial modulus conditional operation
The editing in this video is fantastic
Goppier upload day is a good day
YESSSSS ANOTHER VIDEO FROM THE GEN 3 GOAT
the cable car support beams are now ruined for me, I can't unsee the light post
This is a great deep dive on an extremely minor thing, nice work.
Nintendo seems to have been expecting players to use the Cable Car many times, but that little mistake reduced the amount of things the player can see during their travels.
Just go to with %63 and call it a day?
I'll bet that the first coder had 3 npc %1 %2 and default.
And another coder came and added the special npc %11 else %7 else %5 else %3
And the 3rd coder came, and figured this was a bug, and they should all have the same chance to appear and ruined it on a %4 basis.
Wow I thought I was crazy remembering seeing a hiker once when I was a kid, the green guy, love these videos
Would it be possible for you to make patches available for the requisite games? I would love to add this to my Emerald runs!
Hopefully it's possible through multiboot, but I'll have to look into it first to be sure
I'm just commenting for the algorith
I have a habit of looking on //Comments on a line of code if I can't remember the purpose and the -1 gave it >.>
But wow I love how it was a bunch of if else statements.
I can't code why am I watching this
That ending really didn't have to have a sad soundtrack
I need to see what it looks like when the NPCs go up the mountain instead of down
My guess as to how this made it into the game, while testing the code they removed the "(rval % 64) == 0" to get it to trigger every time and didn't realize how the that bit of code breaks everything
One of the best uses of danganronpa music ive seen in awhile
the 3d transition you make at 1:20 is so cool!! how'd you make them?
I first gathered footage of each background individually and made it transparent so you can see all of them stacked upon eachother. After I made it look like there was depth with the editing software to make it all seem like it's 3D!
Generation 3 games are always filled with Mysteries despite whether you Completed or Not
Very interesting stuff! How did you get the source code?
There is a repo on github for the decompilation of emerald
Any news on the gen 2 to 3 transfer project?
Currently working hard on the update before release later this year
Thank you! Very hyped!!
coming back ?
Just uploaded a couple days ago!
The feature of it was probably added very late into development and was likely rushed.
Hmm… I think you could also use (rval % 5) % 2 for the npc direction selection, as the 5 possible modulo conditions for something divisible by 64 are 4, 3, 2, 1, and 0 (although that would trend towards going one direction more than another, it would still at least be a 60-40 chance). I would have probably made a more hacky solution for the spriteId variable by assigning an integer to (rval % 5) - 1, then making an if statement that ensures the assigned int is greater than 0 and manually assigns it to 0 if it’s not., then using that integer to select an index of the hikerGraphicsIds array. Your solution is much simpler and elegant, and follows coding conventions more accurately, that’s just my first thought if I came across a problem like this.
Amazing music selections!
The title made me really confused at first lol