/POKEPICROSS_Translation

A translation for the unreleased Pokémon Picross for GB and GBC

Primary LanguagePython

POKEPICROSS English Translation

This is a translation for the build of the unreleased Pokémon Picross for the Game Boy and Game Boy Color that surfaced on the internet on September 2020.

The patch is complete, the entire story, the titlescreen, the tutorials, the menus and the puzzle names are all done, even the Game Boy Printer error messages have been translated.

The game is easy to navigate and play even with no translation, as long as the player is already familiar with nonogram rules.

The translation work was done through a combination of online tools and consultations and as such it might not be very accurate.

I hope that, with the tools sbeing available, a new more accurate translation may be developed, as well as translations into other languages.

Setup

  1. Obtain POKEPICROSS.gbc and place it in the project directory. SHA-1: 8204064B7149357939B57342820E7955749183B6, CRC32: CF647F4B.

  2. Download Event Assembler and extract it into \Event Assembler.

  3. Download ColorzCore and place it in \Event Assembler.

  4. Download ups and extract it into the project directory. The build process will still work without this, so this step can be ignored, in which case you may choose to remove the ups invocation in MAKE_HACK.cmd.

  5. Download RGBDS and extract rgbfix.exe to the project folder. Optionally, extract rgbasm.exe and rgblink.exe to \asm, if you wish to edit the asm. The asm comes preassembled, too.

  6. Install Python 3 so that you may be able to run the python scripts.

  7. This is not a hard requirement, but graphics editing for this project was done with Usenti, therefore the program is recommended to use it if the graphics need to be edited further.

Usage

  • dump_text.py Dumps the game text to the folders \dialogue, which contains all of the story and tutorial text, \names, which contains all the puzzle names, and \system, which contains messages related to the Game Boy Printer.

  • insert_text.py Converts and creates installers for the .txt files in \dialogue_eng, \names_eng and \system_eng. Please note that the file name will determine which entry the text will replace, it is not advised to change the file names. When creating a new translation either use the existing files as a starting point or replace them with files generated by dump_text.py.

  • insert_font.py Reads font.png and generates the font installer. Characters are 16 by 10, there are a great deal of empty slots, so new characters can be added easily, however,this will require the insert_text.py script to be edited. The script has not been tested with non-ascii characters, other than and , which work through exceptions.

  • convert_graphics.py Generates converted versions of the .png files in \graphics.

  • compress_graphics.py Generates converted versions of the .png files in \compressed, then it generates compresed versions of all the .bin files in \compressed.

  • MAKE_HACK.cmd This script will call Event Assembler for you and generate both the new ROM and its corresponding patch. MAKE_HACK.cmd will fail if the above scripts, excluding dump_text.py, have not been executed at least once.

  • MAKE_HACK_FULL.cmd This script will call all the required scripts before calling MAKE_HACK.cmd. It should be executed when building the project for the first time. Since this script runs most of the others, it takes a bit longer than MAKE_HACK.cmd, but it is bearable enough that you may choose to always run this instead of MAKE_HACK.cmd if you do not want to deal with running the scripts manually.

Misc

  • pokepicross.txt A collection of unorganized, unrevised hacking notes I took while working on this project.

  • .event These are the files that Event Assembler reads, containing the instructions on how to assemble the patch. ROM_Buildfile.event is the main file, which includes installer files such as graphics.event and dialogue.event, as well as all of the instructions on where to place the different files. The smaller asm changes are found in ROM_Buildfile.event as well, in binary format. Note that these files are plain text files, the extension is purely for language highlighting.

  • \savestates This is just a folder of useful savestates, made in bgb, so that people can test dialogue changes. A .sav file with 100% completion in slot 2 is also included in this folder, this can be used to check all puzzle names easily. Unfortunately, testing Game Boy Printer error messages is not as easy. The recommended method to test them is to insert them one by one over the message that appears by default before finally moving them to their corresponding file. Thankfully, there are not a lot of these and most of them are repeats.

  • .map These files found in the project folder are background maps, they are in raw binary format so a hex editor is recommended to edit them. A tool probably exists out there that would make dealing with these maps easier, but since they were used only for the titlescreen a hex editor was enough. titlecolors.map and titletiles.map are used by the GBC version of the titlescreen, while titlegb.map is for the GB version.

  • assembleGBZ80.cmd This script is found in \asm, it can be used to assemble the .s asm source files.

  • strip.py This script is found in \asm, it removes the leading zeros from the assembled .bin files. assembleGBZ80.cmd already calls strip.py, so using it manually should not be needed.

Code Changes

Some code has been modified from the original ROM and a few things have been repointed into empty banks. Here is a list of the asm changes:

  • The text parsing routines have been altered so that characters only occupy one byte instead of two, this was needed in order for the text to fit in the banks it was originally in, but might cause problems for translations into certain languages that have extensive alphabets.

  • The YES/NO dialogue option arrows have been shifted to the side.

  • The Pokédex and Safari Album menus no longer use a fixed width font, with a tile for every character. The names are now instead loaded into tile vram on the fly, the names can edited in \graphics\pokedexnames.png and \graphics\safarinames.png. Unfortunately, because of width and speed concerns, the names do not use the text system and are instead just graphics, making this possibly the most tedious thing to edit. I recommend translating the puzzle names first, then taking the names from puzzle preview screenshots and editing them if necessary.