Join Our Free Newsletter Community

Free, weekly updates about retro gaming news, nostalgic collectibles and in-depth reviews.

Subscribe Retro Dodo cover image
Sebastian Santabarbara profile image Sebastian Santabarbara

Resident Evil 2 Is Being Ported To The Nintendo DS

Resident Evil 2 on the DS
🤝
Like our website? Support us as an independent publisher by tipping, joining our paid community or checking out our accessories brand GAMENOOK!

Don't forget about your Nintendo DS just yet, as one of the most famous and revered survival horrors of all time is making its way to Ninty's pride and joy. A team of modders are working to bring Resident Evil 2 to the DS with dual-screen support in a new homebrew project, 'Resident Evil 2: Deadly Science'.

Of course, 'Resident Evil: Deadly Science' already exists for the DS and is an enhanced version of the original PS1 game. It came to the DS as part of the 10th anniversary celebrations for the series and released in all territories throughout 2006. And of course, Deadly Science has the initials 'DS', which is a nice little touch.

The project uses REA (Reverse Engineer Anything) and Claude Code, with a team of human devs sifting through the code and making sure things work. Admittedly, the team behind the project have said that it's still rough and that there's still a way to go, but so far the first two cutscenes are working properly, as well as the 'core loop' of picking up and combining items, taking down zombies, and running out of health to the point where you K.O. Music and sound effects are all working too.

Each of the 125 rooms of disc 1 is available for players to work through, along with pre-rendered backgrounds with 'depth masks, camera switches, collision, floors/stairs/slopes, doors with their 3D door animations, locks and keys, room objects (items lying around, gates).' The original in-game AI that controlled the Zombies remains the same too.

There are some problems like all the other cutscenes not working and the fact that you can still see through some walls. Music sounds off in some areas too. Then there's the fact that the ROM is already 300mb, but the hope is to not let it get past 512mb.

Again, Claude Code has been used here; I know there's a team of people working on the port, and it hasn't just been entirely vibe-coded and left for other people to work out any problems. Still, some of you might lose interest in the fact that it hasn't been worked on solely by human devs over a course of years and months.

Here's how to build the ROM for use on the DS according to the official GitHub page. The steps are as follows:

  1. Install the tools (once),
  2. Extract your disc image,
  3. Convert the game data (once, a few minutes),
  4. Build the ROM with make,
  5. Play it in melonDS.

You need a .bin/.cue dump of disc 1; only the .bin of Track 1 is used.

Windows

Everything runs in Ubuntu inside Windows (WSL). Only melonDS runs as a normal Windows program.

1. Install WSL and Ubuntu (once). Open PowerShell as administrator (right-click the Start button → Terminal (Admin)), run wsl --install and restart Windows. Then press the Windows key and type Ubuntu to open it. The first start asks for a new Linux user name and password (they do not have to match your Windows ones). If Ubuntu does not show up, run wsl --install -d Ubuntu in PowerShell.

2. Get re2ds and install the tools (once). In the Ubuntu window, enter the following code:

cd ~
git clone https://github.com/eray1605/re2ds.git
cd re2ds
tools/setup_wsl.sh

The script asks for your Linux password and installs everything (compiler, Python, FFmpeg, devkitPro). If devkitpro.org is blocked for your network (403 Forbidden), it uses devkitPro's Docker image instead – nothing to do for you.

All following commands are typed in the Ubuntu window, in the re2ds folder. In a new Ubuntu window go there first with cd ~/re2ds.

3. Extract your disc. You do not change into the folder of your .bin – stay in re2ds and type the full path of the file. In Ubuntu, C:\ is /mnt/c/ and \ becomes /. Example for a file in your Downloads folder (put your Windows user name instead of YourName; keep the quotes, the name has spaces):

python3 -I tools/extract_psx_iso.py "/mnt/c/Users/YourName/Downloads/Resident Evil 2 (Europe) (Disc 1) (Track 1).bin" build/disc1

Tips: ls /mnt/c/Users/ shows the Windows user names, and the Tab key completes a path while you type it.

4. Convert the game data (a few minutes; fills nitrofiles/, about 420 MB):

tools/build_assets.sh build/disc1

5. Build the ROM:

Enter the following code:

make

This makes re2ds.nds. If the script set up Docker: after restarting Windows, run sudo service docker startonce before make.

6. Play. Copy the ROM to your Windows desktop and open it in melonDS for Windows (https://melonds.kuribo64.net/):

cp re2ds.nds /mnt/c/Users/YourName/Desktop/

macOS and Linux

Install the tools once:

  • macOS: devkitPro's installer (https://devkitpro.org/wiki/Getting_Started, then sudo dkp-pacman -S nds-dev), and brew install python ffmpeg.
  • Ubuntu / Debian: tools/setup_wsl.sh works there as well.
  • Elsewhere: devkitPro with nds-dev, Python 3, FFmpeg with its libraries (libavcodec, libavutil, libswscale), a C compiler and pkg-config.

Then, in the re2ds folder, enter the following code:

python3 -I tools/extract_psx_iso.py "path/to/Resident Evil 2 (Europe) (Disc 1) (Track 1).bin" build/disc1
tools/build_assets.sh build/disc1
make
./start.command # macOS: builds if needed and starts melonDS

After updating the code

Enter the following code:

git pull
tools/build_assets.sh build/disc1 # only when the release notes say the data changed
make

make finds devkitPro in /opt/devkitpro (or where DEVKITARM points) and otherwise builds in devkitPro's Docker image devkitpro/devkitarm. Single rooms can be converted again with tools/convert_room.sh build/disc1 ROOM1010. Files with Form 2 sectors (XA voices, the audio of the movies) are extracted as raw sectors with a .raw2352 suffix; the converters need them like that.

Saving

Saving needs an SD card: on a flashcart or a DSi it is the card the ROM runs from (re2ds.sav next to it). In melonDS it is a virtual card:

  1. Config → Emu settings → DLDI: tick Enable DLDI (for homebrew), set the SD card image size to 1 GB and tick Sync SD to folder with an empty folder, e.g. Documents/re2ds-sd.
  2. Copy re2ds.nds into that folder after every build (melonDS closed). With DLDI on, the game reads its data from that copy. On macOS start.command does this by itself (folder ~/Documents/re2ds-sd, or set RE2DS_SD); on Windows: cp re2ds.nds /mnt/c/Users/YourName/Documents/re2ds-sd/.

The save file re2ds.sav then appears in that folder. (A 512 MB image is too small: melonDS keeps the ROM there padded to 512 MB.)

Head to GitHub if you want to contribute!

❤️
Like what you are reading? If you do and want to support us, you can do so by becoming a member, tipping us or taking a look at our gaming accessory company GAMENOOK (10% off just for you). This allows us to continue what we do without succumbing to algorithms, clickbait and over-intrusive ads, while paying human writers instead of AI.
Sebastian Santabarbara profile image Sebastian Santabarbara
Sebastian is fuelled by a lifelong passion for Zelda, Banjo Kazooie, Donkey Kong, and all things retro. He uses his misspent youth with retro consoles to create content for readers around the world.