Ultra VGA Engine

***Ultra VGA Engine***is a graphics library made by InterAction studios, used for most of their games.

## History

### *VGA Engine*

Official name: *VGA Engine for Pascal*

The history of *UVE* traces back to the mid-90's with its first iteration. It was called the *VGA Engine*, made for the Pascal programming language on MS-DOS. This engine was inspired by another one from the DOS days, called *ANIVGA*. Other versions of this iteration followed suit, with *VGA Engine 2* and *VGA Engine 3*. The file formats used here were .IAS for sprites, .IAL for libraries , .IAP for backgrounds , .PAL for palettes and .IAW for WADs (VENGINE2.IAW for VGA Engine 2). The only game confirmed to have been made on these iterations of the engine is *BattleTank*. *Knights and Lords*, *Jasna*, *Doom Kombat*, and *Blogbash* might've been also made on these.

### *UVE32*

Official name: *Ultra VGA Engine 32-bit*

The next major upgrade came in form of *Ultra VGA Engine 32-bit* in 1995. As for its name, the "Ultra" was added in so that its libraries are distinguished from its precursors. It was also made for Pascal on MS-DOS, but rewritten entirely from scratch, and it wasn't based on any existing library. It was able to support 32 bit operations, even though they weren't utilized in the games made on it because of Borland's 16-bit compiler. This iteration of *UVE* is the only one that has been released publicly, with a link here. It was released in two versions - the shareware one, that had some of its features stripped and was only usable for 21 days, and the registered one. The file formats used here were .UVS for sprites, .UVL for libraries, .PCX for backgrounds, .PAL for palettes and .UVW for WADs (UVE32.UVW). The resolution of the games was always 320x200, which is the default DOS resolution.

The last known version of *UVE32* is version 1.44 from around 1997.

Games confirmed to have been made using *UVE32* are *Radar Wars Arcade*, *Cherrymania 2*, *Cobra*, *Cobra 2*, *M99*, and *F16*.

UVE32 is also bundled with a demo program showing off the features of it named UVEDEMO.EXE.

### *UVE++*

Official name: *Ultra VGA Engine for C++*

This iteration was made around 1997. It was written in C++ instead of Pascal, still on MS-DOS. It was both conceptually and technically superior, however it wasn't used for many games, aside from *Chicken Invaders (DOS Version)* and *Adventures of Mrs. Piggly*. Since then, the game was remade on *UVE*'s next iteration.

### *UveDX*

Official name: *Ultra VGA Engine for DirectX 7.0*

Being introduced around 1999, *Ultra VGA Engine DX* might be the most known of the earlier iterations, since it has been used at release for the first two *Chicken Invaders* games, the first *Island Wars!*, and the ill-fated *Piggly 2*. It was the first iteration to move from MS-DOS to Windows, and the first one to work on DirectX (starting with 6.0 and 6.1, later on supported 7.0). The resolution has also been upgraded to 640x480, and the engine now stored sounds as wave form audio format files, and sprites and backgrounds as bitmaps. Initially, the filenames in the data list weren't obfuscated until *The Next Wave*'s release. Other than that, it was fundamentally the same thing as the previous iterations but with DirectX's advantages. The Debug Modes in earlier builds of *UveDX* were only sometimes included (*Chicken Invaders* had it but *Island Wars!* didn't), and they were triggered through pressing F9 and F10 at once, while later on they had to be enabled through the config file.

### *UveDX8*

Official name: *Ultra VGA Engine for DirectX 8.1*

Debuting with the release of *Island Wars 2* in late 2004, this version was a major upgrade from *UveDX*, being a complete rewrite for Visual Studio and DirectX 8.0. It also used the "looks-like-2d-but-it's-infact-3d" technique, as in everything was rendered as 3D, but it looked like 2D. This version of the engine uses WAD format 2, which changes the file formats of the files stored. The sounds were now stored as OGG Vorbis files while the sprites were stored as uncompressed TGA files. Since textures could be freely rotated, scaled and bent in 3D, the games no longer had many sprites. Multiple animation frames were now able to be stored in one file instead of multiple. To configure each sprite, the game uses an .ini.preload file along with the texture. It stores information of the amount of skins the texture has and the following values for narrowing down what the engine should render - top origin, left origin, width, height, X offset and Y offset. Another thing that has been changed is that the native resolution of the games was upgraded to 800x600. Games made using this engine at release include *Island Wars 2*, *Loco*, *Smileyville*, *Piggly* and *Revenge of the Yolk*. At first the debug modes were triggered like in *UveDX*, but with the release of *Revenge of the Yolk*, you now had to put in a specific debug code to make it work. As the debug codes are removed from public releases, it's impossible to do it through that method. An unfinished Debug Console was also included in this version.

### *UveXX*

Official name: *Ultra VGA Engine for OpenGL*

Debuting in 2009 with *Christmas Eve Crisis*, this version of *UVE* was the only one from the newer versions since *UveDX* to use OpenGL instead of DirectX. It's also the first one to be ported over to Mac and Linux.

This version of the engine has also brought WAD format 3, which had a major change to the .ini.preload files. UveDX8 stored the texture info as plain text, while this version stores them as binary data. Those files now consist of a 20 byte header, which includes five values (one of them is the amount of skins in the image), and one/multiple 24 bytes encoding the skins the same way as UveDX8, with six values.

Even though this version was able to handle bigger resolutions as proven by the remastered edition of *The Next Wave*'s native resolution being 1280x960, most of the games still used 800x600. Other games made using this engine at release include *Ultimate Omelette* and the remastered edition of *The Next Wave*. The debug console was still included in this version until the release of *Ultimate Omelette*, where it was removed.

### *UveUDX*

Official name: *Ultra VGA Engine for DirectX 8.1 Ultra Edition*

Having surfaced in 2013, this iteration of *UVE* returns to DirectX 8.1 and it has been only used at release for *Cluck of the Dark Side*. However, this version also got improvements in the form of "Ultra features", such as double-resolution graphics (making the native resolution of iA's games 1600x960, with the ratio 5:3), instant loading, widescreen support, touchscreen support, better navigation on menus, Unicode support and smaller stuff like a mute option in-game and the in-game languages being able to be changed without having to restart the game. This iteration of the engine was also the first one to include integration with Valve's *Steam* platform for versions of InterAction studios' games on it.

#### *UveUDX9*

Official name: *Ultra VGA Engine for DirectX 9.0c Ultra Edition*

Introduced in 2015, this iteration is the same thing as UveUDX because of it just being a recompilation of it in DirectX 9.0c since 8.1 became obsolete. No new games were made for it.

### *Uve++11*

Official name: *Ultra VGA Engine for C++11*

Introduced in 2018. It's been used at release for *Chicken Invaders Universe*. This version was a necessary update to the engine to support multi-threading and TCP networking required by that game, as previous versions of UVE only used single thread and UDP. The native resolution of that game has been bumped up to 1920x1080, with the screen ratio changed from 5:3 to 16:9.

Uve++11 currently uses WAD format 4, which changes the way textures are stored. They are still stored as .tga, but their headers are changed to only preserve the width, height and the amount of bits in the image (all as four bytes instead of two for unknown reasons). Textures are little-endian instead of big-endian, and the colors are stored as BGRA instead of RGBA. Support for 8-bit depth textures (containing the alpha channel only) has been added to make the file size smaller. WAD format 4 also changes the way the file list at the beginning of the file is stored. Filenames are now obfuscated through CRC, now taking up only 4 bytes, with the lookup table stored in a game's .exe file.

## Ports

*Ultra VGA Engine* has been ported over to numerous platforms, each with their own branch, such as *UveAndroid*, *UveiOS*, *UveWP* (for Windows Phones), *UveFlash*, *UveWin8* (for the Windows Store) and so on. Some of them also store data in different formats, for example *UveAndroid* uses a different format for textures.

## Technical information

*Ultra VGA Engine* since its earliest iteration has been a graphical API and game engine that utilizes the SVGA graphics mode. It was based on various engines including Turbo Pascal, Visual Studio, OpenGL, and various versions of DirectX. The newest iteration uses DirectX 11.1. The engine uses the uncompressed Truevision TGA format to store its sprites, because it compresses better than PNGs in the installers and because they are lossless, and the OGG Vorbis format to store sounds. JPEGs are also used for stuff such as backgrounds and textures for 3D models. Although the Ultra VGA Engine has capacity for using 3D models, InterAction studios hardly ever utilizes them in their games. They most often see their use when it comes to doing special effects, such as the water effect in the Epsilon Thalassus chapter in *Cluck of the Dark Side*, and for ground, which has been so far used for *Cluck for the Dark Side*, *Piggly* and *Christmas Eve Crisis*. Although 3D models hardly ever see their use, 3D still has its benefits. With it, sprites are allowed to be scaled, bent and rotated on the fly.

### *UVE\_KEY*

*Note: No logo was made for it that is still available.*

UVE\_KEY is a keyboard handler for Turbo Pascal that can handle multiple keypresses, something that the BIOS keyboard handler cannot handle, but is essential even for the simplest of games. It comes with UVE32. It has been used in *Radar Wars Arcade* and probably *Cherrymania 2*, *Cobra*, *Cobra 2*, *M99*, and *F16***.**

### *Particle Flux Technology*

File:ParticleFluxLogo.png

*Particle Flux Technology* is a sprite-based graphics API, having been first used for *UVE32*. It has been used in *Radar Wars Arcade*, *Chicken Invaders*, *The Next Wave* and *Island Wars!*. It was used for the sprites and animations of explosions and bullets.

## Ultra VGA Engine

### *Arcade Engine*

File:Icon-arcade.gif

*Arcade Engine* is an add-on for *UveDX* which can do special effects like multi-sprites, enemy damage feedback and maximum frame rate under all conditions to recreate the arcade experience. It was planned to be used for the unreleased *Piggly 2*, though the only time it has seen usage was with *The Next Wave*.

### *NatUVE*

File:NatUVELogo.png

*NatUVE* is a graphics API used for vegetation deformation and making realistic-looking plants. It has been used in many games, like *Island Wars 2* and *Piggly*, and possibly *Cluck of the Dark Side*.

## Download

### Shareware version

http://www.interactionstudios.com/files/UVE140.ZIP

### Registered version

http://www.interactionstudios.com/files/UVE140R.ZIP