ShadowOne333 / A-Link-to-the-Past-Redux

Source code recreation of A Link to the Past Redux
GNU General Public License v3.0
114 stars 3 forks source link

THE LEGEND OF ZELDA: A LINK TO THE PAST REDUX

Index



A Link to the Past Redux

“The Legend of Zelda: A Link to the Past Redux” is a fork of Conn & qwertymodo’s A Link to the Past DX hack that further modifies the game to include changes to accommodate the game into the overall franchise, as well as renaming stuff badly translated and making changes for characters with official artwork not matching with the sprites/palettes in-game.

This version aims to keep consistence with the overall franchise, along with converting some of the odd palette/sprite choices that didn’t match the original artwork of the game.

Follow the GitHub repository for the full source code of the project: https://github.com/ShadowOne333/A-Link-to-the-Past-Redux

Retranslation Redux:

Additionally, and thanks to the incredible and in-depth work of the guys at Translation Quest (Chicken Knife, nejimakipiyo and Dattebayo), the entirety of the Zelda 3 script has been reworked to be more in-line with the original Japanese script.

Names, locations, items, religious references, all that is changed to make the script a much richer and refined product. NOTE: You DO NOT need to patch Redux first in order to apply this hack. You can apply this by its own over a vanilla/clean ALttP ROM, and then whatever optional patches the user might desire.


Changelog

Please refer to the A Link to the Past DX hack page by qwertymodo and Conn for more information on additional ASM changes over the original A Link to the Past (including L/R Item Switch).


Optional patches

  1. Disable Dash Turning: One of the features of the main Redux hack is a port of the "Ancient Stone Tablets" code of being able to turn while using the Pegasus Boots' dash. However, some people might not like this, as using the dash effectively makes you invincible while running straight with the sword at front, and being able to turn makes it even more of an overpowered feature to some. With this patch, you can now easily disable said feature, and use the Pegasus Boots like they worked originally in A Link to the Past.

  2. Enable FMV for MSU: This patch will enable the loading of the special FMV (Track 35) from the MSU files.

    Please note that the hack itself ALREADY includes MSU-1 track loading, this patch simply enables the loading of that specific track #35 to avoid an issue with the game trying to always load the FMV, despite if the FMV itself exists or not in the same folder, which ends up in a 1~ minute black screen upon loading a new game.

    Please use this patch ONLY if you will add the FMV video in your MSU files. If you don't want the FMV video but still want to use MSU-1 audio, simply IGNORE this patch.

    You can get the FMV files from these links by Qwertymodo and Conn, respectively:

  3. Green Agahnim: Using this will revert the color of Agahnim from Red+Blue to his original Green robe.

  4. Green Agahnim+Triforce Subtitle: Using this will revert the color of Agahnim from Red+Blue to his original Green robe, and also adds the new "TRIFORCE OF THE GODS" subtitle alongside it.

  5. Max Bomb-Arrows Amounts: This patch changes Link default Bombs & Arrows minimum and maximum amounts to be 20 to 99 for Bombs, and 30 to 99 for Arrows.

  6. Mirror Works in Both Worlds: This patch allows the Mirror to travel from both the Light and Dark Worlds (Light - Dark & Dark - Light), making it so that Link can travel between them at will, instead of only being able to use the Mirror to travel from Dark - Light World.

  7. Move Blocks Indefinitely: Gives Link the ability to move blocks (that can be moved) several times.

  8. Original Bomb-Arrows Amounts: This patch reverts Link default Bombs & Arrows minimum and maximum amounts to be those of the original ALttP, those being 10 to 50 for Bombs, and 30 to 70 for Arrows.

  9. Original Pink Hair Link: These patches revert Link's new blonde hair to the original pink hair he had.

  10. Remove Low Health Beep: Completely remove the constant beeping that plays when you’re low on hearts.

  11. Start at Full Hearts (by PowerPanda): Applying this patch will make you start your game at full hearts every time you load your game.

  12. Triforce of the Gods Subtitle): Using this will change the subtitle in the title screen from "A LINK TO THE PAST" to match the original Japanese subtitle of "TRIFORCE OF THE GODS".


Compilation

Windows

For compilation on Windows, you need to download and install CygWin.

When installing Cygwin, be sure to also install git from the list of packages available, or you won't be able to clone the repository from the source.

Once you have it installed, browse to the directory where you downloaded the source code, and start the same steps as the Linux compilation.

(I recompiled the scompress Windows EXE in Cygwin so it works properly with the Windows compilation)

Linux

The source code was developed entirely on Linux, using scompress and flips as sources for compiling both the graphics and the assembly code, respectively. I have compiled both scompress and flips as 32bit binaries and included them into the repository so the user can directly use these without worrying about compiling and creating the executable binaries for each one.

Remember to give the proper permissions for the binaries inside the /bin/ folder to executables with chmod +x asar-standalone and chmod +x flips. In the dire case that trying to compile with the included binaries does not work, or if you get an "Exec format error" or "File not found" error, you'd have to compile both Flips and Asar from source manually:

* Asar: https://github.com/RPGHacker/asar/tree/asar_2_beta
For Asar, you have to switch the branch to `asar_2_beta` with `git checkout asar_2_beta`, and then `cmake src && make` to compile the correct version, or else you'll get errors with some of the macros from the Credits files. You'll also need cmake v3.15 or above to compile Asar properly

* Flips: https://github.com/Alcaro/Flips

* scompress: To compile scompress, enter the directory `/bin/scompress/scompress-master/scompress/`, open terminal in this directory and then do the following:
`cmake . && make`

Afterwards, you should a freshly generated `scompress` binary in the same folder, that should be the correct one to use.
  1. Either download the source code as ZIP, or clone the repository by opening terminal and running git clone https://github.com/ShadowOne333/A-Link-to-the-Past-Redux. Put the downloaded files anywhere in your PC.

  2. Grab your ALttP ROM with the name "Legend of Zelda, The - A Link to the Past (USA).sfc" under the "/rom/" folder.

  3. Open terminal in your Linux distribution, browse to the same folder as the "make.sh" file, and modify its permissions to be an executable script file by doing the following: sudo chmod +x make.sh

  4. Next, execute the script with the following argument if you want to compile only Redux: `./make.sh -r

  5. If you want to compile a custom version of ALttP Redux, you have to choose from a variety of arguments, here's the list of options so far:

    ./make.sh -r Compiles standalone ALttP Redux

    ./make.sh -g Compiles Redux with the Green Agahnim graphics

    ./make.sh -s Compiles Redux with the "TRIFORCE OF THE GODS" Title Screen Subtitle

    ./make.sh -c Compiles Redux with both the Title Screen Subtitle & Green Agahnim graphics

    ./make.sh -t -r Compiles Redux with the Retranslation script

    ./make.sh -t -g Compiles Redux with the Green Agahnim graphics & Retranslation script

    ./make.sh -t -s Compiles Redux with the Subtitle graphics & Retranslation script

    ./make.sh -t -c Compiles Redux with the combined Green Agahnim & Subtitle graphics, and Retranslation script

    ./make.sh -o -r Compiles Redux with the Original menu and HUD graphics

    ./make.sh -o -g Compiles Redux with the Original menu/HUD & Green Agahnim graphics

    ./make.sh -o -s Compiles Redux with the Original menu/HUD & Title Screen Subtitle graphics

    ./make.sh -o -c Compiles Redux with the Original menu/HUD & both the Subtitle + Green Agahnim graphics

    ./make.sh -o -t -r Compiles Redux with the Original menu/HUD graphics and Retranslation script

    ./make.sh -o -t -g Compiles Redux with the Original menu/HUD & Green Agahnim graphics, and Retranslation script

    ./make.sh -o -t -s Compiles Redux with the Original menu/HUD & Subtitle graphics, and Retranslation script

    ./make.sh -o -t -c Compiles Redux with the Original menu/HUD, Green Agahnim & Subtitle graphics, and Retranslation script

  6. If you want specific optional patches to be applied in your complation, open the optional.asm file inside /code/ and uncomment the incsrc xxxx file of the optional patch you desire to include during compilation.

  7. Enjoy the hack!


Instructions

To play The Legend of Zelda: A Link to the Past Redux, the following is required:

Grab the patches from inside the /patches/ folder from the GitHub page, or alternatively, download the .zip file from the Releases page (once a proper release is out) and apply the patch over your Zelda A Link to the Past ROM with Lunar IPS. If you want to apply any of the optional patches, you can use each Optional patch individually from inside the /patches/optional folder depending on your liking over your already patched Zelda A Link to the Past Redux ROM, or you can either compile them manually from the source code, although this is not recommended if you are not familiar with compilations or 65816 assembly.

How to get MSU-1 working with ALttP Redux

Here's an example of how they should be. Let's say your ROM is named "redux.sfc", this how everything else should go (all files should go WITHIN the same folder):

redux.msu
redux.sfc
redux-1.pcm
redux-2.pcm
...
redux-34.pcm

If you change the name of the ROM to anything else, you have to change each instance of "redux" in EACH file to whatever you choose the name to be. The track names should be the EXACT same name of the ROM, and you add a dash and the number for each track accordingly. "loz-redux-1.pcm, loz-redux-2.pcm",etc. For example, I always name my ROM like "The Legend of Zelda - A Link to the Past.sfc"

The Legend of Zelda - A Link to the Past.msu
The Legend of Zelda - A Link to the Past.sfc     <<------Should be an SFC extension for better compatibility with other emulators.
The Legend of Zelda - A Link to the Past-1.pcm
The Legend of Zelda - A Link to the Past-2.pcm
...
The Legend of Zelda - A Link to the Past-34.pcm
The Legend of Zelda - A Link to the Past-35.pcm

One thing you have to take into consideration is that the ROM should be in the same folder as the .msu and all the .pcm files.

NOTE: As mentioned with the "Enable FMV" optional patch, track #35 is the one which contains the FMV, if you are going to patch Redux to enable the FMV, be sure that you have the 35.pcm file in there!


FAQ

A Link to the Past is well known for using compression for almost everything in the game, and also a great number of assets in the game quite limited and almost at the top of their maximum limit.

The entirety of the graphics are compressed in the game, and the map, dungeon and room data have very strict limits when it comes to adding new objects or items in any of them. Heck, even the text format itself is compressed, it uses some sort of "dictionary" that detects certain combination of letters and outputs a single byte that corresponds to 2 or 3 charaters at a time.

Adding to this, the FastROM hack was giving some really iffy problems when attempting a map modification through assembly with a lot of rooms being broken with blocks of random stuff (possibly badly repointed data).

Due to all of these points, it was decided to create diff patches for both the Map Layouts and the Subtitle tilemap.

The way these were created was by compiling a fresh Redux ROM without any of the map or tilemap changes, with all of the coding and graphics injected, and then using that ROM as a base for editing the maps and tilemaps through ZScream. Then, applying the patches first before any other changes, and then patching in the Redux code and injecting the graphics last would output a correct and fully functional Redux ROM with all of the map and subtitle changes working. Thi exact order of compilation was needed, or else, any other combination would give a borked ROM on output.


Credits


License

A Link to the Past Redux is a project licensed under the terms of the GPLv3, which means that you are given legal permission to copy, distribute and/or modify this project, as long as:

  1. The source for the available modified project is shared and also available to the public without exception.
  2. The modified project subjects itself different naming convention, to differentiate it from the main and licensed A Link to the Past Redux project.

You can find a copy of the license in the LICENSE file.