Silent Hill 2 (3DS)
Silent Hill 2
About the project
Silent Hill 2 es un videojuego de terror psicológico y supervivencia desarrollado por Team Silent, un grupo de Konami Computer Entertainment Tokyo, y publicado por Konami para PlayStation 2. La segunda entrega de la saga Silent Hill, Silent Hill 2, se centra en James Sunderland, un viudo que viaja a Silent Hill tras recibir una carta de su difunta esposa. En diciembre de ese mismo año, se publicó para Xbox una versión extendida con un escenario extra, "Born from a Wish", y otros añadidos.
3 versions of Silent Hill 2
You're viewing: Silent Hill 2 (3DS)
Official project information
sh23ds is a new engine, written in C for the 3DS, that plays Silent Hill 2 from the PC version's own data. The game logic, camera, lighting and events are rebuilt from the PC executable and run as native code, so nothing is emulated. The Enhanced Edition's fixes are built in.
sh23ds contains no game data. You need your own copy of the PC game, which the packer converts on your computer.
<p align="center"> <img src="site/assets/shots/town-top.jpg" width="32%" alt="Fog in a back alley of the town"> <img src="site/assets/shots/maria-top.jpg" width="32%" alt="James in the restroom where the game begins"> <img src="site/assets/shots/wish-top.jpg" width="32%" alt="Maria in Born From a Wish"> </p>[!NOTE] This is a development build. The whole game plays from the prologue to every ending, including Born From a Wish, but expect rough edges and please report what you find.
Install
You need:
- a New 3DS, New 2DS XL, or any original 3DS or 2DS, running Luma3DS
- the PC release of Silent Hill 2: Director's Cut (the packer checks for the retail
sh2pc.exe) - about 1.8 GB free on the SD card
Then:
- Convert your game: open the packer page in a desktop browser, choose your
Silent Hill 2folder and save the zip. Nothing is uploaded. If you'd rather use Docker:
Either way you get adocker run --rm -v "/path/to/Silent Hill 2:/game:ro" -v "$PWD/sd:/out" ghcr.io/ankushkun/sh23ds-packer3dsfolder. More packer options. - Copy the
3dsfolder to the root of the SD card. The game data ends up insdmc:/3ds/sh23ds/. - Dump the DSP firmware once with DSP1, or the game has no sound.
- Install
sh23ds.ciafrom the latest release with FBI, or scan the QR code on the website with FBI's Remote Install.
sdmc:/3ds/
├── dspfirm.cdc from DSP1
├── sh23ds.3dsx only if you use the Homebrew Launcher instead of the CIA
└── sh23ds/ the game data from the packer
The CIA is the better choice on a New 3DS: it asks for the 804 MHz clock and the 124 MB memory mode, which a .3dsx only gets if the Homebrew Launcher was started with them.
If sh23ds starts and can't find its data, it says so: whether the folder is missing, in the wrong place or only half copied, with the steps and a QR code of the install guide.
Features
- The whole game: every area, puzzle, enemy, boss and ending, New Game+ and Born From a Wish
- The PC camera, room lighting, fog and flashlight, ported from the executable
- All 128 in-engine cutscenes, and the movies re-encoded for the console
- The PC's music, sound effects and voices, mixed the same way
- The Enhanced Edition fixes, such as the PS2 flashlight and the corrected fog and lighting
- Stereoscopic 3D on the top screen with the 3D slider
- Made for the New 3DS's faster CPU and extra memory, with a lighter 30 fps profile for the original 3DS (details)
Controls
The same on both consoles:
| Button | |
|---|---|
| Move | Circle Pad |
| Check, open, pick up (attack while aiming) | A |
| Run (hold) | B |
| Aim (hold) | L |
| Quick turn | R |
| Flashlight / items | X / Y |
| Look around (hold) | D-Pad up |
| Next weapon | D-Pad down |
| Quick heal | D-Pad left |
| Map | D-Pad right, or the touch screen |
| Pause | START |
Hold L to aim, then A attacks. The New 3DS adds strafing on ZL and ZR and changing target with the C-Stick. Every action can be rebound in Options, Controls, Buttons. The full layouts are in CONTROLS.md.
Building from source
The toolchains run in Docker, so that is all you need.
git clone https://github.com/ankushKun/sh23ds.git && cd sh23ds
./port/build.sh # port/sh23ds.3dsx
./port/package.sh # port/sh23ds.cia
Contributing
The port is built by reading the PC executable in Ghidra and translating its functions to C, with the original address in a comment. Start with AGENTS.md: it covers the setup, where everything is, and how to port and review against the original.
| Doc | What's in it |
|---|---|
| STATUS.md | What works and what's left, heaviest first |
| DEBUGGING.md, TESTING.md | The debug file, emulator runs and the test suites |
| RESEARCH.md | How the executable was mapped, and key addresses |
[!CAUTION] Never commit anything that comes from the game: exe bytes, assets, converted data, Ghidra databases or decompiler output.
tools/install_hooks.shadds a pre-commit check.
Bug reports are welcome in Issues. Please include your console model, your Luma3DS version and what you were doing.
FAQ
<details> <summary><b>Where do I get the game files?</b></summary> <br> From your own copy of the PC game. This project doesn't host, link to or share game files, and issues asking for them will be closed. </details> <details> <summary><b>Does it run on an original 3DS or 2DS?</b></summary> <br> Yes. The game detects the console and switches to a lighter profile: fewer fog sprites and streamed town tiles, no character shadows and a 30 fps cap. It fits in the normal 64 MB of memory. <a href="port/OLD3DS.md">OLD3DS.md</a> has the details, including what has been tested so far. </details> <details> <summary><b>Can I use the v1.0 PC release, or the Enhanced Edition?</b></summary> <br> Not v1.0: the converters read tables from the Director's Cut exe, so the packer only accepts that build. The Enhanced Edition's packs work, and the packer uses them when it finds your <code>sh2e</code> folder. Put the original Director's Cut exe back first, since the Enhanced Executable replaces it. </details> <details> <summary><b>Is this the 2024 remake, or an emulator?</b></summary> <br> It's neither. This is the 2001 game, rebuilt from the PC Director's Cut and running as native code on the 3DS's own CPU and GPU. The PC game's data is converted once, on your computer. </details>Credits
- Silent Hill 2: Enhanced Edition by Elisha Riedlinger and contributors, whose fixes and research into the PC executable this port builds on
- The Silent Hill Database for its file format notes, and the PS2 beta's debug information, which names much of the PC code
- devkitPro, libctru and citro3d
- pl_mpeg by Dominic Szablewski, which plays the movies
- pycgfx by skyfloogle and the notes in CBC for YANBF, for the 3D HOME Menu banner
- Ghidra and Azahar
- Libre Caslon Display, Crimson Pro and VT323 (SIL Open Font License), on the website and the setup screen
License
sh23ds is released under the GNU General Public License v3.0. Bundled third-party code keeps its own license.
This is a fan project, not affiliated with or endorsed by Konami or Nintendo. Silent Hill is a trademark of Konami Digital Entertainment and Nintendo 3DS is a trademark of Nintendo. Playing requires a legally obtained copy of the PC game.
<br> <p align="center"> Made by <a href="https://ankush.one">ankushKun</a> · <a href="https://github.com/ankushKun">GitHub</a> · <a href="https://x.com/ankushKun_">X</a> </p>