Just a quick little update here.
Video subtitling and re-encoding is 100% complete, and graphic/texture modification is 100% complete (I've even fixed some of the "Engrish" street signs in order to conform to the established localized names from "Death Crimson OX"). Lastly, translation is about 75% complete, after which I'll be doing a full playtest on real hardware, end to end.
I've also finished implementing two modifications I mentioned in my original post:
• Cheat Function:
Pressing the L+R triggers simultaneously at any time during the game will refill your credits to the maximum allowable value (255). Doing so also puts 15 minutes on any countdown clock (there are exploration levels of the game that hold players to a predefined time-limit to solve puzzles). This will allow players who want to experience the story not be forced to replay certain levels over and over.
• Mission Mode:
All mission levels (i.e., not Story Mode) are unlocked by default, thus not requiring players to progress past certain points of the game in order to enable them.
I haven't been updating this thread with all of the assembly hacking I've had to do for this game (unlike "Nakoruru", where I updated throughout the project's lifecycle with many detailed posts). That said, I've found that "Death Crimson 2" here has required just as much, if not MORE assembly hacking than "Nakoruru" did.
Heck, I even fixed a bug from the original developers (ECOLE) that prevented a dialogue instance from being rendered! In its original state, the player was presented with a clunky and jarring moment where they pressed A to progress dialogue text, and were then presented with... well... nothing! They then had to press A once again to proceed with the dialogue. Not anymore, though
Regarding the assembly hacking, here's just a small example, which I've copied and pasted from the original Twitter post linked below.
• Twitter Post: https://twitter.com/DerekPascarella/status/1753903779903140336• Nitter Mirror: https://twiiit.com/DerekPascarella/status/1753903779903140336____________________________________________________
I've encountered this a few times so far in "Death Crimson 2" while working on the Englsih translation patch. The game has moments where it dynamically calculates a Shift-JIS byte-pair rather than read and display stored strings for each number...
Noice the mismatch?
I'm sure you do, it's quite obvious! The numbers are using the Dreamcast's BIOS font and, as I said, are using on-the-fly generated Shift-JIS byte-pairs (e.g., 3 = 0x8252).
This is not only ugly, but forces me to use "rotation(s)" to satisfy 1 through 9.
But, what if...
Much better, right?
How's it work? I hook into the function that renders this text, then do ASCII calculation based on loop iterator (e.g., 3 = 0x33). I then add a space (0x20), overwrite Shift-JIS, and use pointer to "rotation" or "rotations" based on 1 or >= 2.
____________________________________________________