PORTCLUB
Cabecera de Castlevania III: Dracula's Curse (CV3 PC port)
Port nativo

Castlevania III: Dracula's Curse (CV3 PC port)

Port nativo de Castlevania III: Dracula's Curse (CV3 PC port) para PC.

Castlevania III: Dracula's Curse (CV3 PC port)

Port nativo basado en su ficha de origen.

README del repositorio

CV3 PC port

An unofficial PC port of Castlevania III: Dracula's Curse (NES, 1990), rewritten as C++17 with SDL2, plus optional extras: widescreen, smooth motion, an enemy and boss randomizer, a modern difficulty, and more.

This repository contains no part of the game. The C++ reads all of the game's graphics, levels, music and text from your own ROM when it starts. You need a ROM of Castlevania III - Dracula's Curse (USA) that you made from a cartridge you own.

Playing

  1. Download the zip from Releases and unzip it anywhere.
  2. Put your ROM in its rom folder (any file name).
  3. Run cv3.exe.

Windows may warn about an unknown publisher, because the program isn't signed: choose "More info", then "Run anyway". The zip's README.txt has the controls and options.

Building

Windows. You need MinGW-w64 with g++ (C++17) and mingw32-make, for example from WinLibs or MSYS2, and a bash shell with curl and tar, such as Git Bash, to fetch the dependencies.

bash tools/get_deps.sh      # SDL2 and dr_mp3 into third_party/
mingw32-make -j8            # builds build/cv3.exe (and copies SDL2.dll)

Linux. You need g++ (C++17), make, curl and SDL2's development files.

sudo apt install g++ make curl libsdl2-dev    # Fedora: sudo dnf install gcc-c++ make curl SDL2-devel
bash tools/get_deps.sh      # dr_mp3 into third_party/
make -j8                    # builds build/cv3

bash tools/package_release.sh 0.1.0 makes a release in dist/: a clean, stripped build, an empty rom/ folder, the release/ readmes and the notices. On Windows it's a zip with SDL2.dll; on Linux a .tar.gz (using the system's SDL2). The Linux build is tested under WSL (Ubuntu 24.04): it replays a whole recorded playthrough exactly as on Windows.

Running

Put your ROM in the rom/ folder (any file name), then run build/cv3.exe (Linux: build/cv3). The game looks for rom/ next to the executable and one folder above it, else in your own folder (~/.local/share/cv3/rom, %APPDATA%\cv3\rom). It checks the ROM's CRC32: ED2465BE, counting PRG and CHR but not the 16-byte header. Any other file is refused with a message saying so.

The menu opens at startup and on Esc. It has three save slots, the randomizer for a new game, and the options. The options are saved to cv3.ini next to the executable. Everything beyond the original game is off by default.

Controls.

  • Keyboard: arrow keys to move, X to jump (A), Z to attack (B), Enter for Start, and Right Shift or Backspace for Select.
  • Window: F11 or Alt+Enter toggles fullscreen. F10 turns the in-between frames on and off, F9 cycles run-ahead (0, 1 or 2 frames), and Esc opens the menu.
  • Game controllers work through SDL; the Guide button opens the menu.

Options

  • Display:
    • Filters: sharp, sharp-smooth, smooth, scanlines.
    • Aspect: square pixels, 8:7 TV pixels, or 4:3.
    • In-between frames, for smooth motion on 120 Hz and faster displays.
    • Run-ahead, for lower input latency.
  • Widescreen: a 16:9 picture. In horizontal rooms the game plays on the wider screen: enemies, items and candles in the margins are active.
  • Fixing NES limits: no sprite limit and no flicker. The game never lags.
  • Gameplay tweaks:
    • fast doors;
    • air control;
    • stair jumps (jump off the stairs, drop with Down+A, hold Up or Down in the air to stick to them, rising or falling);
    • fast character swap;
    • modern difficulty (unlimited lives, restart at the checkpoint).
  • Randomizer (on the NEW GAME page):
    • Enemies: alike or anywhere, and endless spawners too.
    • Bosses: the partners' fights; Dracula stays.
    • Starting character: any of the four.
    • Allies: shuffled, and Trevor himself can join as an ally.
  • Famicom sound: the music and sound effects of Akumajou Densetsu, the Japanese Famicom version, whose cartridge has an extra sound chip (Konami's VRC6). Put your own ROM of Akumajou Densetsu (Japan) in rom/ as well, and set MUSIC to FAMICOM. The port runs that version's own sound engine, VRC6 included, from your ROM, so nothing of it is included here (src/platform/famicom_sound.h). Without that ROM, the FAMICOM setting plays MP3 files of the soundtrack that you supply instead. Put them in a famicom-ost/ folder next to the executable, named by the soundtrack album's track numbers, for example 03-Beginning (Block-1).mp3. Only the NN- prefix matters; kTracks in src/platform/music.cpp lists which number plays where. The port finds each song's loop point by itself.

Every option also has a command-line switch, and there are test and debugging tools besides. They are all in parse_args in src/platform/main.cpp.

How it works

The game was translated from the original 6502 code into C++. It keeps the original's RAM layout and frame structure, so it plays exactly like the original: during development, every change was checked frame by frame against recordings of complete playthroughs on an emulator. A small 6502 interpreter still runs the game's power-on code, MMC5 setup and idle loop, about 150 instructions.

  • src/game/: the game (player, enemies, bosses, levels, menus, sound engine) and the PC extras.
  • src/runtime/: the NES hardware the game talks to (MMC5 mapper, PPU, APU, 6502 interpreter), as a frame model.
  • src/platform/: the SDL2 window, input, audio, menu and settings.
  • src/verify/: lockstep and trace tools used during development.
  • src/names/: RAM and ROM addresses under the names the disassembly (see Credits) gives them. These are addresses only, no game data.

Credits

  • The port is based on the annotated disassembly of Castlevania III by cyneprepou4uk, made with their BZK 6502 Disassembler (NES-Games-Disassembly). The names in src/names/ and throughout the code come from it.
  • SDL2 (zlib license) and dr_mp3 (public domain or MIT-0). Both are downloaded by tools/get_deps.sh, not included. See THIRD_PARTY.md.

License

The port's own code is MIT-licensed (LICENSE).

Legal

This is a non-commercial fan project. It is not affiliated with, endorsed by or sponsored by Konami. Castlevania, Dracula's Curse and Akumajou Densetsu are trademarks of Konami Digital Entertainment. The game's code, graphics, music and text belong to Konami and are not part of this repository: everything is read from ROMs the player supplies. Do not open issues or pull requests that contain ROMs, ROM data or music files, and do not ask for them.

Comentarios (0)

Inicia sesión para dejar un comentario.

Sé el primero en comentar sobre este juego.