Sign in

darkeye

@darkeye.bsky.social
115 followers 0 following 68 posts
PostsRepliesMedia
darkeye @darkeye.bsky.social · 07/02/2026
It's interesting because almost every FE game has some mechanism to prevent empty levels. The Switch ones will literally rig it so that you get at least two stat gains. This "high" you get from getting a good level is so fundamental to the game that they manipulate probability to force it to happen
010
darkeye @darkeye.bsky.social · 04/06/2025
I think you're right to be skeptical; it just seems ridiculous. But that's exactly why I appreciate the decomp projects; having reverse-engineered source code can settle a lot of questions. I figured I should post the code for the other two I mentioned just for transparency's sake:
Code from the OoT decomp project for the metal bars in Ganon's Castle. This code demonstrates that the developers put a check in the game to prevent the bars from opening under certain circumstances. Unlike the anti-piracy check with Zelda's hair, this one does *not* check the CIC chip.Code from the OoT decomp project showing the anti-piracy check involved with fishing. Specifically, if the code detects that the game has been pirated, it sets sReelLock to a non-zero value, which will cause problems in another part of the code (specifically `Fishing_UpdateFish`)
010
darkeye @darkeye.bsky.social · 04/06/2025
I probably wouldn't believe it either without the code. But here's a picture from a more accurate emulator showing it too. From what I can tell, there are only three checks: - the Zelda's hair one - fish will always let go after 50 frames - the bars in the Ganon's Castle escape sequence won't open
A picture of Zelda's hair scaled weirdly on the ares emulator, a modern and accurate N64 emulator. To produce this image, I modified the code so that the matrix scaling in my previous post would always occur.
110
darkeye @darkeye.bsky.social · 04/06/2025
They deliberately and specifically blew up Zelda's hair (there are multiple different variations of Zelda in the code, and it only affects the one that shows up in this cutscene). They even had to remove it for the GameCube versions. You can see the code responsible in the OoT decompilation project:
Source code from the Ocarina of Time matching decompilation project. It shows a matrix involved with Zelda's hair being scaled differently if the anitpiracy check fails.
100
darkeye @darkeye.bsky.social · 02/04/2025
It sounds like they're using some sort of software compatibility layer? www.nintendo.com/us/whatsnew/... Specifically, "the process of converting game data for Switch to run on Switch 2 is performed on a real-time basis as the data is read in." Wouldn't surprise me if there are bugs as a result
nintendo.com
Ask the Developer Vol. 16: Nintendo Switch 2 — Part 4 - News - Nintendo Official Site
This article has been translated from the original Japanese content. This interview was conducted before the system was released. In this 16th volume of Ask the Developer, an interview series in which...
010
darkeye @darkeye.bsky.social · 11/12/2024
Happy to announce the Majora's Mask decompilation project reached 100% completion for the US N64 version! Still tons of work to be done (other versions, more documentation, fixing fake matches, etc.), but an incredibly satisfying end to years of work. Thanks to everyone who has contributed to this!
A chart showing Majora's Mask decompilation percentage over time. As of December 10th, every single metric is at 100% for the US N64 version
530085
Reposted by darkeye
aja @ajarmar.bsky.social · 23/11/2024
We just released v4.6.1 of Universal Pokemon Randomizer ZX (surprise!) It's a pretty small changelog, but importantly "Fix Music" for static Pokemon works in BW2 again, among a few other changes. github.com/Ajarmar/univ...
github.com
Release Universal Pokemon Randomizer ZX v4.6.1 · Ajarmar/universal-pokemon-randomizer-zx
Click here to read the changelog for v4.6.1. Download the randomizer below by clicking on PokeRandoZX-v4_6_1.zip. After downloading, extract the contents of the zip file to a folder on your compute...
062
darkeye @darkeye.bsky.social · 23/11/2024
In this video, I set the blue dog's position to be the same as before, but I also update their "race status" variable to act as if they've passed the appropriate points. This allows me to cheat egregiously but still win. (4/4): www.youtube.com/watch?v=pSZY...
youtube.com
1511249640909602820 jQMW QGi7iS wp0m
YouTube video by darkeye14
020
darkeye @darkeye.bsky.social · 23/11/2024
To be more specific, a dog must pass through points 9 and 11 (in that order) to finish the race. These numbers are a bit strange, because the racetrack has a total of 45 points! (3/4)
130
darkeye @darkeye.bsky.social · 23/11/2024
This is because the racetrack is effectively just a bunch of points that the dogs run along, and there's a system in place to make sure that only dogs that have crossed specific points are allowed to finish the race. (2/4)
110
darkeye @darkeye.bsky.social · 23/11/2024
The dog race in Majora's Mask has a very rudimentary form of anti-cheat. In this video, I edit the blue dog's position to be inside the goal shortly after the race begins, but I still lose (1/4): www.youtube.com/watch?v=GX2o...
youtube.com
1511249593073238017 Lj4osIJTrXuhzUWH
YouTube video by darkeye14
171
darkeye @darkeye.bsky.social · 23/11/2024
As a result, if an Eeno is in the middle of submerging when it's time to combine, it will have a target scale of 15, which is 1500x larger than intended. If it absorbs other Eenos, it will grow into a Mega Eeno (6/6)
030
darkeye @darkeye.bsky.social · 23/11/2024
When the Eenos start combining, the game usually sets this variable to 0.01, which is their normal scale. But, bizarrely, they specifically go out of their way *not* to do this when an Eeno is in the middle of submerging underground when they all start combining (5/6)
An image of decompiled source code for Majora's Mask. It shows strange behavior described in the post as it exists in the code.
120
darkeye @darkeye.bsky.social · 23/11/2024
You probably noticed that before they started combining, the target scale was 6 and 15. This is because the two variables I've talked about are actually *the same variable*. They reused the same float to hold both the animation frame numbers and the target scale (4/6)
110
darkeye @darkeye.bsky.social · 23/11/2024
The Eeno also has a variable that keeps track of its "target scale" when the split-up Eenos all combine into one. The Eenos that get absorbed have a target scale of 0 (which makes them shrink and disappear), while the large Eeno has a target scale of 2x the normal scale (3/6)
110
darkeye @darkeye.bsky.social · 23/11/2024
The Eeno has a variable that tracks which frame in its animation it should do something with its snowball. This video shows that on frame 6 of its snowball making animation, the snowball appears in its hand, and on frame 15 of the throwing animation, the snowball leaves its hand (2/6)
110
darkeye @darkeye.bsky.social · 23/11/2024
You may have seen this video from indextic showing off the Mega Eeno glitch, but why does it happen? I did some research and I think I know what's going on (1/6): www.youtube.com/watch?v=EI__...
youtube.com
THE MEGA EENO
YouTube video by Indextic
1133
darkeye @darkeye.bsky.social · 23/11/2024
This is either a classic off-by-one oversight, or it's intentional on the developer's part to introduce even more variance into the race. It's impossible to say without asking a developer, though the same behavior *is* present in MM3D. (9/9)
020
darkeye @darkeye.bsky.social · 23/11/2024
The end result of this is that there are two "lying dogs". One dog says it's in good condition, but is actually in normal condition. Another dog says it's in normal condition, but is actually in bad condition. (8/9)
120
darkeye @darkeye.bsky.social · 23/11/2024
I made a mod that makes it so dogs that are actually in bad condition are magenta. As you can see, I picked up a dog that indicates it's in normal condition (since the text starts with "Rrr-Ruff!"), but when the race starts, you can clearly see it's in bad condition. (7/9)
110
darkeye @darkeye.bsky.social · 23/11/2024
In particular, it adds the "condition value" to 0x3539. This is off-by-one compared to EnDg! The same ranges shown in my third tweet still apply to EnRacedog, so a dog that *says* it's in normal condition when you pick it up can *actually* be in bad condition when racing. (6/9)
110
darkeye @darkeye.bsky.social · 23/11/2024
However, there are actually two separate dog actors. When you're picking your dog, you're interacting with EnDg. When the dog race is going, you're watching EnRacedog run around. And EnRacedog has its own way of determining a dog's condition. (5/9)
100
darkeye @darkeye.bsky.social · 23/11/2024
To make the race more variable, the condition of the dogs is decided randomly when you load into the racetrack. To determine what text to show when you pick them up, they add this "condition value" to 0x3538 (the first text ID used for racing dogs). (4/9)
100
darkeye @darkeye.bsky.social · 23/11/2024
As you can see, text IDs 0x3538 to 0x353D indicate good condition, text IDs 0x353E to 0x3541 indicate normal condition, and text IDs 0x3542 to 0x3546 indicate bad condition. They're just three simple contiguous blocks of text. (3/9)
100
darkeye @darkeye.bsky.social · 23/11/2024
The dogs can either be in good, normal, or bad condition. They indicate this in their text; the text that starts with "Ruff!" indicates good condition, the text that starts with "Rrr-Ruff!" indicates normal condition, etc. (2/9)
A screenshot of a text dump of Majora's Mask, showcasing the various dog messages
100
darkeye @darkeye.bsky.social · 23/11/2024
Found some very strange behavior regarding the dogs in the Doggy Racetrack in MM that's either an oversight or some bizarre intended behavior. (1/9)
130
darkeye @darkeye.bsky.social · 23/11/2024
One last thing: to my eyes, it looks like Grezzo drew some inspiration from the glitchy Ocarina of Time stick when they were remaking the game for the 3DS. What do you think? (8/8)
An image of Link holding a Deku Stick in Ocarina of Time 3D. A striped pattern is visible on the stick, similar to the pattern seen in the first image in this thread.
041
darkeye @darkeye.bsky.social · 23/11/2024
That explains why the sticks look different, but what would the stick look like if you fixed these glitches? Behold, the glitch-free stick. It looks...kind of boring? I can see why they kept the bug in place, since it looks pretty bland without it (7/8)
Link holding a Deku Stick close to the camera after the aforementioned bug has been fixed. The stick has a uniform texture and partially blends in with the background.
161
darkeye @darkeye.bsky.social · 23/11/2024
Despite being unused in Majora's Mask, these joint tables still remain, and the table used for Child Link with the Hylian Shield happens to be the first thing after the Deku Stick texture. Thus, MM treats some limb rotations as if they were part of the Deku Stick texture (6/8)
121
darkeye @darkeye.bsky.social · 23/11/2024
When you change equipment in the pause menu, the image of Link can change as well. These are *not* static images loaded from the ROM; they are created dynamically by positioning Link's limbs using something called a "joint table", which tell the game how to rotate his limbs (5/8)
121
darkeye @darkeye.bsky.social · 23/11/2024
So what data is after the stick texture? In Ocarina of Time, it's Link's hair texture. In Majora's Mask, it's more complicated, and to explain it, I need to partially explain...the Ocarina of Time pause menu (4/8)
131
darkeye @darkeye.bsky.social · 23/11/2024
As a result, some garbage is used to texture the stick. Specifically, it will treat some of the data after the Deku Stick texture as if it was *part of* that texture. The reason the stick looks different is simply because there is different data after the stick texture. (3/8)
131
darkeye @darkeye.bsky.social · 23/11/2024
The bug exists in the Deku Stick's display list, which are a series of commands sent to the N64 to draw the stick. One of those commands essentially tries to load a 16x16 pixel texture...but the Deku Stick texture is only 8x8 pixels! (2/8)
A highlight of decompiled code from Ocarina of Time showing how the Deku Stick texture is being loaded
131
darkeye @darkeye.bsky.social · 23/11/2024
Observant players of the N64 Zelda games may have noticed that the Deku Stick looks different between Ocarina of Time and Majora's Mask. You might think this is simply an artistic difference, but it's actually the result of a bug (1/8)
Link holding a Deku Stick close to the camera in Ocarina of Time. The stick has a striped texture.Link holding a Deku Stick close to the camera in Majora's Mask. In contrast with the previous image, this stick has odd diagonal patterns on it.
1124
darkeye @darkeye.bsky.social · 13/11/2024
The Gorman Bros. in Majora's Mask have unused animations for walking, running, and jumping. Ingo didn't have these animations in OoT; they were newly added in MM, but were never used.
130
darkeye @darkeye.bsky.social · 20/03/2024
The male voice is pretty good too. I be in my girl's ear like: twitter.com/dvdfu/status/1770514293…
000
darkeye @darkeye.bsky.social · 03/12/2023
I came across this thread by @dannyb21892 the other day: t.co/CgGBpsH3Eu And I wanted to figure out why this glitch happens. So I made a little video which hopefully explains why pausing and unpausing can change your sword hitbox: t.co/O36CJ4wREV
youtube.com
How Sword Extension Works in Ocarina of Time and Majora's Mask
020
darkeye @darkeye.bsky.social · 24/04/2023
The Inverted Stone Tower Wizrobe can also die comically high in the air
010
darkeye @darkeye.bsky.social · 24/04/2023
The Wizrobe at the top of Snowhead Temple can also die in midair because of the same bug:
110
darkeye @darkeye.bsky.social · 24/04/2023
Earlier today, @Kaztalek and I investigated why this Wizrobe in the Secret Shrine can softlock: www.youtube.com/watch?v=pLudl60Rmz0 I wrote a pastebin explaining it, but in short, it's a random 2/3 or 1/3 chance of softlocking the game if you get the quick kill: pastebin.com/0yMxdW7t
youtube.com
Wiztroll
130
darkeye @darkeye.bsky.social · 10/02/2023
Universal Pokemon Randomizer ZX v4.6.0 just released! Along with a lot of fixes, you can now update Pokemon/move stats to Gen 9, and there's a new setting to guarantee that Pokemon will be caught. Download and read the full changelog here: t.co/G0MUv8HFq4
github.com
Release Universal Pokemon Randomizer ZX v4.6.0 · Ajarmar/universal-pokemon-randomizer-zx
Click here to read the changelog for v4.6.0. Download the randomizer below by clicking on PokeRandoZX-v4_6_0.zip. After downloading, extract the contents of the zip file to a folder on your compute...
000
darkeye @darkeye.bsky.social · 24/01/2023
If you backflip over this particular fence post in southwestern Termina Field, you can get Link completely stuck. All you can do is pause the game and wait for the moon to crash twitter.com/SuperPodSaga/status/161…
011
darkeye @darkeye.bsky.social · 20/10/2022
Odolwa has this strange, partially-glitched animation that is never used in the final game. Hard to tell what they were going for with this one.
020
darkeye @darkeye.bsky.social · 29/08/2022
POV: You're Ganon at the end of The Legend of Zelda: Ocarina of Time
000
darkeye @darkeye.bsky.social · 26/08/2022
I discovered another obscure Wizrobe interaction recently; you can neutralize the Fire Wizrobe's attacks with Ice Arrows. Sadly, the reverse is not true with Ice Wizrobes, but it's still pretty cool.
010
darkeye @darkeye.bsky.social · 23/08/2022
Might be old news to some, but you can destroy the Wizzrobe's illusions/ghosts with Deku Nuts. They play a sound effect that sounds extremely similar to Boos when you do so; I don't think this SFX appears anywhere else in the game.
050
darkeye @darkeye.bsky.social · 20/08/2022
Two things to note: - The only way to stop them once they start doing this is to put on the Stone Mask, which sets them back to normal - Since this behavior is unfinished, it doesn't set any animations while it's running. What you see is my best guess for how it should look (2/2)
010
darkeye @darkeye.bsky.social · 20/08/2022
The dragonflies in Majora's Mask have unused code which makes them patrol the area in large circles and make wide banking turns when they run into walls. In this video, I forced the dragonfly to do this unused behavior after every attack (1/2)
110
darkeye @darkeye.bsky.social · 15/07/2022
Universal Pokemon Randomizer ZX v4.5.1 just released! Along with a few fixes and tweaks, there's now a batch randomization option, and "Make Evolutions Easier" now reduces the happiness needed for friendship evos. Download and read the full changelog here: t.co/3TaQ7JdIry
github.com
Release Universal Pokemon Randomizer ZX v4.5.1 · Ajarmar/universal-pokemon-randomizer-zx
Click here to read the changelog for v4.5.1. Download the randomizer below by clicking on PokeRandoZX-v4_5_1.zip. After downloading, extract the contents of the zip file to a folder on your compute...
000
darkeye @darkeye.bsky.social · 25/03/2022
We released Universal Pokemon Randomizer ZX v4.4.0 today. It mostly consists of bug fixes, but there is one new feature: Force Dual Types for type randomization: github.com/Ajarmar/universal-pokemo…
github.com
Release Universal Pokemon Randomizer ZX v4.4.0 · Ajarmar/universal-pokemon-randomizer-zx
Click here to read the changelog for v4.4.0. Download the randomizer below by clicking on PokeRandoZX-v4_4_0.zip. After downloading, extract the contents of the zip file to a folder on your compute...
000