hello guys, as i started to check out the asm i got to hack the game in gameboy assembly editor. i searched for code that loaded the address 8000, so the first i find is "ld hl,8000" (and then called for what i think may be some loading and decomrpession of tiles function). i changed the 8000 for 8800 to see what happens. and for my sourprise, the game loaded some tiles that it didn't in that particular part of the game (a nintendo logo set of tiles). in a hex editor i replaced some text for these tiles and then ran the game in no$gmb, and IT WORKED, the text was replaced for the newly loaded tiles (confirming that the tiles were now loaded).
Editing random part of codes is not exactly a good manner of doing things. Consider that in your ROM there there are very likely more than one instance of "ld hl,$8000
" so you might be editing the wrong one.
Anyway, excluding the option that you write your own (de)compressin tool, your other chance is this: overwrite the existing code (which decompresses fonts in Work-RAM and loads the result in VRAM) with a code that just loads uncompressed fonts from ROM to the original Work-RAM and than let that the existing program copies it to VRAM (so you don't have troubles with VBlank timings).
Obviously first you have to find and disassemble the original routine; to do this you'll need to use a debugger (I strongly suggest BGB
). You can for example put a breakpoint on access
to VRAM:8000 and see when the game stops right before loading fonts in VRAM, and then go disassembling.
Now, since I'm cool (and since I was curious), I gave a very
quick look at your game's code (using BGB), and found out that fonts can be loaded either in VRAM:8000 or in VRAM:9000. Here is a small chunk of extracted code, just to help you starting out somewhere:
ROM4:7398 21 00 80 ld hl,8000
ROM4:739b 18 03 jr 73a0
ROM4:739d 21 00 90 ld hl,9000
ROM4:73a0 3e 40 ld a,40
ROM4:73a2 cd de 10 call 10de
ROM4:73a5 c3 2a 07 jp 072a
So, now, all you have to do is put a breakpoint at 04:73a0 in BGB and figure out the code step-by-step to find what to modify. Also, notice that this game, like many japanese-version games, has very small free space, so you might need to expand the ROM and repoint fonts and parts of code in a different bank than the original.
kinda weird if i think about it...
is the nintendo logo at the begining of games stored in the rom or in the emulator?
The Nintendo logo is loaded by the Boot ROM
, located in the Game Boy hardware.