Skip to content

Dimedime-d/kptranslation

Repository files navigation

Kururin Paradise Translation

Ready to fly? Explore many worlds in this sequel to Kuru Kuru Kururin, piloting the Helirin with its ever-rotating propeller. In this adventure, your family went missing when they went to see a magic show. It's up to you to search for them and bring them back home. Overcome new challenges using the right shoulder button to speed up the Helirin's rotation. Between all the Helirin mazes, you will encounter the people behind the magic show and be challenged to a variety of minigames. They probably have something to do with your family, and you might even learn a magic trick or two along the way.

Play by yourself in Single Player mode, or with up to 3 friends in Single Pak Versus mode. Race through 30 challenging Helirin mazes and compete in many different minigames for some action-packed fun.

Patching

  • Original ROM: Kururin Paradise (J).gba
  • SHA-1 Hash: 73BE3B930E2436D1C7BDB74AC281DD27C72E1F9E

bps patch (Recommended)

Manual Patch (Windows only)

  • You will need the Visual C++ 2015 x86 Redistributable to run armips.
  • Clone this repository
  • Rename your dumped ROM to kp.gba
  • Put kp.gba in the root of the repository
  • Run build.bat
  • Output ROM is kp_patched.gba

Extra Features

In addition to the translation aspect of this project, there is some additional functionality on top of the base game:

  • You can re-watch Adventure Mode cutscenes in Practice Mode.
  • The functionality for deleting all save data / reinitializing corrupted save data has been restored. In the original ROM, if you held A, B, L, R, Start, and Select before the Nintendo logo appears, the game would crash. Same thing happens when the SRAM checksum fails. This is due to the game trying to create a buffer in a space that hasn't been initialized yet. This may matter for flashcart testing...

Screenshots

Newtitle Intro overworld1

newpractice dialog InLevel

KeyGet Minigame menuMinigame Splash

Menu magicdemo magiceng2

Patching Notes

My "patching" program of choice is armips, which lets me write assembly hacks, include binaries, dynamically address labels, etc. Some chunks of the ROM are compressed via the GBA's BIOS method, so the batch script also runs lzss by CUE to decompress those binaries (mainly multiplayer). armips hacks those binaries, and lzss re-compresses them to be inserted into the ROM by invoking armips again. The whole patching process is self-contained, aside from the ROM.

The "encoded" text in the ROM is automatically patched using the above batch script i.e. you can change the contents of the text in the text/ folder, and they will appear in the ROM when you manually patch.

All "graphical" text in the ROM is not automatically formatted and inserted. Should you change the images, there are a smattering of Python scripts in the graphics/ folders to format the images to .dmp files, which has already been done. Python is my fast and dirty way of re-quantizing images to the same palettes used in game, compressing data using the game's custom functions as well as operating grit.exe. You do not need Python to patch the ROM, only to format new images if you choose to do so.

Debug Features

You change the value of DEBUG_VAR in build.bat to a nonzero number to enable one debugging feature. Currently, you can re-watch the "rank up" cutscenes and re-view the location splash screens by holding L after any "level complete" screen.

Known Bugs

  • Some character timings are slightly off, due to my timing of the "rolling" text characters being faster.
  • Transferring save data from the original Japanese ROM will result in slightly glitched in-game names, as the Japanese names remain in SRAM. Same thing will probably also happen if you named one of the save files with Japanese characters. I'm okay with this, as this doesn't impact the first-time experience. Use the attached save file fixer for migrating save files from the original Japanese ROM.

Areas of Potential Revision

  • The game scripts (especially the dialogue)
  • General graphical polish
  • Optimize the credits sequence to display more text at once (currently limited by GBA OAM slots)

Other Language Support

There don't appear to be glyphs of extended Latin characters in the ROM, nether in the "ASCII" font nor in the font used in dialogue. Also, I had enough trouble getting lowercase ASCII characters to load properly in some places, as they weren't loaded by default. Should anyone decide to translate into other Romance languages, you would have to implement your own glyphs and load them properly.

License and contributions

Special thanks to E-Sh4rk for documenting one of the compression/decompression routines the game uses.

Special thanks to NewGBAXL for revising the main game scripts (dialogue)

Armips was created by Kingcom.

grit was created by cearn, Jasper Vijn

armips.exe and graphics/grit.exe are licensed under the MIT license.

lzss.exe is by CUE and licensed under GNU GPL, version 3.

The text box "You got the Key for this place!" was taken from a much buggier translation patch of this game, with some slight modifications.

All other files in this repository are licensed under the GNU General Public License v3 (GNU GPL-3)

The LanaPixel font was used to generate some text in some images (minigame instructions). LanaPixel was created by eishiya and is licensed under Creative Commons 4.0 International.

This software uses the FreeImage open source image library. See http://freeimage.sourceforge.net for details.

FreeImage is used under GNU GPL, version 3.

See LICENSE.MD for license texts.