Post by megatronuk on Mar 26, 2019 8:59:55 GMT
Hi everyone,
It was sad to see the closure of pcenginefx, especially so since I finally picked up my translation of Cyber Knight again.
The original discussion thread was here: www.pcenginefx.com/forums/index.php?topic=16222.0
Anyway, this has lain dormant for a couple of years now and I've got the urge to give it another push to see if I can get it through to the end. However it's been such a long time since I did anything with it that I've completely forgotten the problems I was experiencing which made me put it down (apart from the endless edit script / inject / load game / load save / play cycle).
To bring things up to speed we found that the original rom used 16k asset banks that were mapped in, with text and graphics stored in these banks. A basic table system pointed to each bank in rom with a table of pointers to the assets. Strings in each asset are null byte delimited.
We made the decision to expand to a 768kb rom, adding enough extra banks to have one single asset per bank. The table is modified to point to each of these banks.
For the vast majority of use cases this works perfectly, giving each asset up to 16kb of space for the expanded English script. However, I hit a problem several years ago that I'm still unable to solve - there are a few screens in the game that I've found so far that now completely blow up. The first being the character creation screen which no longer shows the names of your squad mates and their initial attributes (just blank) and the load-save screen which instead of printing basic text like "select the save to load" now prints a load of text from elsewhere within that asset chunk - in fact it prints text from a test menu (which isn't activated in the game). This is really weird since those strings (the ones which are supposed to be displayed, and the ones which are actually shown) are in the middle of some asset chunks; it's not like they span any boundaries or anything like that.
Since I don't actually understand the assembly code behind it, I'm now rather stuck.
Would any of the experts be willing to take a look to see if we can get over that hurdle?
Code is here:
github.com/megatron-uk/cyberknight-pce
You should just be able to drop "Cyber Knight (J).pce" in to that folder and run
... and it will inject all of the assets (both translated and not), expand the rom and rewrite the asset pointer table.
John
It was sad to see the closure of pcenginefx, especially so since I finally picked up my translation of Cyber Knight again.
The original discussion thread was here: www.pcenginefx.com/forums/index.php?topic=16222.0
Anyway, this has lain dormant for a couple of years now and I've got the urge to give it another push to see if I can get it through to the end. However it's been such a long time since I did anything with it that I've completely forgotten the problems I was experiencing which made me put it down (apart from the endless edit script / inject / load game / load save / play cycle).
To bring things up to speed we found that the original rom used 16k asset banks that were mapped in, with text and graphics stored in these banks. A basic table system pointed to each bank in rom with a table of pointers to the assets. Strings in each asset are null byte delimited.
We made the decision to expand to a 768kb rom, adding enough extra banks to have one single asset per bank. The table is modified to point to each of these banks.
For the vast majority of use cases this works perfectly, giving each asset up to 16kb of space for the expanded English script. However, I hit a problem several years ago that I'm still unable to solve - there are a few screens in the game that I've found so far that now completely blow up. The first being the character creation screen which no longer shows the names of your squad mates and their initial attributes (just blank) and the load-save screen which instead of printing basic text like "select the save to load" now prints a load of text from elsewhere within that asset chunk - in fact it prints text from a test menu (which isn't activated in the game). This is really weird since those strings (the ones which are supposed to be displayed, and the ones which are actually shown) are in the middle of some asset chunks; it's not like they span any boundaries or anything like that.
Since I don't actually understand the assembly code behind it, I'm now rather stuck.
Would any of the experts be willing to take a look to see if we can get over that hurdle?
Code is here:
github.com/megatron-uk/cyberknight-pce
You should just be able to drop "Cyber Knight (J).pce" in to that folder and run
lib/expandRom.py
... and it will inject all of the assets (both translated and not), expand the rom and rewrite the asset pointer table.
John