Users browsing this thread: 1 Guest(s)
Help needed, Opera scene in 50Hz

#1
Posts: 12
Threads: 3
Thanks Received: 0
Thanks Given: 2
Joined: Feb 2016
Reputation: 0
Status
None
I'm almost finished fixing an old Swedish translation of FF6, I have you guys to thank for a lot!

I would love to have the game running in 50Hz, to accomplish this I'm using d4s old patch, romhacking FF6 PAL-fix
It works just fine until you get to the famous Opera scene where it all breaks down.

The main problem is that the F9 01 command at CA/BB2B doesn't work, it is supposed to pause event execution until the song has passed a specific point.

Here is the script (Can't seem to find the correct page on datacrystal, this is from the event disassembly)
Code:
CA/BB20: 31    Begin action queue for character (Party Character 0), 6 bytes long 
CA/BB22: C1        Set vehicle/entity's event speed to slow
CA/BB23: 82        Move vehicle/entity down 1 tile
CA/BB24: E0        Pause for 4 * 48 (192) frames
CA/BB26: 82        Move vehicle/entity down 1 tile
CA/BB27: FF        End queue
CA/BB28: 4B    Display dialogue message B9, wait for button press (Show text only)
               The next line is…?
                  ^(Oh my hero…)
                  ^(Alas, Draco…)
CA/BB2B: F9    Pause execution until the music passes through predetermined point
CA/BB2D: B6    Indexed branch based on prior dialogue selection [$CABB3D, $CABB35]
CA/BB34: FE    Return

Is it at all possible to fix this? Any suggestions are dearly appreciated!
  Find
Quote  

#2
Posts: 272
Threads: 18
Thanks Received: 130
Thanks Given: 53
Joined: Mar 2014
Reputation: 8
Status
None
A fellow swedish FF6 hacker? Gött mos!

It looks like the PAL patch specifically disables the functionality of the F9 event command in PAL mode in order to fix some issue with the ending:

Code:
.bank 0 slot 0
.org $9A4C

    .dw CheckMusic


.bank 0 slot 0
.org $fee8
.section "ending fix" overwrite

CheckMusic:
    lda.w $213f
    and.b #%00010000
    bne AdvanceOneEvent    ;dont check music if in pal mode(will crash otherwise)
    lda.b $eb
    cmp.w $2141
    beq AdvanceOneEvent
    rts
    
AdvanceOneEvent:
    jmp $B8C2

.ends

I don't know what the issue is that the PAL patch attempts to fix, but disabling this event command is clearly not the proper way to fix it. Sorry I can't be of more help!

EDIT: I found some references to the ending bug. It seems that if run in 50 Hz, fading to black tends to freeze the game. This was commonly seen in Gogo's part of the ending but could occur in other places as well. Also, running in 50 Hz could apparently also cause desynchronization between music and graphics in long cutscenes?
  Find
Quote  

#3
Posts: 12
Threads: 3
Thanks Received: 0
Thanks Given: 2
Joined: Feb 2016
Reputation: 0
Status
None
Se där! Smile

Well that sucks, so basically find another way to fix 50hz.
Or maybe I could just remove the first question in the script, It's not optimal..

EDIT: Yeah, the music is playing in the wrong speed, so it desyncs, but its pretty unnoticable anywhere else besides the opera scenes.
  Find
Quote  

#4
Posts: 3,856
Threads: 271
Thanks Received: 782
Thanks Given: 444
Joined: Oct 2011
Reputation: 63
Status
Tissue-aware
hmmm, not sure it's the optional way either to fix this but you could tweak the events after a while... Like for one or more "wait 40 frames", do a "wait 30 frames" instead or if the character move 4 tiles left, move him 3 tiles left. I think a better approach is playing with the wait event commands during the whole opera if any.
  Find
Quote  

#5
Posts: 12
Threads: 3
Thanks Received: 0
Thanks Given: 2
Joined: Feb 2016
Reputation: 0
Status
None
This is how i fixed the first bit, the actual problem with the Maria scenes is that the script continues regardless of the music. So, if you make your first selection to late the music will be way off.

Or can you make a two option choice window where the player cant press a button to remove the window and instead just use the option that was marked when the text window disappeared? If possible this would give a fixed time to sync to
  Find
Quote  

#6
Posts: 2,349
Threads: 93
Thanks Received: 346
Thanks Given: 318
Joined: Aug 2009
Reputation: 44
Status
Nattak\'d
Have you tried adjusting the amount of time the text box appears for, this thing in the dialog E$10 OP$12 for instance? The E$XX can adjust the amount of time the box stays up for. Or you can use other types of pauses such as <> with a D in the middle (the forum won't let me post things inside <> for some reason) in between text to have more time-control of the dialog. If you've tried this already or I'm way off on my suggestion compared to what the actual issue is, I apologize.


We are born, live, die and then do the same thing over again.
Quote  

#7
Posts: 12
Threads: 3
Thanks Received: 0
Thanks Given: 2
Joined: Feb 2016
Reputation: 0
Status
None
Yeah that works most of the time.
Thing is that I just don't know when the player makes his/he choice in the beginning, originally the music loops and holds the script until a certain point in the music until letting the script continue, because of the 50hz patch it doesn't wait and the sync is waaaay off.

Edit: Basically, I can sync the choice window, but if the player makes the choice in 2sec instead of waiting for it to disappear the sync is bust.
  Find
Quote  

#8
Posts: 3,856
Threads: 271
Thanks Received: 782
Thanks Given: 444
Joined: Oct 2011
Reputation: 63
Status
Tissue-aware
(04-19-2017, 01:25 PM)mrTentacle Wrote: Edit: Basically, I can sync the choice window, but if the player makes the choice in 2sec instead of waiting for it to disappear the sync is bust.

Yeah basically the last moment you can sync and be sure it is synched is before the first choice, after it goes after the end of the flower throw if I understand your issue correctly.
  Find
Quote  

#9
Posts: 12
Threads: 3
Thanks Received: 0
Thanks Given: 2
Joined: Feb 2016
Reputation: 0
Status
None
I think that I've solved it! Laugh

Writing about the problem made me think of it in new ways, thanks everyone!

Instead of F9 (Pause execution until the music passes through predetermined point) I use a basic wait command thats longer than the time the choice windows is up, that way it doesn't matter how fast you chose the next line.

Now I just have to adjust all the wait times in the rest of the scene..
  Find
Quote  

#10
Posts: 272
Threads: 18
Thanks Received: 130
Thanks Given: 53
Joined: Mar 2014
Reputation: 8
Status
None
Ser fram emot att testa den nya översättningen. On det är den gamla Cyndeline-översättningen så fanns det gott om utrymme för förbättringar.

Looking forward to trying out the new translation. If it's the old Cyndeline translation it sure had lots of room for improvement.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite