kabili207 / zora-sharp Goto Github PK
View Code? Open in Web Editor NEWA decoder for the password system used in the Legend of Zelda Oracle of Ages and Oracle of Seasons games.
License: GNU Lesser General Public License v3.0
A decoder for the password system used in the Legend of Zelda Oracle of Ages and Oracle of Seasons games.
License: GNU Lesser General Public License v3.0
I thought leaving it in would be ok, but I was mistaken. In Ages, it checks for "None" (0) and gives you Moosh in that case. In Seasons, though, it doesn't check at all. It stays at "0" and you get no companion. A linked-game secret made for Seasons in this way will not be completable!
Post number 4 at http://www.gamefaqs.com/boards/472313-the-legend-of-zelda-oracle-of-ages/66644736 might help with figuring it out.
I didn't know of any way of bringing this to your attention other than creating a new issue.
Hello, thanks for following my repo. I noticed in your MemorySecret.cs load function you loop through all 4 combinations to find a match (and commented "it's ugly but it works"). I believe IsReturnSecret should always be true for a 1 bit immediately after the memory ID, as decodedSecret[24] in your code. The TargetGame can then be deduced from that and the following bit. I found that the target game could be either Seasons or Ages depending on which game was started. The other pair are the hero secret, so in my own code I xor against the initial game in the sequence of 4 to derive the memory event names in the GUI.
I've done some work on conversion code here, which you might be able to adapt and hopefully our secrets should match.
If you have a moment, could you try the Java editor I put together? There's a download link here, only tested on Mac but should display with icons on the tabs and automatically repopulate the secrets when one is entered on the furthest tab or values changed in the first one. I've tested a lot of secret combinations and had success with them so far. (There were quite a few mistakes in the old Java implementation I hacked together). Do you have any suggestions? Thanks!
https://bitbucket.org/alexbramham/zelda-oracles-api/downloads/zelda-oracles.jar
This is the correct one:
private static readonly byte[] Cipher =
{
21, 35, 46, 4, 13, 63, 26, 16,
58, 47, 30, 32, 15, 62, 54, 55,
9, 41, 59, 49, 2, 22, 61, 56,
40, 19, 52, 50, 1, 11, 10, 53,
14, 27, 18, 44, 33, 45, 37, 48,
25, 42, 6, 57, 60, 23, 51, 24
};
As you can see, it ends with 24, which is needed to decode the checksum byte when the cipher key is 7. Also, it starts with 21 instead of 7, this corrects the alternating 0s and 1s when decoding some secrets.
There are currently four unknown bit values used when creating or parsing a game secret.
Considering 58 and 59 are located right next to each other, it's possible that they hold a 2-bit integer value (0, 1, 2, or 3). There is also the possibility that all four bits form an integer value (0 through 15). Bits 58 and 59 are part of the child's behavior. What the values actually represent is still unknown.
As @M1CR0H4CK3R pointed out in issue #1, one or more of these values is likely used to store whether or not Maple has the vacuum cleaner.
The XOR logic for cipher generation as described by 39ster only works for about 25% of game IDs. I suspect there is a simpler formula used that I am currently overlooking.
There is currently no way to create secrets for a continuation of a Hero's Quest. Consider changing "Game Type" radio buttons into checkboxes.
I am making an Oracle fangame and intend to make my game compatible with every Game and Ring Secret available in the original games, but I need to know how a secret is generated to make my game understand the passwords. Can you help me ?
There are various combinations of values that could result in unexpected behavior when a secret is used. Functions to validate a secret should be created to check for these cases.
This library now has a Blazor implementation in a form of an installable PWA.
You can find said implementation here.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.