@Charles: Yeah I hope so.
Anyway here's a rework of the font. It now follows the ascii interval. The encoding script may be simpler this way
Critics and/or comments are more than welcome.
edit: So the alphabet is made of 128 chars. It's drawn in 2 passes. It's at $8C86 :
The numbers of characters to draw is stored at $A9E7 (file offset: $2EBE7). And guess what? It's equal to #$40. So now I'll have figure out what #$20 and #$21 are used for.
Some update : I managed to insert rle/xor encoded fonts. I'll upload the updated tools later (needs some cleanup).
And here's an attempt for the 3rd level:
Finally some update!
I managed to replace the sprites used for level names. I still need to modify the index table for the other levels. I hope it would fit.
In the meantime here's a teaser.
FFFFFFFFFFFFFFFFFFuuuuuuuuUUUUUUUUUUUUUU!!!!!
I finished the sprite index list. And when I started working on the index pointer table, I realized that there were 9 entries. 9? Did I forgot one?
Yes I forgot one. The water land... And I don't have enough room to put the missing letters. It must fit in 504 bytes (after compression). Here's the actual "font" made of 16x16 sprites.
There are 2 solutions. The first one is to reorganize the tuples so that I can add the missing ones for "Water". Or keep it as is and find some empty space.
Note: The zigzag lines on the last 16x16 sprite are there to make the compressed data fits into 504 bytes. I must also keep an empty sprite for spacing.
After a review of level names, the "greenery land" is not renamed "green land" (thanks to Zavie). I have now enough sprites to add the infamous "water". The only issue remaining was that the sprite index list is 42 bytes long, and mine was 43. As each level name ends with the same sequence I can use the last index as the beginning of the next one (each sequence starts with the length of the index list). So I swapped the sprite for "nd" with the beginning of the one whose index was equal to a sequence length. So I swapped it with "To" which was at index 6. Why 6? First because it's the length of the longest index list and also because sprite indexes are always even.
Here's the original index list (the fist 2 hexadecimal values are the values of the pointer table):
95 8F : 05 00 02 04 06 08
9B 8F : 05 0E 02 12 06 08
A1 8F : 05 18 0A 16 06 08
A7 8F : 05 14 00 16 06 08
AD 8F : 05 1C 02 20 06 08
B3 8F : 04 18 1A 06 08
B8 8F : 04 22 24 06 08
BD 8F : 05 02 10 18 06 08
C3 8F : 04 26 28 06 08
The new one:
95 8F : 05 00 06 04 24 06
9B 8F : 04 02 04 24 06
A0 8F : 05 08 0A 0C 24 06
A6 8F : 04 0E 10 24 06
AB 8F : 05 12 14 28 24 06
B1 8F : 05 20 22 26 24 06
B7 8F : 04 16 04 24 06
BB 8F : 06 18 1A 1C 28 24 06
C2 8F : 05 1E 0A 0C 24 06
Look at the penultimate (woot I learn a new word) index list. The first index is the list length and it's also the last index of the previous list. So we can use the previous byte by making the pointer tab points there.
[edit]: I updated the code for creating the IPS patch. As a proof of concept thing I attached an ips containing the level names translation and some drunk song as introduction. I need to check if then ending sequence is already handled.
Great news everyone (better late than never)!
Jean Phillipe (known as Shubibiman on some other forums) sent me a translation of the script. I had to do some more hacks in order to enlarge the text area. I also started to write some postmortem article.
I'll release a beta as soon as I have the "near final" version of the translated script.