FekLeyrTarg: The "FL" tracks kick in when your craft's shields are down.
That's also why you hear it a lot in TIE Fighter's demo:
http://youtu.be/-TuOcgH0kmo Thanks! Maybe we could change it to trigger only when a hit leads to the loss of the shields, not when the shields deplete by lack of power or power transfer.
FekLeyrTarg: You can also hear EM31 when you destroy the frigate Anvil in ToD 4, Mission 5.
EM seems to stand for "Enemy" so I guess it is something like
EM01: Enemy craft arrives.
EM11: Enemy capital ship arrives.
EM21: One of our craft is down.
EM31: One of our capital ships is down.
Where the first number is the kind of message and the second number is a posible variation for the same kind of message.
FekLeyrTarg: However, I've never heard RB31 before.
Following the same reasoning as with EM, I'd say the RB sounds match exactly the same pattern.
RB01: Rebel craft arrives.
RB11: Rebel capital ship arrives.
RB21-RB23: You downed an enemy craft. (4 variations)
RB31: You downed an enemy capital ship. (not used? Doesn't happen often because you rarely do it all by yourself?)
RB31 does sound familiar to me, but not from inside the game. I wonder if they have used it along with the Totally Games logo in some game in the series.
Tarvis: Maybe we can find a use for RB31, then, like playing it when the mission is completed. The regular victory song is always overridden by battle music and one problem I have with X-Wing is it's hard to tell exactly when you're able to go home, since the "Misison Complete" radio message is always buffered behind a bunch of other ones.
I was planning to show the objective list in a similar way to how XvT does it. In that case, the status of the mission is always known to be Unresolved, Failed or Successful.
Also, we can change the priorities of the messages and how the messages are actually shown.
I don't really like the lower single text bar that X-Wing and TIE Fighter have. With nowadays resolutions, we can afford a translucent message log like that in XvT and XWA. I'm not sure how overlays like those work with Oculus Rift, though. If it proves to be visually annoying, we could move it to a secondary screen on the cockpit dashboard.
Tarvis: I was thinking that maybe super important messages like that can be drawn on the screen above the crosshair instead of at the bottom of the screen, so it isn't obscured by any other random messages
My idea was something like that. The message appears halfways between the crosshair and the top of the screen, to avoid interfering with aiming, at a bigger font size and opaque color. Then after a couple of seconds it slides up to the message log were the last 4 or 5 messages are listed in a smaller, translucent font.
The mission objectives could be listed to the right or left of the screen, at smaller font and translucent, not to drag much attention. X-Wing doesn't have secondary or bonus objectives, so the list shouldn't be too big and bulky.
Tarvis: As for the music format: they are GMIDI, shared by Dark Forces, and the inflight music is in GMIDI.LFD.
GMIDI is very similar to regular MIDI, all you have to do is delete a certain amount of bytes at the beginning, which is probably extra information the game uses (most likely things like: how long the MIDI is, time signature, how many bars long it is, etc). Easiest way to do it is open the file up in Notepad++, and delete everything before "MThd" which is the standard MIDI format descriptor, and save it. It does leave a few empty bars at the beginning, I don't know if that's intentional or not. But for the purposes of recording them for a music pack they can be removed with no problem
I've got a MIDI synth running in Unity to play the music as it is right now. The digitalized music pack is something in the future. The MIDI music should be now or as soon as possible. So I need the XWVM program to be able to extract it to an usable form, as the music is copyrighted and we shouldn't distrubute it with XWVM.
I'm still researching this MIDI synth thing. It is currently playing the fragments that you sent to us at a too high tempo, but it is configurable, so I need to check how to fix that. I also need to find out how to skip the silent period at the beginning. Problem is that I know nothing about the MIDI format, and about music in general. :) I'll see what I get.
It also has support for custom soundfonts, so we could arrange a good sound font that makes the X-Wing MIDI music sound decent and include it with XWVM. It shouldn't be too big if we can strip out the unused instrument samples.
If someone with an expensive set of sound samples, like the guy that re-orchestrated TIE Fighter's music, would be in to pass all the MIDI fragments into good sounding wave files, then I guess we could distribute these digitalized music as a music pack? I don't think we would be breaking any copyright there if we are just using the original MIDIs as sheet music for something totally hand made by us?
Tarvis: As for writing a program to extract the loop tables, I guess I can do that. I'll make it save into a more human readable format. My idea is that BFLIGHT.OVL can be replaced with a collection of human readable files that represent the same sort of data, instead of trying to figure out at what offsets the relevant parts of BFLIGHT are and all that to load from it. This is the approach OpenXcom takes, instead of loading the hardcoded values from the original files.
You have a good point on not needing to decipher BFLIGHT.OVL everytime the game launches. It is enough for us to find the exact data at development time, and then the game should use an editable format. XML or Json files inside ZIP files sounds pretty open and standard to me. Good point also on changing the extension of the zip files.
What I wanted to achieve is to get the exact graph of fragments for the iMuse system. Of the whole of it, not only the inflight part, if possible. The graph would be turned into a state machine, as I mentioned. So in whatever form we record that graph, it should also be computer readable. But I fear that manually creating such a file would turn you crazy, mate. We need either a program to do a thorough dump of it to XML, or add such functionality to the XWVM itself.
Also we should attempt and find out as much as possible about the parameters that the game uses for the ship and game object stats, and they reside in BFLIGHT.OVL also.
We cannot just guess the speed of ships, for example, because most missions are balanced depending on the particular stats of everything in the game. If we accidentally make Shuttles faster or slower than they should be, it could lead to broken missions.
I guess we could also extract those stats manually using one of the several X-Wing ship editors that were available, then noting them down and recording them in XML files. Yes, I guess that makes sense. Still, I think it would be more exact to get them extracted from the original file by an automated routine.
Gaerzi: The physics part could be reduced to simply map properties (in the same way that Doom engine ports reconcile the differences between the various games with a MAPINFO lump containing important settings).
Having the ability to easily add new ships would be great, too. XWA itself has a limited number of slots and things like mines and warheads use some too. Being able to have thousands of slots would allow to put all the variants, prequel ships, "uglies", and other extended universe oddities in the game.
The original missions use an index-based list of ships. So for example, ship type 19 is a B-Wing, and ship type 1 is an X-Wing. We could add an unlimited amount of ships to that list, but then custom missions that used to replace old ships with new ones would need to be rewritten to account for the new indices of every ship.
For the future, it would be better to create a new mission file format that doesn't use a index-based look up table for these things, and instead use some other unique identifier like "xwing" or "bwing" instead of numbers. All of this is totally possible but, for now, I think it's better if we focus on having the original assortment of ships working. :)