Black Rabbits and a Fully Stocked Dungeon of Indecipherable Code
May 7th, 2019
All right. Let's get back to wrapping this thing up.
Last time in this nonsense:
Battle Moon Wars SDK
Galaxy Angel/Moonlit Lovers SDK
Daibanchou – Big Bang Age SDK
Eternal Lovers SDK
Kamidori SDK
AQLoop SDK
Duel Savior/Xross Scramble SDK
Bumper Baby Banchou SDK
Seinarukana/Romanesque Helper Scripts
Bunny Black 1 Tools and Scripts
I already wrote a quite long post about the complexity of Bunny Black's engine, and I don't really want to repeat too much that's there. The scripts do decompile well into a very nice and workable format, although hacking needed to be done on the engine itself to get it to display text in half-width rather than full-width. In a rarity, the engine is built for Unicode rather than Shift-JIS, so it handles English well, just not displaying it prettily. But anyway, newlines are new lines. Lines have name tags attached. Scripts are generally grouped well (associated events are all placed in the same 'box' folder and in chronological order).
<name "Cat" "!QB0062">
"I-Impossible!
How… How could I be petted so easily!?"
#
<name "Darx">
"Heheheh.
You're a girl, aren't you?"
#
<name "Cat" "!QB0063">
"M-Mmhmm."
#
<name "Darx">
"Then that's why!
There's no woman I can't pet!"
#
It's everything else that is complicated and problematic. Almost all the gameplay strings are located in the obj files, which has its own decompilation and recompilation issues that were never made flawless, resulting in needing to have to effectively delete the original obj file and re-point the game to a folder of edited stuff from it. Looking at a sample skill definition, for example.
//entry 1 ———————–
Blade Dancer
Edged Weapons+5
剣|刀|両手剣|æ§|æ–§|ナイフ|手è£å‰£
Front
命ä¸çŽ‡
å¨åŠ›
最大å¨åŠ›
回数
会心
攻撃回
Sword Dance
fe005.wav
Wild Dance
fe006.wav
*
*
*
*
Edged Weapons
敵å‰è¡Œ
Technically, it's more of a waltz.
I honestly don't remember what each line is. Top is the skill name. About halfway down are what the actual usable skills it grants are along with anything that changes as the skill is leveled (ie Sword Dance and Wild Dance). '*' is a blank. And a lot of untranslated things are untranslated because they're internal IDs. The real problem is that it does a lot of cross referencing with the IDs in other places, which is where I got into trouble on the initial release. I hadn't realized that there was cross-referencing in the targeting data in the exe, and a bunch of skills were now pointing to nothing because they weren't also translated despite not actually being visible anywhere. Skill targeting was all corrupted and nothing was working quite like it should. Unit data (all the obj data really) is of a pretty similar format.
//entry 131 ———————–
フãƒãƒƒã‚°ãƒ¡ãƒ³ï¼¢
Toadman
Frogman
Ice
Fleet Footed
é”物レベル早熟
打撃攻撃A
æ°´ã®é”法å˜
斬撃攻撃B
æ°´ã®é”法縦
対物ç†é˜²å¾¡
æ°´ã®é”法横
A demon that won't|croak easily.|Hops away at a moment's|notice.
Fleet Footed|Retreat success rate up
There's actually quite a lot in the obj files that could be manipulated if someone was enterprising enough. All treasure chests are explicitly defined, for example, as are all possible enemy parties. One thing that is genuinely godawful is the unlocking minigame (the tone file), which the sequels thankfully did away with.
//entry 5 ———————–
I say it's #.
It is #.
I think it's #.
#, I think.
#…
I say it's #.
It is #.
I think it's #.
#, I think.
#…
Every possible party member had a series of sentence fragments that it would pick a random one from and fill in the trap type (in the # spot) on the fly. There are nearly 80 of those goddamned things, and while some of them for units like fish were just 10 copies of "Bloop!" I honestly can't say I made much effort to get all 800 possible strings to perfectly reflect who and what they were going after. The differences between so many were far too little and while it probably was possible to tease out which set went to exactly which unit, I just couldn't (and still don't) see the value. So aside from the fish ones, they ended up a bit… generic. I think most people playing the game would quickly grab unlocking talents to get as far away from that godawful nonsense anyway.
Belated Edit: The exe editing tool for the strings is kind of terrible. Besides needing to index every string yourself, if a string appears multiple times, it may need special handling, which is why a few are have a special tag attached. Which do though? That's something that I needed to figure out by guess and check. It's a royal pain.
Next time, Bunny Black 2, which may very well be Thursday or Friday considering that there's not a whole lot different from this besides the files themselves and so not a whole lot to say about them, but maybe I'll think of something.
Posted in Bunny Black | Comments Off on Black Rabbits and a Fully Stocked Dungeon of Indecipherable Code