AllTinker
Captain
NOTE: This is the original post (downloads at the bottom); just be aware that the blurb at the start is out-of-date in many ways. There is a changelog at the bottom of the post. Eventually I will set up a web page with a more up-to-date summary.
Hey all, here's an offshoot project I've been working on for the past few months, which has turned into its own monster... It's still very early days, but perhaps some folks may find it useful or interesting as-is - and it's the sort of thing that will probably never be truly "finished"; so I might as well release it now.
As some of you may know, I've been going through the process of a major Confederation rewrite; and in the process, building a code library which can also be used by/in collaboration with other projects (e.g. WC4 Remastered). The majority of my project time has been sunk into that library (called libOriginData), and I'll go into more detail about it once it's ready for a public release... But anyway, to test the library, and as a useful tool (for me, at least!) I've also been developing this software; Originator.
It's essentially just an integrated data viewer/exporter for a fairly broad set of supported games (obviously most of these are by Origin, but it also has some level of support for some spinoff/spiritually-related titles). I wouldn't call it a modding tool, per se, although it's primarily intended to help peek and prod around in the game data for reverse engineering and such. I don't have any plans on the horizon for writing back to game formats, although I do have some nebulous long-term ambitions specifically for mission viewing and editing.
In terms of games it "supports" (take this with a hefty grain of salt!), this is the current list:
So right now, you can browse almost all containers, listen to most audio, including MIDI (MT-32 and General), view many images, and most later RealSpace engine models (some palette issues exist for WC4). There's an IFF viewer, and a fallback hex viewer if nothing else will view the content.
For MIDI, Originator includes inbuilt Roland MT-32 emulation (requires ROMs), and SoundFont rendering (requires a SoundFont). It also supports outputting to software synths or real hardware if you have it.
Support for Adlib/OPL rendering is a pending priority; I need it for Confederation anyway... But there's a lot to figure out.
It can also play streaming audio (support for
You can dump raw files or IFF chunks to disk, or export various content (audio, images, models) to basic "modern" formats; e.g.
There's an awful lot I'd like to (and plan to) implement; the pace will vary as time permits. The C++ source code for Originator and libOriginData will be available some time soon, once I've finished and documented the rest of the core framework. For what it's worth I've made sure Pedro can release the source if I get run over by a bus or whatever.
Anyway, keep in mind this is all very much work-in-progress, built with "tool code", and not intended as a particularly user-friendly application... I'm already aware of many issues and shortcomings, but do post about anything you run into.
The answer to questions of "will it support X format" will probably be "yes" or at worst "hopefully!", but feel free to ask. It's currently for (64-bit) Windows only, but I do plan to release a Linux build down the road; maybe MacOS at some point - this will probably happen in the process of making sure Confederation runs on those platforms.
To emphasise the lack of user-friendliness - in lieu of proper documentation, here are some dot-point notes:
Version 0.2.02 (2023-12-25)
Hey all, here's an offshoot project I've been working on for the past few months, which has turned into its own monster... It's still very early days, but perhaps some folks may find it useful or interesting as-is - and it's the sort of thing that will probably never be truly "finished"; so I might as well release it now.
As some of you may know, I've been going through the process of a major Confederation rewrite; and in the process, building a code library which can also be used by/in collaboration with other projects (e.g. WC4 Remastered). The majority of my project time has been sunk into that library (called libOriginData), and I'll go into more detail about it once it's ready for a public release... But anyway, to test the library, and as a useful tool (for me, at least!) I've also been developing this software; Originator.
It's essentially just an integrated data viewer/exporter for a fairly broad set of supported games (obviously most of these are by Origin, but it also has some level of support for some spinoff/spiritually-related titles). I wouldn't call it a modding tool, per se, although it's primarily intended to help peek and prod around in the game data for reverse engineering and such. I don't have any plans on the horizon for writing back to game formats, although I do have some nebulous long-term ambitions specifically for mission viewing and editing.
In terms of games it "supports" (take this with a hefty grain of salt!), this is the current list:
- Wing Commander (DOS / Kilrathi Saga / Demo / FM Towns / Sega CD)
- Wing Commander II (DOS / Kilrathi Saga / Demo / FM Towns)
- Wing Commander Academy (DOS)
- Wing Commander Armada (DOS / FM Towns)
- Wing Commander III (DOS / Kilrathi Saga / Demo / 3DO / Playstation)
- Wing Commander IV (CD / DVD / Demo / Playstation)
- Wing Commander Prophecy / Secret Ops (Retail / Original Prophecy Demo)
- Wing Commander Arena (XBox 360)
- Super Wing Commander (3DO)
- Privateer
- Privateer 2
- Strike Commander
- Pacific Strike
- Wings of Glory
- Bioforge
- Starlancer / Freelancer
- Origin FX Screen Saver
- Space Rogue (PC / FM Towns)
- Longbow / Longbow 2
- Crusader No Remorse / No Regret
So right now, you can browse almost all containers, listen to most audio, including MIDI (MT-32 and General), view many images, and most later RealSpace engine models (some palette issues exist for WC4). There's an IFF viewer, and a fallback hex viewer if nothing else will view the content.
For MIDI, Originator includes inbuilt Roland MT-32 emulation (requires ROMs), and SoundFont rendering (requires a SoundFont). It also supports outputting to software synths or real hardware if you have it.
Integrated Roland MT-32 emulation:
Inbuilt SoundFont rendering (using the Timbres of Heaven SoundFont):
Sending the MIDI to a Roland Sound Canvas.
It can also play streaming audio (support for
.STR
/redbook/MGI pending), along with playing streaming video - although currently only Bioforge FLICs and WC4 PSX comms videos are viewable; WC3 XAN support is up next, with more to follow.You can dump raw files or IFF chunks to disk, or export various content (audio, images, models) to basic "modern" formats; e.g.
.WAV
, .PNG
, .OBJ
. There is also a "bulk export" mode which will let you export/dump content more efficiently. One of the more unique features (as far as I'm aware) is that I've figured out the Origin MIDI format enough that OMI MIDIs (e.g. WC1/2/Academy) will play from data, and you can export them to plain MIDI playable by a regular player (I believe previously the .MIDs were extracted by recording the MIDI data output by the running game).There's an awful lot I'd like to (and plan to) implement; the pace will vary as time permits. The C++ source code for Originator and libOriginData will be available some time soon, once I've finished and documented the rest of the core framework. For what it's worth I've made sure Pedro can release the source if I get run over by a bus or whatever.
Anyway, keep in mind this is all very much work-in-progress, built with "tool code", and not intended as a particularly user-friendly application... I'm already aware of many issues and shortcomings, but do post about anything you run into.
To emphasise the lack of user-friendliness - in lieu of proper documentation, here are some dot-point notes:
- The program should detect many games automatically if they have been installed (e.g. via GOG, EA Play or Kilrathi Saga).
- If it doesn't, and you think it should, let me know!
- Similarly, if you have a version of a game which won't load (but should), I'm also keen to know!
- Game paths can be reconfigured via
App -> Configuration -> Game Paths
.- Failing to load a game should present an error telling you which file is missing.
- Individual packages may be loaded from the current directory via
App -> Load Package...
, however:- There are currently various restrictions on manually-loaded packages, since 1) Originator cannot determine which game they belong to, and 2) several data types require cross-referencing against data in other packages, which may not be loaded. This may be improved/resolved in a future release.
- Originator will read most ISO disc image formats - for GOG/EA releases and console ports - if your image has multiple files or a different extension, rename the largest file to
.IMG
and it will probably work. The error upon trying to load a game will tell you what to name the files (which must be placed indata/
). - To load Wing Commander Arena, rename the big file (the name of mine starts with
9D2C
and ends inD858
) toarena.xbla
and place it indata/
. - For Roland MIDI, CM-32L ROMs are preferred over MT-32, but either will work - place the ROMs in
data/
- namedCM32L_PCM.ROM
/CM32L_CONTROL.ROM
orMT32_PCM.ROM
/MT32_CONTROL.ROM
- For inbuilt rendering of General MIDI, place
.sf2
SoundFonts indata/
.- I highly recommend the Timbres of Heaven SoundFont (4.0 is the latest version at time of writing) for premium quality.
- The SC-55 SoundFont by JMSexton (~25MB) is much smaller and a half-decent representation of the Roland Sound Canvas.
- All MIDI settings can be configured via
App -> Configuration -> System
. - There are multiple menus, so keep an eye out, e.g. for the IFF viewer there is the app menu, a menu for the file, and a menu for the current chunk!
Version 0.2.02 (2023-12-25)
- Improved the IFF parser to cope with various quirks and non-standard features (e.g. Privateer's "table" structures).
- Quite broad support for "shape" images - although there are palettes remaining to hook up for numerous games, so colours may be wrong. The majority of my attention has currently been on Privateer, so most shape images should be correctly viewable/exportable. WC3 and 4 should also be correct.
- Added configurable GUI scaling for accessibility/very high-resolution screens.
- Switched to using Unifont for broad language support (tested with Japanese in FM Towns Wing Commanders); custom TTF/OTF fonts may also be added to
data/fonts.zip
and selected in configuration. - Added the beginnings of a text viewer; can view textual content in several games, including Privateer dialogues.
- Improved the hex viewer; added hover highlighting between hex/character views, also fixed an issue with larger font sizes.
- Added support for packed WC3 shapes (e.g. for cockpits), and more IFF-embedded shapes in general.
- Added automatic decompression for IFF chunks (QFS/Deflate), which is especially relevant to Privateer 2. As usual there are many palettes still requiring hook-up logic, so colours will be wrong in many cases for several games (including P2).
- Added "Experiments" (under "Tools") which I will be adding to over time. Currently the only experiment is a (quite rudimentary for now) "sector dump" tool for Privateer.
- Added speech disk file detection for Strike Commander.
- The underlying library now sorts game container contents alphabetically.
- Added support for Wing Commander Prophecy bitmap images, including 15/16-bit and/or animated bitmaps.
- Added MGI streaming music support for Wing Commander Prophecy.
- Added support for streaming/extracting Red Book audio from ISOs, i.e. music from Wing Commander 1/2 and Space Rogue for FM Towns and Wing Commander for SEGA CD.
- Added some basic search and data inspection tooling to the hex viewer.
- Fixed a regression in WC3/4 for handling non-cumulative shapes.
- Added an option for previewing with adjustment for VGA aspect ratio. Most (but not all) images will auto-sense and turn this on as appropriate.
- Fixes for RealSpace models; textures and models now have the correct mirroring, texture coordinates are now wrapped and clamped, which prevents some glitchy rendering. The output is closer to the original for WC4 in terms of untextured surfaces.
- Fixed an issue with WC4 credits text not being handled properly.
- Some minor fixes, but mostly improvements to existing Realspace model support, including:
- Support for TXMV (inbuilt shape) and TXMK (external PAK shapes) textures.
- Added support for sprites along with loading/viewing untextured models.
- Added a tool in the model viewer to select the current frame for animated textures.
- Added TXM texture support for terrain, both standalone (WC4) and in PAKs (Strike Commander).
- Added support for Prophecy / Secret Ops models, including triangulation of polygonal meshes.
- Added support for Privateer 2 textures/models.
- Added "Global Search" mode, which allows searching for text/hex across all loaded game files.
- Disc images will be detected with
.iso
or.bin
extensions, in addition to.img
. - Added support for Pacific Strike text content decompression.
- Fixed the solid backdrop scaling for VGA aspect mode.
- Fixed 3DO STR container support.
- Improvements to FLX container support.
- Better support for partial palettes (mostly for Strike Commander).
- Some palette hookups for Strike Commander (work in progress).
- Fixed texture coordinates for OBJ export.
- Improved generation of normals for 3D models.
- Added support for Privateer 2's XMIDI music.
- Fixed terrain elevation export for WC4; more general terrain support will happen later.
- Some UI improvements, e.g. showing what's selected in tree navigation panes.
- Hooked up Bioforge model viewing (animation viewing isn't currently implemented).
- Fixed palettes for FM Towns Wing Commander Armada.
- Removed hard requirement for Proving Grounds for PC Armada.
- Privateer 2 palette improvements; proper base palette and BRender LUT usage.
- Finished an initial pass on picking up the remaining Origin FX containers for Wing Commander 1/2.
- More text support for Bioforge and Wing Commander 2 (PC & FM Towns versions).
- Fixed a bug where changing the game path wasn't properly applying without restarting.
- Added the ability to unload games and manually-loaded files.
- Changing the path for a game optionally causes an automatic reload.
- Added the ability to see/configure the names for disc/other image files for games which use them.
- Added support for the Prophecy 3dfx Test.
- Fixed Bioforge model axis orientation.
- Added basic translation (lateral camera movement) to the model viewer - hold middle mouse.
- Overhauled manual loading of files quite extensively.
- Files can be attached to a loaded game, improving viewing support.
- Files can be loaded from any drive/directory.
- Fixed a couple of bugs in the loose file loading where it would fail to open containers/files.
- The file opener now remembers the last path, with a "Home" button to return to the Originator working directory.
- Added support for "inbuilt" external files; e.g. loading Kilrathi Saga saves from the Users directory.
- Added a savegame viewer (WC1 only currently).
- Expanded support for Privateer 2:
- Support for major text formats.
- IFF-nested FAT audio support.
- "BASE" image support.
- Palette hookups, multi-palette shape support.
- Fixed a bug in QFS decompression when it was used within IFF files.
- Wildcard loading support; required for games with user-defined save filenames.
- Added IFF quirk for to properly parse the malformed WC3/4 save index IFFs.
- Some minor progress on WC2 & WC4 savegames.
- Added support for manual export of IFF shapes and BASE images.
- Hex and text views now scroll to the top when loading new data.
- .04a fixes a couple of Privateer 2 palettes/text issues.
- More Privateer 2 text support.
- Bioforge images, text and scripts (early work-in-progress).
- Fixed image background clipping.
- Wing Commander Arena model viewing.
- Support for the demo version of Wing Commander Arena.
- Support for Playstation's VAG audio format, used by Wing Commander 4 PSX.
- Fixed terrain heightmap export for Wing Commander 4.
- Some improvements to Shape parsing, fixing at least one regression with Wing Commander 3.
- Hooked up texture / image / image set loading for Wing Commander: Secret Ops.
Attachments
Last edited: