Language…
7 users online: crm0622, Danik2343, Firstnamebutt,  Losoall, pnaha, tOaO, Zavok - Guests: 149 - Bots: 412
Users: 64,795 (2,381 active)
Latest user: mathew

VWF Dialogues v1.4

Patch

why not install levelasm and then index by $010B before indexing by screen number, X position and extrabit?

There really is no need to change it from using the palette. That's a lot of unnecessary effort; just read from $0703 as was suggested, or in the rare cases where that's not as reliable, wait for an h-blank. Done and done.
So, in this way, would be using the NPC sprites with this patch possible? Which part of the sprite code should be changed?
But imamelia's new NPC sprites sound promising too. I really hope that we'll be able to use NPCs with VWF Dialogues soon, I'd love to use them in my hack.
Using the NPCs using the normal Message 1 and Message 2 is already possible with this patch. We're discussing loading additional messages.

And yeah -- imamelia's sprite tool would allow for lots of customization, which is handy for something like this.

[?] Miscellaneous Helpful Hints
If I moderated your hack, there was apparently a 90 percent chance it was rejected.
Oh, yes, I was talking about the additional messages too. I had a castle level with 12 NPC messages in it, and they used the palette method too. After I patched this patch, all of the messages broke, of course. So, I really can't wait for any kind of updates on this topic!
With some help from imamelia, I rearranged the sample block code so you can use it to have SMB3 Toad House-style messages (i.e. messages that appear as soon as you enter the sub-level) if you're using LevelASM. Used right, this can greatly expand the usefulness of this patch.

Put this in levelinitcode.asm under the level you want the message to display in:

Code
	REP #$20
	LDA.w #$0050		; Message to display
	JSR InitVWF
	RTS


Put this somewhere else in levelinitcode.asm (like after all the level code):

Code
	!VWFState = $702000	; VWF State register address

InitVWF:
	STA.l !VWFState+1
	SEP #$20
	LDA.l !VWFState
	BNE ReturnInitVWF
	LDA #$01
	STA.l !VWFState
ReturnInitVWF:
	RTS


[?] Miscellaneous Helpful Hints
If I moderated your hack, there was apparently a 90 percent chance it was rejected.
How can I know which DMA channels this patch uses when loading messages? I'm running into some slight compatibility issues when it comes to using HDMA effects and this patch:

HDMA before the dialogue opens -
HDMA after the dialogue opens -

I just need to figure out how to ensure that this patch and HDMA effects reserve different channels for their effects. (And, my understanding is that channels 3-6 are more or less free for any normal use - is that correct?).

[?] Miscellaneous Helpful Hints
If I moderated your hack, there was apparently a 90 percent chance it was rejected.
The patch uses channel 4 if I recall correctly, avoid using that and you should be good.

As far as I know, channels 3, 4 and 5 are completely free, though the others aren't exactly dangerous to use either when there's no way for them to interfere with any other HDMA effects (keyhole windowing, goal iris effect etc.).


 
Channels 1 and 2 are used in the NMI routine and should not be used at all. It is also likely that channel 0 is used, but I was too lazy to look through the entire NMI routine.
However, it should be safe to use channels 6 and 7 if there's no goal/keyhole/etc nearby.
<blm> zsnes users are the flatearthers of emulation
Originally posted by WhiteYoshiEgg
The patch uses channel 4...


You have a good point there, I should add that to the Readme. I didn't really think about that when writing it.
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!
Also, is that the standard Layer 3 status bar? The messages cause layer 3 to disappear when they pop up (although it will be restored afterward, and I'm not sure what happens with the part above the IRQ line).

And yeah, making the patch use a different channel for DMA—such as 7—might have been nice. That should be possible to modify, though, by changing the "dmatransfer" macro.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by imamelia
Also, is that the standard Layer 3 status bar? The messages cause layer 3 to disappear when they pop up (although it will be restored afterward, and I'm not sure what happens with the part above the IRQ line).

And yeah, making the patch use a different channel for DMA—such as 7—might have been nice. That should be possible to modify, though, by changing the "dmatransfer" macro.

Yeah...I'm using the standard Layer 3 status bar. I'm okay with it disappearing during messages. Why do you ask?

Channel 7 for this might be nice, since in theory the messages should never load during level iris-in's -- it would just limit using this in a spotlight room, I suppose, which isn't much of a drawback. Is there an easy way to switch the channel used? Is the only instance of channel-use determination in that one macro?

[?] Miscellaneous Helpful Hints
If I moderated your hack, there was apparently a 90 percent chance it was rejected.
Originally posted by imamelia
and I'm not sure what happens with the part above the IRQ line).


During a dialogue there is no IRQ. IRQ gets disabled by the IRQ disable flag until the dialogue is done.

Originally posted by imamelia
And yeah, making the patch use a different channel for DMA—such as 7—might have been nice.


Actually I tried using different DMA channels in my patch when making it, but for some reason all of them came with some weird side effects, except for channel 4. Then again I may not have tested all of them.
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!
Is this patch incompatible with this hex edit?

Code
$05B189/x2B389: [D0 CF] Change to [EA EA] to prevent the message that pops up in the intro screen from exiting the level. 
(It will act exactly the same as a message in any other level.)


When I use it, it does nothing and ends the level, teleporting (which is the thing I really want) doesn't seem to work either in level C5.

Or is there another way of doing it?
Originally posted by RPG Hacker
I guess you could make a custom block and store #$00 to $0109 until the intro is done.


I don't know how to make custom blocks - I guess I'll just work something out.
Mega bump!

Since VWF dialogues v1.0 has some issues regarding compatibility and minor stuff, I got permission from RPG Hacker to update his patch.

This version fixes basically the palette issues with bsnes, fixes HDMA conflict since it was using channel 4 as DMA for no reason and it fixes the cursor not disappearing when you move it when you use "options" mode.

Also it uses now Asar instead of xkas. Pretty much you only need to override your old vwfdialogues.asm with the new one and patch with Asar. *Probably* you won't have to edit vwfmessages.asm to make it work with Asar.
GitHub - Twitter - YouTube - SnesLab Discord
My layout has recently been updated, but you still have the old stylesheet cached and things might therefore not look as intended, as such, it’s recommended to reload the page.

Mega Bump 2: Electric Boogaloo!

With the help of me, randomdude999 and RPG Hacker, VWF Dialogues version v1.2 has now been submitted for moderation and uploaded to RPG Hacker’s GitHub repository.

Version 1.2 major changes:

  • Converted to a SA‑1 hybrid patch.
  • Completely overhauled the Readme - it now looks nicer and some of the outdated information in it was updated (it’s called the Manual now).
  • The patch now uses a coding style that’s more in-line with RPG Hacker’s other patches - most configurable settings are now in vwfconfig.cfg.
  • Randomdude999 added a Python script for generating width tables.
  • Bug fixes and improvements… (see the version 1.2 changelog in the Manual for details)
Edit: Never mind, I didn't read the manual all the way through.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Great update. Much friendlier and cleaner compared to the older versions. I also appreciate the new updates made after some of my suggestions, and the width generator is pretty handy for custom text drawers/rippers. Thanks!

btw for people wondering what RAM address should be set to non-zero to instantly terminate a dialogue, refer to 'Abort Dialogue Processing register' address in the command window, e.g.:



One can now have an uberASM code to press a button to close a dialogue box when one is active, e.g.:

Code
;level code example

!VWFState = $702000	;VWF state register address
!VWFAbort = $70210E	;VWF abort flag

!Button = $20		;button to press to terminate dialogue (Select by default, refer to RAM Map for details)
!ControllerData = $16	;can be $15, $16, $17 or $18 (refer to RAM Map for details)

main:
LDA !VWFState		;load dialogue state
BEQ .return		;if no dialogue is being processed, return.

LDA !ControllerData	;load respective controller data flag
AND #!Button		;check if respective button is pressed
BEQ .return		;if it's not pressed, return.

LDA #$01		;load value
STA !VWFAbort		;store to VWF abort flag.

.return
RTL			;return.


Note that these addresses may vary depending on your ROM setups, and that this code only instantly closes the text box (no teleporting or skipping parts of a dialogue - you have to find a way to do so yourself). Keep that in mind.
MK2TDS

Patch