[FF7PC-98/Steam] Multiple mods and Modding Framework-The Reunion [R06f]

  • Thread starter Thread starter DLPB_
  • Start date Start date
Status
Not open for further replies.
The problem with it is that it wasn't intended - it was a major oversight that allows for exploitation of EXP.  If they had known about it, it would have been removed.  However, I will remove it when Weapon is not used.  Using Square to move the Highwind is also an oversight - I think very likely for use in testing that was accidentally left in.  I believe it isn't even noted on the operation control help text.  People will no doubt be annoyed when I remove that, too.  But that one has to be removed since it also leads to game issues (like getting through the barrier of Great Crater.  I am definitely removing that one because it is an oversight that leads to more bugs.
Not to be a contrarian, but are you certain it wasn't intended?  There are several other Final Fantasies where you can hold the confirm button down to speed through battle menus and attack in that way.  I have the original Super Famicom versions of Final Fantasy IV, V and VI on my computer and just confirmed that they all have that control feature, and the other two Playstation Final Fantasies, VIII and IX, also both have that feature (I think ALL the games might have it, actually).  It would seem pretty odd if VII was the only one where they intended not to include it.

Although my guess is that you're right in that taking out that Highwind strafe control will definitely annoy people, that one I get (although they have the exact same thing in Final Fantasy VI for that game's airships (Y button instead of [Square]), so I don't think it's something they forgot to remove from testing in VII as an oversight, and it isn't noted on the operation control help text because there IS no operation control help text, as far as I know-- the game just puts you in control of the Highwind without telling you how to move it.  Just checked two different youtube longplays right when you get the Highwind to confirm).  If it causes a ton of bugs and lowers the enjoyment of the game overall then hey..
 
I'm pretty sure that the design team never intended you to be able to use Midgardsormr to gain EXP by leaving the computer on all night, yes :P  Although perhaps the error here is that it respawns.  Still, holding the button does create other issues - such as being able to accidentally proceed without a confirmation of action.  That's usually something a design will avoid.

The game does tell you how to move in the operation list by a guy on the highwind.  The square button is not noted from what I recall, and it seems to me that moving that way is actually aerodynamically impossible. It always struck me as stupid. The Ragnarok in FF8 (and airships in ff9) doesn't have any similar operation either.  But I am definitely removing the square button operation.  I feel it is nearly certainly an oversight - and it definitely leads to further bugs. The Reunion has a goal of eliminating all bugs where possible, so it has to go.
 
Last edited:
I'm pretty sure that the design team never intended you to be able to use Midgardsormr to gain EXP by leaving the computer on all night, yes :P
True.  I think people deciding to exploit some of the features of what makes up a game are just part of what comes with making a game, though.  It's not like people are actively exploiting a glitch in-game during a normal playthrough (like the W-Item thing), they have to go out of their way to set up something that clearly isn't part of normal gameplay-- leaving their copy of War and Peace on top of the "confirm" key on their keyboard overnight, lol.

There's something exactly like it in Final Fantasy VI too, at the Lethe River.  Probably the people who made the game knew that that the option selection scheme for the river event could likely be exploited by a wily player who wanted to level up fast, but they put it in like that anyway because it didn't matter-- the sequence as it was set up was part of the game and wasn't hurting the experience for anyone; proof of this is that it's never been removed or altered in any of its re-releases while other issues were.  Someone would have to actively be a jackass and go out of their way to juke the game at the Lethe River to take advantage of it, lol.  And if someone really wanted to go that far, then that's just the way they wanted to play the game, there's no point in trying to stop them. It's like people using a cheat code.  Cheat codes don't need to be removed because they don't ruin the experience of the game.. they're cheat codes, they're not part of normal play.  They're there for people who want to have fun playing the game that way, and everyone else just plays normally.


Although perhaps the error here is that it respawns. 
I don't think it would bother anyone if the respawning was changed to only occur after leaving the area and returning-- doing that sounds like it might be the perfect fix if you really want to get rid of that exploit.  I always hated that it respawned right away myself.


Still, holding the button does create other issues - such as being able to accidentally proceed without a confirmation of action.  That's usually something a design will avoid.
True but all of the Final Fantasies are like that.  Having that feature is an intent of the creators to make the experience run more smoothly for the player.  Removing it may get rid of the occasional misselection, but it will make the entire game more tedious as a tradeoff.  The creators of the game knew what they were doing and consciously chose to set things up that way to avoid that tedium.  And everyone who uses that feature realizes that there's a risk that if they're too overzealous or not paying attention they could make a mistake.  And that could happen anyway if someone was grinding and pressing "confirm" rapid-fire and looked away for a second to take a sip of their Dr. Pepper and then looked back to realize they made a misselection.  I feel like giving people the choice on how they like to control their game is treating them as adults.  The same as RPGs that include the optional, imperfect "auto-battle" option for people who want to use it to zip through the tedious parts of battle.


The game does tell you how to move in the operation list by a guy on the highwind.  The square button is not noted from what I recall, and it seems to me that moving that way is actually aerodynamically impossible. It always struck me as stupid. The Ragnarok in FF8 (and airships in ff9) doesn't have any similar operation either.  But I am definitely removing the square button operation.  I feel it is nearly certainly an oversight - and it definitely leads to further bugs.
Yeah.  It's too bad it has to go but I get you here.
 
I'll add the button confirmation as an option.  I'm still unsure how to proceed with The Reunion.  I've recently worked out how to use "hooks" and so now I can take over entire functions and rework them how I want - just like Aali's DLL does. The question is how much the Reunion exe changes should be external - and how much should just be part of my new dll.  It's conceivable that I will make The Reunion simply part of an option.

Or at least part.  Certainly the frame limiters will all now be fixed using my DLL. Automatically.
 
I have checked the PSX version (as well as the PSX demo) and the sound effect behavior is the same as on PC. It's mostly designed for a static camera. Magic effects seem to be played centered and clever as they are, they tried to have the camera focused on the effect's sound source. For me would be a workable fix to have the sound set to mono for the battles. That's not a nice solution, but better than have wrong stereo sound.
 
Thanks for that, Kal. I can force centred sound effects (with stereo).  I'll add it as an option for people.

I think they made a balls of it tbh. The sound balance value itself is always updated, btw...  It's only when the effect is played that it is used.  So it might even be possible to add full transition in.  Assuming it isn't broken too.
 
Last edited:
In other news, Charlie Beer / shikun  is our latest recruit (whether he survives the test that, so far, only Luksy has passed, remains to be seen :P ).

Welcome aboard!
 
I've been looking at the credit screen again.  I know how to fix the frame limiter there now.  It's always been broken - like the other modules.  problem with this one is that it's completely broken - so without vsync you get a frame rate as fast as your cpu can process. I'm sure most of you have seen this.  Well, that's fixed.  I'm adding all of this code to the DLL. It's going to take me an enormous amount of time to get to grips with all the options I am adding and stuff... but by fuck I will do it.,  :)

The credit screen is still not fixed, though, because now I have to make it look like the PSX version.  Delays and timings and speeds are different.  My OCD won't let me leave it.
 
Last edited:
All those hours wasted editing all that sodding assembly... when I could have been using a DLL.  It's been a bit of a hard road to get to this point though!  But we're here.

Rather than handwriting assembly and being forced to use QPC from Aali's driver.... here is the basic frame limiter (more being added to it in time - but this example works fine for 60fps modules)

Code: [Select]
Code:
Procedure NewFrameLimiter; stdcall;Var  ClockTarget, LoopTime: Int64;BeginQueryPerformanceCounter(startTime64);LoopTime:= StartTime64;ClockTarget:= round(Frequency64 / 60) - (StartTime64 - LastTime64);While  LoopTime - StartTime64 < ClockTarget doQueryPerformanceCounter(LoopTime);LastTime64:= LoopTime;End;
 
Last edited:
Reunion is getting more and more sophisticated.

I am looking forward to version 0.6!

By the way, congratulations to Charlie Beer for joining the former one-man team! ;)
 
Last edited:
Two man job localization wise.  ;D  Luksy is always there.  But definitely needed a proof check of the Japanese.
 
Last edited:
Of course!

How could I even forget Lusky for a moment?

His contribution to Beacause must have been truly invaluable. I am actually wondering now how many man hours Lusky and you have put into Reunion since the very start. It must be a rather scary number...  ;D
 
Last edited:
Too scary to think about :P

Global Timer is now fixed too.  I've  rewritten it to use QPC.  My old attempt relies on the firings of the game engine - and it isn't right (you'll see the timer go out by at least a second every minute).  I've factored in pauses from all modules.  So if you pause the game (even in a minigame) - the timer will stop.  The timer is not affected by the FPS of the modules. One second always equals one second in the real world.

The countdown timer and other frame based timers I have added - are dependent on FPS.  Hence they are frame-based.  Only the global timer (the main game timer you see in the menu) will be real time.
 
I am actually wondering now how many man hours Lusky and you have put into Reunion since the very start. It must be a rather scary number...  ;D
Consider this: I put a TON of hours just into an English proofread. I wasn't translating anything, I wasn't comparing anything. I was just going through to make sure there were no errors with commas, duplicated words, sloppy grammar and spelling, etc. And it took me a couple months of lunch breaks and weekends.

Now consider: I had one of the easiest jobs on this project.

Yeah, I don't even wanna imagine how much work DLPB and Luksy have put in. My brain doesn't have room to ponder that much time at once.
 
Yeah, you've stuck with the project and done a full English proof read also.  So it's really been a three man job.  Only three people so far have managed to wade through all of the files.  It's only been missing a proofread of the Japanese v Beacause, which we may now finally get.

Additionally, certain music tracks are going to need redoing because I can hear a pop sound at loop point.  Possibly bass.dll is more unforgiving than vgmstream in regards to the loop. Besides, I know now you're supposed to fade in a few ms and fade out at the end (you can't detect this).  So the loop point is zeroed.  Something I was not doing before.
 
ff7ddraw will come with some mandatory fixes - and some that only The Reunion needed.  So far, the mandatory fixes are:

Code: [Select]
Code:
1. Field Game Over. The original PC version only sets the music volume to 127 and does nothing else. I have rewritten the function to stop all sound effects and play the Game Over music.    2. World Map markers (colours were wrong).3. World Map map position. 4. Bug (being able to see the end of the world map texture) caused by sharp turn Highwind fixed.5. Highwind square button to move anywhere disabled.6. Field opcode 5C added. Missing from PC version originally.7. HextLaunch functionality added automatically. Much easier to customize to specific mods also.8. Encounter rate fixed by NFITC19. Music Lock operation fixed.10. Opening FMV timing to Barrett's arm moving fixed.11. Bug. Enemy models resized after death. Fixed.12. Sense Limit increased to 65535.13. Help menu in battle will not repeatedly open and close when Select is held. 14. Bug. Enemy models resized when placed in Minimum status and then killed. Fixed.15. Fort Condor: game can be sped up further than before.16. Select will not pause the Fort Condor minigame.  Only Start.17. Cursor fix in Swap Menu by Dziugo18. Field centred. I may expand this to add borders correctly to all modules, like PSX, but that might be overkill. 19. Screen transitions are faster.20. The Reunion only: Quit menu removed.Optional:1. Frame Limiter and speed control and FMV skip (1x, 2x, 4x, 8x) (forced when using The Reunion). I am hoping to expand my own function to everymodule, but this may be a problem since  Aali's driver has taken over G-Bike, Coaster,  Snowboard, and Battle Swirl. I'll look into bypassing it in favour of mine. Field (30), World Map (30), Battle (15 or 60 depending on if 60fps battles enabled), Menu (60), Chocobo (30), Fort Condor (30), Credits (60), Game Over (60)  Are all fixed. No original code is used - it's all mine.   This does mean that Ochuwon't be able to change fps with this option enabled, but speed control makesthat redundant anyway.  Speed up is now Select + Square (it will return to 1x after 8x).2. Second confirmation in battle menu.3. When using 1, or The Reunion: All timers/counters are frame based - including main game timer. Very accurate compared to original, since new frame limiter is also very accurate. 4. Audio replacement mod.  Almost finished. Replaces all music and SFX with OGG - including the "wav" effects (like wind.wav). Also adds Tempo operation without affecting pitch. Akao fade function added.  Akao completely replaced. All battle sound effect calls replaced. Because this is a full replacement, many bugs have beenfixed - including missing sound effects (like Cloud's Omnislash), and effects notplaying again after battle has ended.

To - Do

1. Make credits screen behave like the PSX version.
2. Finish making ogg files from PSX SFX.
3. See if the colouring can be fixed. The world map stands out like a sore thumb compared to PSX.  Something is very very wrong here.
4. See if I can add in return to credits with PSXFF7 reset from any module - rather than current fix forcing Game Over from 2 modules.
 
Last edited:
Besides, I know now you're supposed to fade in a few ms and fade out at the end (you can't detect this).
Not necessarily with loops. If the loop point is sample precise, and the beginning of the loop continues right where the end of the loop left off at such a precise level, then you don't want any fades at all. If you do so and there's still a pop, that's an indication the player is either jumping back too soon or adding extra space between the end and start of the loop.
 
It still seems to need it, perhaps because of the way they've looped it in the OST means there is no zero intersection or perfect alignment (and once it's been compressed, the waveform can change anyway). There is no point I have found that the loop point is zeroed on both sides.  Plus finding the exact loop point is a pain in the ass anyway.  For the sake of a small undetectable misalignment of the loop point - it's best to just fade in on one side and fade out on the other.  I think vgmstream is doing this regardless... whereas bass.dll is not.  So you get away with nothing with the latter.  I've verified the issue isn't bass by looping the exact sections in adobe... the click is there too.  Until I add the fade in and out - or find a zero on both ends - or the exact loop point (which probably doesn't match up perfectly even when sample perfect). It's annoying.  The click will be there if given any chance whatsoever.

Edit 200.

Also....  I've found the fade has to be a log fade in. Gives more of  a flat that you can use.  A normal linear fade still clicks :P

And that ends today.  Also fixed:

1. Reset field battle flag.  I think this should fix the teleport bug (although may need to reset other flags)
2. allow materia discard menu to use page up and page down
3. remove "Are you sure?" confirmation with delete materia.
4. Cait Sith stop reel sound effect
 
Last edited:
Teleport bug:

I am looking into fixing this. Resetting the field battle var alone probably won't fix this bug entirely but looking at the memory region in question has proved very useful.  The temp flags the battle uses to decide what to do (like Game Over) are clearly not being reset to 0 when the credit screen is shown. World map module does not touch them for the most part, so they stay relevant for world map battles (which is how the bug with Yuffie manifests itself). The flags are only corrected properly when a field module is loaded.  So getting Game Over, loading on world map, and then entering Yuffie battle allows for erroneous flags to be checked.

Zeroing the two specific vars I have found *should* fix this - but I am wondering whether I should just zero the entire section, which is how it is set on a first game load.  I'll do some more checking.  Gonna go load the Yuffie bug and see if resetting these two vars (it's probably only one of the vars relevant to this particular bug anyway. The other I recall is a separate bug) corrects the issue.
 
Status
Not open for further replies.
Back
Top