Thanks for all your comments!
Originally posted by andy_k_250Is there any reason one would want the sprites to not be frozen during the message?
Well, yeah. Pretty much all of this text box was inspired by secret of Mana a lot. In Secret of Mana the text box was also used to give you messages like level up messages or stuff like that. Those never froze the game, they were just shown on the top of the screen. I also can think of a few other ways of using this function.
Originally posted by andy_k_250Also, can this reload Layer 3 effects (tides, mists, fish, custom stuff) after the message box closes?
Well, yeah. The complete layer 3 data is backed up to RAM before the actual code starts (I'm using Kaijyuu's OW Event Restore Patch to get 16 kb at $7F:0000). The actual layer 3 settings - like scrolling rate or position - are absolutely untouched. That's where my method of just expanding the Status Bar IRQ during dialogues comes in handy. I'm abusing this IRQ so that I don't have to touch the other layer 3 settings at all and therefore don't have to backup everything. I'll try to include in a video what that looks like if I don't forget it. It doesn't change the fact that layer 3 is "invisible" during dialogues, though, so it may still be better to not use this in layer 3 levels.
Originally posted by KilloZapitThat's where xkas' .tbl file support and macros becomes handy. Though I am honestly not sure if 16-bit .tbl are supported. Anyway it almost seems simpler to me to make it command based, not character based, so each block of text is prefixed by a mode and size. If you want me too, I could write the macros for you... I have gotten pretty good at them.
Well yeah, right now I'm using an asciitable to get the correct values. Since I have word wrap and auto line break ready now it is pretty easy to write longe dialogues with this. But my main concern is that this method is not comaptible with Unicode and my patch was designed to be compatible with all kind of languages. That's also why there is 16-Bit-Mode, even though it wastes double the space. I really don't know of any good compression format that at the same time keeps everything easily customizable. I could probably make a font compressor like Romi did, but then again I would need a GUI application even more and editing those files would be arse.
Originally posted by KilloZapitBut it's only necessary to use all the layer 3 gfx in full screen box which wouldn't have the status bar anyway... there is a good chunk of it that's mostly only use for the title screen and message boxes which should be enough for 3 or 4 lines.
Yeah, but how is the patch supposed to know whether some area in VRAM is untouched or not?
Originally posted by KilloZapitThat said, it's probably not a big deal to lose layer 3 for a while. One effect I thought of doing for cutscenes was to scroll the status bar up off the top of the screen before one and scrolling it back down after one. Not really hard to do, just change where the it puts the status bar scroll register and calls the IRQ. Oh and the item box sprite. Which reminds me, you should make it hide the sprite if you don't... I don't remember if you got any power ups in the vid.
Yup, I've thought of hiding the sprite. Well yeah, such an effect indeed would not be all that hard to make. I'm leaving that up for the user for now. Everything that has to be done is modifiy the IRQ layer 3 position from my patch. One problem could be, though, that often in SMW right below the Status Bar there are other graphics. The layer 3 smaher for example starts right under the Status Bar. Moving it up would show it in the Status Bar. Of course you could overwrite that space before you do so, but then again if a layer 3 smasher is currently on the screen it would suddenly get cut-off.
Originally posted by RPG HackerTry pre-calculating line size for each block of text or when the textbox opens and not as it's drawn. A short pause is better then constant lag. That said, depending on the timing, it might not be practical to do a whole bunch of crap at once.
My problem is that I do not have all that much RAM. If I did I would just create the whole dialoge in RAM and then make it possible to load up everything at once. I think I've already wasted more than enough RAM already. 558 bytes + 16 kb for layer 3. Some of thsoe 558 are still untouched, though. But yeah, I kinda thought of using RAM to make everything faster, too. I don't necessarily have to waste a lot of RAM for that. I could just take a few routines that are often called and shorten them by saving some of their settings to RAM before the dialogue even starts. This would defenitly make everything a lot faster.
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!