Coder Social home page Coder Social logo

zelda3's Introduction

Zelda3

A reimplementation of Zelda 3.

Our discord server is: https://discord.gg/AJJbJAzNNJ

About

This is a reverse engineered clone of Zelda 3 - A Link to the Past.

It's around 70-80kLOC of C code, and reimplements all parts of the original game. The game is playable from start to end.

You need a copy of the ROM to extract game resources (levels, images). Then once that's done, the ROM is no longer needed.

It uses the PPU and DSP implementation from LakeSnes, but with lots of speed optimizations. Additionally, it can be configured to also run the original machine code side by side. Then the RAM state is compared after each frame, to verify that the C implementation is correct.

I got much assistance from spannerism's Zelda 3 JP disassembly and the other ones that documented loads of function names and variables.

Additional features

A bunch of features have been added that are not supported by the original game. Some of them are:

Support for pixel shaders.

Support for enhanced aspect ratios of 16:9 or 16:10.

Higher quality world map.

Support for MSU audio tracks.

Secondary item slot on button X (Hold X in inventory to select).

Switching current item with L/R keys.

How to Play:

Option 1: Launcher by RadzPrower (windows only) https://github.com/ajohns6/Zelda-3-Launcher

Option 2: Building it yourself

Visit Wiki for more info on building the project: https://github.com/snesrev/zelda3/wiki

Installing Python & libraries on Windows (required for asset extraction steps)

  1. Download Python installer and install with "Add to PATH" checkbox checked
  2. Open the command prompt
  3. Type python -m pip install --upgrade pip pillow pyyaml and hit enter
  4. Close the command prompt

Compiling on Windows with TCC (1mb Tiny C Compiler)

  1. Download the project by clicking "Code > Download ZIP" on the github page
  2. Extract the ZIP to your hard drive
  3. Place the USA rom named zelda3.sfc in the root directory.
  4. Double-click extract_assets.bat in the main dir to create zelda3_assets.dat in that same dir
  5. Download TCC and extract to the "\third_party" subfolder
  6. Download SDL2 and extract to the "\third_party" subfolder
  7. Double-click run_with_tcc.bat in the main dir to create zelda3.exe in that same dir
  8. Configure with zelda3.ini in the main dir

Compiling on Windows with Visual Studio (4.5gb IDE and compiler)

Same Steps 1-4 above
8. Double-click Zelda3.sln
9. Install the Desktop development with C++ workload with the VS Installer if you don't have it already (it should prompt you to do this).
10. Change "debug" to "release" in the top dropdown
12. Choose "build > build Zelda3" in the menu to create zelda3.exe in the "/bin/release" subfolder
13. Configure with zelda3.ini in the main dir

Installing libraries on Linux/MacOS

  1. Open a terminal
  2. Install pip if not already installed
python3 -m ensurepip
  1. Clone the repo and cd into it
git clone https://github.com/snesrev/zelda3
cd zelda3
  1. Install requirements using pip
python3 -m pip install -r requirements.txt
  1. Install SDL2
  • Ubuntu/Debian sudo apt install libsdl2-dev
  • Fedora Linux sudo dnf install SDL2-devel
  • Arch Linux sudo pacman -S sdl2
  • macOS: brew install sdl2 (you can get homebrew here)

Compiling on Linux/MacOS

  1. Place your US ROM file named zelda3.sfc in zelda3
  2. Compile
make
Advanced make usage ...
make -j$(nproc) # run on all core
make clean all  # clear gen+obj and rebuild
CC=clang make   # specify compiler

Nintendo Switch

You need DevKitPro and Atmosphere installed.

(dkp-)pacman -S git switch-dev switch-sdl2 switch-tools
cd platform/switch
make # Add -j$(nproc) to build using all cores ( Optional )
# You can test the build directly onto the switch ( Optional )
nxlink -s zelda3.nro

More Compilation Help

Look at the wiki at https://github.com/snesrev/zelda3/wiki for more help.

The ROM needs to be named zelda3.sfc and has to be from the US region with this exact SHA256 hash 66871d66be19ad2c34c927d6b14cd8eb6fc3181965b6e517cb361f7316009cfb

In case you're planning to move the executable to a different location, please include the file zelda3_assets.dat.

Usage and controls

The game supports snapshots. The joypad input history is also saved in the snapshot. It's thus possible to replay a playthrough in turbo mode to verify that the game behaves correctly.

The game is run with ./zelda3 and takes an optional path to the ROM-file, which will verify for each frame that the C code matches the original behavior.

Button Key
Up Up arrow
Down Down arrow
Left Left arrow
Right Right arrow
Start Enter
Select Right shift
A X
B Z
X S
Y A
L C
R V

The keys can be reconfigured in zelda3.ini

Additionally, the following commands are available:

Key Action
Tab Turbo mode
W Fill health/magic
Shift+W Fill rupees/bombs/arrows
Ctrl+E Reset
P Pause (with dim)
Shift+P Pause (without dim)
Ctrl+Up Increase window size
Ctrl+Down Decrease window size
T Toggle replay turbo mode
O Set dungeon key to 1
K Clear all input history from the joypad log
L Stop replaying a shapshot
R Toggle between fast and slow renderer
F Display renderer performance
F1-F10 Load snapshot
Alt+Enter Toggle Fullscreen
Shift+F1-F10 Save snapshot
Ctrl+F1-F10 Replay the snapshot
1-9 Load a dungeons playthrough snapshot
Ctrl+1-9 Run a dungeons playthrough in turbo mode

License

This project is licensed under the MIT license. See 'LICENSE.txt' for details.

zelda3's People

Contributors

cowsoftware avatar dps2004 avatar duhow avatar fitzroyx avatar goodlyay avatar hgdagon avatar jasonshearer avatar jmakin-godaddy avatar keatongreve avatar kiritodv avatar lifning avatar makolyte avatar nutzzz avatar patrickmollohan avatar programmbauer avatar snesrev avatar stspdotname avatar ultrahdr avatar vanfanel avatar victorxpde avatar xander-haj avatar xcom169 avatar yne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zelda3's Issues

FR: Fill rubies, bombs, and arrows

As the title says. I figured this is a decent feature request since you have fill magic and life. Unless those are more difficult to implement.

P.S. This is awesome!

SDL is a requirement for building

Built on Windows 11 with Visual Studio 2022. SDL is expected to be installed and prebuilt somewhere under the D drive.

I was able to download SDL, build it, and redirect the Release|x64 configuration to my local copy, but you may want to include explicit instructions in the README or similar.

After adding the include directory to the project settings, manually changing the linker dependencies to my local path to SDL2.lib and SDL2main.lib, and copying SDL.dll into the output directory, it's working fine!

Possible duplicate of #2

Fullscreen is broken on Manjaro Linux

when I fullscreen the game, my entire screen glitches out except for the top left corner of the screen, where the game is running in normal size.

OS: Manjaro Linux
GPU: AMD RX 5700
CPU: AMD Ryzen 5 3600
window manager: kwin
display server: X11

Compilation error

Hi, I'm having an issue when I'm trying to run compile_ressources.py

[emmanuel@arch tables]$ python3 compile_resources.py
Traceback (most recent call last):
File "/home/emmanuel/zelda3/tables/compile_resources.py", line 812, in <module> print_all()
File "/home/emmanuel/zelda3/tables/compile_resources.py", line 799, in print_all print_dungeon_rooms()
File "/home/emmanuel/zelda3/tables/compile_resources.py", line 734, in print_dungeon_rooms print_int_array('kDungAttrsForTile_Offs', ROM.get_words(0x8e9000, 21), 'uint16', False, 16, file = f)
NameError: name 'ROM' is not defined

Fullscreen Support

Normally you can press Alt + Enter or one of the F keys (F11, F12 etc) to make PC ports of games go into fullscreen. A fullscreen option for this port is essential.

Wonky d-pad when playing with a DualShock 4 controller?

I'm playing with a DualShock 4 controller (wired via USB) and getting some wonky behavior with the d-pad. When moving Link, he'll randomly stop moving, as if the d-pad is no longer registering. The analog doesn't seem to have any issues, however. It's also probably worth mentioning that this happens with or without a controller mapper like DS4Windows.

Full screen support

Would it be possible to add fullscreen support, and hiding the debug info?
The game works

Second Princess :lol:

If you save the princess early in the game and then return to her prison cell, another princess will appear.

image

Hard Reset doesn't load game save

If I hard reset, even after saving and quitting (which normally lets me pick my game and continue), I have to start from scratch with entering my name.

If I exit the program, and load it again, the name is already there. So, when you perform a hard-reset, it forgets to look at the cartridge save file, until you close the program and re-open it.

Second Agahnim fight issue

After getting hit in the penultimate boss fight, a weird thing happened. Agahnim was targeting Link seemingly off screen. A number of ancilla effects stopped occurring (boots dust, sword charge, boomerang, somaria block, arrows, bombs...) and I couldn't reflect Agahnim's balls.

I tried to save a snapshot using Shift+F1 to F10 but it didn't work (did I miss a compilation option?) and I wasn't running the ROM for verification so I only have this clip. Posting the clip in the meantime. I plan to try again by next Saturday with the ROM running along.

https://clips.twitch.tv/CorrectHeartlessHerbsTinyFace-9zVBJTp4LhGjejE3

Does this project plan to support additional contributors/owners?

Hello @snesrev ๐Ÿ˜„ Thanks for publishing this project, it looks super cool!

There's a handful of good PRs out for review, including various build fixes for different platforms. Would be good to have some of these merged so we can keep build issue reports to a minimum and start actively exploring project contributions. I haven't been able to identify if there's a user or team behind this project.

Note for anyone actively looking at other issues, check out:
#7 if you're having Windows SDL issues in particular
#21 if you're looking for a "just run make" variant of the setup.

The music extraction python script doesn't seem to work

attempting to run extract_music.py produced this error for me:

[albert-softie@albert-softie-endeavouros tables]$ python extract_music.py
Traceback (most recent call last):
  File "/home/albert-softie/source/zelda3/tables/extract_music.py", line 463, in <module>
    song = sys.argv[1]
IndexError: list index out of range
[albert-softie@albert-softie-endeavouros tables]$

out of curiosity i attempted to pass the rom file directly to the python script, which resulted in a different error;

[albert-softie@albert-softie-endeavouros tables]$ python extract_music.py zelda3.sfc
Traceback (most recent call last):
  File "/home/albert-softie/source/zelda3/tables/extract_music.py", line 466, in <module>
    print_song(song, sys.stdout)
  File "/home/albert-softie/source/zelda3/tables/extract_music.py", line 271, in print_song
    get_song_list(0xd000, SONGS_IN_BANK)
NameError: name 'SONGS_IN_BANK' is not defined
[albert-softie@albert-softie-endeavouros tables]$ 

Add requirements.txt

Just add a requirements.txt file with dependencies, e.g.

pip3 install Pillow
pip3 install pyyaml

fixed my
ModuleNotFoundError: No module named 'PIL'
ModuleNotFoundError: No module named 'yaml'

NuGet Package restore failed

Severity Code Description Project File Line Suppression State
Error NuGet Package restore failed for project zelda3: Unable to find version '2.0.5' of package 'sdl2'.
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages: Package 'sdl2.2.0.5' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages'.
. Please see Error List window for detailed warnings and errors.

Severity Code Description Project File Line Suppression State
Error NuGet Package restore failed for project zelda3: Unable to find version '2.0.5' of package 'sdl2.redist'.
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages: Package 'sdl2.redist.2.0.5' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages'.
. Please see Error List window for detailed warnings and errors.

Severity Code Description Project File Line Suppression State
Error This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is packages\sdl2.redist.2.0.5\build\native\sdl2.redist.targets. zelda3 C:\Users\rdmci\source\repos\zelda3\zelda3.vcxproj 251

image

Crash in Turtle Rock dungeon

zelda3 turtle rock error

Upon entering the first southwest room of Turtle Rock (after taking the path north from the entrance), the game aborts, showing this error message. This room happens to contain the dungeon's compass, but the dungeon can be completed without it. Therefore, the room can be skipped (avoiding the bug).

Crackling sound

I'm getting crackling sound with a x64 build of the latest commit 3870ca7 in Windows.
It sounds a lot like when an emulator is trying to sync audio to video, usually they have an option to sync video to audio.
It doesn't matter if I use the old or the new renderer.

Is it possible to also see the actual framerate instead of the theoretical one?

Chris Houlihan secret room not working?

Can anyone else confirm this? When I try one of the methods, I get taken to a black, empty square room. I still have control over Link, but the only thing I can see is my hud and weapon/item effects.

Suggestion: Change "Zoom" to "Scale"

Zoom is not really the appropriate term here and usually means to blow up part of an image without affecting window size. Also, it's awkward to set zoom levels as numbers that correspond to percentages based off a non-native res. I recommend changing to simply "Scale" multiplier and getting rid of the pre-doubling. Then 256x224 = 1, the default is 2, and "ZoomOut/In" becomes "ScaleDown/Up".

Title bar text

Extremely minor suggestion, but would it be possible to change the text in the title bar from "Zelda3" to "Legend of Zelda, The - A Link to the Past", or something of the like?

MSYS2 Support

It would be great if we could compile with MSYS2 instead of Visual Studio on Windows

New PPU implementation needs testing

I merged a new PPU implementation which needs more testing. It's around 10x-15x faster than the old one. Press F to see rendering statistics (it shows the # of frames that theoretically could be rendered in one second). Press R to toggle between the old and the new version. (New ppu impl is the default one).

If you notice any graphics bugs please post it here.

Can't find SDL.h on windows

Just following the python extraction (and install), makes it impossible to compile as SDL library is missing

Fullscreen issues in Linux

As noted by #43 and #45, there are issues with fullscreen in Linux. Running with the latest commits, garbage gets shown on the sides of the screen, like this:
Screenshot from 2022-09-02 15-32-43
Commit c9e2b4c falsely marked #43 as fixed and the PR was closed. Unless there is something I'm missing, the config file does not address any fullscreen issue in Linux. #43 should have been accepted or an alternative proposed.

Not working with EUR ROM

The extraction fails if an european rom is used instead of USA one. The README states to use a ROM but not the region.

Errors when building on steamdeck

just trying to get the game running on the deck.

Getting this error when trying to compile:

$ clang++ -I/usr/include/SDL2 -lSDL2 -O2 -ozelda3 *.cpp snes/*.cpp
In file included from ancilla.cpp:1:
In file included from ./ancilla.h:2:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from attract.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from dungeon.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from ending.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
hud.cpp:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from load_gfx.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
main.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from messaging.cpp:1:
In file included from ./messaging.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from misc.cpp:1:
In file included from ./misc.h:1:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from nmi.cpp:1:
In file included from ./nmi.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from other_modules.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from overlord.cpp:1:
In file included from ./overlord.h:2:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from overworld.cpp:1:
In file included from ./overworld.h:2:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from player.cpp:1:
In file included from ./player.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from player_oam.cpp:1:
In file included from ./player_oam.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from poly.cpp:1:
In file included from ./poly.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from select_file.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
spc_player.cpp:2:10: fatal error: 'string.h' file not found
#include <string.h>
         ^~~~~~~~~~
1 error generated.
In file included from sprite.cpp:1:
In file included from ./sprite.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from sprite_main.cpp:1:
In file included from ./sprite_main.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from tagalong.cpp:1:
In file included from ./tagalong.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from tile_detect.cpp:1:
In file included from ./tile_detect.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
tracing.cpp:4:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
In file included from zelda_cpu_infra.cpp:3:
In file included from ./zelda_cpu_infra.h:2:
./types.h:2:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
         ^~~~~~~~~~
1 error generated.
In file included from zelda_rtl.cpp:1:
./zelda_rtl.h:3:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/apu.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/cart.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/cpu.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/dma.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/dsp.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/input.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/ppu.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/snes.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/snes_other.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
snes/spc.cpp:2:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
         ```

Freezor collision/position bug when building with -O2

Repro steps:

  1. Build game with flags as described in README.
  2. Load the snapshot 0 (Ice Palace)
  3. Approach the left Freezor sprite to activate its awakening/moving states.
  4. When ROM comparison is running, the game will crash with a memory mismatch. When not running, the sprite will walk off to the top left and despawn.
  5. Rebuild the game, replacing -02 with -O0.
  6. Load the same snapshot.
  7. Observe no issues with the Freezor sprite (it will approach Link).

Videos
Note the slightly slower emulation speed is a result of running a screen recorder. No issues observed when not running a screen recorder.

O2_bug.mp4
O2_bug_with_compare.mp4
O0_nobug.mp4

[HELP] Compiling section

Hello,

Hoping someone can help me out - I've never used python before so I'm stuck on the extraction step. The instructions say:

Put the ROM in tables/zelda3.sfc

cd tables

Install python dependencies: pip install pillow and pip install pyyaml

Run python extract_resources.py to extract resources from the ROM into a more human readable format.

Run python compile_resources.py to produce .h files that gets included by the C++ code.

In Windows Terminal, I can 'cd tables' to get to the directory, but then the next steps don't work. If I use Python terminal, 'cd tables' doesn't work - so I'm not sure how to change to the right directory there. I'm sure I'm overlooking something very basic here, can someone point me in the right direction of how to do this? Thanks!!

Volume control support

This is a tracking issue for all commits/PRs related to volume control support (cross-platform and non-cross-platform).

Copy .ini, .dat, and /saves/ref to bin (OutDir)

Though the initial complaint in #74 was resolved by hunting for zelda.ini in a couple of steps of parent directories in 6bd8b11, that commit doesn't resolve the similar problem with /save/refs. Nor is it obvious which files are necessary if you want to only capture the necessary files of a binary release. #76 is an attempt at a general solution for Visual Studio, but the general idea should apply to the makefile as well (though perhaps it could be contained in an install macro).

Hm... this only deals with the situation where you're debugging the game from within VS or running it from the location it built in as a subdirectory of the source tree. No matter how it's built, It's nice to be able to have everything you need to play the game in its own folder so that the files can then easily be moved elsewhere, i.e., decouple src and bin.

And it doesn't help with the /saves/ref folder.

Note I moved this pull to a separate branch http://github.com/Nutzzz/zelda3/tree/output_folder

Originally posted by @Nutzzz in #76 (comment)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.