OpenVIII - an open-source Final Fantasy VIII engine implementation

  • Thread starter Thread starter makipl
  • Start date Start date
Status
Not open for further replies.
The warnings are just wip code. Like I recently uncommented a large struct in saves that I haven't implement yet. Because it's hundreds of variables. Black screen should be a movie playing the squaresoft logo then the overture starts playing. Then main menu. You can press enter to skip parts. I'm going to work. Have a good day.

Sent from my Pixel XL using Tapatalk
 
Ok... seems there really is a problem with my build beyond missing movies.  Behind the black box was an "FF8 has stopped working" error box.  Info inside it:
Code: [Select]
Code:
Problem signature:  Problem Event Name: CLR20r3  Problem Signature 01: FF8.exe  Problem Signature 02: 1.0.0.0  Problem Signature 03: 5ccbb555  Problem Signature 04: FF8  Problem Signature 05: 1.0.0.0  Problem Signature 06: 5ccbb555  Problem Signature 07: 8  Problem Signature 08: 7e  Problem Signature 09: System.Exception  OS Version: 6.1.7601.2.1.0.256.48  Locale ID: 1033  Additional Information 1: 0a9e  Additional Information 2: 0a9e372d3b4ad19135b953a78882e789  Additional Information 3: 0a9e  Additional Information 4: 0a9e372d3b4ad19135b953a78882e789Read our privacy statement online:  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409If the online privacy statement is not available, please read our privacy statement offline:  C:\Windows\system32\en-US\erofflps.txt
Hopefully there's something in there to tell whether I have a build setting wrong, or if it's another CD vs. Steam issue.  In the meanwhile, I used Rinoa's TS to map out the BIK movies (there are no CAM), and came up with this:
Disk 1
1   Intro to Balamb Garden
2   Meeting Quistis
3   Meeting Zell
4   Skiffs attacking Dollet
5   Meeting Selphie
6   Dollet sat dish activation
7   ATM crushes the happy car
8   ATM trashes the town, ‘til Quistis puts it down
9   Squall and Rinoa meet
10   Come dance with me, you’ll love it!
11   Insertion of Timber Owls’ train cars
12   Separating with the President’s car
13   TV station fade-out
14   Someone knocked over the camera
15   Intro to Galbadia Garden
16   Meeting Irvine
17   Escalator up to Galbadia town square
18   Meeting Edea
19   Edea approaches the podium
20   Edea’s fast zoom-out to town square
21   Stone lizards are real lizards, didn’ja know?
22   The parade begins
23   The parade continues
24   Seifer’s on that float!!
25   The clock tower rises
26   Trapping Edea
27   Sending the signal
28   Squall attacks…
29   … and Seifer’s waiting
30   Sub-Zero wins.  Flawless victory.
31   Opening movie

Disk 2
1   Moving prison cell canisters
2   View of the desert prison
3   Retracting the walkways
4   Gooooiiinnggg down!
5   Fire ze missiles!
6   Missile launchers go boom
7   The base also goes boom
8   Missiles in the cloudy sky
9   Missile wing, skim the seas
10   BalGard controls activate
11   BalGard energizes
12   The missiles miss, BalGard survives
13   The missiles hit… Redo from save?
14   BalGard gliding over the plains, without Rinoa
15   BalGard gliding over the plains, with Rinoa
16   BalGard runs over Ma Dincht’s
17   BalGard takes to the seas
18   Time for an ocean rest
19   Meeting the White SeeD ship
20   Crashing into FH
21   Mirrored coliseum
22   GalGard spotted
23   Galbadians scare off Bambi
24   Galbadian lawnmower
25   ShinRa motorcycles, hasshin!!!
26   Glancing blows to the gardens, Rinoa falls down
27   GalGard grinds the side
28   GalGard lines up for another pass
29   GalGard lined up and crashing in
30   ShinRa mobile infantry, launch!
31   GalGard really needs to learn how to drive
32   BalGard counter-crashes
33   Someone deploys the emergency slide
34   Squall rescues Rinoa

Disk 3
1   Esthar becomes visible
2   Taking the panel tram into Esthar
3   Esthar rent-a-car
4   Returning Esthar’s car
5   Magic carpet ride
6   Now arriving at gate…
7   Capsule arrives at…
8   Railguns shoot us into space
9   Orbit achieved
10   Catching capsules
11   Sir… the moon!!!
12   Spysat takes more pics
13   Pandora visits town
14   Pandora lines up for activation
15   Lunar cry begins
16   Adel awakens
17   Escape the station!
18   Rinoa’s foggin’ the glass
19   Getting sleepy…
20   How about I take a nap?
21   Is that going to be my wedding ring?
22   Skroob agrees, nothing like Perri-Air
23   The cry in full effect
24   Squall and Rinoa see the Ragnarok
25   Ragnarok tumbling
26   Boarding Ragnarok
27   You will not turn my girl into a popsicle
28   Ragnarok gunning for Pandora
29   Full speed ahead, Ragnaroks
30   All weapons, keep firing!
31   The cry has landed
32   Pretty blue globe, monsters move in

Disk 4 (which I think is missing a ton, most notably the "Game Victory" and closing credits FMVs)
1   Seifer introduces Rinoa to Adel
2   Time compression aquarium
3   Ultimecia’s castle
4   Meeting Ultimecia?
 
Last edited:
I read that there was low res and high res movies. I wonder if some videos only have the low res versions on the disc.  at least from what i see of the first 3 discs things look pretty similar to the steam version. The cam data might not be needed as we currently aren't using it.

I might put that list into the code to make it easier to tell which movie is what. :)

Now for some stabs in the dark since I'm unsure why it's not working I'm gonna list some ideas.

One thing I was wondering is if you had all the required libraries installed. I assumed you did or else it wouldn't let you build I think. If you goto Tools > NuGet Package Manager >  Manage NuGet Packages for solution. You should have:
Code: [Select]
Code:
FFmpeg.AutoGen v4.1.0.4MonoGame.Framework.DesktopGL v3.7.1.189MonoGame.Framework.DesktopGL.Core v3.7.0.7MonoGame.Framework.OpenGL v3.7.1.189NAudio v1.8.5NAudio.Vorbis v1.0.0NVorbis v0.8.6
Maybe you could put a breakpoint in Game1.cs maybe at the start of Initialize(). Just see to if the code fails right at the start or if it stops at a certain point. I'd step over stuff at first to see how far you get than step into a function it crashes on. Assuming it lets ya.

https://stackoverflow.com/questions/4052770/deciphering-the-net-clr20r3-exception-parameters-p1-p10 has some info how to read those CLR20r3 messages. I am unsure if I can run the command on my FF8.exe or if i'd need your build to see the issue.

Might be worth trying to Build -> Clean Solution.

lol it's late i should get going.

Maybe Maki will have some ideas when they get back.
 
Last edited:
I read that there was low res and high res movies. I wonder if some videos only have the low res versions on the disc.  at least from what i see of the first 3 discs things look pretty similar to the steam version. The cam data might not be needed as we currently aren't using it.
Rinoa's Toolset just lists a ton of ID+offset+length, and has buttons to extract either the high res or low res.  Only four videos are listed in the disk4.pak file, so something must be different about it compared to the other three that's confusing the extractor.

One thing I was wondering is if you had all the required libraries installed. I assumed you did or else it wouldn't let you build I think. If you goto Tools > NuGet Package Manager >  Manage NuGet Packages for solution. You should have:
Code: [Select]
Code:
FFmpeg.AutoGen v4.1.0.4MonoGame.Framework.DesktopGL v3.7.1.189MonoGame.Framework.DesktopGL.Core v3.7.0.7MonoGame.Framework.OpenGL v3.7.1.189NAudio v1.8.5NAudio.Vorbis v1.0.0NVorbis v0.8.6
All libraries and versions match.  Any way to make sure I didn't forget to include some piece of VS itself?  I just mashed the options that seemed to make the most sense, so it's entirely possible that something did get left out at the IDE level rather than the imported libraries.

Maybe you could put a breakpoint in Game1.cs maybe at the start of Initialize(). Just see to if the code fails right at the start or if it stops at a certain point. I'd step over stuff at first to see how far you get than step into a function it crashes on. Assuming it lets ya.
You'll have to feed me the code... I remember what a breakpoint is/does (we used them in my M6800 assembly class), but I have no idea how to insert them with C# (which hadn't been invented yet)

lol it's late i should get going.
Indeed... I've been told I'm taking the littles to some sort of kite flying thing tomorrow.  Hopefully there'll at least be some degree of wind...
 
what really confuses me is why you receive such generic-looking error on debug builds
A few questions:
Which operating system are you on?
You mention VS, which version you use?

C# is perfect for debugging due to JIT technology. I'll show you some instructions for VS2017:
First choose valid build configuration for your operating system:
05.04.2019-10.38.png

Naturally I'm on Windows so I'm choosing WindowsDebug


05.04.2019-10.44.png

Now, there is one remaining option: x86 and x64 (green arrow). There's no much difference other than that x64 does NOT use the crappy direct DirectSound wrapper (I mean wrapper is cool, but whole DirectSound is NO-NO as of today). For maximum stability I recommend choosing x64.
Now simply hit "Run" (red arrow) and before the game will shit itself the code will show exactly why, where and what's wrong

The same behaviour applies to MonoDevelop. Choosing build to DebugLinux, choosing either x86/x64 (doesn't matter here, DirectSound is disabled anyway on Linux) and hitting 'Debug...' or something like this, don't really remember now
 
Oh to make a breakpoint you need to click the area to the left of a line number. If you did it right a red circle will show up. Then the debugger will stop there when it is about to run that line.

Sent from my Pixel XL using Tapatalk
 
what really confuses me is why you receive such generic-looking error on debug builds
A few questions:
Which operating system are you on?
You mention VS, which version you use?
OS - Win7 Pro x64 inside Virtualbox 6.0.6 (video "card" is VBoxVGA... the new VBoxSVGA, while supposedly better, doesn't support OpenGL 2 at all, and hasn't been very good with DirectX either)
VS 2017 Community

I'll show you some instructions for VS2017
Your screenshots made it obvious... I'm still a noob when it comes to IDEs and was doing it all wrong ;)  I had been hitting \Build\Build Solution, then taking the (supposedly successful) results and dropping those in my FF8 folder.  Hitting 'Start' within VS is a bit more useful... the crash (even without breakpoint) appears to be happening in ArchiveWorker.cs line 25, looking for C:\Games\FF8\Data\Data\menu.fi. https://imgur.com/a/F2fNjBK

Edit:  Here's my file structure after extracting all the movies:

Folder PATH listing
Volume serial number is 20FB-C599
C:\Games
|   newtree.txt
|   
+---FF8
    |   app.log
    |   binkw32.dll
    |   Chocobo.exe
    |   eax.dll
    |   EAXUnified.exe
    |   ff7_opengl.cfg
    |   ff7_opengl.fgd
    |   ff7_opengl.reg
    |   FF8.exe
    |   FF8Config.exe
    |   ff8input.cfg
    |   ff8_opengl.cfg
    |   FF8_Patch12.txt
    |   publish.pak
    |   Readme.txt
    |   Uninst.isu
    |   
    +---Data
    |   |   battle.fi
    |   |   battle.fl
    |   |   battle.fs
    |   |   field.fi
    |   |   field.fl
    |   |   field.fs
    |   |   magic.fi
    |   |   magic.fl
    |   |   magic.fs
    |   |   main.fi
    |   |   main.fl
    |   |   main.fs
    |   |   menu.fi
    |   |   menu.fl
    |   |   menu.fs
    |   |   world.fi
    |   |   world.fl
    |   |   world.fs
    |   |   
    |   +---Music
    |   |   +---dmusic
    |   |   |       000s-lose.sgt
    |   |   |       001s-win.sgt
    |   |   |       001xg-win.sgt
    |   |   |       004s-run.sgt
    |   |   |       005s-battle.sgt
    |   |   |       005xg-Battle.sgt
    |   |   |       007s-end.sgt
    |   |   |       008s-antena.sgt
    |   |   |       009s-waiting.sgt
    |   |   |       012s-kani.sgt
    |   |   |       013s-battle2.sgt
    |   |   |       013xg-Battle2.sgt
    |   |   |       014s-Parade2.sgt
    |   |   |       015s-fuan2.sgt
    |   |   |       016s-march2.sgt
    |   |   |       017s-joriku.sgt
    |   |   |       018s-julia.sgt
    |   |   |       019s-waltz.sgt
    |   |   |       020s-friend.sgt
    |   |   |       021s-dangeon.sgt
    |   |   |       022s-pianosol.sgt
    |   |   |       023s-Parade.sgt
    |   |   |       024s-march1.sgt
    |   |   |       025s-himitsu.sgt
    |   |   |       026s-garden.sgt
    |   |   |       027s-fuan.sgt
    |   |   |       028s-polka2.sgt
    |   |   |       029s-anthem.sgt
    |   |   |       035s-m7f5.sgt
    |   |   |       036s-majo.sgt
    |   |   |       041s-field.sgt
    |   |   |       042s-guitar.sgt
    |   |   |       043a-concert-tap.sgt
    |   |   |       043b-concert-flute.sgt
    |   |   |       043c-concert-fiddle.sgt
    |   |   |       043d-concert-aguitar.sgt
    |   |   |       043e-concert-sax.sgt
    |   |   |       043f-concert-piano.sgt
    |   |   |       043g-concert-eguitar.sgt
    |   |   |       043h-concert-ebass.sgt
    |   |   |       046s-resistan.sgt
    |   |   |       047s-kaiso.sgt
    |   |   |       047xg-Kaiso.sgt
    |   |   |       048s-horizon.sgt
    |   |   |       049s-master.sgt
    |   |   |       051s-rinoa.sgt
    |   |   |       052s-travia.sgt
    |   |   |       053s-antena2.sgt
    |   |   |       054s-truth.sgt
    |   |   |       055s-jail.sgt
    |   |   |       056s-gargarde.sgt
    |   |   |       057s-timber.sgt
    |   |   |       058s-garbadia.sgt
    |   |   |       059s-pinch.sgt
    |   |   |       060s-scene1.sgt
    |   |   |       061s-pub.sgt
    |   |   |       062s-bat3.sgt
    |   |   |       063s-stage.sgt
    |   |   |       064s-choco.sgt
    |   |   |       065s-white.sgt
    |   |   |       066s-majomv.sgt
    |   |   |       067s-musho.sgt
    |   |   |       068s-missile.sgt
    |   |   |       069s-enzetu.sgt
    |   |   |       070s-card.sgt
    |   |   |       071s-gomon.sgt
    |   |   |       072s-soto.sgt
    |   |   |       073s-majobat.sgt
    |   |   |       075s-Gar3.sgt
    |   |   |       076s-Bossbat2.sgt
    |   |   |       077s-lasdun.sgt
    |   |   |       078s-gafly.sgt
    |   |   |       079s-demo.sgt
    |   |   |       080s-spy.sgt
    |   |   |       081s-mods.sgt
    |   |   |       082s-salt.sgt
    |   |   |       083s-alien.sgt
    |   |   |       084s-sekichu.sgt
    |   |   |       085s-esta.sgt
    |   |   |       086s-moonmv.sgt
    |   |   |       089s-hikutei.sgt
    |   |   |       090s-bossbat1.sgt
    |   |   |       091s-rag1.sgt
    |   |   |       092s-rag2.sgt
    |   |   |       093s-lasboss.sgt
    |   |   |       096s-keisho.sgt
    |   |   |       097s-ashuku.sgt
    |   |   |       099-joriku2.sgt
    |   |   |       chocoworld.sgt
    |   |   |       FF8.dls
    |   |   |       XGdefault.sgt
    |   |   |       Xgon.sgt
    |   |   |       
    |   |   +---stream
    |   |           003-combat.wav
    |   |           006-funsui.wav
    |   |           010-ante.wav
    |   |           011-wind.wav
    |   |           030-Flangchorus.wav
    |   |           031-dubchorus.wav
    |   |           032-Solochorus.wav
    |   |           033-Femalechorus.wav
    |   |           034-chorus.wav
    |   |           037-reet.wav
    |   |           038-soyo.wav
    |   |           039-rouka.wav
    |   |           040-night.wav
    |   |           044-sea.wav
    |   |           074-train.wav
    |   |           086-mdmotor.wav
    |   |           087-mdmotor.wav
    |   |           094-laswhite.wav
    |   |           095-lasbl.wav
    |   |           
    |   +---Sound
    |           audio.dat
    |           audio.fmt
    |           
    +---direct
    |   +---battle
    |   +---char
    |   +---chocobo
    |   +---coaster
    |   +---condor
    |   +---cr
    |   +---disc
    |   +---flevel
    |   +---high
    |   +---magic
    |   +---menu
    |   +---midi
    |   +---moviecam
    |   +---snowboard
    |   +---sub
    |   +---world
    +---mods
    +---movies
    |   +---disc01
    |   |       01.bik
    |   |       02.bik
    |   |       03.bik
    |   |       04.bik
    |   |       05.bik
    |   |       06.bik
    |   |       07.bik
    |   |       08.bik
    |   |       09.bik
    |   |       10.bik
    |   |       11.bik
    |   |       12.bik
    |   |       13.bik
    |   |       14.bik
    |   |       15.bik
    |   |       16.bik
    |   |       17.bik
    |   |       18.bik
    |   |       19.bik
    |   |       20.bik
    |   |       21.bik
    |   |       22.bik
    |   |       23.bik
    |   |       24.bik
    |   |       25.bik
    |   |       26.bik
    |   |       27.bik
    |   |       28.bik
    |   |       29.bik
    |   |       30.bik
    |   |       31.bik
    |   |       
    |   +---disc02
    |   |       01.bik
    |   |       02.bik
    |   |       03.bik
    |   |       04.bik
    |   |       05.bik
    |   |       06.bik
    |   |       07.bik
    |   |       08.bik
    |   |       09.bik
    |   |       10.bik
    |   |       11.bik
    |   |       12.bik
    |   |       13.bik
    |   |       14.bik
    |   |       15.bik
    |   |       16.bik
    |   |       17.bik
    |   |       18.bik
    |   |       19.bik
    |   |       20.bik
    |   |       21.bik
    |   |       22.bik
    |   |       23.bik
    |   |       24.bik
    |   |       25.bik
    |   |       26.bik
    |   |       27.bik
    |   |       28.bik
    |   |       29.bik
    |   |       30.bik
    |   |       31.bik
    |   |       32.bik
    |   |       33.bik
    |   |       34.bik
    |   |       
    |   +---disc03
    |   |       01.bik
    |   |       02.bik
    |   |       03.bik
    |   |       04.bik
    |   |       05.bik
    |   |       06.bik
    |   |       07.bik
    |   |       08.bik
    |   |       09.bik
    |   |       10.bik
    |   |       11.bik
    |   |       12.bik
    |   |       13.bik
    |   |       14.bik
    |   |       15.bik
    |   |       16.bik
    |   |       17.bik
    |   |       18.bik
    |   |       19.bik
    |   |       20.bik
    |   |       21.bik
    |   |       22.bik
    |   |       23.bik
    |   |       24.bik
    |   |       25.bik
    |   |       26.bik
    |   |       27.bik
    |   |       28.bik
    |   |       29.bik
    |   |       30.bik
    |   |       31.bik
    |   |       32.bik
    |   |       
    |   +---disc04
    |           01.bik
    |           02.bik
    |           03.bik
    |           04.bik
    |           
    +---plugins
    |       ff7music.fgp
    |       ffmpeg_movies.fgp
    |       vgmstream_music.fgp
    |       
    +---Save
    |   +---Slot1
    |   |       save01
    |   |       
    |   +---Slot2
    +---shaders
            bloom2.post
            main.frag
            main.vert
            yuv.frag
 
Last edited:
Remember I altered the main directory to the ff8 folder since it's failing to find something in data\data check your windows location cs to make sure the location you added didn't end with data. If you hadn't added anything maybe, I forgot to remove data from the registry reading part.

What is you running the VM in? This will run on Linux if you want to copy the files out of your VM and use monodevelop to compile it.
 
Last edited:
Yep it was me, line 37 in windows location cs file. I forgot to remove ,"data" from that line.
 
Last edited:
-- Duplicate post-- was having mobile data issues.
 
Last edited:
What is you running the VM in?
The host OS is Win10 Pro x64, currently on build 1809.  I generally play older games within a VM rather than with "compatibility mode"... just seems to work out better having things run on an OS contemporary with their release.  My first couple attempts at FF7 plus 7th Heaven were... educational(?)... and having snapshots to revert back to saved a lot of headache compared to trying to manually clean out the registry.


Yep it was my line 37 in windows location cs file. I forgot to remove ,"data" from that line.
I see Code: [Select]
Code:
String dataPath = Path.Combine(installLocation, "Data"); //no lang-en on cd version.
at that location... not sure if I can just null out the 'Data' portion, or if that'll make the Path.Combine function choke.
 
Remember I altered the main directory to the ff8 folder since it's failing to find something in data\data check your windows location cs to make sure the location you added didn't end with data.
I also forgot to put C:\Games\FF8 back in at line 50 after doing a fresh clone, so oops on both of us.  Anyways, put that back in, and new error @line 122 of Strings.cs : Access to the path 'd:\MNGRPdump.txt' is denied.
 
You can comment out the dump lines. They are for debugging. They are located in memory.cs in the init() method. I checked if d: existed but didn't check if it was writeable. It's probably your CD drive. Heh. Those lines basically export all the strings so I can make sure things are processing correctly. Comment by putting // in front of those lines. I'll tweak stuff when I am home.
 
Last edited:
I made the changes we talked about today. Pull the new code and see if you can get farther now.
 
Definite progress... Even without putting in the manual hard-coding of C:\Games\FF8, the intro began to play (sans sound) and I got to the main menu.  Upon choosing the 'Open VIII debug tools' option, I got an unhandled exception in DirtyEncoder.cs, line 67.
Code: [Select]
Code:
System.NullReferenceException: 'Object reference not set to an instance of an object.' value was null.
Identical errors (in other locations) if I attempt to start a new game or load a saved one.  I knew those options wouldn't work, but thought it might be helpful in figuring out why the debug won't load.
 
That's odd. Can you see what is on the stack when it gives the exception? https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-use-the-call-stack-window?view=vs-2019 the idea is something is sending null to the dirtyencoder and it's throwing an error. So I need to make the encoder handle null better and I need to know what is sending null to it. The stack shows all the commands being executed in a first in, last out order. So it'll show what lines started this chain of events. I have a few ideas of what it could be. Just desire more info.
emoji16.png


Sent from my Pixel XL using Tapatalk
 
I think this is what you asked for: https://imgur.com/E7psnHq
Yep. I'll work on it tomorrow night.
emoji4.png



Did a small fix before work. I forced the values in that area to send null to it and got the same exception and added a null check to length. So it returns 0 instead of throwing an error.

I was wondering, some of those lines of text have a : with something after it. the ones that were sending null will have nothing after the :. Which ones is it?

Anyhow have a good day.
 
Last edited:
I was wondering, some of those lines of text have a : with something after it. the ones that were sending null will have nothing after the :. Which ones is it?
I honestly don't understand the question since there's no : punctuation in my screenshot :(

Unrelated noob question: In VS 2017, if I want to download all the latest changes being made, but not attempt uploading, is 'Sync' the correct button to press?  I've been nuking the entire repo and cloning from fresh (inefficient, but at least it ensures I don't screw up anything!)
 
You were getting the exception when going to the Debug menu inside the running OpenVIII is what i meant. I kinda wanted to know what was missing maybe a screenshot.

When you goto Sync there's Fetch and Pull. Fetch checks for updates and Pull gets the newest code. I think, I have been using the GitHub gui. And sometimes don't pay attention to what the words on the buttons are.  :P
 
Status
Not open for further replies.
Back
Top