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.
-
Obtain
POKEPICROSS.gbc
and place it in the project directory.SHA-1: 8204064B7149357939B57342820E7955749183B6
,CRC32: CF647F4B
. -
Download Event Assembler and extract it into
\Event Assembler
. -
Download ColorzCore and place it in
\Event Assembler
. -
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 inMAKE_HACK.cmd
. -
Download RGBDS and extract
rgbfix.exe
to the project folder. Optionally, extractrgbasm.exe
andrgblink.exe
to\asm
, if you wish to edit the asm. The asm comes preassembled, too. -
Install Python 3 so that you may be able to run the python scripts.
-
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.
-
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 bydump_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 theinsert_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, excludingdump_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 thanMAKE_HACK.cmd
, but it is bearable enough that you may choose to always run this instead ofMAKE_HACK.cmd
if you do not want to deal with running the scripts manually.
-
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 asgraphics.event
anddialogue.event
, as well as all of the instructions on where to place the different files. The smaller asm changes are found inROM_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
andtitletiles.map
are used by the GBC version of the titlescreen, whiletitlegb.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 callsstrip.py
, so using it manually should not be needed.
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.