Show more

Oh, bleh. A realization about character dialogue hit me...

There is a function used during character dialogue in-game that copies data from a temporary buffer into a particular location, which is read later when drawing character dialogue on-screen. This function only copies 64 bytes of data. (There might only even be 64 bytes of free space available in this location; I don't know for sure.)

Show thread

That means that, unless all dialogue in our translation takes less than 64 bytes, I'll be rewriting this function call, and possibly be looking for extra empty space in RAM I can use for a text buffer instead of where IS2 usually reads from. :S

Annoying, but doable...

Show thread

This ... took way longer than it should have, but it's done enough that I can rebuild all the changes I wrote by hand using this patcher program. ^w^

I feel like adding new bits will go much faster now!

Show thread

It was as if all of Itadaki Street was screaming in unison, in horror of what had happened to their game.

Show thread

Then, calmly, everything returned to normal, almost like nothing out of the ordinary had ever happened.

Show thread

Poking through system menu dialogue for Itadaki Street 2 tonight. This game does ... weird things sometimes... but at least I'm understanding better how its code is structured.

Show thread

I don't even understand how I made this work, but I made it work...!

Show thread

I can't do math today. 0x649F + 1 is not 0x649A... >.>;;;;;

Show thread

Well... I have some things working that weren't before, now! ^w^ Almost all menu dialogue has been formatted and inserted, and things look pretty good!

Show thread

flashing, glitchy graphics 

Show thread

I've already fixed one of those bugs (extra spaces in names), which was caused because I didn't bugtest my code when I originally wrote my variable-width font code, and a register got clobbered. ^^;;;

The dialog boxes that I didn't recognize are actually character-specific dialogue that is in a different format from what the game expects there, so that's why they are completely broken. I'll look for those code references later, I guess...

Show thread

And that flashy, glitch mess at the end... is probably caused by a bank value being wrong, and incorrectly-formatted, unterminated text being drawn, which overflows the tilemap into other parts of RAM, and eventually consumes the entire game...

I don't know exactly how I'll tackle that yet. .-.;;; It's part of a few lines that required extra work, so I left them out when formatting the rest of the menu text...

Show thread

Well, I fixed what caused everything to break yesterday, and ran into a different, very annoying and also very strange bug:

When playing any game with an AI opponent, after that AI player says anything, the game clears completely wrong memory addresses when removing their dialogue box. This causes all sorts of problems, like corrupt tiles overwriting the map, the HUD disappearing, or the game soft-locking after displaying that dialogue box...

Show thread

Nothing I added recently directly caused this; it is either a byproduct of something I added in my very first patcher build, or something related to how my patcher itself builds everything into the ROM.

My hand-patched build from months ago doesn't exhibit this bug, so I have no idea what is wrong...

Show thread

Oh no... I isolated what is wrong here, and I am not happy at all...

It's another instance of this game always expecting its text to be in a very specific bank. It never, ever updates what bank it searches for dialog boxes in, only what address within that bank is being currently used.

That causes problems like this, where another function is looking for where it should draw (or, in this case, clear) a dialog box, but it runs off into who-knows-where and trashes memory...

Show thread

It didn't happen in my hand-patched build because I hadn't moved any dialog boxes that called this function into expanded ROM space, and my code that handled AI dialogue used the original dialog box definition.

This is so frustrating...

Show thread

I'm glad I documented what I was doing last here, because I hadn't marked down what needed changing anywhere else...

I'm exhausted today already, but I will try working on this later...

Show thread

I finished fixing all the code that was calling the SearchDialogDefinition function last night, so ... now I have to go back through each dialog box call, and check the surrounding code for any of the old functions I just replaced, and repoint them properly...

... weh. Tedium. x.x;;

Show thread

Awesome, rewriting everything that touched SearchDialogDefinitionForA fixed the corruption bug that was crashing games when AI characters said anything! ^w^

... aaaand I immediately found another corruption bug in a dialog window I didn't touch yet. >.<;;;

I don't even know how Konomi's face got corrupted...

Show thread

Okay, fixed that. (It was a string I had explicitly skipped before, because I didn't know where it was being used.)

Still lots of work to do before I can move on to something else...

Show thread

Writing a function to center text, since the original function won't work with my new text format, or with a variable-width font...

Show thread

The original code only used this centering function for displaying street names, but hopefully I can rework it so any arbitrary line of large text can be centered. We'll see... ^.^

Show thread

It's so weird having code I write mostly from scratch work first try. ^w^

Show thread

"Hmm, why is the vowel extender mark so short in this dialog box? Is there some bug with my text drawing code...?"
...
"wait a second... that's... not a chōonpu... that's a hyphen..."

Show thread

Why yes, I've been having lots of fun with this project, why do you ask? >.>;;;

Show thread

random glitch graphics 

Show thread

re: random glitch graphics, translation mishaps 

Show thread

okay, after FINALLY getting this code to work, after several hours' worth of debugging, and finding out that the original game's code makes an assumption that doesn't hold anymore with how my code works...

I can finally, finally insert new venture card text.

Show thread

Itadaki Street 2 tidbit:

The Maharaja (bonus AI character who pays you if he lands on your shop) has his starting cash set to 0x7FFF7FFF (2,147,450,879 G). The game never deducts any of what he pays from his cash total, though, so he effectively has infinite cash. .w.

Show thread

Another Ita2 tidbit:

There's a bit of unreferenced text near one routine that handles venture cards #61 and #62, which give stock dividends of 10%/20% normally. At first glance, though, this text seems like it would just print garbage tiles on screen...

It turns out this extra text is old enough that it expects a lowercase English font, which isn't in the final game anymore... and it also suggests you originally got paid a flat amount per stock share you owned instead!

Show thread

In today's "why is this code making the game crash" adventures, spot the bug:

stack.push(tile_ID);
stack.push(tilemap_index);
stack.push(bank_number);
... // Run code here
stack.pull(tile_ID);
stack.pull(tilemap_index);
stack.pull(bank_number);
return;

... It's doing things in the same order! How can this code be broken...? ^^;;;;;

(I have since fixed this bug. ^.^)

Show thread

Oof, I found at least four bugs in IS2 last night. One of them is a softlock present in the original game... .w.;;;

Show thread

Spent a day or two this week figuring out what the Japanese bugfix hack for Itadaki Street 2 changed. Turns out there were some really obscure but very strange bugs in the game... .w.;;;

Show thread

I can't wait to talk about these bugs I've been looking into in Itadaki Street 2, because some of them are very silly... Just have to find enough focus and mental energy that I can finish writing a post about them... .w.;;;

Show thread

I haven't gotten around to writing another Patreon post in a while, because I've been working on things that aren't finished yet... .w.;;;

I'm kind of changing my workflow for the IS2 translation a lot! and it involves rewriting a bunch of the disassembly I had so it's compatible with a different program... but hopefully it will be done soon and I can ... maybe... get working on adding new things again soon... .w.;;;

Show thread
Follow

Itadaki Street 2 devlog 

Itadaki Street 2 devlog 

Show thread

Itadaki Street 2 devlog 

Show thread
Sign in to participate in the conversation
Awoo Space

Awoo.space is a Mastodon instance where members can rely on a team of moderators to help resolve conflict, and limits federation with other instances using a specific access list to minimize abuse.

While mature content is allowed here, we strongly believe in being able to choose to engage with content on your own terms, so please make sure to put mature and potentially sensitive content behind the CW feature with enough description that people know what it's about.

Before signing up, please read our community guidelines. While it's a very broad swath of topics it covers, please do your best! We believe that as long as you're putting forth genuine effort to limit harm you might cause – even if you haven't read the document – you'll be okay!