PORTCLUB
Cabecera de Pokemon Crystal
Port nativo

Pokemon Crystal

Port nativo de Pokemon Crystal para PC.

Pokemon Crystal

Port nativo basado en pret/pokecrystal.

README del repositorio

suiCune logo by LJ

suiCune

suiCune is an in development PC port of Pokemon Crystal. The game's code is rewritten in C99 and uses SDL2 to emulate the graphics and sound of the Gameboy Color. It currently runs, but is not recommended to be used for any projects until completed. Additionally, it may be prone to crashes/buggy behavior. The maintainer is not to be held liable for any mishaps.

The project restores the networking features present in the original Japanese release of Pokemon Crystal. These features relied on the Japanese-exclusive Mobile Adapter GB, which allowed the GameBoy Color to connect to the internet via a cellphone. The adapter is emulated using libmobile and the game utilizes custom servers to recreate the original features. For more information on how to set up the game to use a custom server, see here

Overview

The project started off with a modified version of pokecrystal, with no reliance on some GameBoy specific features, like interrupts. The game was emulated, and parts of the ASM were converted to C macros. As these were converted, they were set up to re-direct the emulation code, to these macros. Since this is technically C, the workflow works as follows:

  • Convert an ASM script to C macros
  • Check that it works, make adjustments if needed
  • After it's working, it's technically C, so the functions should be able to be re-written in actual C, and recompiled for testing

Setup

Clone the repository using

git clone --recursive https://github.com/DanZC/suiCune.git

If you already have the repository cloned, but are missing the libmobile library, run

git pull
git submodule init
git submodule update

MSYS2

Install gcc, make, SDL2-devel, SDL2_net-devel, and PhysFS using pacman. The UCRT repositories are recommended.

Then run

make clean; make RELEASE=1

Then run suiCune to launch

Linux

Install gcc, make, SDL2-devel, SDL2_net-devel, and PhysFS using your distro's package manager.

Then run

make clean && make RELEASE=1

Then run suiCune to launch

CMake

Install gcc, cmake, make, SDL2-devel, SDL2_net-devel, and PhysFS using your distro's package manager.

Then run

mkdir build && build
cmake -DCMAKE_BUILD_TYPE=Release .. && make

Then run suiCune to launch

Visual Studio

  • Download the latest SDL2 VC devel libraries
  • Extract SDL2 into deps/ and rename the SDL2-{version} to just SDL2
    • deps/SDL2/
  • Run generate.bat for Visual Studio 2022
    • Edit generate.bat vs2022 line to whatever you want
    • All platforms and IDEs available here
  • Open the solution in the newly created build folder
  • Build
  • ???
  • Profit

Build options

make

OptionNotes
RELEASE=1Release mode with debug features disabled.
FASTBG=1Removes extra frame delays on render, increasing the framerate.
BUGFIX=1Enables bugfixes for suiCune (see util/bugfix.h).
USE_PCG=1Uses the PCG rng instead of the default Crystal one.
NETWORK=0Disables networking (and mobile) features.
MOBILE=0Disables mobile features.
TIMECAPSULE=1Enables the time capsule (experimental).

CMake

OptionNotes
-DFASTBG=1Removes extra frame delays on render, increasing the framerate.
-DBUGFIX=1Enables bugfixes for suiCune (see util/bugfix.h).
-DUSE_PCG=1Uses the PCG rng instead of the default Crystal one.
-DFEATURE_NETWORKING=0Disables networking (and mobile) features.
-DFEATURE_MOBILE=0Disables mobile features.
-DFEATURE_TIME_CAPSULE=1Enables the time capsule (experimental).

Save compatibility

  • Efforts have been made to make the game saves backwards compatible with saves from the original english version of the game. Just copy the save over to the folder and rename it to "baserom.sav". However, there are some things to note:
    • The time of day may be wrong. You can reset the time using the in-game clock reset function.
    • Some maps from the original game have changed. If you saved in the Goldenrod center or Goldenrod City, you may be stuck in a wall and have incorrectly loaded NPCs. Save elsewhere and recopy the file.
    • Saves made with suiCune may not work when loaded back in the original game. Due to how the game stores script pointers, NPCs will not have their scripts properly loaded. If you reload the area, it should fix itself. Also, the time of day may be wrong and may need to be reset.

AI Notice

This project was created before the advent of LLMs and no AI was used in its development. To maintain code quality, we will not be accepting code contributions or pull requests written by AI.

Closing

  • This project is for educational purposes, and should not be used for any commercial or profitable causes
  • Follow development of this port on Discord

See also

Other disassembly projects:

Comentarios (0)

Inicia sesión para dejar un comentario.

Sé el primero en comentar sobre este juego.