Eliteness Version 2.xx

Fixes: see fixes.txt

General inspection and play tool by Mikero@norfolk.nf

Originally designed to assist with Flashpoint : Elite for the xbox and developed as such by Mikero and Hoz. We have become rather fond of the name, even though it is a much more capable tool than simply handling Xbox files.

Appreciation to Ofpec, Planck. Hoz, Jahve, Raedor, Phaeden, Q, many others, for support and encouragement in testing this tool.

Eliteness accommodates unique features found in the following BI engines

- Cold War Crisis
- Resistance
- Xbox Elite
- Armed Assault

Eliteness does not work with the VBS1 & 2 engines.

This tool has no association with Bohemia Interactive and no approval, warranty, implied use, or permission has been given by them. Nor is that ever likely to be the case. Use this tool at own risk.

Installation instructions.

- Place the gui anywhere that gives you a thrill
- Extract the accompanying dll into the same folder, or, as a convenience, locate it in the windows/system32 directory.
  - The 2nd option allows this dll to be used for all Mikero tools using the dll via a single reference, and also allows you to put the exe 'somewhere else' whenever it suits you.
- Enjoy

General Functionality.

- Makes and Unmakes pbo files for all engine types.
- raPifies (binarises) and Derapifies mission.sqm / description.ext / config.bin (cpp) for all engine types.
- Lint checking. (Error checking of syntax) within pbo's and direct source text files.
- Scans (lists) pbo content and makeup.
- Decodes and views any raP encoded file. rvmat, bisurf, etc etc.
- lists paa content.

OFP Elite Functions:

- Change a User Profile in a OFP:Elite mission Save
- Change SP mission to MP mission
- Change the name of the mission
- Port PC mission to OFP:Elite Xbox mission from a PC mission
- Sign OFP:Elite files
- Accounts for Pbo checksum

Arma Functions

- Accommodates special directory header info inside pbo.
- Accounts for pbo signed key.

Notes:

This is a multi-purpose tool for all engine varieties. Specifically

- Operation Flashpoint: Cold War Crisis
- Operation Flashpoint: Resistance
- Operation Flashpoint: Elite (Xbox)
- Armed Assault

As such, there are specific quirks for each engine that this tool cannot discover for itself unless told specifically about the engine output required.

Use the options panel in the gui to explicitly MAKE pbo's, or, raPified (binarised) files for a given engine.

PBO's

All later versions of the engine 'understand' earlier headers. However, to specifically create a header of specific type (Elite eg), use the options panel to do so. Default on installation is Resistance.

Rapified Files

Config.bin (eg) Rapification for Armed Assault and Elite.

Binarised files for Armed Assault and Elite use a newer method of raPification. To convert a config.cpp (eg) to a config.bin for THESE engines, the tool must explicitly know which method to use since nothing in the text file (mission.sqm eg) tells it which way to encode.

The type of raPification is implicitly defined in the options panel, via the engine selection. Eg, Selecting resistance, will binarise using the older encoding.

The type of raPification can be explicitly defined in the text file concerned by stating

#define _ARMA_ or
#define _XBOX_ [withSignature]

Without the define, text files are assumed to be for Flashpoint. This means no files from and for OFP require any modification.

#pragma

As a nicety, the #pragma directive is synonymous for above. Eg

#pragma _ARMA_ or
#pragma _XBOX_

Unfortunately the engine's C compiler will not accept pragma directives. Therefore, although more correct, use it only in config.cpp's (eg) that you do, indeed, intend to raPify as the engine will not accept this pragma and throw an error.

XBOX Signatures

Mission,pars, header.bins and other files intended for the Xbox (and unique to the xbox) require correct signatures inserted into them by this tool.

The macro

#define XBOX withSignature // or #pragma XBOX withSignature

is required in the mission.par text file and similarly the header.bin text file for this to take place automatically.

Any file derapified by this tool automatically has the above #defines inserted, as appropriate.

#define __EMPTY_CLASS(cls) class cls{}

deprecated statement that has no effect ( other than to expand the __EMPTY_CLASS macro to 'normal')

Options Panel

To cater for the various engines available, certain features are enabled / disabled according to selection.

For instance, since file signatures are only applicable to Elite, the options dealing with this (verification or creation) are only enabled when Elite is selected as the engine.

The drop down engine selection has particular significance when creating pbo's. or creating rapified files.

Arma and Elite pbo's cannot, for instance, be compressed.

No Make/Create confirmation

Creating and extracting pbo's can, naturally, be a dangerous process, simply because it creates files. Normally, you would want to be asked first. The option exists to turn this confirmation off, if you find it annoying.

No Query on Delete

Similar comment

Show CD Drives

Since these devices are read only, and since, filling the explorer tree can take some time, normally, cd drives are not shown in the navigation window.

When creating a pbo....

None of the following options affect the external files. Thumbs.db however is never installed in a pbo.

Do nothing Special

No file is inspected or altered. The pbo creates a mirror of files in the target folder (except for thumbs.db)

Automatically Lintcheck

When creating pbo's, this application can check the syntax of description.ext, config.cpp, and mission.sqm for errors before making the pbo.

Alternatively, you can manually check these files via the right click in the file window.

Automatically Rapify

config.cpp, and mission.sqm can be installed in the pbo as binarised. This can significantly improve engine load times, to say nothing of the implicit error free state of successfully binarised text.

Automatically Rapify Keep Text

When enabled, the original mission.sqm text file (eg) is renamed in the pbo as mission.sqm.txt

Similar comment for config.cpp

If you are distributing your mission campaign or addon, NOT including the original text files is a mild form of intellectual property right protection.

Ask For Prefix

This option is enabled when Elite or Arma engines are selected.

Eliteness will automatically assign a prefix in the pbo header to the name of the pbo. Where the user wants a specific path and filename attachment. this option is available and will be requested during MakePbo time. Any other addons requiring access to this addon, must use the prefix name you supply, to do so.

Note also, that this option is not necessary if recreating official bi addons. Eliteness is aware of them..

Compress Files

When enabled, files are compressed inside the pbo. The exception list provides for typical file extensions (such as jpg) that have no benefit in doing so and only increase engine load times.

Compression is not currently implemented and may never be. It is a deprecated option for all engine types, being a 'good idea at the time'.

RAPIFY and DERAPIFY controls

DeRapfiy

The application is aware of specific file extensions that are (or might be) in rap format. Examples

- mission.sqm
- config.bin / cpp
- mission.par (elite only)
- header.bin (elite only)

right clicking, or, double clicking on these files types (among others) allows the option of decoding them. When attempting to open these types of files as text (the default 'action' when double clicking), the application automatically checks first if, in fact, it contains raPified content and treats them appropriately.

Rapify

Any text file with the appropriate class syntax can be rapified for use as one of the above files. The name of that text file is (obviously) up to the author (you). To rapify a file, it must be opened in the window, and subsequently SavedAs... Eliteness cannot 'know' that a specific file.txt that you choose to use as a source for raPification is a config.bin, .rvmat file or whatever. it must be opened and viewed in the text window of Eliteness.

PBO CREATION

The following functionality is a feature of the accompanying DLL. The Eliteness tool exposes these features.

Special file handling.

thumbs.db

- this annoying file is created on the fly by Microsoft when indexing picture files. It is never included in a pbo.

$PBOPREF$

Eliteness attempts to maintain compatibility with other tools trying to wrestle with unique features of Armed Assault.

In essence, an arma/elite pbo uses the resistance header to contain file prefix information. The prefix is used for other addons to access this one.

- $PBOPREF$ Is now included in a pbo for historical reference for 'unaware' 3rd party tools
- For extraction, if it is erroneously encountered in the pbo, it is totally ignored. It has no effect on the actual pbo header frame detected.
- For extraction, a $PBOPREF$ will be created in the folder if Eliteness detects an arma/elite header. However $PBOPREF$ is not Eliteness's way of doing things. This is an attempt to accommodate other tools.
- Eliteness uses it's own method of creating 'special' prefix headers. Specifically, it looks for 'official' BI addons.
- If encountered in the folder, it's text contents are used as the prefix header for Armed Assault and Elite style pbo's.
  - This is an automatic override, regardless of what pbo style was asked for in the options panel.

The following comments apply when the full features of the dll are employed to automate the process of creating binarised missions and addons. To create plain vanilla pbo's with no special handling (eg just like any other pbo tool) simply select do nothing, in the options panel.

description.ext

- Any of the panel options to AutoLint or AutoRap, check this file for syntax correctness.

config.cpp

- AutoLint: This file is checked for syntax correctness.
- AutoRap..: This file is Lint checked and binarised to config.bin and installed in the pbo instead of config.cpp .
  - After pbo creation, the folder will also contain this config.bin.

confg.cpp.txt

Following comments apply only if AutoRap Keep Text option selected. Otherwise this file is treated 'normally'.

- For makepbo: The original config.cpp text file is renamed internally in the pbo to config.cpp.txt. It is not generated in the folder.
  - If the same filename happens to be present in the folder during creation, that file is ignored.
- For Depbo: It can of course be extracted to a folder, from the depbo process. It is up to the user to manually rename it config.cpp as appropriate to the need.

config.bin

- This file is overwritten if it exists and an Autorap option selected. It is unconditionally included irrespective of options.

mission.sqm

- AutoLint: This file is checked for syntax correctness.
- AutoRap..: This file is Lint checked and binarised and replaces the text file in the pbo.
  - It is installed in the pbo as mission.sqm
  - a copy is generated in the folder as mission.bin

mission.sqm.txt

- Identical commentary to config.cpp.txt above.

mission.bin

- is never installed in a pbo

Sqs Sqf

Reference to Desqs is available on menu (right click) but is a work in progress and only available (currently( on the debug version of Eliteness