<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TheAlmightyGuru</id>
	<title>ModdingWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TheAlmightyGuru"/>
	<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/wiki/Special:Contributions/TheAlmightyGuru"/>
	<updated>2026-05-15T03:15:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Smashing_Pumpkins_Into_Small_Piles_of_Putrid_Debris&amp;diff=12674</id>
		<title>Smashing Pumpkins Into Small Piles of Putrid Debris</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Smashing_Pumpkins_Into_Small_Piles_of_Putrid_Debris&amp;diff=12674"/>
		<updated>2025-12-21T00:23:20Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
There are no known tools that work with this game, beyond editors for the standard file formats like [[VOC Format|VOC]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.256&lt;br /&gt;
 | Format = [[Raw VGA Image]] with trailing 6-bit [[VGA Palette]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background image format&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = CT-VOICE.DRV&lt;br /&gt;
 | Format = Creative Labs VOC driver.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The sound driver to play VOC audio format.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.EXE&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Executables.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.SMK&lt;br /&gt;
 | Format = [[SMK Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = ([[Smacker Video Format]]?)&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = SPIS*.SNG&lt;br /&gt;
 | Format = [[SNG Format (SPISPOPD)]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown music format. Uses [[SBI Format]] for AdLib instruments.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.SLF&lt;br /&gt;
 | Format = [[SLF Format (SPISPOPD)]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Game levels.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.VOC&lt;br /&gt;
 | Format = [[VOC Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Creative Labs sound files. Located in VOC folder.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Overhead]]&lt;br /&gt;
[[Category:Puzzle]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Main_Page&amp;diff=12120</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Main_Page&amp;diff=12120"/>
		<updated>2024-12-31T19:50:42Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* Current projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &amp;lt;!-- Hide the &#039;table of contents&#039; box --&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Welcome to the DOS Game Modding Wiki!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of this wiki is to assist people wishing to modify DOS games (typically those released for the PC in the early 1990s) to create entirely new games.  The wiki attempts to document all the file formats used by each game to assist programmers writing editing tools, as well as listing any existing tools that can already be used to modify the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-games.png|link=:Category:Game Intro Page]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Game Intro Page|Games]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-mods.png|link=:Category:Mods by game]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Mods by game|Mods]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-settings.png|link=:Category:File Formats]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:File Formats|File formats]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-info.png|link=:Category:Tutorials]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Tutorials|Tutorials]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About ===&lt;br /&gt;
&lt;br /&gt;
The wiki is structured so that each game has its own summary page, which in turn branches out to other pages explaining things in more detail such as file formats and instructions for using modding tools.&lt;br /&gt;
&lt;br /&gt;
If you find anything missing, incomplete or inaccurate among these pages, please fix it!  To help prevent spam, you&#039;ll need to [[Special:Userlogin|log in]] before you can edit pages - if you don&#039;t have an account, it&#039;s easy to [[Special:Userlogin|create one]].  Have a quick look at the [[ModdingWiki:Contributing|editing guidelines]] before your first edit so you know what we&#039;re expecting.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget that this site will only become a useful reference if all the modders out there lend a hand and contribute what they know!  If you&#039;ve got some info about modding a DOS game that&#039;s not yet listed, please create a new page for it!&lt;br /&gt;
&lt;br /&gt;
=== Help ===&lt;br /&gt;
&lt;br /&gt;
If you are looking for help with a mod you are working on, or if you need assistance reverse-engineering a game, please drop by the [http://www.classicdosgames.com/forum/viewforum.php?f=25 Modding section of the RGB Classic Games forum] and we&#039;ll try to help.&lt;br /&gt;
&lt;br /&gt;
=== Current projects ===&lt;br /&gt;
&lt;br /&gt;
These projects are under active development, and help is wanted by anyone who is able to contribute.  If you have the skills to help out, please get involved!  (Please also remove projects from this list once they are complete, or no longer being worked on.)&lt;br /&gt;
&lt;br /&gt;
* [[User:T-Squared|T-Squared]] is creating a mod for [[Cosmo&#039;s Cosmic Adventures]] called &amp;quot;HUMANIZED!!!&amp;quot;.  Take a look at [[User:T-Squared|T-Squared&#039;s user page]] for more info.&lt;br /&gt;
* [[User:Malvineous|Malvineous]] is working on a cross-platform modding tool called [[Camoto]], which can edit a number of different games.&lt;br /&gt;
* [[User:Nyerguds|Nyerguds]] is constantly expanding his [[Engie File Converter]] and [[Westwood Font Editor]], adding graphics formats from increasingly more non-[[:category:Westwood Studios|Westwood]] games to them, and upgrading his [[Librarian]] tool to put the edited results back into the game archives they came from.&lt;br /&gt;
* [[User:TheAlmightyGuru|TheAlmightyGuru]] added a page for the [[GEM Font]].&lt;br /&gt;
* Scott Smitelli has reverse-engineered the original .EXE binaries of [[Cosmo&#039;s Cosmic Adventures]] to produce a [https://github.com/smitelli/cosmore 96%-accurate reconstruction]&lt;br /&gt;
* [[User:Lethal_guitar|lethal guitar]] is working on an open-source reimplementation of [[Duke Nukem II]], called [https://github.com/lethal-guitar/RigelEngine RigelEngine].&lt;br /&gt;
* [[User:Minuous|Minuous]] is working on the [[MCE|Multi-game Character Editor]].&lt;br /&gt;
* [[User:twinzen|twinzen]] has released a level and graphics editor for [http://advsys.net/ken/klab.htm Ken&#039;s Labyrinth], [https://github.com/kaimitai/klabkit-sdl KKIT/SDL]. The editor supports all versions of the game, and comes with a command-line utility for de- and re-compressing all game assets.&lt;br /&gt;
* [[User:twinzen|twinzen]] has released a new major version of his [[SkyRoads]] editor, [https://github.com/kaimitai/skyhigh_releases Sky High SkyRoads Editor]. Now with live 3D-rendering of the gameworld, using OpenGL, and advanced graphics modding capabilities.&lt;br /&gt;
* [[User:twinzen|twinzen]] has released a level editor for [[Supaplex]], called [https://github.com/kaimitai/superplexed Superplexed]. Supports altering all datafiles; levels, graphics, palettes and savefiles. Rich in features.&lt;br /&gt;
* [[User:theruler|theruler]] is working on translating, bugfixing and modding the 1991 DOS game [[HeroQuest]] by Gremlin.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=File:GEM_Font.png&amp;diff=12119</id>
		<title>File:GEM Font.png</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=File:GEM_Font.png&amp;diff=12119"/>
		<updated>2024-12-31T19:46:00Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Atari ST GEM font format also used in scores of DOS games. This is an example of BIT8X8.GFT used in The Oregon Trail.

Category: Single images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Atari ST GEM font format also used in scores of DOS games. This is an example of BIT8X8.GFT used in [[The Oregon Trail]].&lt;br /&gt;
&lt;br /&gt;
[[Category: Single images]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12118</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12118"/>
		<updated>2024-12-31T19:24:36Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = ?&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Jin City: The Adventures of Deming}}&lt;br /&gt;
   {{Game|Journey to the Promised Land}}&lt;br /&gt;
   {{Game|Kingdom Keys}}&lt;br /&gt;
   {{Game|King&#039;s Glory Elite}}&lt;br /&gt;
   {{Game|La Mitad Oscura}}&lt;br /&gt;
   {{Game|Maker&#039;s Matchup}}&lt;br /&gt;
   {{Game|Men of Renown}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|Moses Matchup}}&lt;br /&gt;
   {{Game|My Cup}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Number Munchers}}&lt;br /&gt;
   {{Game|Panoplia: The Full Armor of God}}&lt;br /&gt;
   {{Game|Pro League Baseball}}&lt;br /&gt;
   {{Game|Realm of the Paladin}}&lt;br /&gt;
   {{Game|Rhema}}&lt;br /&gt;
   {{Game|Sanctified Scrolls}}&lt;br /&gt;
   {{Game|The Secret Island of Dr. Quandry}}&lt;br /&gt;
   {{Game|Space Miner}}&lt;br /&gt;
   {{Game|Sparky&#039;s Math Adventure}}&lt;br /&gt;
   {{Game|Spellbound!}}&lt;br /&gt;
   {{Game|Strip Poker Professional}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|Sword of the Spirit}}&lt;br /&gt;
   {{Game|World Combat}}&lt;br /&gt;
   {{Game|Taglit: Nahesh Ota!}}&lt;br /&gt;
   {{Game|Wayne&#039;s World}}&lt;br /&gt;
   {{Game|Where&#039;s Noah?}}&lt;br /&gt;
   {{Game|Word Munchers}}&lt;br /&gt;
   {{Game|Yogi Bear&#039;s Math Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format used in GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was researched by [[User:TheAlmightyGuru|TheAlmightyGuru]] and [[User:CTPAX-X Team|CTPAX-X Team]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;br /&gt;
* [https://www.atarimania.com/pgesoft.awp?version=28394 Atari ST font editor]&lt;br /&gt;
* [https://www.atari-forum.com/viewtopic.php?p=473688 GEM font viewer for Windows/Linux]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User_talk:Nyerguds&amp;diff=12117</id>
		<title>User talk:Nyerguds</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User_talk:Nyerguds&amp;diff=12117"/>
		<updated>2024-12-31T19:23:41Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CAT Format ==&lt;br /&gt;
I just finished documenting the MPS Labs [[CAT Format (MPS Labs)|CAT Format]]. I think it would be a nice addition to your [[Librarian]] program if you&#039;re still adding to it. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]])&lt;br /&gt;
:Funny story there... a while ago, I got my hands on a Dune II CD which was released in some collection pack, and which had its files saved in some proprietary archive format. I found [https://www.vogons.org/viewtopic.php?p=728947 some info on the format and the pack on vogons.org] and implemented it in the Librarian tool. Now, while digging into this CAT format, when I needed examples of v2, the Darklands iso I found online was actually the one from that very same &amp;quot;Gold Medal 12 CD Pack&amp;quot; that that Dune II was from, and thus, it had its data stored in exactly the same type of archive. So I could actually use my tool to extract the required .cat archives to test the .cat implementation in my tool :) Anyway, v1.0.4 is released, with full support for these. --[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 08:30, 5 May 2021 (GMT)&lt;br /&gt;
:: Awesome! Thank you. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]])&lt;br /&gt;
&lt;br /&gt;
== ESI format ==&lt;br /&gt;
I don&#039;t know if you&#039;re still adding fonts to the [[Westwood Font Editor]], but I&#039;ve figured out most of the [[ESI Format]], which was used in at least 15 games. It might make a good addition to your program. Unfortunately, it doesn&#039;t have much room for adding new characters, so it will only be useful in game translations if the translator is okay with sacrificing some characters. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]]) 20:35, 17 December 2020 (UTC)&lt;br /&gt;
:Ooh. That looks interesting. I&#039;ll take a look. The page seems to be a bit lacking in describing the format of the final images, though. All it says is &amp;quot;monochrome&amp;quot; and &amp;quot;CGA&amp;quot;... so does that make it 1-bit black-white, 2-bit paletted, or somehow 2-bit grayscale?&lt;br /&gt;
:-[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 01:41, 18 December 2020 (UTC)&lt;br /&gt;
:Ah, judging from the code, it seems to be 1-bit. All right, I&#039;m on it.&lt;br /&gt;
:-[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 12:10, 19 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Minor edits ==&lt;br /&gt;
&lt;br /&gt;
Hey just a heads up I see a lot of your edits are marked as minor when you&#039;re changing the actual content of the page.  Flagging an edit as minor is only meant for when the content isn&#039;t changed in a meaningful way, e.g. you are fixing a typo or tweaking the formatting.  Whenever actual content changes (including rewording) it&#039;s never considered a minor edit! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 06:40, 6 February 2021 (GMT)&lt;br /&gt;
: I know; it&#039;s marked as minor by default, and a few times I forgot to uncheck it when making major edits. I &#039;&#039;do&#039;&#039; try to keep it in mind, though. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 13:39, 7 February 2021 (GMT)&lt;br /&gt;
:: If you go into your preferences under the &#039;Editing&#039; tab, you can switch off the option to mark the edits as minor by default if that makes it easier. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:52, 27 June 2021 (GMT)&lt;br /&gt;
::: Oh, I know. I disabled the option shortly after you posted your remark here, in fact. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 08:34, 27 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Keen 1 v1.34 EXE problem ==&lt;br /&gt;
&lt;br /&gt;
I mentioned CTPAX-X previously that the EXE of Keen 1 v1.34 was compressed by PKLite, which I decompressed with UNP, so that I can use KeenGraph (Keen 1-6, Dreams graphic editor). While trying to extract the graphics, KeenGraph mentions that &#039;EGASPRIT.CK1 LZW-compressed, decompressing...&#039; &#039;EGALATCH.CK1 LZW-compressed, decompressing...&#039; And then nothing happens, but just hanging. I tried to read the LZW-compression, but didn&#039;t help and I failed. Could you tell me what to do? (Oh, and Levellass is inactive for long, so I didn&#039;t become wiser.) [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 23:08, 26 December 2021 (GMT)&lt;br /&gt;
: Look, all I did on the CTPAX-X talk page was trying to make it clear to you that you were talking to the wrong person about this subject. The fact I responded there &#039;&#039;&#039;does not magically make &#039;&#039;me&#039;&#039; the &#039;&#039;right&#039;&#039; person.&#039;&#039;&#039; If you want to fix this, look into LZW yourself. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 12:20, 3 January 2022 (GMT)&lt;br /&gt;
:: I asked it on the Xentax forum, but still no answer. Even on PCKF&#039;s Discord hasn&#039;t answered yet. All I wanted is a clue on how to start it. Nevermind. [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 23:22, 4 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
== [[GEM Font]] ==&lt;br /&gt;
Here is a potential new addition to your fantastic bitmap font editor. It&#039;s used in at least 60 games, probably more once I research it further. There is also a link to an open-source viewer. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]]) 19:23, 31 December 2024 (GMT)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12116</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12116"/>
		<updated>2024-12-31T19:18:36Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Removed unnecessary caveat.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = ?&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Jin City: The Adventures of Deming}}&lt;br /&gt;
   {{Game|Journey to the Promised Land}}&lt;br /&gt;
   {{Game|Kingdom Keys}}&lt;br /&gt;
   {{Game|King&#039;s Glory Elite}}&lt;br /&gt;
   {{Game|La Mitad Oscura}}&lt;br /&gt;
   {{Game|Maker&#039;s Matchup}}&lt;br /&gt;
   {{Game|Men of Renown}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|Moses Matchup}}&lt;br /&gt;
   {{Game|My Cup}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Number Munchers}}&lt;br /&gt;
   {{Game|Panoplia: The Full Armor of God}}&lt;br /&gt;
   {{Game|Pro League Baseball}}&lt;br /&gt;
   {{Game|Realm of the Paladin}}&lt;br /&gt;
   {{Game|Rhema}}&lt;br /&gt;
   {{Game|Sanctified Scrolls}}&lt;br /&gt;
   {{Game|The Secret Island of Dr. Quandry}}&lt;br /&gt;
   {{Game|Space Miner}}&lt;br /&gt;
   {{Game|Sparky&#039;s Math Adventure}}&lt;br /&gt;
   {{Game|Spellbound!}}&lt;br /&gt;
   {{Game|Strip Poker Professional}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|Sword of the Spirit}}&lt;br /&gt;
   {{Game|World Combat}}&lt;br /&gt;
   {{Game|Taglit: Nahesh Ota!}}&lt;br /&gt;
   {{Game|Wayne&#039;s World}}&lt;br /&gt;
   {{Game|Where&#039;s Noah?}}&lt;br /&gt;
   {{Game|Word Munchers}}&lt;br /&gt;
   {{Game|Yogi Bear&#039;s Math Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was researched by [[User:TheAlmightyGuru|TheAlmightyGuru]] and [[User:CTPAX-X Team|CTPAX-X Team]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;br /&gt;
* [https://www.atarimania.com/pgesoft.awp?version=28394 Atari ST font editor]&lt;br /&gt;
* [https://www.atari-forum.com/viewtopic.php?p=473688 GEM font viewer for Windows/Linux]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12114</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12114"/>
		<updated>2024-12-31T19:17:27Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Additional links, unknown format stats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = ?&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Jin City: The Adventures of Deming}}&lt;br /&gt;
   {{Game|Journey to the Promised Land}}&lt;br /&gt;
   {{Game|Kingdom Keys}}&lt;br /&gt;
   {{Game|King&#039;s Glory Elite}}&lt;br /&gt;
   {{Game|La Mitad Oscura}}&lt;br /&gt;
   {{Game|Maker&#039;s Matchup}}&lt;br /&gt;
   {{Game|Men of Renown}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|Moses Matchup}}&lt;br /&gt;
   {{Game|My Cup}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Number Munchers}}&lt;br /&gt;
   {{Game|Panoplia: The Full Armor of God}}&lt;br /&gt;
   {{Game|Pro League Baseball}}&lt;br /&gt;
   {{Game|Realm of the Paladin}}&lt;br /&gt;
   {{Game|Rhema}}&lt;br /&gt;
   {{Game|Sanctified Scrolls}}&lt;br /&gt;
   {{Game|The Secret Island of Dr. Quandry}}&lt;br /&gt;
   {{Game|Space Miner}}&lt;br /&gt;
   {{Game|Sparky&#039;s Math Adventure}}&lt;br /&gt;
   {{Game|Spellbound!}}&lt;br /&gt;
   {{Game|Strip Poker Professional}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|Sword of the Spirit}}&lt;br /&gt;
   {{Game|World Combat}}&lt;br /&gt;
   {{Game|Taglit: Nahesh Ota!}}&lt;br /&gt;
   {{Game|Wayne&#039;s World}}&lt;br /&gt;
   {{Game|Where&#039;s Noah?}}&lt;br /&gt;
   {{Game|Word Munchers}}&lt;br /&gt;
   {{Game|Yogi Bear&#039;s Math Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was researched by [[User:TheAlmightyGuru|TheAlmightyGuru]] and [[User:CTPAX-X Team|CTPAX-X Team]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;br /&gt;
* [https://www.atarimania.com/pgesoft.awp?version=28394 Atari ST font editor]&lt;br /&gt;
* [https://www.atari-forum.com/viewtopic.php?p=473688 GEM font viewer for Windows/Linux]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User_talk:CTPAX-X_Team&amp;diff=12113</id>
		<title>User talk:CTPAX-X Team</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User_talk:CTPAX-X_Team&amp;diff=12113"/>
		<updated>2024-12-31T18:58:16Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SLB/M3 tools ==&lt;br /&gt;
&lt;br /&gt;
Thanks for amplifying the page I created related to the M3/SLB format(s).&lt;br /&gt;
Are we aware of any tool to extract data from .SLB/.M3 formats yet ?&lt;br /&gt;
&lt;br /&gt;
- [[User:Elia1995 | Elìa1995]]&lt;br /&gt;
&lt;br /&gt;
: Added script to unpack archives. If you want to view images you can use IGC.EXE game program as a viewer (DOSBox). [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 19:20, 16 October 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== FileInfoRec on SelectWare Archive ==&lt;br /&gt;
&lt;br /&gt;
On the [[SelectWare Archive]] page, I&#039;m not sure if it is useful to replace the information on the folder ID by the link to the FileInfoRec. I don&#039;t doubt that it&#039;s correct, but the page you linked to just describes that whole start block as &amp;quot;reserved&amp;quot;, giving no information whatsoever about how a tool could distinguish files from folders and link them together correctly, while the previous information on the page did specify that. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 14:33, 8 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
For more info on the problem, I refer to you the John Madden Football demo on [https://archive.org/details/cdrom-software-jukebox this CD]. It&#039;s the archive under the folder &amp;lt;tt&amp;gt;ELE15003&amp;lt;/tt&amp;gt;. In that archive, there is no difference in directory level between &amp;quot;GRAPHICS\MISC\MISC.BMS&amp;quot; file and the following &amp;quot;GRAPHICS\STANCES&amp;quot; folder; without looking at those folder IDs, there is no way to know if &amp;quot;STANCES&amp;quot; is a &amp;quot;GRAPHICS\STANCES&amp;quot; folder, or an empty &amp;quot;GRAPHICS\MISC\STANCES&amp;quot; file. Here&#039;s [https://i.imgur.com/62F8afM.png an image of the files tree]. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 14:52, 8 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
[EDIT]&lt;br /&gt;
&lt;br /&gt;
Ah, I missed the fact there is a directory bit in the file attributes. With that, and the dir level from the entry, it is indeed completely possible without ever looking at that &amp;quot;reserved&amp;quot; information. Out of curiosity, does the SelectWare extractor actually look at that reserved block, or is its unpacking identical to your own? -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 15:32, 8 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Sorry, messed up logic for folder level. Example code fixed (thanks for pointing out on &amp;lt;tt&amp;gt;ELE15003&amp;lt;/tt&amp;gt; example archive) - now it should be identical to how the SelectWare extractor works (rechecked disassembler code), except parts marked as TODO in comments. And yes, original code never use anything from reserved 21 byte block since it&#039;s undocumented DOS internals. Also it would be nice if someone ported to this Wiki information about FileInfoRec, DOS Packed Time/Date and DOS File Attributes, since there are few other file formats which uses this structures (except maybe FileInfoRec). [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 18:26, 8 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: Thanks for confirming that the reserved  block is not used; it will come in handy when writing my code to save the archive type. I adapted my own reading code for the next version of the Librarian tool using the directory flag, and it&#039;s actually a lot simpler now. I also added a small section in the article now describing how to traverse the directory tree. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 22:02, 8 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: One addition: the actual extractor code does not check the first filename character (it&#039;s just this implementation quirks), instead it checks that &amp;lt;tt&amp;gt;sizeof(swt_item)&amp;lt;/tt&amp;gt; bytes was sucessully read from input file. Also add subdirectories and remove hidden tag since can&#039;t imagine a way to hide something with this format. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 16:03, 11 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Black line at the bottom of Keen Dreams title ==&lt;br /&gt;
&lt;br /&gt;
Hello. Could you tell me what to do in this case? Since nobody can help me (yet), read my topic: https://keenmodding.org/viewtopic.php?p=36634#p36634 (Oh, and the black line appears at the right bottom corner of the screen.) [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 07:36, 7 September 2021 (GMT)&lt;br /&gt;
: TitleBuild was developed by [[User:Levellass|Levellass]] - you should ask for help there first. As for some suggestions - try to use nConvert:&lt;br /&gt;
: [https://www.xnview.com/en/nconvert/ nconvert.exe] -in -1 -out iff TITLESCR.BMP&lt;br /&gt;
: Rename output file &amp;quot;TITLESCR.IFF&amp;quot; to &amp;quot;TITLESCR.LBM&amp;quot; and pack it back with &amp;quot;SOFTLIB.EXE&amp;quot; to &amp;quot;KDREAMS.CMP&amp;quot;. Maybe it will work correctly this time. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 09:44, 7 September 2021 (GMT)&lt;br /&gt;
:: I have a little problem at the end. I did everything as you mentioned, but SOFTLIB said titlescr.lbm is not a SOFTLIB file and I&#039;m stopped. Please, tell me what can I do as it would be very important for me. [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 23:36, 7 September 2021 (GMT)&lt;br /&gt;
:: No success. I managed to pack it back, but still the same black line at the bottom. Maybe TitleBuilder is the guilty? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 01:01, 8 September 2021 (GMT)&lt;br /&gt;
::: Do the following things (step-by-step):&lt;br /&gt;
::: 1. SOFTLIB.EXE E KDREAMS.CMP TITLESCR.LBM&lt;br /&gt;
::: 2. nConvert.exe -in -1 -out bmp TITLESCR.LBM&lt;br /&gt;
::: (edit output &amp;quot;TITLESCR.BMP&amp;quot; file here as you like)&lt;br /&gt;
::: 3. nConvert.exe -in -1 -c 1 -out iff TITLESCR.BMP&lt;br /&gt;
::: 4. del TITLESCR.LBM&lt;br /&gt;
::: 5. ren TITLESCR.IFF TITLESCR.LBM&lt;br /&gt;
::: 6. del KDREAMS.CMP&lt;br /&gt;
::: 7. SOFTLIB.EXE AC KDREAMS.CMP TITLESCR.LBM LZH&lt;br /&gt;
::: Just tested and everything works fine. Use DOSBox or any other DOS VM for running SOFTLIB.EXE. Do not use TileBuilder if you have issues with it. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 08:34, 8 September 2021 (GMT)&lt;br /&gt;
:::: Thanks! I will try it, too. [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 08:50, 8 September 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Keen 1 v1.34 EXE problem ==&lt;br /&gt;
&lt;br /&gt;
Hello! Could you help me? The EXE of Keen 1 v1.34 was compressed by PKLite, which I decompressed with UNP, so that I can use KeenGraph (Keen 1-6, Dreams graphic editor). While trying to extract the graphics, KeenGraph mentions that &#039;EGASPRIT.CK1 LZW-compressed, decompressing...&#039; &#039;EGALATCH.CK1 LZW-compressed, decompressing...&#039; And then nothing happens, but just hanging. Tell me how to decompress these LZW-compressed files. [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 22:52, 18 October 2021 (GMT)&lt;br /&gt;
: Sorry, not familiar with this game or modding tools, can&#039;t help. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 19:50, 20 October 2021 (GMT)&lt;br /&gt;
:: Alright, but any suggestions/tools on how to decompress LZW-decompressed files? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 21:42, 20 October 2021 (GMT)&lt;br /&gt;
::: Try the [[LZW Compression]] page? Or ask [[User:Levellass|Levellass]], who actually made the KeenGraph tool. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 23:15, 20 October 2021 (GMT)&lt;br /&gt;
:::: I managed to decompress EGALATCH.CK1, but EGASPRIT.CK1 not. Here are the compressed values from EGASPRIT.CK1:&lt;br /&gt;
 0000  70 7B 00 00 0C 00 00 40&lt;br /&gt;
 0010  40 80 6C 00 3B 82 1D 0E&lt;br /&gt;
&lt;br /&gt;
Do you know how to decompress it? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:25, 21 October 2021 (GMT)&lt;br /&gt;
: Sorry, not familiar with this game or modding tools, can&#039;t help. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 18:35, 30 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== [[GEM Font]] ==&lt;br /&gt;
Thanks for helping me with this format! --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]]) 18:58, 31 December 2024 (GMT)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=12112</id>
		<title>User:TheAlmightyGuru</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=12112"/>
		<updated>2024-12-31T18:57:04Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I dig videogames!&lt;br /&gt;
&lt;br /&gt;
* [http://www.vgmpf.com vgmpf.com] - The Videogame Music Preservation Foundation.&lt;br /&gt;
* [http://www.romdetectives.com romdetectives.com] - ROM Detectives (console video game hacking)&lt;br /&gt;
* [http://www.thealmightyguru.com/Wiki thealmightyguru.com/Wiki] - My home page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ve contributed significantly to the following pages:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;General Pages&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[BGI Stroked Font]]&lt;br /&gt;
* [[Borland Graphics Interface]]&lt;br /&gt;
* [[CAT Format (MPS Labs)]]&lt;br /&gt;
* [[ESI Format]]&lt;br /&gt;
* [[FLIC Format]]&lt;br /&gt;
* [[GEM Font]]&lt;br /&gt;
* [[LBX Format]]&lt;br /&gt;
* [[LIB Format (Electronic Arts)]]&lt;br /&gt;
* [[LIB Format (Mythos Software)]]&lt;br /&gt;
* [[Microsoft BASIC MML]]&lt;br /&gt;
* [[Microsoft Bitmap Font Format]]&lt;br /&gt;
* [[Microsoft Vector Font Format]]&lt;br /&gt;
* [[PAK Format (Westwood)]]&lt;br /&gt;
* [[Raw CGA Data]] (Full-screen linear viewer source)&lt;br /&gt;
* [[Raw VGA Image]]&lt;br /&gt;
* [[Turbo Pascal Real]]&lt;br /&gt;
* [[VGA Palette]]&lt;br /&gt;
* [[Visage Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[4x4 Off-Road Racing]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[4x4 Off-Road Racing Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Full Screen Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Sprite Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Castle Adventure]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Castle Adventure Data Format]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Family Feud]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Family Feud Question Format]]&lt;br /&gt;
* [[Family Feud Question Flag Format]]&lt;br /&gt;
* [[Family Feud Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[God of Thunder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[DAT Format (God of Thunder)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Eye of the Beholder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Eye of the Beholder Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Hugo&#039;s House of Horrors]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Hugo Map Formats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Major Stryker]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[HS Format (Major Stryker)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Might and Magic III: Isles of Terra]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[The Oregon Trail]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Oregon Trail dialogue format]]&lt;br /&gt;
* [[Oregon Trail high scores format]]&lt;br /&gt;
* [[Oregon Trail joystick calibration format]]&lt;br /&gt;
* [[Oregon Trail save game format]]&lt;br /&gt;
* [[Oregon Trail tombstones format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[SkyRoads]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[SkyRoads save game format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Solar Winds]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Solar Winds Sprites]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Swords of Glass]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Swords of Glass fortune format]]&lt;br /&gt;
* [[Swords of Glass info format]]&lt;br /&gt;
* [[Swords of Glass map format]]&lt;br /&gt;
* [[Swords of Glass message format]]&lt;br /&gt;
* [[Swords of Glass monster format]]&lt;br /&gt;
* [[Swords of Glass names format]]&lt;br /&gt;
* [[Swords of Glass graphic format]]&lt;br /&gt;
* [[Swords of Glass people format]]&lt;br /&gt;
* [[Swords of Glass puzzle format]]&lt;br /&gt;
* [[Swords of Glass vault format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima I]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
* [[Ultima I Map Format]]&lt;br /&gt;
* [[Ultima I Tile Graphic Format]]&lt;br /&gt;
* [[Ultima I Town Map Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima II: Revenge of the Enchantress]]&amp;lt;span&amp;gt;&lt;br /&gt;
* [[Ultima II Map Format]]&lt;br /&gt;
* [[Ultima II Dungeon Format]]&lt;br /&gt;
* [[Ultima II Talk Format]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12111</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12111"/>
		<updated>2024-12-31T18:56:28Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = 255&amp;amp;times;127&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Jin City: The Adventures of Deming}}&lt;br /&gt;
   {{Game|Journey to the Promised Land}}&lt;br /&gt;
   {{Game|Kingdom Keys}}&lt;br /&gt;
   {{Game|King&#039;s Glory Elite}}&lt;br /&gt;
   {{Game|La Mitad Oscura}}&lt;br /&gt;
   {{Game|Maker&#039;s Matchup}}&lt;br /&gt;
   {{Game|Men of Renown}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|Moses Matchup}}&lt;br /&gt;
   {{Game|My Cup}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Number Munchers}}&lt;br /&gt;
   {{Game|Panoplia: The Full Armor of God}}&lt;br /&gt;
   {{Game|Pro League Baseball}}&lt;br /&gt;
   {{Game|Realm of the Paladin}}&lt;br /&gt;
   {{Game|Rhema}}&lt;br /&gt;
   {{Game|Sanctified Scrolls}}&lt;br /&gt;
   {{Game|The Secret Island of Dr. Quandry}}&lt;br /&gt;
   {{Game|Space Miner}}&lt;br /&gt;
   {{Game|Sparky&#039;s Math Adventure}}&lt;br /&gt;
   {{Game|Spellbound!}}&lt;br /&gt;
   {{Game|Strip Poker Professional}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|Sword of the Spirit}}&lt;br /&gt;
   {{Game|World Combat}}&lt;br /&gt;
   {{Game|Taglit: Nahesh Ota!}}&lt;br /&gt;
   {{Game|Wayne&#039;s World}}&lt;br /&gt;
   {{Game|Where&#039;s Noah?}}&lt;br /&gt;
   {{Game|Word Munchers}}&lt;br /&gt;
   {{Game|Yogi Bear&#039;s Math Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was researched by [[User:TheAlmightyGuru|TheAlmightyGuru]] and [[User:CTPAX-X Team|CTPAX-X Team]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12110</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12110"/>
		<updated>2024-12-31T18:55:03Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Lots more games&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = 255&amp;amp;times;127&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Jin City: The Adventures of Deming}}&lt;br /&gt;
   {{Game|Journey to the Promised Land}}&lt;br /&gt;
   {{Game|Kingdom Keys}}&lt;br /&gt;
   {{Game|King&#039;s Glory Elite}}&lt;br /&gt;
   {{Game|La Mitad Oscura}}&lt;br /&gt;
   {{Game|Maker&#039;s Matchup}}&lt;br /&gt;
   {{Game|Men of Renown}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|Moses Matchup}}&lt;br /&gt;
   {{Game|My Cup}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Number Munchers}}&lt;br /&gt;
   {{Game|Panoplia: The Full Armor of God}}&lt;br /&gt;
   {{Game|Pro League Baseball}}&lt;br /&gt;
   {{Game|Realm of the Paladin}}&lt;br /&gt;
   {{Game|Rhema}}&lt;br /&gt;
   {{Game|Sanctified Scrolls}}&lt;br /&gt;
   {{Game|The Secret Island of Dr. Quandry}}&lt;br /&gt;
   {{Game|Space Miner}}&lt;br /&gt;
   {{Game|Sparky&#039;s Math Adventure}}&lt;br /&gt;
   {{Game|Spellbound!}}&lt;br /&gt;
   {{Game|Strip Poker Professional}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|Sword of the Spirit}}&lt;br /&gt;
   {{Game|World Combat}}&lt;br /&gt;
   {{Game|Taglit: Nahesh Ota!}}&lt;br /&gt;
   {{Game|Wayne&#039;s World}}&lt;br /&gt;
   {{Game|Where&#039;s Noah?}}&lt;br /&gt;
   {{Game|Word Munchers}}&lt;br /&gt;
   {{Game|Yogi Bear&#039;s Math Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12109</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12109"/>
		<updated>2024-12-31T18:44:31Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = 255&amp;amp;times;127&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Forerunners}}&lt;br /&gt;
   {{Game|Fruit of the Spirit}}&lt;br /&gt;
   {{Game|GameBuilder Professional}}&lt;br /&gt;
   {{Game|Googol Math Games}}&lt;br /&gt;
   {{Game|Googol Review}}&lt;br /&gt;
   {{Game|The Grandest Fleet}}&lt;br /&gt;
   {{Game|The Grandest Fleet 2}}&lt;br /&gt;
   {{Game|Grandmaster Chess}}&lt;br /&gt;
   {{Game|Great Naval Battles: North Atlantic 1939-1943}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|In Christ!}}&lt;br /&gt;
   {{Game|Jesus Matchup}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12108</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12108"/>
		<updated>2024-12-31T18:38:56Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = 255&amp;amp;times;127&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Barney Bear Goes to the Farm}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|Bible Paint and Learn}}&lt;br /&gt;
   {{Game|Bobby Fischer Teaches Chess}}&lt;br /&gt;
   {{Game|Bridge Master}}&lt;br /&gt;
   {{Game|Burning Steel: Entscheidung im Nordatlantik}}&lt;br /&gt;
   {{Game|Christmas Matchup}}&lt;br /&gt;
   {{Game|The Dark Half}}&lt;br /&gt;
   {{Game|Davidic Matchup}}&lt;br /&gt;
   {{Game|Every Good and Perfect Gift}}&lt;br /&gt;
   {{Game|The Fall of Jericho!}}&lt;br /&gt;
   {{Game|Fiery Darts}}&lt;br /&gt;
   {{Game|Fireteam 2200}}&lt;br /&gt;
   {{Game|Hopy-ONE}}&lt;br /&gt;
   {{Game|Mental Math Games}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|NeoPaint}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12107</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12107"/>
		<updated>2024-12-31T18:31:04Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = 0&amp;amp;times;0&lt;br /&gt;
 | GlyphMaxSize = 255&amp;amp;times;127&lt;br /&gt;
 | Access = Indexed&lt;br /&gt;
 | Bitmap = Y&lt;br /&gt;
 | Vector = N&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = None&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|3Fold}}&lt;br /&gt;
   {{Game|The Amazon Trail}}&lt;br /&gt;
   {{Game|The Ancient Art of War in the Skies}}&lt;br /&gt;
   {{Game|Battles in Time}}&lt;br /&gt;
   {{Game|Bible Concentration}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
   {{Game|Super Munchers: The Challenge Continues}}&lt;br /&gt;
   {{Game|}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=The_Oregon_Trail&amp;diff=12106</id>
		<title>The Oregon Trail</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=The_Oregon_Trail&amp;diff=12106"/>
		<updated>2024-12-31T18:27:24Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = None&lt;br /&gt;
 | Tiles = None&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = None&lt;br /&gt;
 | Music = Edit&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Oregon Trail&#039;&#039;&#039; is an education game in the Trail series. This is the 1985 version, originally developed for the Apple II, but ported to DOS in 1990. It was written in Turbo Pascal.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pcl&lt;br /&gt;
 | Format = [[PCX Library]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Library of game graphics. There is a file for CGA and VGA (named MCGA).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pcc&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Most of the game&#039;s graphics have a PCC extension and are stored in the PCL file. They are PCX files without a palette (although the VGA p7.pcc does have the palette).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = logo.004&amp;lt;br&amp;gt;logo.256&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Logo in standard PCX format in VGA and CGA.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = pal.256&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = A mostly blank PCX image with the game&#039;s VGA palette. This is loaded first in order to display PCC files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.gam&lt;br /&gt;
 | Format = [[Oregon Trail save game format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Save game format.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = dialogs.rec&lt;br /&gt;
 | Format = [[Oregon Trail dialogue format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Gossip at cities.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = hiscores.rec&lt;br /&gt;
 | Format = [[Oregon Trail high scores format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = High scores.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tomb.rec&lt;br /&gt;
 | Format = [[Oregon Trail tombstones format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Tombstone locations and text.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = joycal.rec&lt;br /&gt;
 | Format = [[Oregon Trail joystick calibration format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Joystick calibration settings.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = songs.txt&lt;br /&gt;
 | Format = [[Microsoft BASIC MML]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = PC speaker music in plain text format. One line for each landmark.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Installer and game&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bgi&lt;br /&gt;
 | Format = [[Borland Graphics Interface]] libraries&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Borland Graphics Libraries (game uses v2.0).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.gft&lt;br /&gt;
 | Format = [[GEM Font]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = GEM font format.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = product.pf&lt;br /&gt;
 | Format = &lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Copyright, MECC address, and phone number, game title.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
[[Category:MECC]]&lt;br /&gt;
[[Category:Educational]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12105</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12105"/>
		<updated>2024-12-31T18:23:04Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: TheAlmightyGuru moved page GFT Font Format to GEM Font without leaving a redirect: More accurate font name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12104</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12104"/>
		<updated>2024-12-31T18:22:43Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;GEM Font&#039;&#039;&#039; is a bitmap font format originally developed for GEM, the Atari ST operating environment. It typically has a *.gft or *.fnt file extension when used in DOS projects. It was incorporated in the Genus Microprogramming graphics library which was used for various DOS games. The DOS version of NeoPaint uses the format for drawing text into bitmaps.&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
=== GEM Font Header ===&lt;br /&gt;
SoftType font format description taken from official Genus &#039;&#039;GX Development Series&#039;&#039; TXLIB.H header file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fid || Font ID, must be 0.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || psize || Point size.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || fntname || Font name.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || minch || Minimum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxch || Maximum character in [0..255] range.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || topline || Top line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ascent || Ascent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || halfline || Half line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || descent || Descent distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || botline || Bottom line distance.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || maxwidth || Maximum character width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || cellsize || Maximum cell size.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || leftofs || Left offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || rightofs || Right offset.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || thicken || Thicken pixels, for bolding.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || ulwidth || Underline width.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || lightmask || Lightening and...&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || skewmask || ...Skew masks.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || flags || Font flags.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || hotptr || Horiz Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || cotptr || Char Offset Table pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT32LE]] || bufptr || Data Buffer pointer.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fwidth || Sum of all character widths.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || fheight || Number of character rows.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To check if specified file is a correct file the following code can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* from official TXLIB.H header file */&lt;br /&gt;
&lt;br /&gt;
/* GEM Font Header */&lt;br /&gt;
#pragma pack(push, 1)&lt;br /&gt;
typedef struct gemheader {&lt;br /&gt;
  int16_t fid;       /* Font ID                     */&lt;br /&gt;
  int16_t psize;     /* Point size                  */&lt;br /&gt;
  char fntname[32];  /* Font name                   */&lt;br /&gt;
  int16_t minch;     /* Minimum character           */&lt;br /&gt;
  int16_t maxch;     /* Maximum character           */&lt;br /&gt;
  int16_t topline;   /* Top line distance           */&lt;br /&gt;
  int16_t ascent;    /* Ascent distance             */&lt;br /&gt;
  int16_t halfline;  /* Half line distance          */&lt;br /&gt;
  int16_t descent;   /* Descent distance            */&lt;br /&gt;
  int16_t botline;   /* Bottom line distance        */&lt;br /&gt;
  int16_t maxwidth;  /* Maximum character width     */&lt;br /&gt;
  int16_t cellsize;  /* Maximum cell size           */&lt;br /&gt;
  int16_t leftofs;   /* Left offset                 */&lt;br /&gt;
  int16_t rightofs;  /* Right offset                */&lt;br /&gt;
  int16_t thicken;   /* Thicken pixels, for bolding */&lt;br /&gt;
  int16_t ulwidth;   /* Underline width             */&lt;br /&gt;
  int16_t lightmask; /* Lightening and              */&lt;br /&gt;
  int16_t skewmask;  /* Skew masks                  */&lt;br /&gt;
  int16_t flags;     /* Font flags                  */&lt;br /&gt;
  int32_t hotptr;    /* Horiz Offset Table pointer  */&lt;br /&gt;
  int32_t cotptr;    /* Char Offset Table pointer   */&lt;br /&gt;
  int32_t bufptr;    /* Data Buffer pointer         */&lt;br /&gt;
  int16_t fwidth;    /* Sum of all character widths */&lt;br /&gt;
  int16_t fheight;   /* Number of character rows    */&lt;br /&gt;
} GEMHEADER; /* sizeof(GEMHEADER) == 84 bytes */&lt;br /&gt;
#pragma pack(pop)&lt;br /&gt;
&lt;br /&gt;
int txVerifyBuffer(GEMHEADER *gh) {&lt;br /&gt;
  if (&lt;br /&gt;
    (gh == NULL) ||&lt;br /&gt;
    (gh-&amp;gt;fid != 0) ||&lt;br /&gt;
    /* from disassembled TX_??.LIB library code */&lt;br /&gt;
    (gh-&amp;gt;fheight == 0) ||&lt;br /&gt;
    (gh-&amp;gt;fheight &amp;lt; gh-&amp;gt;ascent) || (gh-&amp;gt;ascent &amp;lt; 0) ||&lt;br /&gt;
    (gh-&amp;gt;ascent &amp;lt; gh-&amp;gt;descent) || (gh-&amp;gt;descent &amp;lt; 0) ||&lt;br /&gt;
    ((gh-&amp;gt;ascent + gh-&amp;gt;descent) &amp;gt; gh-&amp;gt;fheight) ||&lt;br /&gt;
    (gh-&amp;gt;cellsize == 0) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;lt; gh-&amp;gt;minch) ||&lt;br /&gt;
    (gh-&amp;gt;maxch &amp;gt;= 256)&lt;br /&gt;
  ) {&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  return(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://justsolve.archiveteam.org/wiki/GEM_bitmap_font GEM bitmap font - Just Solve the File Format Problem]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12101</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12101"/>
		<updated>2024-12-31T16:31:47Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an as-of-yet unknown font format. The extension possibly stands for &amp;quot;graphic font&amp;quot;? I haven&#039;t been able to find any information on it, but, based on the file names and contents of the file, it appears to be a bitmap font format.&lt;br /&gt;
&lt;br /&gt;
It was used by MECC in multiple DOS games in the 1990s, so may be related to the [[Borland Graphics Interface]]. Several other games use the format as well. &lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that has similar looking binary data, but may be something else (I&#039;ve put a question mark at after the game titles).&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12100</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12100"/>
		<updated>2024-12-31T16:14:52Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an as-of-yet unknown font format. The extension possibly stands for &amp;quot;graphic font&amp;quot;? It was used by MECC in multiple DOS games in the 1990s, so may be related to the [[Borland Graphics Interface]]. Several other games use the format as well. There also appears to be a format with the same extension that has similar looking binary data, but may be something else.&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12099</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12099"/>
		<updated>2024-12-31T16:12:24Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unknown font format. Possibly stands for &amp;quot;graphic font&amp;quot;? It was used by MECC in multiple DOS games, so may be related to the [[Borland Graphics Interface]]. Several other games use the format. There also appears to be a format with the same extension that may be some form of a graphic format.&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12098</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12098"/>
		<updated>2024-12-31T16:09:07Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unknown font format. Possibly stands for &amp;quot;graphic font&amp;quot;? It was used by MECC in multiple DOS games, so may be related to the [[Borland Graphics Interface]]. Several other games use the format. There also appears to be a format with the same extension that may be some form of a graphic format.&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12097</id>
		<title>GEM Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=GEM_Font&amp;diff=12097"/>
		<updated>2024-12-31T16:08:28Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Created page with &amp;quot;This is an unknown font format. Possibly &amp;quot;graphic font format&amp;quot;? It was used by MECC in multiple DOS games, so may be related to the Borland Graphics Interface.  There also appears to be a format with the same extension that may be some form of a graphic format.  ==Games== * The Amazon Trail ? * The Ancient Art of War in the Skies * Barney Bear Goes to the Farm * Battles in Time * Bible Concentration * Bobby Fischer Teaches Chess ? * Bridge M...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unknown font format. Possibly &amp;quot;graphic font format&amp;quot;? It was used by MECC in multiple DOS games, so may be related to the [[Borland Graphics Interface]].&lt;br /&gt;
&lt;br /&gt;
There also appears to be a format with the same extension that may be some form of a graphic format.&lt;br /&gt;
&lt;br /&gt;
==Games==&lt;br /&gt;
* [[The Amazon Trail]] ?&lt;br /&gt;
* [[The Ancient Art of War in the Skies]]&lt;br /&gt;
* [[Barney Bear Goes to the Farm]]&lt;br /&gt;
* [[Battles in Time]]&lt;br /&gt;
* [[Bible Concentration]]&lt;br /&gt;
* [[Bobby Fischer Teaches Chess]] ?&lt;br /&gt;
* [[Bridge Master]] ?&lt;br /&gt;
* [[The Dark Half]] ?&lt;br /&gt;
* [[The Fall of Jericho!]]&lt;br /&gt;
* [[Fireteam 2200]]&lt;br /&gt;
* [[GameBuilder Professional]] ?&lt;br /&gt;
* [[Googol Math Games]]&lt;br /&gt;
* [[Googol Review]]&lt;br /&gt;
* [[The Grandest Fleet]]&lt;br /&gt;
* [[The Grandest Fleet 2]]&lt;br /&gt;
* [[Grandmaster Chess]] ?&lt;br /&gt;
* [[Hopy-ONE]&lt;br /&gt;
* [[In Christ!]] ?&lt;br /&gt;
* [[Jin City: The Adventures of Deming]] ?&lt;br /&gt;
* [[Journey to the Promised Land]]&lt;br /&gt;
* [[La Mitad Oscura]] ?&lt;br /&gt;
* [[Men of Renown]] ?&lt;br /&gt;
* [[Mental Math Games]] ?&lt;br /&gt;
* [[Number Munchers]]&lt;br /&gt;
* [[The Oregon Trail]]&lt;br /&gt;
* [[Panoplia: The Full Armor of God]] ?&lt;br /&gt;
* [[Pro League Baseball]] ?&lt;br /&gt;
* [[Realm of the Paladin]]&lt;br /&gt;
* [[Rhema]] ?&lt;br /&gt;
* [[Taglit: Nahesh Ota!]]&lt;br /&gt;
* [[Sanctified Scrolls]] ?&lt;br /&gt;
* [[The Secret Island of Dr. Quandry]] ?&lt;br /&gt;
* [[Space Miner]]&lt;br /&gt;
* [[Sparky&#039;s Math Adventure]] ?&lt;br /&gt;
* [[Spellbound!]] ?&lt;br /&gt;
* [[Strip Poker Professional]] ?&lt;br /&gt;
* [[Super Munchers]]&lt;br /&gt;
* [[Wayne&#039;s World]] ?&lt;br /&gt;
* [[Where&#039;s Noah?]]&lt;br /&gt;
* [[Word Munchers]]&lt;br /&gt;
* [[World Combat]]&lt;br /&gt;
* [[Yogi Bear&#039;s Math Adventure]] ?&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=The_Oregon_Trail&amp;diff=12096</id>
		<title>The Oregon Trail</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=The_Oregon_Trail&amp;diff=12096"/>
		<updated>2024-12-31T15:42:28Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = None&lt;br /&gt;
 | Tiles = None&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = None&lt;br /&gt;
 | Music = Edit&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Oregon Trail&#039;&#039;&#039; is an education game in the Trail series. This is the 1985 version, originally developed for the Apple II, but ported to DOS in 1990. It was written in Turbo Pascal.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pcl&lt;br /&gt;
 | Format = [[PCX Library]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Library of game graphics. There is a file for CGA and VGA (named MCGA).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pcc&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Most of the game&#039;s graphics have a PCC extension and are stored in the PCL file. They are PCX files without a palette (although the VGA p7.pcc does have the palette).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = logo.004&amp;lt;br&amp;gt;logo.256&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Logo in standard PCX format in VGA and CGA.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = pal.256&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = A mostly blank PCX image with the game&#039;s VGA palette. This is loaded first in order to display PCC files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.gam&lt;br /&gt;
 | Format = [[Oregon Trail save game format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Save game format.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = dialogs.rec&lt;br /&gt;
 | Format = [[Oregon Trail dialogue format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Gossip at cities.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = hiscores.rec&lt;br /&gt;
 | Format = [[Oregon Trail high scores format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = High scores.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tomb.rec&lt;br /&gt;
 | Format = [[Oregon Trail tombstones format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Tombstone locations and text.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = joycal.rec&lt;br /&gt;
 | Format = [[Oregon Trail joystick calibration format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Joystick calibration settings.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = songs.txt&lt;br /&gt;
 | Format = [[Microsoft BASIC MML]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = PC speaker music in plain text format. One line for each landmark.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Installer and game&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bgi&lt;br /&gt;
 | Format = [[Borland Graphics Interface]] libraries&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Borland Graphics Libraries (game uses v2.0).&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.gft&lt;br /&gt;
 | Format = [[GFT Font Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = A bitmap font format.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = product.pf&lt;br /&gt;
 | Format = &lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Copyright, MECC address, and phone number, game title.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
[[Category:MECC]]&lt;br /&gt;
[[Category:Educational]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass&amp;diff=11937</id>
		<title>Swords of Glass</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass&amp;diff=11937"/>
		<updated>2024-08-14T19:35:29Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Swords of Glass&#039;&#039;&#039; is a two-player 3D dungeon crawler RPG written in Pascal.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [http://www.thealmightyguru.com/Wiki/index.php?title=Swords_of_Glass_Utilities Swords of Glass Utilities]&lt;br /&gt;
| Platform = Windows&lt;br /&gt;
| grp = Yes&lt;br /&gt;
| map = Yes&lt;br /&gt;
| gfx = Yes&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = Yes&lt;br /&gt;
| sav = Yes&lt;br /&gt;
| exe = No&lt;br /&gt;
| notes = &lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = CNames.dat&lt;br /&gt;
 | Format = [[Swords of Glass names format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Names of items.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = CShapes.dat&amp;lt;br /&amp;gt;Shapes.dat&amp;lt;br /&amp;gt;CShapes1.dat&amp;lt;br /&amp;gt;Shapes1.dat&amp;lt;br&amp;gt;Doors.dat&lt;br /&gt;
 | Format = [[Swords of Glass graphic format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Graphics of objects in dungeon.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Fortunes.dat&lt;br /&gt;
 | Format = [[Swords of Glass fortune format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Fortunes told by statues.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Info.dat&lt;br /&gt;
 | Format = [[Swords of Glass info format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Information about items.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Messages.dat&lt;br /&gt;
 | Format = [[Swords of Glass message format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Dungeon messages.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Mons.dat&lt;br /&gt;
 | Format = [[Swords of Glass monster format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Monster stats.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Panels.dat&lt;br /&gt;
 | Format = Unknown&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown. Appears to be flags. Data is only 1 or 0.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = People.dat&lt;br /&gt;
 | Format = [[Swords of Glass people format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Player stats.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Puzzle.dat&lt;br /&gt;
 | Format = [[Swords of Glass puzzle format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = The text of the puzzles found in the dungeons.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Swords.*&lt;br /&gt;
 | Format = Unknown&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Executables.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Test.dat&lt;br /&gt;
 | Format = [[Swords of Glass map format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Dungeon maps.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = Vault.dat&lt;br /&gt;
 | Format = [[Swords of Glass vault format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = The items saved in the vault.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
The wall graphics appear to be stored in the executable.&lt;br /&gt;
&lt;br /&gt;
[[Category:RPG]]&lt;br /&gt;
[[Category:Keypunch]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Talk:BGI_Stroked_Font&amp;diff=11366</id>
		<title>Talk:BGI Stroked Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Talk:BGI_Stroked_Font&amp;diff=11366"/>
		<updated>2023-12-21T13:42:20Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= character layout =&lt;br /&gt;
The numbers in the description and diagram include 64, and for the above the baseline it ranges from 0 to 64, which is too large a range for a 6-bit number. Do we know enough detail to clarify the range, and to determine if the negative values are simply signed or 2s complement? [[User:Carbon14|Carbon14]] ([[User talk:Carbon14|talk]]) 08:26, 21 December 2023 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Looking at the FreeBASIC code, it looks as though the X values is simply signed, and has a range from -63 to +63 with both -ve and +ve 0; while the Y value is a 2s complement with a range of -64 to 63. [[User:Carbon14|Carbon14]] ([[User talk:Carbon14|talk]]) 08:26, 21 December 2023 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: There was a reason why I wrote it out that way, but it&#039;s been so long since I worked on it, I don&#039;t remember. I think it had something to do with the baseline counting as a line when it came time to render the character, but not in the file, so the ascender had a range of 63, but +1 because of the baseline. I had the renderer working almost perfectly, but there were still a couple fonts that gave odd results, but I had gotten bored of the format. I did end up compiling a large collection of [http://www.thealmightyguru.com/Wiki/index.php?title=File:BGI_Fonts.zip BGI fonts] which you can use if you want to test with. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]]) 13:41, 21 December 2023 (GMT)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=11355</id>
		<title>User:TheAlmightyGuru</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=11355"/>
		<updated>2023-11-22T20:56:49Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I dig videogames!&lt;br /&gt;
&lt;br /&gt;
* [http://www.vgmpf.com vgmpf.com] - The Videogame Music Preservation Foundation.&lt;br /&gt;
* [http://www.romdetectives.com romdetectives.com] - ROM Detectives (console video game hacking)&lt;br /&gt;
* [http://www.thealmightyguru.com/Wiki thealmightyguru.com/Wiki] - My home page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ve contributed significantly to the following pages:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;General Pages&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[BGI Stroked Font]]&lt;br /&gt;
* [[Borland Graphics Interface]]&lt;br /&gt;
* [[CAT Format (MPS Labs)]]&lt;br /&gt;
* [[ESI Format]]&lt;br /&gt;
* [[FLIC Format]]&lt;br /&gt;
* [[LBX Format]]&lt;br /&gt;
* [[LIB Format (Electronic Arts)]]&lt;br /&gt;
* [[LIB Format (Mythos Software)]]&lt;br /&gt;
* [[Microsoft BASIC MML]]&lt;br /&gt;
* [[Microsoft Bitmap Font Format]]&lt;br /&gt;
* [[Microsoft Vector Font Format]]&lt;br /&gt;
* [[PAK Format (Westwood)]]&lt;br /&gt;
* [[Raw CGA Data]] (Full-screen linear viewer source)&lt;br /&gt;
* [[Raw VGA Image]]&lt;br /&gt;
* [[Turbo Pascal Real]]&lt;br /&gt;
* [[VGA Palette]]&lt;br /&gt;
* [[Visage Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[4x4 Off-Road Racing]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[4x4 Off-Road Racing Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Full Screen Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Sprite Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Castle Adventure]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Castle Adventure Data Format]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Family Feud]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Family Feud Question Format]]&lt;br /&gt;
* [[Family Feud Question Flag Format]]&lt;br /&gt;
* [[Family Feud Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[God of Thunder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[DAT Format (God of Thunder)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Eye of the Beholder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Eye of the Beholder Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Hugo&#039;s House of Horrors]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Hugo Map Formats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Major Stryker]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[HS Format (Major Stryker)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Might and Magic III: Isles of Terra]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[The Oregon Trail]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Oregon Trail dialogue format]]&lt;br /&gt;
* [[Oregon Trail high scores format]]&lt;br /&gt;
* [[Oregon Trail joystick calibration format]]&lt;br /&gt;
* [[Oregon Trail save game format]]&lt;br /&gt;
* [[Oregon Trail tombstones format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[SkyRoads]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[SkyRoads save game format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Solar Winds]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Solar Winds Sprites]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Swords of Glass]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Swords of Glass fortune format]]&lt;br /&gt;
* [[Swords of Glass info format]]&lt;br /&gt;
* [[Swords of Glass map format]]&lt;br /&gt;
* [[Swords of Glass message format]]&lt;br /&gt;
* [[Swords of Glass monster format]]&lt;br /&gt;
* [[Swords of Glass names format]]&lt;br /&gt;
* [[Swords of Glass graphic format]]&lt;br /&gt;
* [[Swords of Glass people format]]&lt;br /&gt;
* [[Swords of Glass puzzle format]]&lt;br /&gt;
* [[Swords of Glass vault format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima I]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
* [[Ultima I Map Format]]&lt;br /&gt;
* [[Ultima I Tile Graphic Format]]&lt;br /&gt;
* [[Ultima I Town Map Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima II: Revenge of the Enchantress]]&amp;lt;span&amp;gt;&lt;br /&gt;
* [[Ultima II Map Format]]&lt;br /&gt;
* [[Ultima II Dungeon Format]]&lt;br /&gt;
* [[Ultima II Talk Format]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass_graphic_format&amp;diff=11181</id>
		<title>Swords of Glass graphic format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass_graphic_format&amp;diff=11181"/>
		<updated>2023-08-14T03:11:59Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Image Infobox&lt;br /&gt;
 | ImageNativeWidth = Y&lt;br /&gt;
 | Hardware1 = CGA&lt;br /&gt;
 | Depth = 2-bit (CGA)&lt;br /&gt;
 | MinSize = 1&amp;amp;times;1&lt;br /&gt;
 | MaxSize = 30&amp;amp;times;50&lt;br /&gt;
 | Palette = Default CGA (0)&lt;br /&gt;
 | NumPlanes = 2&lt;br /&gt;
 | HasTransparency = Yes&lt;br /&gt;
 | HasHitmap = No&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|Swords of Glass}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Swords of Glass]]&#039;s graphics are stored in SHAPES.DAT, CSHAPES.DAT, SHAPES1.DAT, CSHAPES1.DAT, and DOORS.DAT. Shapes contains the player graphics and all monster graphics, CShapes contains environment objects like chests and stairs, Doors contains wall graphics like doorknobs, gargoyles, and keyholes. There are 48 objects in Shapes, 9 in CShapes, and 71 in Doors. Shapes1 and CShapes1 contain the smaller versions of these graphics when they&#039;re seen in the distance and have the same number of shapes in each. Doors contains three sizes of each object. Small and medium exists for facing, left, and right, but there is only a large version of the facing graphic. The number of graphics stored in each file is stored in the COM executable, so adding more graphics would be more extensive hack. The [[Swords of Glass monster format]] specifies which graphic each monster will use. Both players use the same graphics in the dungeon, but player 2 appears to be XORed.&lt;br /&gt;
&lt;br /&gt;
The format of Shapes1, CShapes1, and Doors is pretty straight-forward. Each record is a single Shape Data (header and CGA data) padded to the record size (468 bytes for shapes, 78 for Doors). These graphics do not support transparency.&lt;br /&gt;
&lt;br /&gt;
The format in Shapes and CShapes is more complex because they support transparency. Each record in the begins with a 60-byte Shape Map for transparency, then has 60 Shape Data records corresponding to each byte in the Shape Map. Each Shape Data record is a 5x5 pixel block used to build up the larger 6x10 blocks image, resulting in a 30x50 pixel graphic. Each Shape Data record is padded out to 26 bytes.&lt;br /&gt;
&lt;br /&gt;
Each Shape Data record has a header, a [[Raw CGA Data|CGA]] bit stream where two bits represent a pixel, and padding to fill out the size of the record. The data is not even remotely optimized. Pixel data is stored even for transparent blocks, and, some of the pixel data is redundant because it&#039;s based on 4-pixel increments even when they aren&#039;t needed. For example, a 5x5 image (25 pixels, and thus 50 bits (7 bytes in 2-bit color) ends up requiring 10 bytes each time, in addition to all the wasted padding used.&lt;br /&gt;
&lt;br /&gt;
The pixel blocks have a lot of what appears to be unused data. The padding following each record appears to be uncleared memory when the files were saved including snippets of source code (the same garbage can be seen in the non-graphics data files). Each Shape Data record begins with a 16-bit integer that is always 2. My guess is that this is the number of bits per pixel, but changing it doesn&#039;t appear to affect how the graphic is drawn by the game, so it&#039;s probably ignored. While the height and width are used to draw the Shape1 and CShape1 images, the 5x5 blocks of the Shape and CShape graphics must be hard-coded because changing them doesn&#039;t affect how they&#039;re drawn in the game.&lt;br /&gt;
&lt;br /&gt;
Although the format&#039;s header technically allows images up to 65,536&amp;amp;times;65,536, the record size and game engine constrains them images to much smaller areas, and the largest monster ever drawn in the game is 30&amp;amp;times;50 pixels, and the largest wall graphic is 12&amp;amp;times;12. &lt;br /&gt;
&lt;br /&gt;
== Shape Map ==&lt;br /&gt;
Each record in Shape and CShape files begin with a shape map which it uses for transparency. The shape map is 60 bytes representing a 6x10 rectangle of boxes stored top-to-bottom, left-to-right. A value of 0x01 indicates the pixel area should be drawn, a 0x00 indicates it should not be drawn (i.e., transparent).&lt;br /&gt;
&lt;br /&gt;
A Shape Map is always followed by 60 Shape Data records of size 5x5 pixels and padded out to 26 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]][60] Transparent || Transparency flag (00 - Yes, 01 - No)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Shape Data ==&lt;br /&gt;
This is the actual graphic data. In Shape1, CShape1, and Doors, this is a single graphic image. In Shape and CShape, there will be 60 blocks that make up a single graphic.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT16LE]] Unknown || Always 0x02 0x00. Doesn&#039;t appear to be used. Perhaps it was meant to be the number of bits-per-pixel the format uses?&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT16LE]] Width || Width of the image.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT16LE]] Height || Height of the image.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]][ceiling(width / 4) &amp;amp;times; height] CGA bit stream || CGA graphic data. When converted to pixels, it is drawn left-to-right, bottom-to-top.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]][] Padding || Extra data to pad out the record. Shape/CShape use 26 byte blocks, Shape1/CShape1 use 468 bytes, Door uses 78 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
=== Shape Viewer ===&lt;br /&gt;
This FreeBASIC program will cycle through all of the shapes in the specified file and draw them with the transparent sections noted. Press any key to view the next shape.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
ScreenRes 320, 200, 32&lt;br /&gt;
&lt;br /&gt;
Dim As UByte Map(0 To 47, 0 To 59)&lt;br /&gt;
Dim As UByte BlockData(0 To 9)&lt;br /&gt;
Dim As Integer Pixels(0 To 39)&lt;br /&gt;
Dim As UByte Buffer&lt;br /&gt;
Dim As Integer X, Y, I, MapNo, Pixel, BX, BY, ShapeNo, PixelColor&lt;br /&gt;
Dim As String BinText&lt;br /&gt;
&lt;br /&gt;
Open &amp;quot;Shapes.dat&amp;quot; For Binary As #1&lt;br /&gt;
&lt;br /&gt;
For ShapeNo = 0 To 47&lt;br /&gt;
	Locate 1, 20: Print &amp;quot;Shape #: &amp;quot; + Str(ShapeNo)&lt;br /&gt;
	&lt;br /&gt;
	&#039; Load the map of the shape blocks.&lt;br /&gt;
	&#039; The map is a rectangle 6 units wide and 10 units tall.&lt;br /&gt;
	&#039; It is stored from top to bottom, right to left.&lt;br /&gt;
	&#039; Those map blocks that are 1 will be drawn with pixels in them,&lt;br /&gt;
	&#039; those that are 0 are transparent.&lt;br /&gt;
	For MapNo = 0 To 59&lt;br /&gt;
		Get #1, , Buffer&lt;br /&gt;
		If Eof(1) Then&lt;br /&gt;
			End&lt;br /&gt;
		End If&lt;br /&gt;
		Map(ShapeNo, MapNo) = Buffer&lt;br /&gt;
	Next MapNo&lt;br /&gt;
	&lt;br /&gt;
	&#039; There are 60 blocks of data, corresponding to the 60 blocks in the map.&lt;br /&gt;
	&#039; Those blocks that are transparent still have space reserved in the file, &lt;br /&gt;
	&#039; So the file is a lot larger than it needs to be.&lt;br /&gt;
	BX = 0: BY = 0&lt;br /&gt;
	For MapNo = 0 To 59&lt;br /&gt;
		&#039; Each block&#039;s header is 0x02 0x00, 0x05 0x00, 0x05 0x00.&lt;br /&gt;
		&#039; This is an unknown value, then the width and height.&lt;br /&gt;
		&#039; But the game engine hard-codes these values, so we can skip them.&lt;br /&gt;
		For I = 0 To 5&lt;br /&gt;
			Get #1, , Buffer&lt;br /&gt;
		Next I&lt;br /&gt;
		&lt;br /&gt;
		&#039; The next 10 bytes are a bitstream of CGA graphic data for a 5x5 pixel block.&lt;br /&gt;
		For I = 0 To 9&lt;br /&gt;
			Get #1, , Buffer&lt;br /&gt;
			BlockData(I) = Buffer&lt;br /&gt;
		Next I&lt;br /&gt;
&lt;br /&gt;
		&#039; The next 10 bytes are different for each block, but they&#039;re identical for each shape.&lt;br /&gt;
		&#039; They appear to be padding and aren&#039;t needed to draw the graphic, so we throw them away.&lt;br /&gt;
		For I = 0 To 9&lt;br /&gt;
			Get #1, , Buffer&lt;br /&gt;
		Next I&lt;br /&gt;
&lt;br /&gt;
		If Map(ShapeNo, MapNo) = 0 Then&lt;br /&gt;
			&#039; This section will be transparent. Draw a box to show it.&lt;br /&gt;
			Line(BX, BY)-(BX + 4, BY + 4), RGB(31, 31, 31), B&lt;br /&gt;
		Else&lt;br /&gt;
			&#039; Convert the bitstream into CGA pixels.&lt;br /&gt;
			Pixel = 0&lt;br /&gt;
			For I = 0 To 9&lt;br /&gt;
				BinText = Bin(BlockData(I), 8)&lt;br /&gt;
				For X = 1 To 8 Step 2&lt;br /&gt;
					If Mid(BinText, X, 2) = &amp;quot;00&amp;quot; Then PixelColor = RGB(0, 0, 0)&lt;br /&gt;
					If Mid(BinText, X, 2) = &amp;quot;01&amp;quot; Then PixelColor = RGB(0, 170, 0)&lt;br /&gt;
					If Mid(BinText, X, 2) = &amp;quot;10&amp;quot; Then PixelColor = RGB(170, 0, 0)&lt;br /&gt;
					If Mid(BinText, X, 2) = &amp;quot;11&amp;quot; Then PixelColor = RGB(170, 85, 0)&lt;br /&gt;
				&lt;br /&gt;
					Pixels(Pixel) = PixelColor&lt;br /&gt;
					Pixel = Pixel + 1&lt;br /&gt;
				Next X&lt;br /&gt;
			Next I&lt;br /&gt;
			&lt;br /&gt;
			&#039; Draw the CGA pixels in the 5x5 block.&lt;br /&gt;
			&#039; Pixels are drawn from left to right, bottom to top.&lt;br /&gt;
			&#039; The bitsteam stores redundant data pulled from the next block.&lt;br /&gt;
			X = 0&lt;br /&gt;
			Y = 4&lt;br /&gt;
			For I = 0 To 39&lt;br /&gt;
				&#039; Skip redundant data.&lt;br /&gt;
				If X &amp;lt; 5 Then&lt;br /&gt;
					PSet(BX + X, BY + Y), Pixels(I)&lt;br /&gt;
				End If&lt;br /&gt;
				&lt;br /&gt;
				X = X + 1&lt;br /&gt;
				If X = 8 Then&lt;br /&gt;
					X = 0&lt;br /&gt;
					Y = Y - 1&lt;br /&gt;
				End If&lt;br /&gt;
			Next I&lt;br /&gt;
		End If&lt;br /&gt;
&lt;br /&gt;
		&#039; Increase to the next block.&lt;br /&gt;
		BY = BY + 5&lt;br /&gt;
		If BY = 50 Then&lt;br /&gt;
			BY = 0&lt;br /&gt;
			BX = BX + 5&lt;br /&gt;
		End If&lt;br /&gt;
	Next MapNo&lt;br /&gt;
&lt;br /&gt;
	Sleep&lt;br /&gt;
	Cls&lt;br /&gt;
Next ShapeNo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shape1 Viewer ===&lt;br /&gt;
This FreeBASIC program will draw all of the Shape1 graphics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
ScreenRes 1000, 600, 32&lt;br /&gt;
&lt;br /&gt;
Open &amp;quot;SHAPES1.DAT&amp;quot; For Binary As #1&lt;br /&gt;
&lt;br /&gt;
Dim As UByte BufferByte&lt;br /&gt;
Dim As UShort Unknown, ShapeWidth, ShapeHeight&lt;br /&gt;
Dim As Integer BytesWide, X, Y, I, Pixels, PixelColor, ShapeSize, ShapeNo&lt;br /&gt;
Dim As UByte ShapeData(0 To 999)&lt;br /&gt;
Dim As Integer PixelData(0 To 9999)&lt;br /&gt;
Dim As String BinText&lt;br /&gt;
&lt;br /&gt;
For ShapeNo = 0 To 47&lt;br /&gt;
	Cls&lt;br /&gt;
	&lt;br /&gt;
	Get #1, , Unknown		&#039; Possibly bits-per-pixel?&lt;br /&gt;
	Get #1, , ShapeWidth&lt;br /&gt;
	Get #1, , ShapeHeight&lt;br /&gt;
&lt;br /&gt;
	If Eof(1) Then End&lt;br /&gt;
&lt;br /&gt;
	Locate 1, 20: Print &amp;quot;Shape: &amp;quot; + Str(ShapeNo)&lt;br /&gt;
	Locate 3, 20: Print &amp;quot;Width: &amp;quot; + Str(ShapeWidth)&lt;br /&gt;
	Locate 4, 20: Print &amp;quot;Height: &amp;quot; + Str(ShapeHeight)&lt;br /&gt;
&lt;br /&gt;
	&#039; Determine how many bytes it will take to hold a single row in 2-bit color graphics.&lt;br /&gt;
	&#039; We use this odd way of rounding up because FreeBASIC doesn&#039;t have a Ceiling function.&lt;br /&gt;
	If Frac(ShapeWidth / 4) &amp;gt; 0 Then&lt;br /&gt;
		BytesWide = Int(ShapeWidth / 4) + 1&lt;br /&gt;
	Else&lt;br /&gt;
		BytesWide = Int(ShapeWidth / 4)&lt;br /&gt;
	End If&lt;br /&gt;
	&lt;br /&gt;
	&#039; Determine how many bytes of CGA data we have to read for this image.&lt;br /&gt;
	ShapeSize = BytesWide * ShapeHeight&lt;br /&gt;
&lt;br /&gt;
	Locate 5, 20: Print &amp;quot;Bytes Per Row: &amp;quot; + Str(BytesWide)&lt;br /&gt;
	Locate 6, 20: Print &amp;quot;Total Size: &amp;quot; + Str(ShapeSize)&lt;br /&gt;
&lt;br /&gt;
	&#039; Load the bitstream data.&lt;br /&gt;
	I = 0&lt;br /&gt;
	For I = 0 To ShapeSize - 1&lt;br /&gt;
		Get #1, , BufferByte&lt;br /&gt;
		ShapeData(I) = BufferByte&lt;br /&gt;
	Next I&lt;br /&gt;
&lt;br /&gt;
	&#039; Convert the bitstream into CGA pixels.&lt;br /&gt;
	Pixels = 0&lt;br /&gt;
	For I = 0 To ShapeSize - 1&lt;br /&gt;
		BinText = Bin(ShapeData(I), 8)&lt;br /&gt;
		For X = 1 To 8 Step 2&lt;br /&gt;
			If Mid(BinText, X, 2) = &amp;quot;00&amp;quot; Then PixelColor = RGB(0, 0, 0)&lt;br /&gt;
			If Mid(BinText, X, 2) = &amp;quot;01&amp;quot; Then PixelColor = RGB(0, 170, 0)&lt;br /&gt;
			If Mid(BinText, X, 2) = &amp;quot;10&amp;quot; Then PixelColor = RGB(170, 0, 0)&lt;br /&gt;
			If Mid(BinText, X, 2) = &amp;quot;11&amp;quot; Then PixelColor = RGB(170, 85, 0)&lt;br /&gt;
		&lt;br /&gt;
			PixelData(Pixels) = PixelColor&lt;br /&gt;
			Pixels = Pixels + 1&lt;br /&gt;
		Next X&lt;br /&gt;
	Next I&lt;br /&gt;
&lt;br /&gt;
	&#039; Draw the pixels from left-to-right, bottom-to-top.&lt;br /&gt;
	Y = ShapeHeight - 1&lt;br /&gt;
	X = 0&lt;br /&gt;
	For I = 0 To Pixels - 1&lt;br /&gt;
		PSet (X, Y), PixelData(I)&lt;br /&gt;
		&lt;br /&gt;
		X = X + 1&lt;br /&gt;
		If X = BytesWide * 4 Then&lt;br /&gt;
			X = 0&lt;br /&gt;
			Y = Y - 1&lt;br /&gt;
		End If&lt;br /&gt;
	Next I&lt;br /&gt;
&lt;br /&gt;
	&#039; Records are exactly 468 bytes, regardless of whether the shape uses them all.&lt;br /&gt;
	&#039; So, jump ahead to the next record.&lt;br /&gt;
	Get #1, (ShapeNo + 1) * 468, BufferByte&lt;br /&gt;
&lt;br /&gt;
	Sleep&lt;br /&gt;
Next ShapeNo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lookups ==&lt;br /&gt;
This is a quick lookup of all the shapes in the game files by default.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Shapes !! CShapes !! Doors&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 00 - Player Towards&lt;br /&gt;
 01 - Player Right&lt;br /&gt;
 02 - Player Away&lt;br /&gt;
 03 - Player Left&lt;br /&gt;
 04 - Axe Man&lt;br /&gt;
 05 - Archer&lt;br /&gt;
 06 - Swordsman&lt;br /&gt;
 07 - Wizard&lt;br /&gt;
 08 - Smoke&lt;br /&gt;
 09 - Three Flies&lt;br /&gt;
 10 - Dog&lt;br /&gt;
 11 - Snake&lt;br /&gt;
 12 - Ghost&lt;br /&gt;
 13 - Shark&lt;br /&gt;
 14 - Large Cat&lt;br /&gt;
 15 - Rhino&lt;br /&gt;
 16 - Ooze&lt;br /&gt;
 17 - Slug&lt;br /&gt;
 18 - Skeleton&lt;br /&gt;
 19 - Dragon&lt;br /&gt;
 20 - Tree&lt;br /&gt;
 21 - Weed&lt;br /&gt;
 22 - Tyrannosaurus&lt;br /&gt;
 23 - Lion&lt;br /&gt;
 24 - Pterodactyl&lt;br /&gt;
 25 - Cockroach&lt;br /&gt;
 26 - Two-Headed Mutant&lt;br /&gt;
 27 - Bat&lt;br /&gt;
 28 - Rabbit&lt;br /&gt;
 29 - Elephant&lt;br /&gt;
 30 - Alligator&lt;br /&gt;
 31 - Rubble Monster&lt;br /&gt;
 32 - Jellyfish&lt;br /&gt;
 33 - Scorpion&lt;br /&gt;
 34 - Ant&lt;br /&gt;
 35 - Bear&lt;br /&gt;
 36 - Lizard&lt;br /&gt;
 37 - Octopus&lt;br /&gt;
 38 - Mosquito&lt;br /&gt;
 39 - Golem&lt;br /&gt;
 40 - Demon&lt;br /&gt;
 41 - Spider&lt;br /&gt;
 42 - Gnats&lt;br /&gt;
 43 - Giraffe&lt;br /&gt;
 44 - Jack-o-lantern&lt;br /&gt;
 45 - Tomato&lt;br /&gt;
 46 - Kangaroo&lt;br /&gt;
 47 - Storm&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
 00 - Chest&lt;br /&gt;
 01 - Stairs Up&lt;br /&gt;
 02 - Stairs Down&lt;br /&gt;
 03 - Fire&lt;br /&gt;
 04 - Rubble&lt;br /&gt;
 05 - Stalactites&lt;br /&gt;
 06 - Statue&lt;br /&gt;
 07 - Rope&lt;br /&gt;
 08 - Tombstone&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
 00 - Door Knob&lt;br /&gt;
 01 - Green Keyhole&lt;br /&gt;
 02 - Torch&lt;br /&gt;
 03 - Chalk Mark&lt;br /&gt;
 04 - Spider&lt;br /&gt;
 05 - Gargoyle&lt;br /&gt;
 06 - Leech&lt;br /&gt;
 07 - Jewel&lt;br /&gt;
 08 - Red Keyhole&lt;br /&gt;
 09 - Gold Keyhole&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was reverse engineered by [[User:TheAlmightyGuru|TheAlmightyGuru]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=11180</id>
		<title>User:TheAlmightyGuru</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=11180"/>
		<updated>2023-08-14T02:58:42Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I dig videogames!&lt;br /&gt;
&lt;br /&gt;
* [http://www.vgmpf.com vgmpf.com] - The Videogame Music Preservation Foundation.&lt;br /&gt;
* [http://www.romdetectives.com romdetectives.com] - ROM Detectives (console video game hacking)&lt;br /&gt;
* [http://www.thealmightyguru.com/Wiki thealmightyguru.com/Wiki] - My home page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ve contributed significantly to the following pages:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;General Pages&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[BGI Stroked Font]]&lt;br /&gt;
* [[Borland Graphics Interface]]&lt;br /&gt;
* [[CAT Format (MPS Labs)]]&lt;br /&gt;
* [[ESI Format]]&lt;br /&gt;
* [[FLIC Format]]&lt;br /&gt;
* [[LBX Format]]&lt;br /&gt;
* [[LIB Format (Electronic Arts)]]&lt;br /&gt;
* [[LIB Format (Mythos Software)]]&lt;br /&gt;
* [[Microsoft BASIC MML]]&lt;br /&gt;
* [[Microsoft Bitmap Font Format]]&lt;br /&gt;
* [[Microsoft Vector Font Format]]&lt;br /&gt;
* [[PAK Format (Westwood)]]&lt;br /&gt;
* [[Raw CGA Data]] (Full-screen linear viewer source)&lt;br /&gt;
* [[Raw VGA Image]]&lt;br /&gt;
* [[Turbo Pascal Real]]&lt;br /&gt;
* [[VGA Palette]]&lt;br /&gt;
* [[Visage Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[4x4 Off-Road Racing]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[4x4 Off-Road Racing Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Full Screen Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Sprite Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Castle Adventure]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Castle Adventure Data Format]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Family Feud]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Family Feud Question Format]]&lt;br /&gt;
* [[Family Feud Question Flag Format]]&lt;br /&gt;
* [[Family Feud Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[God of Thunder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[DAT Format (God of Thunder)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Eye of the Beholder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Eye of the Beholder Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Hugo&#039;s House of Horrors]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Hugo Map Formats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Major Stryker]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[HS Format (Major Stryker)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Might and Magic III: Isles of Terra]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[The Oregon Trail]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Oregon Trail dialogue format]]&lt;br /&gt;
* [[Oregon Trail high scores format]]&lt;br /&gt;
* [[Oregon Trail joystick calibration format]]&lt;br /&gt;
* [[Oregon Trail save game format]]&lt;br /&gt;
* [[Oregon Trail tombstones format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[SkyRoads]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[SkyRoads save game format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Solar Winds]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Solar Winds Sprites]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Swords of Glass]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Swords of Glass fortune format]]&lt;br /&gt;
* [[Swords of Glass info format]]&lt;br /&gt;
* [[Swords of Glass map format]]&lt;br /&gt;
* [[Swords of Glass message format]]&lt;br /&gt;
* [[Swords of Glass monster format]]&lt;br /&gt;
* [[Swords of Glass names format]]&lt;br /&gt;
* [[Swords of Glass graphic format]]&lt;br /&gt;
* [[Swords of Glass people format]]&lt;br /&gt;
* [[Swords of Glass puzzle format]]&lt;br /&gt;
* [[Swords of Glass vault format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima I]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
* [[Ultima I Map Format]]&lt;br /&gt;
* [[Ultima I Tile Graphic Format]]&lt;br /&gt;
* [[Ultima I Town Map Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima II: Revenge of the Enchantress]]&amp;lt;span&amp;gt;&lt;br /&gt;
* [[Ultima II Map Format]]&lt;br /&gt;
* [[Ultima II Dungeon Format]]&lt;br /&gt;
* [[Ultima II Talk Format]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11179</id>
		<title>Might and Magic III: Isles of Terra</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11179"/>
		<updated>2023-08-14T02:46:39Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Might and Magic III: Isles of Terra&#039;&#039;&#039; is the third installment in the famous RPG series.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bin&lt;br /&gt;
 | Format = MM3 text data&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Null-separated text strings.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.brd&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Animations for UI?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.cc&lt;br /&gt;
 | Format = MM3 archive format.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted archive format of all the game&#039;s data files. Uses a different encryption than the ones used by MM4/5.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.ccx&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.dat&lt;br /&gt;
 | Format = Monster statistic files.&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Each statistic has its own file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.drv&lt;br /&gt;
 | Format = MM3 audio drivers&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The audio drivers for sound and music. The game&#039;s sound effects are included in each file for that device.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.fac&lt;br /&gt;
 | Format = MM3 faces&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = The graphics for all of the game&#039;s faces.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.icn&lt;br /&gt;
 | Format = &lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = User interface graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.m&lt;br /&gt;
 | Format = [[MM3 music files]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The game&#039;s music files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.maz&lt;br /&gt;
 | Format = [[MM3 map text]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = All the text from a map section.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mm3&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted save game files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mon&lt;br /&gt;
 | Format = [[MM3 monster graphics]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = The graphics for all the monsters.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.out&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pic&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.raw&lt;br /&gt;
 | Format = [[Raw VGA Image]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Uncompressed VGA data. Each file is 320x200 without palette info.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.s&lt;br /&gt;
 | Format = Raw PCM audio&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Encoded using unsigned 8-bit PCM at 8000 Hz.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.spl&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown, but contains character data.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.til&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Ground and wall tiles used by the mini map.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.vga&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Graphic animations.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RPG]]&lt;br /&gt;
[[Category:New World Computing]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Raw_VGA_Image&amp;diff=11178</id>
		<title>Raw VGA Image</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Raw_VGA_Image&amp;diff=11178"/>
		<updated>2023-08-14T02:39:09Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Image Infobox&lt;br /&gt;
 | Hardware1 = VGA&lt;br /&gt;
 | Depth = 8-bit&lt;br /&gt;
 | MinSize = 0&amp;amp;times;0&lt;br /&gt;
 | MaxSize = Unlimited&lt;br /&gt;
 | Palette = Varies&lt;br /&gt;
 | NumPlanes = 1&lt;br /&gt;
 | HasTransparency = No&lt;br /&gt;
 | HasHitmap = No&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|Hi Octane}}&lt;br /&gt;
   {{Game|Might and Magic III: Isles of Terra}}&lt;br /&gt;
   {{Game|Smashing Pumpkins Into Small Piles of Putrid Debris}}&lt;br /&gt;
   {{Game|Zone 66}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This format is an exact match for the memory layout of VGA standard mode 13.&lt;br /&gt;
&lt;br /&gt;
Each byte in the image data is treated as an 8-bit number for that pixel.  The number is an index into the palette, so a number of 1 refers to the second index in the palette (0 being the first.)  The bytes/pixels are arranged on the screen from left-to-right, top-to-bottom.&lt;br /&gt;
&lt;br /&gt;
To render an image correctly, some more information is required which is not part of the raw data:&lt;br /&gt;
&lt;br /&gt;
* Image width&lt;br /&gt;
* Image height (optional; can be deduced from file size and width)&lt;br /&gt;
* Colour palette&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:RawImageExample1.png|A raw image decoded with the incorrect width (50px)&lt;br /&gt;
File:RawImageExample2.png|The same raw image decoded with the correct width (32px)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Full-screen images ==&lt;br /&gt;
&lt;br /&gt;
Full-screen images are 320&amp;amp;times;200 pixels in size, so at 8bpp they are also 64000 bytes long - in this case often with an accompanying 768-byte [[VGA Palette|palette]] (256 colours &amp;amp;times; 24-bits).&lt;br /&gt;
&lt;br /&gt;
In real-mode DOS, the 64000 bytes of image data are loaded into address A000:0000 and the image will appear on the screen, subject to the correct palette being loaded.&lt;br /&gt;
&lt;br /&gt;
=== Palette ===&lt;br /&gt;
&lt;br /&gt;
Very few images use the default [[VGA Palette]], and a number of schemes are possible for storing the palette.&lt;br /&gt;
&lt;br /&gt;
* As a separate file (e.g. &amp;lt;tt&amp;gt;example.img&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;example.pal&amp;lt;/tt&amp;gt;), typically the palette file is 768-bytes in length&lt;br /&gt;
* Before or after the image data (resulting in a file of 64768 bytes in size for a full-screen image)&lt;br /&gt;
* Stored inside the game executable&lt;br /&gt;
* As part of another image&lt;br /&gt;
&lt;br /&gt;
Unfortunately since there is no standard in this regard, the palette must be located manually.&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
The following code will read and display a raw VGA image, where the 768-byte palette follows the image data at offset 64,000.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
&#039; Load needed variables.&lt;br /&gt;
Dim sFile As String&lt;br /&gt;
Dim sX As UShort, sY As UShort&lt;br /&gt;
Dim bPixel As UByte&lt;br /&gt;
&lt;br /&gt;
&#039; Set the file path to the graphic image.&lt;br /&gt;
sFile = &amp;quot;E:\Games\SPISPOPD\map.256&amp;quot;&lt;br /&gt;
Open sFile For Binary As #1&lt;br /&gt;
&lt;br /&gt;
&#039; Set to 320x200 256 color mode.&lt;br /&gt;
Screen 13&lt;br /&gt;
&lt;br /&gt;
&#039; Load and Draw Image.&lt;br /&gt;
For sY = 0 To 199&lt;br /&gt;
    For sX = 0 To 319&lt;br /&gt;
        Get #1, , bPixel&lt;br /&gt;
        PSet(sX, sY), bPixel&lt;br /&gt;
    Next sX&lt;br /&gt;
Next sY&lt;br /&gt;
&lt;br /&gt;
Dim bColor As UShort&lt;br /&gt;
Dim bR As UByte, bG As UByte, bB As UByte&lt;br /&gt;
&lt;br /&gt;
&#039; Load and change palette.&lt;br /&gt;
For bColor = 0 To 255&lt;br /&gt;
    Get #1, , bR&lt;br /&gt;
    Get #1, , bG&lt;br /&gt;
    Get #1, , bB&lt;br /&gt;
    Palette bColor, (bR * 4), (bG * 4), (bB * 4)&lt;br /&gt;
Next bColor&lt;br /&gt;
&lt;br /&gt;
&#039; Close the graphic file.&lt;br /&gt;
Close #1&lt;br /&gt;
&lt;br /&gt;
&#039; Wait for a key press.&lt;br /&gt;
Sleep&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
FreeBASIC example code by [[User:TheAlmightyGuru|TheAlmightyGuru]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11177</id>
		<title>Might and Magic III: Isles of Terra</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11177"/>
		<updated>2023-08-14T02:38:36Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Might and Magic III: Isles of Terra&#039;&#039;&#039; is the third installment in the famous RPG series.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bin&lt;br /&gt;
 | Format = MM3 text data&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Null-separated text strings.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.brd&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Animations for UI?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.cc&lt;br /&gt;
 | Format = MM3 archive format.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted archive format of all the game&#039;s data files. Uses a different encryption than the ones used by MM4/5.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.ccx&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.dat&lt;br /&gt;
 | Format = Monster statistic files.&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Each statistic has its own file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.drv&lt;br /&gt;
 | Format = MM3 audio drivers&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The audio drivers for sound and music. The game&#039;s sound effects are included in each file for that device.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.fac&lt;br /&gt;
 | Format = MM3 faces&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = The graphics for all of the game&#039;s faces.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.icn&lt;br /&gt;
 | Format = &lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Icon files?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.m&lt;br /&gt;
 | Format = [[MM3 music files]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The game&#039;s music files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.maz&lt;br /&gt;
 | Format = [[MM3 map text]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = All the text from a map section.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mm3&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted save game files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mon&lt;br /&gt;
 | Format = [[MM3 monster graphics]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = The graphics for all the monsters.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.out&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pic&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.raw&lt;br /&gt;
 | Format = [[Raw VGA Image]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Uncompressed VGA data. Each file is 320x200 without palette info.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.s&lt;br /&gt;
 | Format = Raw PCM audio&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Encoded using unsigned 8-bit PCM at 8000 Hz.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.spl&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown, but contains character data.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.til&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Ground tiles when viewed in a map.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.vga&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Map graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RPG]]&lt;br /&gt;
[[Category:New World Computing]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11176</id>
		<title>Might and Magic III: Isles of Terra</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Might_and_Magic_III:_Isles_of_Terra&amp;diff=11176"/>
		<updated>2023-08-13T02:11:21Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Created page with &amp;quot;{{NeedMoreInfo}} {{Game Infobox  | Levels = No  | Tiles = No  | Sprites = No  | Fullscreen = No  | Sound = No  | Music = No  | Text = No  | Story = No  | Interface = No }}  &amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Might and Magic III: Isles of Terra&#039;&#039;&#039; is the third installment in the famous RPG series.&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.bin&lt;br /&gt;
 | Format = MM3 text data&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Null-separated text strings.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.brd&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.cc&lt;br /&gt;
 | Format = MM3 archive format.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted archive format of all the game&#039;s data files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.ccx&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.dat&lt;br /&gt;
 | Format = Monster statistic files.&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Each statistic has its own file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.drv&lt;br /&gt;
 | Format = MM3 audio drivers&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The audio drivers for sound and music.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.fac&lt;br /&gt;
 | Format = MM3 faces&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = The graphics for all of the game&#039;s faces.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.icn&lt;br /&gt;
 | Format = &lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Icon files?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.m&lt;br /&gt;
 | Format = [[MM3 music files]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = The game&#039;s music files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.maz&lt;br /&gt;
 | Format = [[MM3 map text]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = All the text from a map section.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mm3&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Encrypted save game files.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.mon&lt;br /&gt;
 | Format = [[MM3 monster graphics]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = The graphics for all the monsters.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.out&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pic&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.raw&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.s&lt;br /&gt;
 | Format = Raw PCM audio&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Encoded using unsigned 8-bit PCM at 8000 Hz.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.spl&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.til&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Unknown.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.vga&lt;br /&gt;
 | Format = Unknown.&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Map graphics?&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RPG]]&lt;br /&gt;
[[Category:New World Computing]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass_monster_format&amp;diff=10701</id>
		<title>Swords of Glass monster format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Swords_of_Glass_monster_format&amp;diff=10701"/>
		<updated>2022-08-31T19:44:34Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* Items */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Playerdata Infobox&lt;br /&gt;
 | Config = Yes&lt;br /&gt;
 | Storing = Monster stats&lt;br /&gt;
 | Games = {{Game|Swords of Glass}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The monsters in [[Swords of Glass]] are stored in the Monsters.dat file. Each record in the monster file is 46 bytes long, and there are 100 monsters in the file.&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data type!!Description&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Monster id || The id of the monster.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0x57.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0xB8.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0x01.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Hit Points || Amount of hits the monster can take before it dies.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Picture || The [[Swords of Glass graphic format|shape graphic]] this monster uses.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Defense || Defensive power of this monster.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown ||&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown ||&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Attack || Attack power of this monster.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown ||&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Range Attack || Attack power of this monster when it shoots (also flag for if it can shoot).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Magic Attack || Attack power of this monster when it casts spells (also flag for if it can cast spells).&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0xC4.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || &lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0x4C.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] Experience || Amount of experience you get from killing this monster.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Poison Flag || Whether this monster&#039;s attack can poison the player (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Blinds Flag || Whether this monster&#039;s attack can blind the player (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Paralyses Flag || Whether this monster&#039;s attack can paralyze the player (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Unknown Flag || Unknown flag (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Engulfs Flag || Whether this monster&#039;s attack can engulf the player&#039;s weapon (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Poisoned Flag || Whether this monster can be poisoned (0 - No, 1 - Yes).&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0x00.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] Name length || The length of the monster&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][19] Name || The name of the monster.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] Unknown || Always 0x50.&lt;br /&gt;
|-&lt;br /&gt;
| 100 Monsters ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
=== Exporter ===&lt;br /&gt;
This FreeBASIC program will export each of the game&#039;s monsters into a comma-separated values (CSV) file that can be opened as a spreadsheet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
Dim As Integer MonsterNo&lt;br /&gt;
Dim As UByte MonsterId, Unknown1, Unknown2, Unknown3, HitPoints, PictureId, DefensePower, Unknown4, Unknown5, AttackPower&lt;br /&gt;
Dim As UByte Unknown6, RangeAttackPower, MagicAttackPower, Unknown7, Unknown8, Unknown9, Poisons, Blinds, Paralyses&lt;br /&gt;
Dim As UByte UnknownFlag, Engulfs, Poisonable, Unknown10, NameLength, Unknown11&lt;br /&gt;
Dim As UShort Experience&lt;br /&gt;
Dim As String MonsterName&lt;br /&gt;
&lt;br /&gt;
Open &amp;quot;Mons.dat&amp;quot; For Binary As #1&lt;br /&gt;
Open &amp;quot;Mons.csv&amp;quot; For Binary As #2&lt;br /&gt;
&lt;br /&gt;
&#039; Output the CSV header.&lt;br /&gt;
Put #2, , &amp;quot;Monster Id,Unknown 1,Unknown 2,Unknown 3,Hit Points,Picture Id,&amp;quot;&lt;br /&gt;
Put #2, , &amp;quot;Defense Power,Unknown 4,Unknown 5,Attack Power,Unknown 6,&amp;quot;&lt;br /&gt;
Put #2, , &amp;quot;Range Attack Power,Magic Attack Power,Unknown 7,Unknown 8,&amp;quot;&lt;br /&gt;
Put #2, , &amp;quot;Unknown 9,Experience,Poisons,Blinds,Paralyses,Unknown Flag,&amp;quot;&lt;br /&gt;
Put #2, , &amp;quot;Engulfs,Can Be Poisoned,Unknown 10,Name,Unknown 11&amp;quot; + Chr(13) + Chr(10)&lt;br /&gt;
&lt;br /&gt;
For MonsterNo = 0 To 99&lt;br /&gt;
	&#039; Load the monster record.&lt;br /&gt;
	MonsterName = Space(19)&lt;br /&gt;
	Get #1, , MonsterId&lt;br /&gt;
	Get #1, , Unknown1&lt;br /&gt;
	Get #1, , Unknown2&lt;br /&gt;
	Get #1, , Unknown3&lt;br /&gt;
	Get #1, , HitPoints&lt;br /&gt;
	Get #1, , PictureId&lt;br /&gt;
	Get #1, , DefensePower&lt;br /&gt;
	Get #1, , Unknown4&lt;br /&gt;
	Get #1, , Unknown5&lt;br /&gt;
	Get #1, , AttackPower&lt;br /&gt;
	Get #1, , Unknown6&lt;br /&gt;
	Get #1, , RangeAttackPower&lt;br /&gt;
	Get #1, , MagicAttackPower&lt;br /&gt;
	Get #1, , Unknown7&lt;br /&gt;
	Get #1, , Unknown8&lt;br /&gt;
	Get #1, , Unknown9&lt;br /&gt;
	Get #1, , Experience&lt;br /&gt;
	Get #1, , Poisons&lt;br /&gt;
	Get #1, , Blinds&lt;br /&gt;
	Get #1, , Paralyses&lt;br /&gt;
	Get #1, , UnknownFlag&lt;br /&gt;
	Get #1, , Engulfs&lt;br /&gt;
	Get #1, , Poisonable&lt;br /&gt;
	Get #1, , Unknown10&lt;br /&gt;
	Get #1, , NameLength&lt;br /&gt;
	Get #1, , MonsterName&lt;br /&gt;
	Get #1, , Unknown11&lt;br /&gt;
&lt;br /&gt;
	&#039; Output a CSV record.&lt;br /&gt;
	Put #2, , Str(MonsterId) + &amp;quot;,&amp;quot; + Str(Unknown1) + &amp;quot;,&amp;quot; + Str(Unknown2) + &amp;quot;,&amp;quot; + Str(Unknown3) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , Str(HitPoints) + &amp;quot;,&amp;quot; + Str(PictureId) + &amp;quot;,&amp;quot; + Str(DefensePower) + &amp;quot;,&amp;quot; + Str(Unknown4) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , Str(Unknown5) + &amp;quot;,&amp;quot; + Str(AttackPower) + &amp;quot;,&amp;quot; + Str(Unknown6) + &amp;quot;,&amp;quot; + Str(RangeAttackPower) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , Str(MagicAttackPower) + &amp;quot;,&amp;quot; + Str(Unknown7) + &amp;quot;,&amp;quot; + Str(Unknown8) + &amp;quot;,&amp;quot; + Str(Unknown9) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , Str(Experience) + &amp;quot;,&amp;quot; + IIf(Poisons = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot; + IIf(Blinds = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , IIf(Paralyses = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot; + IIf(UnknownFlag = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , IIf(Engulfs = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot; + IIf(Poisonable = 1, &amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;) + &amp;quot;,&amp;quot; + Str(Unknown10) + &amp;quot;,&amp;quot;&lt;br /&gt;
	Put #2, , !&amp;quot;\&amp;quot;&amp;quot; + Left(MonsterName, NameLength) + !&amp;quot;\&amp;quot;,&amp;quot; + Str(Unknown11) + Chr(13) + Chr(10)&lt;br /&gt;
Next MonsterNo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was reverse engineered by [[User:TheAlmightyGuru|TheAlmightyGuru]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_BASIC_MML&amp;diff=10700</id>
		<title>Microsoft BASIC MML</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_BASIC_MML&amp;diff=10700"/>
		<updated>2022-08-31T19:27:16Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Music Infobox&lt;br /&gt;
 | Type        = Custom&lt;br /&gt;
 | Instruments = PC speaker&lt;br /&gt;
 | NumChannels = 1&lt;br /&gt;
 | NumTracks   = 1&lt;br /&gt;
 | NumPatterns = 1&lt;br /&gt;
 | NumOrders   = 0&lt;br /&gt;
 | Tags        = None&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Castle Adventure}}&lt;br /&gt;
   {{Game|The Oregon Trail}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft BASIC MML&#039;&#039;&#039; is a Music Macro Language developed by Microsoft for their version of the BASIC computer language. The format supports a fair number of traditional sheet music notation. Many games developed in Microsoft BASIC will use this format for music and sound effects. However, despite being initially developed for BASIC, libraries were written which could play the MML in other languages as well, so there are also DOS games written in languages other than BASIC which use this format.&lt;br /&gt;
&lt;br /&gt;
For example, the following MML will play Yankee Doodle:&lt;br /&gt;
&lt;br /&gt;
 o4 l8 g g a b g b a d g g a b l4 g l8 f# d g g a b&amp;gt; c&amp;lt; b a g f# d e f# l4 g g l8 e. l16 f# l8 e d e f# l4 gl8 d. l16 e l8 d c l4&amp;lt; b&amp;gt; d l8 e. l16 f# l8 e d e f# g e d g f# a l4 g g&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.vgmpf.com/Wiki/index.php?title=Microsoft_BASIC_MML Video Game Music Preservation Foundation] - Detailed descriptions on the entire MML as well as the BASIC commands which use it.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=10678</id>
		<title>User talk:Malvineous</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=10678"/>
		<updated>2022-08-10T02:24:54Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wolfenstein 3D -&amp;gt; Wolfenstein 3-D ==&lt;br /&gt;
I&#039;ve corrected the infamous 3D tyop in the names of several Wolf3D-related pages; can you please delete the following ones?&lt;br /&gt;
&lt;br /&gt;
[[:Category:Wolfenstein 3D]] -&amp;gt; Superseded by [[:Category:Wolfenstein 3-D]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[:Image:Wolfenstein_3D.png]] -&amp;gt; Superseded by [[:Image:Wolfenstein_3-D.png]]&lt;br /&gt;
&lt;br /&gt;
Thanks :) --De Zeurkous (zeurkous@zeurcomp.nichten.info), Thu Nov 22 08:18:42 UTC 2007&lt;br /&gt;
&lt;br /&gt;
:Haha, you&#039;ve certainly been busy.  Don&#039;t forget that this wiki isn&#039;t meant to be an encyclopaedia of the games, its main purpose is documenting the file formats and editing tools that can be used with the games, as opposed to how the games behave without any mods, or what they might be called if you forget to change the title screen :-) -- [[User:Malvineous|Malvineous]] 11:14, 22 November 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Nah, I haven&#039;t forgotten. As we&#039;re reinventing the wheel for a semi-virgin wiki, the naming and something static like the cheats seemed like a good place to start :) --De Zeurkous (zeurkous@nichten.info), Thu Nov 22 12:20:04 UTC 2007&lt;br /&gt;
&lt;br /&gt;
== Jill of the Jungle palette ==&lt;br /&gt;
&lt;br /&gt;
Hi, I&#039;m currently working on a level viewer for [[Jill of the Jungle]] (maybe an editor later on). Some of the information I found here has been very useful, but there&#039;s one thing I&#039;m a bit stuck on. On the [[SHA Format]] page it says:&lt;br /&gt;
:&#039;&#039;Each array item contains 4 unsigned bytes, representing CGA, EGA and VGA, respectivley, and then a null value. [...] Each byte maps to the index of a colour in the palette. If there are no colours required, the tile set uses the default colours.&#039;&#039;&lt;br /&gt;
However, it doesn&#039;t say anywhere where the palette can be found. Is it stored in the EXE file? I hope you can help me on this :)&lt;br /&gt;
&lt;br /&gt;
Regards, [[User:Spinal|Spinal]] 13:00, 2 March 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Unfortunately I didn&#039;t write the JotJ SHA page, and I haven&#039;t yet had the time to figure this out.  For Xargon I&#039;ve taken the quick and dirty route and used a screenshot from within DOSBox as the source of the palette, until I can figure out where the palette is located.  If you find this out, don&#039;t forget to update the page! :-) -- [[User:Malvineous|Malvineous]] 22:02, 2 March 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Hey Spinal, sorry, I wrote the [[SHA Format]] page, so that was probably my bad. I wasn&#039;t able to find the palette either. I assume it&#039;s in the .EXE, however I spent a fair bit of time manually mapping it using a Wombat tool (http://www.szevvy.com/node/3). I was also writing a level viewer (initally in XHTML which turned out to be too slow, so then I moved to Flash 9). I tried to email you my findings, but the email bounced. I&#039;m not sure if they were 100% accurat, which is why I never added them to the documentation.&lt;br /&gt;
&lt;br /&gt;
::Hey Malvineous, it seems the Jill - [[DMA Format]] page has been removed. Do you have a log of what happened to it? I&#039;m sure it existed at some point.&lt;br /&gt;
&lt;br /&gt;
::- [[User:dheim|Daniel]] 20:00, 5 March 2008&lt;br /&gt;
&lt;br /&gt;
:::I don&#039;t ever remember seeing a DMA page - certainly there&#039;s nothing in the wiki logs about it being deleted or renamed.  Maybe you started working on it but never got around to saving it?  Or is it one of the Xargon pages that shares the same format as Jill?  (by the way, you can type &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; to automatically put in the signature in these messages.) -- [[User:Malvineous|Malvineous]] 11:28, 5 March 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::Sorry, it must have been the stuff in the [[SHA Format]] page that I was thinking of. I may have added the link to the [[DMA Format]] page, and never expanded on it. - [[User:Dheim|Daniel]] 02:46, 6 March 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::Hi guys. Sorry for the mistake, I mixed up the authors of the SHA and level formats. I&#039;ve written a level viewer in PHP the last week, by using static images instead of getting them from the actual files. This causes some problems for episode 2, which uses a different palette, but besides that it works great :) When everything is done I&#039;ll upload the maps to my server and the tile/object lists to this wiki.&lt;br /&gt;
:::::@Daniel: strange that it bounced, I confirmed my address so it should be working fine... You can mail it to spinal -at- zanderz -dot- net. Also, I saw on your Wombat page that you &amp;quot;have a vague idea of how to do&amp;quot; [[Hocus Pocus]]. Could you share your findings on this wiki? I&#039;d love to make maps, or even a level viewer/editor for that game :) -- [[User:Spinal|Spinal]] 00:32, 8 March 2008 (GMT)&lt;br /&gt;
:Okay, with help of [[User:Dheim|Daniel]] who send me the palette I found it! I&#039;ll put my findings on [[Jill of the Jungle palette]]. -- [[User:Spinal|Spinal]] 15:36, 13 March 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Halloween Harry/Alien Carnage ==&lt;br /&gt;
&lt;br /&gt;
Hi Malvineous. Thanks for your edits on the GMF article! I notice you mentioned there exist versions of the game which don&#039;t require exploding a BNK to get at the game data. What does the directory structure look like for the version you have? I&#039;m working on a map viewer (which will become a map editor at some point) and would like it to be able to work on whatever versions are out there. Thanks for any info. -[[User:Duckthing|Duckthing]] 04:41, 11 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hi Duckthing - no worries, Halloween Harry has long been an interest of mine, but my map editor sadly needs a lot more work before I can begin reverse engineering more file formats so I&#039;m glad you&#039;ve made a start!  AFAIK technically Halloween Harry has no compression, but for whatever reason (probably listed in the Apogee FAQ) they decided to swap episodes 1 and 3, compress the BNK file and then re-release it under the name Alien Carnage.  You can download all available versions (including registered versions since the game was released as freeware in 2007) from [http://www.classicdosgames.com/game/Alien_Carnage.html RGB Classic Games].  BTW not sure if you noticed but I also posted a couple of things on the GMF article&#039;s talk/discussion page. -- [[User:Malvineous|Malvineous]] 06:08, 11 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: Thank you! Working with the uncompressed version will keep things less complicated. I did notice the GMF discussion you added, but haven&#039;t had a chance to really go through it yet. -- [[User:Duckthing|Duckthing]] 06:41, 11 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: No worries.  If you&#039;re running Linux or MacOSX you should be able to compile [[Camoto|libgamearchive]] which will let you copy files in and out of the BNK files.  This is a library so it&#039;s also possible to use it in your own program for accessing and editing the map files while they&#039;re still inside the BNK, for instance.  (BTW the &#039;minor&#039; tickbox should only be used when the edit does not affect the information on the page - e.g. fixing a typo or a broken URL.  If you are changing the actual content on a page it is never a minor edit!) -- [[User:Malvineous|Malvineous]] 07:51, 11 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dangerous Dave ==&lt;br /&gt;
&lt;br /&gt;
Working on this, does anyone have any info on the formats? The EGA graphics are 84KB and external, but CGA and VGA graphics unrelated to them are in the 174KB executable, apparently uncompressed, I don&#039;t know how this is possible. I&#039;ve found the levels and partially reverse engineered the format (The first 1000 bytes, a 100x10 array of tiles.) but each level is followed by ~280 bytes of variable and unknown data I assume is sprites. I have a list of internal files in the executable, looks like most of it is non-game code. Any help would be appreciated. -[[User:Levellass|Endian? What are you on about?]] 06:03, 12 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hmm, interesting.  All I can suggest for the levels is - as you&#039;re probably already familiar with - changing the values in a hex editor then loading the game to see what happens.  I would suspect that all the graphics would be in a similar format, so if there are any headers or structures used in the EGA graphics files perhaps they&#039;re duplicated for CGA/VGA?  Also John Romero seems pretty accessible, perhaps you could ask him directly?  Failing that, randomly writing data into the .exe until the images change could be used as a last resort! -- [[User:Malvineous|Malvineous]] 12:09, 12 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Ha, that was easier than I expected - uncompressed VGA data is easy to find with a good hex editor ;-)  [http://www.shikadi.net/pics/ddave-vga-hexdump.png This looks like it] -- [[User:Malvineous|Malvineous]] 12:17, 12 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Ok that was only the menu graphics.  At offset 0xC629 there&#039;s some sort of offset table which looks very similar to the contents of EGADAVE.DAV but there are extra bytes dotted all over the place - perhaps it&#039;s RLE encoded?  Actually just before that there&#039;s the number 0x6CAA.  If you go a bit less than 0x6CAA bytes after this you end up with another table, which to me suggests that 0x6CAA is the decompressed size of that first table. -- [[User:Malvineous|Malvineous]] 13:01, 12 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:If I remember it correctly, the VGA sprites and tiles are RLE compressed and it&#039;s not too hard to decompress them. The positions of the enemies in the levels on the other hand are still a mystery to me. [[User:Calvero|Calvero]] 20:43, 12 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Looking at the levels, which directly follow the VGA palette, they seem to contain 256 bytes of header data, then the 100x10 tiles, then eight bytes of lead-out data.  Then the next level&#039;s 256 bytes of header, 100x10 tiles, then eight bytes of lead-out.  Although I say &amp;quot;level&amp;quot;, the first &amp;quot;level&amp;quot; seems to contain both level 1 and 2, and this seems to be the way it works in the game - in some levels you can see through to others.  I&#039;m not sure what the 256 bytes of header data are for, but some levels have FF FF 00 00 repeated which seems to indicate two uint16 fields which are blanked out for those levels. -- [[User:Malvineous|Malvineous]] 13:15, 13 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
::First up, levels; where does level 1 start? It&#039;s possible I&#039;m reading the start of a level as the previous level&#039;s end, I looked for the start of tile data, which I assumed, like Keen 1, would be the level start.&lt;br /&gt;
&lt;br /&gt;
::Next, palette; I&#039;m assuming, as you said, it is located just before the level data?&lt;br /&gt;
&lt;br /&gt;
::There is VGA and CGA graphics in the executable, plus headers, but the bulk of graphics for CGA and VGA I haven&#039;t been able to locate. If the data is RLE compressed I should think it would use either Keen 1-3 fullscreen or Jazz Jackrabbit tile RLE, both of which I know well. I&#039;ll look into both of these options, cheers! -[[User:Levellass|Endian? What are you on about?]] 12:03, 20 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::I&#039;ve found the VGA and CGA data for the menu graphics.  It looks like the CGA data is stored in a series of 1-bit-per-pixel (monochrome) images.  Or it could be EGA data with the planes split out (e.g. red plane for all images, then green plane for all images, etc.)  I think I found three planes which means it&#039;s probably EGA, as CGA would have a max of two planes.  I&#039;ve also found the font graphics, this looks like 4bpp/16 colour EGA data.  Haven&#039;t seen level graphics yet.  I&#039;ve successfully modded the levels with a hex editor (putting the jetpack everywhere) so now I&#039;ve finally looked at all the levels!  The creatures are definitely not stored in the 100x10 tile data.  Putting random bytes in there revealed that the values are indices into the image files, because if you put the value in for fire it will animate, and the following three or so values show up as still frames from the fire animation.&lt;br /&gt;
&lt;br /&gt;
:::The VGA palette starts at 0x26B0A (I updated the main DDave page with this) + 768 bytes leads straight onto the start of level 1 at 0x26E0A.  So at 0x26E0A there are 256 bytes of data, then 100x10 tiles, then 24 bytes of footer data.  Some of this data (perhaps footer data) might be the level start coordinates, because Dave doesn&#039;t always start the level at the same place (e.g. the warp level when you climb the tree on level 5 and jump off the edge of the screen.) -- [[User:Malvineous|Malvineous]] 12:24, 20 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::I think I&#039;ve found all the files so far, I&#039;ve updated [[Dangerous Dave]] with the offsets of the files, including what appears to be CGA and VGA tiles.  I&#039;m not sure what sort of format they&#039;re in though, it looks like they might be compressed (and so the offsets in that list might be off by ~4, as I may have cut off the decompressed-size field.)  I&#039;ve also updated the map format page, I think it&#039;s pretty much fully reverse engineered now. -- [[User:Malvineous|Malvineous]] 05:13, 21 December 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Noahs Ark 3D and IMFs ==&lt;br /&gt;
&lt;br /&gt;
Been poking around Noah&#039;s Ark 3D, an adaption of the Wolfenstein game and found a few interesting things which I&#039;m hoping to confirm.&lt;br /&gt;
&lt;br /&gt;
First, the game uses MID files, not IMF files for music, second, the MIDI files have an extra word at the start of the file giving the file length. Third, the code uses the first word of the midi file as the length of data to read from the file and put into memory to play. After poking around a bit in Wolfenstein and Keen I believe this is the same with IMF files, that is, ALL IMF files are type 0 as it were and the type 1s are read just like type 0s by the games (The first word is read as the amount of IMF data to copy into memory to play, this is then read as type 0.) I&#039;m not quite sure what this does for the two types since type 1 is would essentially be a type 0 with a header and footer that are part of the AUDIO.xxx format, much like PC\adlib sounds can have the huffman lengths at the start. Are there any games that use &#039;individual&#039; type 1 IMFs (Even if included as part of a group file. All I&#039;ve seen are games like cosmo, where non-AUDIO IMFs are type 0.)&lt;br /&gt;
&lt;br /&gt;
Should there be a Noah&#039;s Ark 3D page and should we add the midi note to the AUDIO format page? It seems that the format can hold any type of music file the game can read, not just IMFs.  -- Levellass&lt;br /&gt;
&lt;br /&gt;
: Yes it is known that the type-1 header might really be part of the AUDIO.xxx format but alas there were many type-1 files floating around the place (incorrectly extracted, you could argue) before this was realised, so the format variant is here to stay.  It does have some advantages though (like tagging files with the song title) but I&#039;m not sure whether anyone has figured out definitively whether the header (and footer, in the case of the Wolf3D files) belongs to the IMF or the AUDIO file.  I guess you&#039;d have to browse the game source code and see how the game uses the data to know for sure.&lt;br /&gt;
&lt;br /&gt;
: As far as the MIDI goes, I believe the AUDIO.xxx file is just a container file like any other, capable of supporting any data at all.  It&#039;s up to the game to decide how to use it.  If anything this makes me think it would fit better if the AUDIO.xxx article was merely documenting the structure, with links to actual audio formats like PC SFX, Adlib SFX, IMF and MIDI and notes about which games make use of which formats.&lt;br /&gt;
&lt;br /&gt;
: Oh and yes, by all means create a page for the new game. -- [[User:Malvineous|Malvineous]] 08:41, 3 February 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Sound Files category ==&lt;br /&gt;
&lt;br /&gt;
I don’t know why there’s a Sound Files category and also an Audio Files category... it seems redundant. I left those categories the way they are though.&lt;br /&gt;
&lt;br /&gt;
Also, the [[File format data types]] page needs some signed ints, but I didn’t know what naming convention you wanted to use. I described something as an [[INT16LE]] on [[BMC Format]]. [[User:Yellowantphil|Yellowantphil]] 20:12, 11 September 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Not sure about the Sound vs Audio - I use the term &#039;audio&#039; to mean both sound and music, but you&#039;re right, if there are separate sound and music categories we don&#039;t really need an audio one as well.  Feel free to update.  [[INT16LE]] is perfectly fine too!  I added a note to the data types page. -- [[User:Malvineous|Malvineous]] 22:30, 11 September 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== GamePage template ==&lt;br /&gt;
&lt;br /&gt;
Should the GamePage template add the page to its own category? It seems a little odd that [[Wacky Wheels]] is not in the Wacky Wheels category. [[User:Yellowantphil|Yellowantphil]] 04:51, 16 September 2011 (GMT)&lt;br /&gt;
: I decided against this because there is a link to the game&#039;s page in the category intro at the top of the page.  It seemed unnecessary having another link in amongst all the other pages.  This was also because the game page was really only meant to be a summary, there wasn&#039;t supposed to be a huge amount of detail on it, only links to other pages with the detail (which then would appear in the category list.)  I would imagine that, eventually, [[Wacky Wheels]] would be tweaked to move a lot of the content onto subpages. -- [[User:Malvineous|Malvineous]] 12:58, 16 September 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Scope of the wiki ==&lt;br /&gt;
&lt;br /&gt;
I don’t know how extensive you want the information to be on ModdingWiki... I added a few lists of audio and graphics files a while ago, and there will probably be other information that I’ll find out that’s potentially helpful for level editing but not directly related to it. I can move some information to my website if it starts to become out of scope for your wiki. I also sometimes end up documenting everything imaginable... there’s some minutiae on my website and possibly on your wiki that I ought to go through and delete. [[User:Yellowantphil|Yellowantphil]] 05:28, 10 October 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Hmm, that&#039;s a difficult one - I&#039;m always in favour of documenting more rather than less.  Generally speaking if it&#039;s related to a game and it would help either a programmer writing a utility or a someone trying to change a game manually then it should be documented.  About the only thing that comes to mind that&#039;s over documenting is when some small calculation is expressed in a couple of different programming languages, but I&#039;ve left that in so people can just copy it rather than trying to figure it out from the text.  But the [[Wacky Wheels]] page is probably the gold standard for what all wiki pages should look like :-)  Do you have anything in particular you&#039;re unsure of whether it would fit here? -- [[User:Malvineous|Malvineous]] 10:07, 10 October 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
::I was mainly thinking of the list of VOC files on [[Wacky Wheels Music and Sound Effects]] and the list of &amp;lt;tt&amp;gt;*.sp&amp;lt;/tt&amp;gt; files on [[Wacky Wheels Graphics Formats]]. I have an expanded list of the &amp;lt;tt&amp;gt;*.sp&amp;lt;/tt&amp;gt; files on my computer but it isn’t finished yet. I guess there isn’t all that much more Wacky Wheels information to be added to this wiki though. There is still some modding information on my website that ought to be moved over here, so that would take up another page or two. I’ve been lazy about doing Wacky Wheels stuff lately, but I might find some time for it this weekend.&lt;br /&gt;
&lt;br /&gt;
::By the way, I guess that guy from Cascadia Games emailed you. It’s pretty interesting that WW might become an iPhone app. He told me that he was going to be using his own game engine, which sounds a lot easier than trying to get a hold of the WW source code and porting it. —[[User:Yellowantphil|Yellowantphil]] 16:46, 15 October 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: I was going to say the list of VOCs might be overkill, but then the list of .sp files might be useful.  To be honest, it&#039;s the sort of thing that you could probably omit if you were feeling lazy, but likewise I don&#039;t mind at all if you choose to include it, so since it&#039;s already there I&#039;m happy to keep it.&lt;br /&gt;
&lt;br /&gt;
::: Yes I did get an e-mail from Cascadia, I was going to pass along your details but it sounds like you&#039;re already aware of it!  Using their own engine might make it a bit smoother than the original, as the jerkiness of turning is my only criticism of the game. -- [[User:Malvineous|Malvineous]] 00:14, 16 October 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:I&#039;d like to document not only the format of some game archives but also their contents. This would be quite long lists of basically images, sprites and some minor stuff. I&#039;d also like to upload the actual images alongside but I&#039;m not sure whether that fits the scope of the wiki or if I should just put it somewhere on github. Any advice highly welcome :) -- [[User:Yetmorecode|Yetmorecode]] 15:25, 22 December 2020&lt;br /&gt;
&lt;br /&gt;
::That depends on what you mean with &amp;quot;their contents&amp;quot;. Documenting the used file formats is obviously in the scope of this wiki, since there&#039;s not much point in being able to extract/replace the files in those archives if you can&#039;t actually view those files or make those replacements. But dumping the whole list of all existing files in a game into a wiki article is usually not very useful. An article could highlight some specific files with special functions in the game (stuff like the remap-defining PALETTE.CPS in Red Alert 1 comes to mind; [[Westwood CPS Format|cps]] is a very normal image format in these games, but that specific file controls all recolouring of sprites that change to their owner&#039;s colour), but a list of all sprites and sound files and all their exact usages in the game doesn&#039;t seem like it&#039;d belong here; most of the time such things are pretty self-evident.&lt;br /&gt;
::PS: when you add something to a user talk page, use the signature code to give your note a clearly visible author and date stamp. There&#039;s a big red box on the top of the edit page telling you how to do that.&lt;br /&gt;
:: --[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 15:51, 22 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Alright that makes sense. Sorry about the signature I must have been blind. [[User:Yetmorecode|Yetmorecode]] ([[User talk:Yetmorecode|talk]]) 17:11, 22 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Yes just to confirm this, an image or two is useful to illustrate a file format but we don&#039;t want to become an archive of all game material, not least of which because extracting this is often against the game&#039;s licence (and doesn&#039;t really come under &amp;quot;fair use&amp;quot;) so could open you up to legal trouble if the current copyright owner takes exception to it.  If you come across something hidden or undocumented you can put it on [https://tcrf.net/The_Cutting_Room_Floor The Cutting Room Floor] otherwise [https://pages.github.com/ GitHub Pages] may work as you&#039;ve suggested (if you fly under the copyright radar!) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 07:08, 23 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Wacky Wheels ==&lt;br /&gt;
&lt;br /&gt;
Basically all of the WW modding information from my website is here now. I moved one page when I realized it should probably be capitalized to match the rest of the pages on this site... you can delete the redirect at [[Wacky Wheels high score files]] if you want to.&lt;br /&gt;
&lt;br /&gt;
Now, I need to remove most of the modding information from my website and refer people here. Then we’ll have reached the glorious future where all WW modding information is in one place. I’m going to keep those two text files of notes on my website though—the information in them is disorganized and I think not 100% accurate, but they might have some information that isn’t here yet.&lt;br /&gt;
&lt;br /&gt;
By the way, how’s Camoto going? I’m planning to use it to make a new WW level, but I won’t have time for it for a few more months. —[[User:Yellowantphil|Yellowantphil]]&lt;br /&gt;
&lt;br /&gt;
: Sounds good!  Thanks for all the effort you&#039;ve put in by moving it across.  I think Wacky Wheels is now the most completely documented game on the wiki!  Also can&#039;t hurt leaving your own info up - sometimes it&#039;s nice to go back to the original source if something is unclear.  Camoto&#039;s going well, but unfortunately I haven&#039;t had much time to work on it over the last few weeks.  You probably won&#039;t be able to make much of a level until I add in the ability to select a tile from the tileset, but that&#039;s in progress and hopefully will be ready by the time you are!  Keep me posted when you do start your level(s?) -- [[User:Malvineous|Malvineous]] 12:22, 2 February 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Well, as I was reading some of the information on my website, I noticed that it isn’t written very well. I wrote those pages back when I had very little experience programming. Anyway, I’m planning to redesign my website soon, and this will save me from having to rewrite a few of those pages.&lt;br /&gt;
&lt;br /&gt;
::The tile editor in Camoto as it is now is still certainly useful—I can add new tile types to a level using a binary editor and then move them around in Camoto. I think that it shouldn’t be too hard to make a new WW level using the Gimp and Camoto plus some binary editing. I recall having some problems with the route editor for the computer players, but I didn’t look into it at the time—I’ll let you know when I’m working with Camoto again, and I’ll try to come up with some useful bug reports or fixes if I run into problems. —[[User:Yellowantphil|Yellowantphil]] 14:06, 2 February 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Catacomb ==&lt;br /&gt;
&lt;br /&gt;
Hey [[User:Malvineous|Malvineous]], do you know anyone who has properly read the [[Inverse_Frequency_Sound_format|Inverse Sound Frequency]] file format and got the sound playing? I&#039;m struggling with some fine details in my game. Sounds play near what they should sound like, but the sound quality is all crackly and some sounds play totally incorrect. I followed a basic [http://web.archive.org/web/20000818033701/http://www.dd.chalmers.se/~f98anga/projects/keen/sounds2raw.c code sample] by Anders Gavare. Does your tool support this? Interested in helping me figure this out? My current code is available at [https://code.google.com/p/cataclone/source/browse/trunk/src/catacomb/catacomb_sound.c catacomb_sound.c] - [[User:Eros|Eros]] 11:57, 5 May 2012 (GMT)&lt;br /&gt;
: Should this be moved to my talk page? - [[User:Eros|Eros]] 11:59, 5 May 2012 (GMT)&lt;br /&gt;
:: Probably best to keep it on my talk page if you want me to respond in a timely manner :-)  I based my old utility off Anders&#039; one too, but it&#039;s been a long time since I looked at the code.  My latest utility doesn&#039;t support sound effects yet.  I know Levellass has written a few utilities to play and edit those sound files, so I think your best bet would probably be to post over at the [http://www.keenmodding.org Keen:Modding] forum.  Do note that PC Speaker effects do sound crackly at the best of times, though!  Also make sure you&#039;ve got the right audio format (8-bit vs 16-bit, signed vs unsigned) - I remember some inconsistencies there causing some very distorted results for me.  I love the name &#039;Cataclone&#039; - does your code compile under Linux? -- [[User:Malvineous|Malvineous]] 13:21, 5 May 2012 (GMT)&lt;br /&gt;
::: I currently compile the code using Code::Blocks with GCC 4.6 -std=gnu99. It *should* compile under Linux. But I haven&#039;t tested that out yet. [[Catacomb]] sounds also have flags attached to each one, It&#039;s not exactly the same specification as what it says @ the [[Inverse_Frequency_Sound_format|Inverse Sound Frequency]] format page. Perhaps the flags would make a difference to the sounds? I have the sound setup @ [https://code.google.com/p/cataclone/source/browse/trunk/src/sound_manager.c sound_manager.c] in the sound_manager_init() method. I use AUDIO_S16 (signed 16-bit) @ 22050 Hz with 2 channels. I have not added support for the priority of the sounds yet, I plan on doing that after I get them playing properly.&lt;br /&gt;
::: I found some information on the [[ROTT]] sound format here: [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/_rt_soun.h _rt_soun.h]. This format should be similar to Catacomb as ROTT was developed by [[Apogee]] using the [[Doom]] engine. Here are the flags for the sounds that they define:&lt;br /&gt;
 #define SD_OVERWRITE     0x01&lt;br /&gt;
 #define SD_WRITE         0x02&lt;br /&gt;
 #define SD_LOOP          0x04&lt;br /&gt;
 #define SD_PITCHSHIFTOFF 0x08&lt;br /&gt;
 #define SD_PLAYONCE      0x10&lt;br /&gt;
::: There are also many other sound files for ROTT: [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/rt_sound.c], [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/rt_sound.h], [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/snd_reg.h], [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/snd_shar.h], [http://src.gnu-darwin.org/ports/games/rottdc/work/rottdc-1.0-2/rott/sndcards.h]&lt;br /&gt;
:::: I tried it last night and I was able to get it to compile (after a few changes, like using &#039;/&#039; instead of &#039;\&#039; in a couple of #includes) but all I got was a black window and a beep sound, then nothing.  How far advanced is the project?  Should I expect more than that?  I would expect small variations in the file formats between games, but I would be surprised if the core sound data has changed over time. -- [[User:Malvineous|Malvineous]] 02:38, 6 May 2012 (GMT)&lt;br /&gt;
::::: On Windows, you can run around the levels, collide with walls, collect items, etc... I still need to implement monsters, AI and power shots. However, that beep means that the sounds playing. (see line 71 in main.c: catacomb_sounds_play(&amp;quot;foundsound&amp;quot;);). I just committed the catacomb_data.h file. Update it accordingly, you should now see much more than a black screen.&lt;br /&gt;
:::::: Oh wow, that works really well now!  I see what you mean by the sounds.  You might have to output the PCM data to a .wav/.raw file and look at it in a sound editor to see what&#039;s going on.  It sounds like there might be wrapping or something going on.  Also some sounds (like being blocked by a door) play multiple times over the top of themselves.  I guess this is what you meant by priority not being implemented (although maybe you wouldn&#039;t need to handle priority if you can play multiple sounds at the same time, unlike the real PC Speaker.)  One suggestion - if you do decide to support Linux, abstract the calls that open files so that they search for filenames instead - that way you don&#039;t have to rename all the Catacomb files to be uppercase, since Linux has a case-sensitive filesystem and most filenames are usually all lowercase. -- [[User:Malvineous|Malvineous]] 03:42, 6 May 2012 (GMT)&lt;br /&gt;
::::::: I have exported the raw data to a file, then imported the raw data into Audacity using various settings. All of them sound like they do in the game, crackly and sometimes distorted. I really think its some sort of post FX used by the flags. As for files, I&#039;ll code some sort of SafeFileOpen, SafeFileClose functions like the id codebase that open files regardless of case when i get around to implementing the Linux version. - [[User:Eros|Eros]] 03:54, 6 May 2012 (GMT)&lt;br /&gt;
:::::::: If you can e-mail me one of the files (preferably a &#039;quiet&#039; one that&#039;s not supposed to be crackly) I can take a look if you like - malvineous@shikadi.net -- [[User:Malvineous|Malvineous]] 03:57, 6 May 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Merge ==&lt;br /&gt;
&lt;br /&gt;
Is there a way to tag two pages such that it is clear that they should be merged?&lt;br /&gt;
For example, [[Crystal Caves Tileset Format]] describes the same format as [[Duke 1 Tileset Graphics]].[[User:Frenkel|Frenkel]] ([[User talk:Frenkel|talk]]) 21:00, 15 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: You can mention it on the talk page for one of the articles.  Any suggestions as to what we should call the merged page? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:09, 20 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Dark Ages is the first game that got released that uses this format, so &#039;&#039;Dark Ages Tileset Format&#039;&#039; could be the name, like all those formats that are named after Commander Keen 1-3.&lt;br /&gt;
::Or we name it after Duke Nukem 1, because that game is probably more popular than Dark Ages, Crystal Caves and Secret Agent, like [[Commander Keen 1-3 Level format]], although Slordax used it before Commander Keen 1-3 did.[[User:Frenkel|Frenkel]] ([[User talk:Frenkel|talk]]) 19:13, 20 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: Yes I was thinking along the same lines, naming it after the first game that used the format.  But then the release date doesn&#039;t necessarily indicate which game &amp;quot;invented&amp;quot; the format, if one game took longer to develop and was released late.  I was wondering whether there is a common thread amongst all these games, such as the same programmer or company we could use instead.  In many ways I would prefer a name like &amp;quot;Replogle tileset format&amp;quot; or &amp;quot;Apogee EGA tileset format&amp;quot;.  What do you think? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:36, 20 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::: I&#039;ve read the [http://www.3drealms.com/news/2006/04/the_apogee_legacy_15.html | Apogee Legacy interview with Peder Jungck] again today. He wrote the ProGraphx Toolbox.&lt;br /&gt;
:::: DN1.EXE contains the string &#039;&#039;Version 1.0 EGA/VGAProGraphx EGA/VGA Toolbox&#039;&#039;,&lt;br /&gt;
:::: CC1.EXE contains the string &#039;&#039;Version 1.5 320x200 PAN EGA/VGAProGraphx EGA/VGA Toolbox&#039;&#039;,&lt;br /&gt;
:::: SAM1.EXE contains the string &#039;&#039;ProGraphx EGA/VGA Toolbox Version 2.0 320x200 EGA/VGA Copyright 1991 by Peder Jungck&#039;&#039; and&lt;br /&gt;
:::: DA3.EXE contains the string &#039;&#039;Version 1.0 EGA/VGAProGraphx EGA/VGA Toolbox&#039;&#039; (DA1.EXE and DA2.exe contain gibberish).&lt;br /&gt;
:::: So I would suggest &#039;&#039;ProGraphx Toolbox tileset format&#039;&#039;. Peder also wrote a book about the toolbox called &#039;&#039;Graphics Programming &amp;amp; Animation: Ultra-Fast Assembly Routines for EGA/VGA Graphics Animation&#039;&#039;. Maybe that book has a better name for the file format. [[User:Frenkel|Frenkel]] ([[User talk:Frenkel|talk]]) 11:03, 21 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: So we know of three different versions of the ProGraphx Toolbox. Dark Ages and Duke Nukem 1 use version 1.0. Each tileset is 8064 bytes long and is in a separate file. Crystal Caves uses version 1.5 and each tileset is 8003 bytes long, but they are all in the same file. Secret Agent uses version 2.0 Each tileset is again 8064 bytes long, they are all in the same file and the file is encrypted. [[User:Frenkel|Frenkel]] ([[User talk:Frenkel|talk]]) 17:00, 28 July 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: Thanks for figuring all that out.  I&#039;ve merged the pages and changed the name to [[ProGraphx Toolbox tileset format]] as suggested.  Please feel free to correct anything I have missed. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 02:40, 4 August 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Guidelines for proper Wiki Editing ==&lt;br /&gt;
Dear Malvineous! Could you post the guidelines (or guide) for proper editing of the Wiki? [[User:The coder|The coder]] ([[User talk:The coder|talk]])&lt;br /&gt;
: Hmm, there isn&#039;t really one, it&#039;s more about finding a similar page and matching the style found there!  Copy and paste works well :-)  There is [[ModdingWiki:Contributing]] but it&#039;s not very detailed. (BTW please put &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; at the end of your messages, when you preview the page you will see this gets replaced with your name and the date automatically.) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:59, 12 December 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== VGFM Music Format ==&lt;br /&gt;
&lt;br /&gt;
Hello, Malvineous!&lt;br /&gt;
&lt;br /&gt;
I accidentally found that [[VGFM Music Format]] is absolutely similar to the [http://www.vgmpf.com/Wiki/index.php?title=MUS_(AdLib) MUS (AdLib)] format which I finished researching yesterday.&lt;br /&gt;
&lt;br /&gt;
And [[VGFM Instrument Format]] is similar to [http://www.vgmpf.com/Wiki/index.php?title=SND_(AdLib) SND (AdLib)].&lt;br /&gt;
&lt;br /&gt;
These formats were developed by Ad Lib Inc, I found the sources and documentation in the Ad Lib developer&#039;s manual downloaded from old BBS board site :)  And these formats are used not only in [[Vinyl Goddess From Mars]] game.&lt;br /&gt;
&lt;br /&gt;
--[[User:Binarymaster|Binarymaster]] ([[User talk:Binarymaster|talk]]) 02:05, 22 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Oh wow, what an interesting discovery!!  Do you have any links to the official documentation?  I&#039;d really like to see what else they have to say about the format.  And yes, we should definitely rename the articles here.  What do you think they should be called?  &amp;quot;Ad Lib Music Format&amp;quot; is probably a bit generic given they have a few, like .ROL... -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:45, 22 January 2015 (UTC)&lt;br /&gt;
:: Here it is: [http://files.mpoli.fi/software/programm/general/adlip.zip adlip.zip] - binaries and source code, probably from Ad Lib Programmer&#039;s Manual. MUS headers are described in CONVERT.C and CONVERT.H files. Fun fact that they also developed another similar format based on MIDI - [http://www.vgmpf.com/Wiki/index.php?title=MDI MDI]. It has similar musical features but stores all data in one file in MIDI format.&lt;br /&gt;
:: Well, I have no idea how to name it better, I think &amp;quot;Ad Lib Music Format&amp;quot; should be suitable for it :) --[[User:Binarymaster|binarymaster]] ([[User talk:Binarymaster|talk]]) 10:30, 22 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Many thanks!!  I&#039;ve updated the article pages with the info I could gain from the source code.  There are still a few unresolved issues (like what exactly the default percussion pitch is) but it has certainly answered a number of questions.  I called it &amp;quot;AdLib MIDI Format&amp;quot; because that&#039;s the name they use in one place in the source code, although it&#039;s not a very descriptive title!  Thanks again for letting me know about this excellent find :-) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:48, 24 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: That&#039;s good! I think maybe this format should be named as &amp;quot;AdLib MIDI Format v1.0&amp;quot;, because there is also an improved version of it, probably v2.0 - [http://www.vgmpf.com/Wiki/index.php?title=MDI MDI] (I made a typo in previous posted link), it uses a single file in MIDI format.&lt;br /&gt;
:::: And about [[AdLib Timbre Bank Format]] article - BNK format originally was created in the 1987 with the first release of the [http://www.vgmpf.com/Wiki/index.php?title=AdLib_Visual_Composer AdLib Visual Composer], so actually Ad Lib Inc released its formats in this order:&lt;br /&gt;
:::: &#039;&#039;&#039;1)&#039;&#039;&#039; ROL &amp;amp; BNK (1987, with AdLib Visual Composer)&lt;br /&gt;
:::: &#039;&#039;&#039;2)&#039;&#039;&#039; MUS &amp;amp; SND/TIM (1988, with player and converter)&lt;br /&gt;
:::: &#039;&#039;&#039;3)&#039;&#039;&#039; MDI (1989, also with player and converter)&lt;br /&gt;
:::: Information about third format was placed [http://cd.textfiles.com/soundsensations/MISCPROG/AD-PROG/ here], though the link is not working now.&lt;br /&gt;
:::: --[[User:Binarymaster|binarymaster]] ([[User talk:Binarymaster|talk]]) 13:08, 24 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Oh wow that&#039;s interesting too.  I think the MUS/SND/TIM format should stay as &amp;quot;AdLib MIDI Format&amp;quot; with no version number, because that file format does have version fields so it&#039;s possible to have v1.0, v2.3, etc. within that format.  The MDI article you linked to actually looks like conventional MIDI with some extra events for setting OPL instruments, so I think this belongs as one of the many backwards-compatible extensions of the [[MID Format]].&lt;br /&gt;
&lt;br /&gt;
::::: With the instrument bank formats that&#039;s really unusual if BNK came first!  It seems very odd for AdLib to produce the SND/TIM format if they already had the more efficient BNK format available.  I was going from the dates in the text files from the programmer&#039;s guide you kindly posted, and bkformat.txt says in Jan 1989 they are in the process of converting their software to use BNK.  Can you confirm there was BNK software earlier than this?  I&#039;m just thinking that Visual Composer may have come out in 1987, but maybe it didn&#039;t get BNK support added until later? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:30, 25 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::: Well, I&#039;m sure that first version of Visual Composer was released with AdLib music card, but I don&#039;t know exactly about BNK support. It&#039;s really strange that Ad Lib downgraded the format (BNK is better in structure), but the known formats has converters which converts BNK to X format, but not from X to BNK - this makes sense that BNK was the first format. Also Visual Composer doesn&#039;t support other bank formats, only BNK.&lt;br /&gt;
:::::: BNK creation date 1987 was contributed by [http://www.vgmpf.com/Wiki/index.php?title=User:TheAlmightyGuru Dean Tersigni], I&#039;ll ask him about it.&lt;br /&gt;
&lt;br /&gt;
:::::: Update: I also read information from bkformat.txt, and it seems you&#039;re right :)&lt;br /&gt;
:::::: So actually it was:&lt;br /&gt;
:::::: &#039;&#039;&#039;1)&#039;&#039;&#039; ROL &amp;amp; INS (1987, with AdLib Visual Composer v1.0)&lt;br /&gt;
:::::: &#039;&#039;&#039;2)&#039;&#039;&#039; MUS &amp;amp; SND/TIM (1988, with player and converter)&lt;br /&gt;
:::::: &#039;&#039;&#039;3)&#039;&#039;&#039; BNK (1989, with AdLib Visual Composer v1.5)&lt;br /&gt;
:::::: &#039;&#039;&#039;4)&#039;&#039;&#039; MDI (1989, also with player and converter)&lt;br /&gt;
:::::: Wow, that feel when restored original order of events! :D --[[User:Binarymaster|binarymaster]] ([[User talk:Binarymaster|talk]]) 01:51, 25 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::: That seems to make the most logical sense - there&#039;s a clear improvement with each new format.  I&#039;m glad you agree!  Note that when you say there&#039;s no conversion from &amp;quot;X to BNK&amp;quot; there is BANKMNG.EXE that comes with the programmer&#039;s manual which converts .ins files to .bnk. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 04:09, 25 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::::: True. I forgot about it :) Thanks! --[[User:Binarymaster|binarymaster]] ([[User talk:Binarymaster|talk]]) 12:02, 25 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== email ==&lt;br /&gt;
&lt;br /&gt;
Hello! Can&#039;t send you e-mail. Got this:&lt;br /&gt;
&lt;br /&gt;
 This message was created automatically by mail delivery software.&lt;br /&gt;
 A message that you sent could not be delivered to one or more of its&lt;br /&gt;
 recipients. This is a permanent error. The following address(es) failed:&lt;br /&gt;
 malvineous@shikadi.net&lt;br /&gt;
 host mail.shikadi.net [52.11.27.19]&lt;br /&gt;
 SMTP error from remote mail server after RCPT TO:&amp;lt;malvineous@shikadi.net&amp;gt;:&lt;br /&gt;
 550 invalid recipient&lt;br /&gt;
&lt;br /&gt;
[[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 09:12, 11 March 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Whoops, moved my e-mail service to AWS and missed a step for that address!  Please resend, should work now :-)  Thanks for letting me know! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:34, 11 March 2017 (UTC)&lt;br /&gt;
::Yes, e-mail goes through this time. Hope you receive it. [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 15:41, 11 March 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Duplicate RLE page ==&lt;br /&gt;
&lt;br /&gt;
After some edits to the [[RLE Compression]] page, I noticed that this was not the page linked from the [[:Category:Compression algorithms]] page. It seems there are in fact two of them; one with an uppercase &#039;c&#039;, and [[RLE compression|one with a lowercase &#039;c&#039;]]. The latter seems to be the better-written one, but since the LZW page was apparently moved from &amp;quot;LZW compression&amp;quot; to &amp;quot;LZW Compression&amp;quot;, I suggest the final name of the RLE page should likewise be the uppercase-&#039;c&#039; one.&lt;br /&gt;
&lt;br /&gt;
I have merged anything I deemed useful into the lowercase-&#039;c&#039; version. Could you make sure the uppercase-&#039;c&#039; duplicate is removed, and the other one is moved to its name?&lt;br /&gt;
&lt;br /&gt;
-[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 16:48, 4 October 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Done, many thanks for the clean up! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:38, 5 October 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Account rename? ==&lt;br /&gt;
Hi Malvineous,&lt;br /&gt;
&lt;br /&gt;
I am wondering if it&#039;s much of a hassle to rename accounts on this wiki.  I&#039;d kind of like to have my account use the same handle I&#039;m using just about everywhere else (ETTiNGRiNDER).  Don&#039;t sweat it too much if this is onerous to do, though.&lt;br /&gt;
&lt;br /&gt;
Thanks! - [[User:Mysterioso|Mysterioso]] ([[User talk:Mysterioso|talk]]) 20:42, 29 January 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not sure how it can be done.  If you can find out a quick way to rename a MediaWiki account then let me know!  At any rate all your comments would still be signed with your old name however. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:15, 4 February 2018 (UTC)&lt;br /&gt;
: P.S. the e-mail address in your account is bouncing -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:17, 4 February 2018 (UTC)&lt;br /&gt;
:: Ah, right, it was still set to that old e-mail.  Hushmail nuked that address on me years ago, I&#039;ve changed it to one that&#039;s current.  As for the renaming, I don&#039;t really know anything about wiki administration, though a quick search suggests that there&#039;s this thing: https://www.mediawiki.org/wiki/Extension:Renameuser&lt;br /&gt;
::If that&#039;s a bit much then no biggie. -- [[User:Mysterioso|Mysterioso]] ([[User talk:Mysterioso|talk]]) 14:43, 5 February 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Removal request ==&lt;br /&gt;
&lt;br /&gt;
It seems I made a page that was unnecessary; the [[Westwood Palette]] I documented turned out to be a known common format (6-bit RGB) already covered in the standard [[VGA Palette]] page. I have changed all links to link to the older page, but I don&#039;t think I have the user rights required to delete the Westwood Palette page. Can you take care of it? -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 14:56, 6 February 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Done!  I made you an admin too so you should have delete access now.  Thanks for your contributions! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:03, 7 February 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Hi-Octane ==&lt;br /&gt;
&lt;br /&gt;
Hi! &lt;br /&gt;
&lt;br /&gt;
I&#039;ve figured out the MUSIC.DAT container and I was wondering if you could shed out some light on what these song formats are, now that we know how to unpack it ?&lt;br /&gt;
&lt;br /&gt;
Thanks !!!&lt;br /&gt;
&lt;br /&gt;
: Yep, they&#039;re listed on the [[Hi Octane]] page, in the file format box. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:57, 14 March 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ReCaptcha v1 problem ==&lt;br /&gt;
&lt;br /&gt;
It seems I can no longer add links in articles; the ReCaptcha test added when new links are detected uses ReCaptcha v1, which gives a warning that &amp;quot;reCAPTCHA 1 IS SHUTDOWN&amp;quot;. It does not allow the check to pass, so the page can never be submitted.&lt;br /&gt;
&lt;br /&gt;
The FAQ on the ReCaptcha docs (can&#039;t link to them, obviously) says that &amp;quot;&#039;&#039;&#039;Any calls to the v1 API will not work after March 31, 2018&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 09:26, 28 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bio Menace patches ==&lt;br /&gt;
&lt;br /&gt;
Hey, I&#039;ll have Bio Menace 1 patches for the freeware release. Most of them are status window-related, but there are others as well.&lt;br /&gt;
Question: Could you create several other sections in All Bio Menace patches cathegory? Because I cannot submit them anywhere right now. Thanks! --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 00:57, 25 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: The status window patches should go into [[:Category:Bio Menace interface patches]].  The others *should* fit into existing categories, but if you&#039;re not sure let me know! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 05:23, 29 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;ll need several categories from you as I checked there&#039;ll be other BM patch stuff as well. So I need the following categories: status screen, hostage, help menu, main menu, B800 screen (I even built the BIN file and I made patch for that!). And I&#039;ll even submit these for BM2 and 3. Please, create these. Oh, and I&#039;ll surely submit! --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 01:36, 1 August 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Status screen, hostage, help menu, main menu and B800 screen should all go into [[:Category:Bio Menace interface patches]] as they are all modifying the user interface.  I would like to keep the number of patch categories fairly small otherwise it will get a little out of control! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:48, 17 October 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bio Menace patches on PCKF? ==&lt;br /&gt;
&lt;br /&gt;
Hey, how can I post my Bio Menace 1-3 patches on PCKF or keenmodding.org? I very want them to submit one of the forums!--[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 23:11, 4 August 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Wombat File Reader updates! ==&lt;br /&gt;
&lt;br /&gt;
I think [[Wombat]]&#039;s title should be updated to show its full name, which now is &amp;quot;Wombat File Reader&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also the supported games list has to be updated accordingly to the list on https://szevvy.com/ (the author&#039;s website, which was listed as &amp;quot;dead&amp;quot; in Wombat&#039;s info while the site is up and running again).&lt;br /&gt;
&lt;br /&gt;
It&#039;s also not a dead program at all, since its latest version is very recent (11 October 2018), and it&#039;d be a shame to have such old and deprecated information on this wiki of such a useful and powerful tool.&lt;br /&gt;
&lt;br /&gt;
-[[User:Elia1995|Elìa1995]] ([[User_talk:Elia1995|talk]]) 07:38, 15 October 2018‎ (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s only just been updated recently after many years of no releases.  It&#039;s a bit unfair to say the wiki has old information when it&#039;s only a couple of weeks out of date, and it relies on people such as yourself to keep things up to date!  Please go ahead and correct as needed so we can keep the information current.  We are all doing this in our spare time so we need lots of help to keep things up to date.  Also, the page you link to lists it as &amp;quot;Wombat File Tools&amp;quot; rather than &amp;quot;Wombat File Reader&amp;quot;.  Everyone in the community refers to it as just &amp;quot;Wombat&amp;quot; however.  -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:27, 16 October 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;ve only just gotten my account here approved, and only just made new builds of Wombat (actually a complete rewrite) after (as Malvineous said) many many years of no releases.  It warms my heart to see people notice :) [[User:Szevvy|Szevvy]] ([[User talk:Szevvy|talk]]) 01:44, 17 October 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I just noticed the 1.0.4 update, I&#039;ll work on updating the supported games list on the page according to the one on Szevvy&#039;s site; by the way, thanks for telling me how to &amp;quot;sign&amp;quot; these posts, I had no idea. [[User:Elia1995|Elia1995]] ([[User talk:Elia1995|talk]]) 08:08, 18 October 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== e-mail (again) ==&lt;br /&gt;
&lt;br /&gt;
Hello! Sent you e-mail 2019.02.19 about Prehistorik without any answer. Yesterday another e-mail was sent and since 24+ hours passed was forced to write here. Is there something wrong again with your e-mail account or spam filters (for mail.ru)? Thanks! [[User:CTPAX-X Team|CTPAX-X Team]] ([[User talk:CTPAX-X Team|talk]]) 15:10, 1 March 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Content license ==&lt;br /&gt;
&lt;br /&gt;
Is the content of this wiki governed by a specific license? I&#039;d like to contribute information on &amp;quot;Nomad&amp;quot; file formats that I reverse engineered, which I&#039;d previously published on my personal web site under [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons SA 4.0]. This wiki certainly seems to be in the spirit of the Creative Commons licensing structure so I&#039;m guessing there would be no real conflict, but I just wanted to get some additional information on this. --[[User:Cmb|Cmb]] ([[User talk:Cmb|talk]]) 13:32, 6 May 2020 (UTC)&lt;br /&gt;
:Personally, I&#039;ve just [[RLE Compression#Source_code|added the license under which code was released]] myself. Then again I release everything under [[wp:WTFPL|WTFPL]], because I honestly don&#039;t mind people using anything I write for research purposes in any way they please, so license compatibility is a bit of a non-issue for me. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 16:04, 6 May 2020 (UTC)&lt;br /&gt;
:That said, though, given the current online climate, I do agree this is an issue that should be clarified here on the wiki. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 16:06, 6 May 2020 (UTC)&lt;br /&gt;
:: There is a licence specified somewhere but the short answer is anything you put here is basically in the public domain - because if someone steals it we don&#039;t have the resources to chase them, so if it&#039;s that valuable to you that you can&#039;t handle someone copying it without giving you credit, then don&#039;t post it here.  Having said that for &amp;quot;nice&amp;quot; users many of the pages ask for a mention if you find the content useful, but this is by no means a requirement.  I suppose legally speaking you&#039;ll have to dual-licence your Creative Commons content because some CC versions have additional restrictions, like you can&#039;t copy the content without giving credit.  The [https://creativecommons.org/choose/zero/ CC0 licence] pretty much covers it.  Putting a specific licence on code is fine (although no licence at all would be best so it inherits the wiki&#039;s general content licence), noting that any licence enforcement will be on you, but the content itself is always going to be CC0/public domain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 05:48, 10 June 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Multiple Platforms ==&lt;br /&gt;
&lt;br /&gt;
Should anything special be done for games that are both DOS and Win95, like [[Warcraft II]] and [[Command &amp;amp; Conquer]]? As it is, the template only supports one &#039;Platform&#039;. I don&#039;t know enough about templates to make it accept lists, though a workaround would be to add the Win95 category to such games manually. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) &lt;br /&gt;
20:29, 17 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m open to suggestions, but the purpose of the platform category is less about documenting all platforms a game runs on, and is more about identifying which games on the wiki don&#039;t work under DOS, since DOS is the wiki&#039;s main focus.  So think of it more as the &amp;quot;minimum&amp;quot; platform needed - i.e. a DOS game can also run inside Win3.x and Win95, a Win3.x game can also run under Win9x but not DOS, and a Win9x game can&#039;t run under DOS or Win3.x at all.  So for DOS/Windows games DOS would be the oldest platform needed to play the game, even if there is a native Windows version. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:26, 18 April 2022 (GMT)&lt;br /&gt;
::&#039;Minimum platform&#039; isn&#039;t really true anymore when going to the reality of getting stuff running on modern machines, though; 16-bit windows programs don&#039;t work on modern systems at all, and DOSBox can&#039;t emulate them. They&#039;re a pretty annoying in-between class. C&amp;amp;C95 has issues like that; while the game itself is 32-bit, its installer is a 16-bit Windows program. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 10:33, 18 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: That&#039;s true, but I wasn&#039;t thinking so much about modern systems.  If you&#039;re building a VM or setting up an old PC, knowing which games will work without Windows, or will work if you only install Win 3.1, might be useful.  I did think you could install Windows 3.1 in DOSBox though to run 16-bit apps.  At any rate, I more had in my mind which games required OS support for NE executables in order to play, and which ones required PE support. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:48, 18 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::: Well, one of the specific cases I had in mind in this was the fact that the Win95 version of Command &amp;amp; Conquer uses PCX format for its title screen, while the DOS version doesn&#039;t. And while the basic modding of terrain and game objects is identical in both versions, all modding related to the game UI is different because of the different resolution. So, if more detailed information on that front would be added, it seems logical to also add the Win95 category somehow. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 15:17, 25 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: In that case it sounds almost like a different game that happens to share a lot of the same content, so I&#039;d be more inclined to list it as a separate game, e.g. on a page called &amp;quot;Command &amp;amp; Conquer (Windows version)&amp;quot;, and just put a note saying the file formats are the same as the DOS version with the following exceptions, then list the Windows-specific file formats. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 15:42, 25 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: No, it&#039;s really just PCX, nothing else is new in terms of file formats. The UI is in the same sprites format used for the in-game sprites. So like 95% still the same. But yea, I guess if I do ever get around to writing a more in-depth modding guide, I could make a different page for the Win95 version. Most of the modding difference between the two games is just that the Win95 exe file has been researched a lot deeper, to the point that (with the released source code) pretty much anything in it can be changed nowadays. -[[User:Nyerguds|Nyerguds]] ([[User talk:Nyerguds|talk]]) 16:10, 25 April 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
==Empty Pages==&lt;br /&gt;
Not sure if you already noticed it, but user [[User:Parlortricks]] is creating a bunch of empty pages, I&#039;m assuming to be filled at a later date. --[[User:TheAlmightyGuru|TheAlmightyGuru]] ([[User talk:TheAlmightyGuru|talk]])&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=BGI_Stroked_Font&amp;diff=10234</id>
		<title>BGI Stroked Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=BGI_Stroked_Font&amp;diff=10234"/>
		<updated>2022-01-27T01:13:30Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* Stroke Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 32,767&lt;br /&gt;
 | GlyphMinSize = Unlimited&lt;br /&gt;
 | GlyphMaxSize = Unlimited&lt;br /&gt;
 | Bitmap = N&lt;br /&gt;
 | Vector = Y&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = ID, Description&lt;br /&gt;
 | Games =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;BGI Stroked Font&#039;&#039;&#039; is a vector font created by Borland to work with their 1987 graphics API, [[Borland Graphics Interface]]. Since the format stores vector fonts, it can easily be scaled in size with little loss of fidelity. However, because the format only supports lines and not curves, scaling to larger sizes will make the characters look jagged. The font files typically have a *.CHR file extension.&lt;br /&gt;
&lt;br /&gt;
After 1987, Borland&#039;s C and Pascal programming languages shipped with 10 different BGI Stroked Fonts: Bold, Euro, Goth, Lcom, Litt, Sans, Scri, Simp, Trip, and Tscr. Due to the popularity of Borland&#039;s programming languages, and their graphic API, BGI Stroked Fonts were used in hundreds of DOS video games.&lt;br /&gt;
&lt;br /&gt;
The designers of the file format unfortunately used a file signature starting with &amp;quot;PK&amp;quot; which would later be used by PK Zip, so BGI Stroked Font files, despite having an extension of CHR, might be misidentified as zip archives if the identifier doesn&#039;t take into account the full PK Zip signature.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
=== Header ===&lt;br /&gt;
The header includes the font&#039;s id, version number, and description.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][4] || Signature || Must be 0x50 0x4B 0x08 0x08.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][...] || Description || User text. Borland&#039;s official fonts start with &amp;quot;BGI Stroked Font&amp;quot;, then the version number, and ends with a copyright. The description is terminated with: 0x1A.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Header Size || The size, in bytes, of the entire header.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][4] || Font Id || a 4-character id of the font.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Data Size || The size of the font&#039;s data block. The Header Size + Data Size should be the size of the file.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Major Version Number || The major version number of the font format.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Minor Version Number || The minor version number of the font format.&lt;br /&gt;
|-&lt;br /&gt;
| Nulls || Padding || The rest of the header should be padded out to nulls based on the Header Size. All official Borland fonts use a header size of 0x80.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stroke Header ===&lt;br /&gt;
This section contains general information about the font including how many characters are represented, the top of the highest ascender, bottom of the lowest descender, baseline, where in the file to find each character&#039;s instructions, and the width of each character.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]] || Stroke Check || A value of 0x2B indicates this is a stoked font.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Character Count || Number of total characters stored in this font.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Undefined || Borland&#039;s own documentation labels this as &amp;quot;undefined.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Starting Character || The index of the first character to have a glyph associated with it.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Strokes Offset || The file offset where stroke definitions begin.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Scan Flag || {{TODO|Borland&#039;s documentation calls this the &amp;quot;scan flag,&amp;quot; but doesn&#039;t explain what it is for.}}&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Ascender || The distance from the origin to the font&#039;s highest point.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Baseline || The distance from the origin to the font&#039;s baseline (typically 0).&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Descender || The distance from the origin to the font&#039;s lowest point. Note, you can derive the total character height by getting the distance from the Ascender to Descender.&lt;br /&gt;
|-&lt;br /&gt;
| Nulls || Padding || This section is padded with nulls until you get to the Strokes Offset. All official Borland fonts pad this section to 0x10 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]][Character Count] || Character Stroke Offsets || An array of the offset to the stroke definitions for each character. To get the position in the file, you must add the Header Size and the Strokes Offset to this value.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]][Character Count] || Character Widths || The unscaled width of each character.&lt;br /&gt;
|-&lt;br /&gt;
| Stroke Data || Character strokes || The stroke instructions for each character. See below for how to interpret them.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stroke Data ===&lt;br /&gt;
This section contains the actual instructions for drawing individual characters.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || X Instruction || Instructions for drawing the character and an X value.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Y Instruction || Instructions for drawing the character and a Y value.&lt;br /&gt;
|-&lt;br /&gt;
| ... || Several possible instruction pairs per character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Encoded in each two byte pair is a single stroke instruction, and an X and Y value. The most-significant bit in each byte is an opcode, the next seven bits represent a signed value. The first byte is the X value, the second byte is the Y value. See the diagram below.&lt;br /&gt;
&lt;br /&gt;
 7 6 543210 &lt;br /&gt;
 ^ ^ ^&lt;br /&gt;
 | | +----------- 5-Bit number.&lt;br /&gt;
 | +------------- Sign bit for number.&lt;br /&gt;
 +--------------- Opcode.&lt;br /&gt;
&lt;br /&gt;
The two opcodes determine the instruction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code 1 !! Code 2 !! Instruction&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || End of character stroke definition.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Borland&#039;s documentation has this labeled as &amp;quot;do scan,&amp;quot; implying it&#039;s related to the Scan Flag. It&#039;s only used in their BOLD font on characters with multiple objects like the colon and equals sign. It doesn&#039;t appear to affect how the character is drawn. {{TODO|More info is needed.}}&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Move plotter to the specified X and Y coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Draw a line from the previous X and Y coordinates and move plotter to the new X and Y coordinates.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Character Layout ==&lt;br /&gt;
[[Image:BGI Stroked Font - Layout Diagram.png|thumb|256x256px|Y-axis layout.]]&lt;br /&gt;
The Y values for each character are stored in a unique manner. Characters are drawn relative to the baseline, but, rather than put the baseline at 0, the half above the baseline starts at 64 and decreases toward 0 as you move away from the baseline, while the half below the baseline starts at -64 and increases toward -1. See the diagram to the right.&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
=== Shape Viewer ===&lt;br /&gt;
This FreeBASIC program will draw all of the characters in the specified font, and give details about the font.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
ScreenRes 1000, 800, 32&lt;br /&gt;
&lt;br /&gt;
&#039; Open the font file.&lt;br /&gt;
Open &amp;quot;SANS.CHR&amp;quot; For Binary As #1&lt;br /&gt;
&lt;br /&gt;
&#039; Verify the signature.&lt;br /&gt;
Dim As String Check&lt;br /&gt;
Check = Space(4)&lt;br /&gt;
Get #1, , Check&lt;br /&gt;
If Check &amp;lt;&amp;gt; &amp;quot;PK&amp;quot; + Chr(8) + Chr(8) Then&lt;br /&gt;
	Print &amp;quot;Not a Borland CHR font.&amp;quot;&lt;br /&gt;
	End&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Load the Description&lt;br /&gt;
Dim As UByte Buffer&lt;br /&gt;
Dim As String Description&lt;br /&gt;
Do&lt;br /&gt;
	Get #1, , Buffer&lt;br /&gt;
	If Buffer &amp;lt;&amp;gt; &amp;amp;h1A Then&lt;br /&gt;
		Description = Description + Chr(Buffer)&lt;br /&gt;
	End If&lt;br /&gt;
Loop Until Buffer = &amp;amp;h1A&lt;br /&gt;
&lt;br /&gt;
&#039; Load the header size.&lt;br /&gt;
Dim As UShort HeaderSize&lt;br /&gt;
Get #1, , HeaderSize&lt;br /&gt;
&lt;br /&gt;
&#039; Load the font id.&lt;br /&gt;
Dim As String FontId&lt;br /&gt;
FontId = Space(4)&lt;br /&gt;
Get #1, , FontId&lt;br /&gt;
&lt;br /&gt;
&#039; Load the data file size. (HeaderSize + DataSize should match the size of the file.)&lt;br /&gt;
Dim As UShort DataSize&lt;br /&gt;
Get #1, , DataSize&lt;br /&gt;
&lt;br /&gt;
&#039; Load the font version number.&lt;br /&gt;
Dim As UShort FontMajorVersion&lt;br /&gt;
Get #1, , FontMajorVersion&lt;br /&gt;
Dim As UShort FontMinorVersion&lt;br /&gt;
Get #1, , FontMinorVersion&lt;br /&gt;
&lt;br /&gt;
&#039; Jump to the end of the header. The rest should be nulls anyway.&lt;br /&gt;
Get #1, HeaderSize, Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Verify this is a BGI Stroked Font.&lt;br /&gt;
Dim As String StrokedFontCheck&lt;br /&gt;
StrokedFontCheck = Space(1)&lt;br /&gt;
Get #1, , StrokedFontCheck&lt;br /&gt;
If StrokedFontCheck &amp;lt;&amp;gt; &amp;quot;+&amp;quot; Then&lt;br /&gt;
	Print &amp;quot;Not a stroked font.&amp;quot;&lt;br /&gt;
	End&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Load the number of characters.&lt;br /&gt;
Dim As UShort CharacterCount&lt;br /&gt;
Get #1, , CharacterCount&lt;br /&gt;
&lt;br /&gt;
&#039; Skip an unknown byte.&lt;br /&gt;
Get #1, , Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Load the starting charcter. This is the first character id to have a glyph associated to it.&lt;br /&gt;
Dim As UByte StartingChar&lt;br /&gt;
Get #1, , StartingChar&lt;br /&gt;
&lt;br /&gt;
&#039; Load the file offset where the stroke definitions begin.&lt;br /&gt;
Dim As UShort StrokeDefinitionOffset&lt;br /&gt;
Get #1, , StrokeDefinitionOffset&lt;br /&gt;
&lt;br /&gt;
&#039; Skip an unknown byte.&lt;br /&gt;
Get #1, , Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the top of the capital letters.&lt;br /&gt;
Dim As Byte OriginToCapital&lt;br /&gt;
Get #1, , OriginToCapital&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the baseline.&lt;br /&gt;
Dim As Byte OriginToBaseline&lt;br /&gt;
Get #1, , OriginToBaseline&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the bottom of the descenders.&lt;br /&gt;
Dim As Byte OriginToDescender&lt;br /&gt;
Get #1, , OriginToDescender&lt;br /&gt;
&lt;br /&gt;
&#039; Skip remaining nulls.&lt;br /&gt;
Dim As Integer I&lt;br /&gt;
For I = 0 To 4&lt;br /&gt;
	Get #1, , Buffer&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
&#039; Load offset to characters definitions.&lt;br /&gt;
Dim As UShort CharacterDefinitionOffset(StartingChar To (StartingChar + CharacterCount) - 1)&lt;br /&gt;
For I = StartingChar To (StartingChar + CharacterCount) - 1&lt;br /&gt;
	Get #1, , CharacterDefinitionOffset(I)&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
&#039; Load character widths.&lt;br /&gt;
Dim As UByte CharacterWidths(StartingChar To (StartingChar + CharacterCount) - 1)&lt;br /&gt;
For I = StartingChar To (StartingChar + CharacterCount) - 1&lt;br /&gt;
	Get #1, , CharacterWidths(I)&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
Dim As Integer CharacterHeight = OriginToCapital + (OriginToDescender * -1)&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Font Id: &amp;quot;; FontId&lt;br /&gt;
Print &amp;quot;Description: &amp;quot;; Description&lt;br /&gt;
Print &amp;quot;Total Character Height: &amp;quot;; CharacterHeight&lt;br /&gt;
Print &amp;quot;Max Ascender: &amp;quot;; OriginToCapital&lt;br /&gt;
Print &amp;quot;Max Descender: &amp;quot;; OriginToDescender&lt;br /&gt;
Print &amp;quot;Total Characters: &amp;quot;; CharacterCount&lt;br /&gt;
Print &amp;quot;Starting Character: 0x&amp;quot;; Hex(StartingChar)&lt;br /&gt;
&lt;br /&gt;
Dim As UByte XByte, YByte, Finished&lt;br /&gt;
Dim As Integer XCurrent, YCurrent, XStart, YStart, XBuffer, YBuffer&lt;br /&gt;
Dim As Byte XNew, YNew, XOpcode, YOpcode, XSign, YSign&lt;br /&gt;
&lt;br /&gt;
XStart = 10&lt;br /&gt;
YStart = 130&lt;br /&gt;
XBuffer = 5&lt;br /&gt;
YBuffer = 10&lt;br /&gt;
&lt;br /&gt;
For I = StartingChar To (CharacterCount - StartingChar) - 1&lt;br /&gt;
	&#039; Jump to the starting offset of this character.&lt;br /&gt;
	Get #1, CharacterDefinitionOffset(I) + StrokeDefinitionOffset + HeaderSize, Buffer&lt;br /&gt;
&lt;br /&gt;
	&#039; Load all of the drawing instructions and draw the character.&lt;br /&gt;
	Finished = 0&lt;br /&gt;
	Do&lt;br /&gt;
		&#039; Load the opcode/values. Two bytes, one for X, the other for Y.&lt;br /&gt;
		&#039; 7 6 543210&lt;br /&gt;
		&#039; ^ ^ ^&lt;br /&gt;
		&#039; | | +------ Start of 6-bit number.&lt;br /&gt;
		&#039; | +-------- Sign bit for number.&lt;br /&gt;
		&#039; +---------- Opcode bit.&lt;br /&gt;
		&lt;br /&gt;
		Get #1, , XByte		&#039; First opcode and X value.&lt;br /&gt;
		Get #1, , YByte		&#039; Second opcode and Y value.&lt;br /&gt;
&lt;br /&gt;
		&#039; Read the opcode and sign bits.&lt;br /&gt;
		XOpcode = Bit(XByte, 7)&lt;br /&gt;
		YOpcode = Bit(YByte, 7)&lt;br /&gt;
		XSign = Bit(XByte, 6)&lt;br /&gt;
		YSign = Bit(YByte, 6)&lt;br /&gt;
&lt;br /&gt;
		&#039; Clear the opcode bits and the sign bits.&lt;br /&gt;
		XByte = BitReset(XByte, 7)&lt;br /&gt;
		XByte = BitReset(XByte, 6)&lt;br /&gt;
		YByte = BitReset(YByte, 7)&lt;br /&gt;
		YByte = BitReset(YByte, 6)&lt;br /&gt;
&lt;br /&gt;
		XNew = XByte&lt;br /&gt;
		YNew = YByte&lt;br /&gt;
&lt;br /&gt;
		&#039; Set the values to negative if the signed bits are on.&lt;br /&gt;
		If XSign = True Then&lt;br /&gt;
			XNew = XNew * -1&lt;br /&gt;
		End If&lt;br /&gt;
		If YSign = True Then&lt;br /&gt;
			YNew = (64 - YNew)		&#039; Normalize the descender&#039;s value.&lt;br /&gt;
			YNew = YNew * -1&lt;br /&gt;
		End If&lt;br /&gt;
&lt;br /&gt;
		&#039; Normalize the Y position.&lt;br /&gt;
		YNew = (64 - YNew)&lt;br /&gt;
&lt;br /&gt;
		If XOpcode = 0 Then&lt;br /&gt;
			If YOpcode = 0 Then&lt;br /&gt;
				&#039; End of character definition. Move to the next character.&lt;br /&gt;
				XStart = XStart + CharacterWidths(I) + XBuffer&lt;br /&gt;
				If XStart &amp;gt; 950 Then&lt;br /&gt;
					XStart = 10&lt;br /&gt;
					YStart = YStart + CharacterHeight + YBuffer&lt;br /&gt;
				End If&lt;br /&gt;
				Finished = 1&lt;br /&gt;
			Else&lt;br /&gt;
				&#039; Not sure what this is for. It&#039;s only used in the BOLD font when a character has &lt;br /&gt;
				&#039; multiple separate objects like with the colon and equal sign. However, not all &lt;br /&gt;
				&#039; characters with broken up objects in the font use it, and leaving it out doesn&#039;t &lt;br /&gt;
				&#039; appear to mess up the drawing at all.&lt;br /&gt;
			End If&lt;br /&gt;
		Else&lt;br /&gt;
			If YOpcode = 0 Then&lt;br /&gt;
				&#039; Move Pointer to X, Y.&lt;br /&gt;
				&#039; This happens below since both move and draw must change the position.&lt;br /&gt;
			Else&lt;br /&gt;
				&#039; Draw From Current Pointer to new X, Y.&lt;br /&gt;
				Line(XCurrent, YCurrent)-(XStart + XNew, YStart + YNew), RGB(255, 255, 255)&lt;br /&gt;
			End If&lt;br /&gt;
&lt;br /&gt;
			XCurrent = XStart + XNew&lt;br /&gt;
			YCurrent = YStart + YNew&lt;br /&gt;
		End If&lt;br /&gt;
	Loop Until Finished = 1&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
Sleep&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{BeginFileFormatTools|Type=image}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland/bgifont.zip FE Stroke Font Editor]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| canView = Yes&lt;br /&gt;
| canExport = Yes&lt;br /&gt;
| canImport = Yes&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = Yes&lt;br /&gt;
| notes = Borland&#039;s in-house font Stroked Font editor.&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was reverse engineered by [[User:TheAlmightyGuru|TheAlmightyGuru]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland] - Various tools for BGI fonts.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=BGI_Stroked_Font&amp;diff=10233</id>
		<title>BGI Stroked Font</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=BGI_Stroked_Font&amp;diff=10233"/>
		<updated>2022-01-27T01:10:46Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 32,767&lt;br /&gt;
 | GlyphMinSize = Unlimited&lt;br /&gt;
 | GlyphMaxSize = Unlimited&lt;br /&gt;
 | Bitmap = N&lt;br /&gt;
 | Vector = Y&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = ID, Description&lt;br /&gt;
 | Games =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;BGI Stroked Font&#039;&#039;&#039; is a vector font created by Borland to work with their 1987 graphics API, [[Borland Graphics Interface]]. Since the format stores vector fonts, it can easily be scaled in size with little loss of fidelity. However, because the format only supports lines and not curves, scaling to larger sizes will make the characters look jagged. The font files typically have a *.CHR file extension.&lt;br /&gt;
&lt;br /&gt;
After 1987, Borland&#039;s C and Pascal programming languages shipped with 10 different BGI Stroked Fonts: Bold, Euro, Goth, Lcom, Litt, Sans, Scri, Simp, Trip, and Tscr. Due to the popularity of Borland&#039;s programming languages, and their graphic API, BGI Stroked Fonts were used in hundreds of DOS video games.&lt;br /&gt;
&lt;br /&gt;
The designers of the file format unfortunately used a file signature starting with &amp;quot;PK&amp;quot; which would later be used by PK Zip, so BGI Stroked Font files, despite having an extension of CHR, might be misidentified as zip archives if the identifier doesn&#039;t take into account the full PK Zip signature.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
=== Header ===&lt;br /&gt;
The header includes the font&#039;s id, version number, and description.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][4] || Signature || Must be 0x50 0x4B 0x08 0x08.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][...] || Description || User text. Borland&#039;s official fonts start with &amp;quot;BGI Stroked Font&amp;quot;, then the version number, and ends with a copyright. The description is terminated with: 0x1A.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Header Size || The size, in bytes, of the entire header.&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][4] || Font Id || a 4-character id of the font.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Data Size || The size of the font&#039;s data block. The Header Size + Data Size should be the size of the file.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Major Version Number || The major version number of the font format.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Minor Version Number || The minor version number of the font format.&lt;br /&gt;
|-&lt;br /&gt;
| Nulls || Padding || The rest of the header should be padded out to nulls based on the Header Size. All official Borland fonts use a header size of 0x80.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stroke Header ===&lt;br /&gt;
This section contains general information about the font including how many characters are represented, the top of the highest ascender, bottom of the lowest descender, baseline, where in the file to find each character&#039;s instructions, and the width of each character.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]] || Stroke Check || A value of 0x2B indicates this is a stoked font.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Character Count || Number of total characters stored in this font.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Undefined || Borland&#039;s own documentation labels this as &amp;quot;undefined.&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Starting Character || The index of the first character to have a glyph associated with it.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]] || Strokes Offset || The file offset where stroke definitions begin.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Scan Flag || {{TODO|Borland&#039;s documentation calls this the &amp;quot;scan flag,&amp;quot; but doesn&#039;t explain what it is for.}}&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Ascender || The distance from the origin to the font&#039;s highest point.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Baseline || The distance from the origin to the font&#039;s baseline (typically 0).&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]] || Origin to Descender || The distance from the origin to the font&#039;s lowest point. Note, you can derive the total character height by getting the distance from the Capital to Descender.&lt;br /&gt;
|-&lt;br /&gt;
| Nulls || Padding || This section is padded with nulls until you get to the Strokes Offset. All official Borland fonts pad this section to 0x10 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT16LE]][Character Count] || Character Stroke Offsets || An array of the offset to the stroke definitions for each character. To get the position in the file, you must add the Header Size and the Strokes Offset to this value.&lt;br /&gt;
|-&lt;br /&gt;
| [[INT8]][Character Count] || Character Widths || The unscaled width of each character.&lt;br /&gt;
|-&lt;br /&gt;
| Stroke Data || Character strokes || The stroke instructions for each character. See below for how to interpret them.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stroke Data ===&lt;br /&gt;
This section contains the actual instructions for drawing individual characters.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || X Instruction || Instructions for drawing the character and an X value.&lt;br /&gt;
|-&lt;br /&gt;
| [[BYTE]] || Y Instruction || Instructions for drawing the character and a Y value.&lt;br /&gt;
|-&lt;br /&gt;
| ... || Several possible instruction pairs per character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Encoded in each two byte pair is a single stroke instruction, and an X and Y value. The most-significant bit in each byte is an opcode, the next seven bits represent a signed value. The first byte is the X value, the second byte is the Y value. See the diagram below.&lt;br /&gt;
&lt;br /&gt;
 7 6 543210 &lt;br /&gt;
 ^ ^ ^&lt;br /&gt;
 | | +----------- 5-Bit number.&lt;br /&gt;
 | +------------- Sign bit for number.&lt;br /&gt;
 +--------------- Opcode.&lt;br /&gt;
&lt;br /&gt;
The two opcodes determine the instruction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code 1 !! Code 2 !! Instruction&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || End of character stroke definition.&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Borland&#039;s documentation has this labeled as &amp;quot;do scan,&amp;quot; implying it&#039;s related to the Scan Flag. It&#039;s only used in their BOLD font on characters with multiple objects like the colon and equals sign. It doesn&#039;t appear to affect how the character is drawn. {{TODO|More info is needed.}}&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Move plotter to the specified X and Y coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Draw a line from the previous X and Y coordinates and move plotter to the new X and Y coordinates.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Character Layout ==&lt;br /&gt;
[[Image:BGI Stroked Font - Layout Diagram.png|thumb|256x256px|Y-axis layout.]]&lt;br /&gt;
The Y values for each character are stored in a unique manner. Characters are drawn relative to the baseline, but, rather than put the baseline at 0, the half above the baseline starts at 64 and decreases toward 0 as you move away from the baseline, while the half below the baseline starts at -64 and increases toward -1. See the diagram to the right.&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
=== Shape Viewer ===&lt;br /&gt;
This FreeBASIC program will draw all of the characters in the specified font, and give details about the font.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;freebasic&amp;quot;&amp;gt;&lt;br /&gt;
ScreenRes 1000, 800, 32&lt;br /&gt;
&lt;br /&gt;
&#039; Open the font file.&lt;br /&gt;
Open &amp;quot;SANS.CHR&amp;quot; For Binary As #1&lt;br /&gt;
&lt;br /&gt;
&#039; Verify the signature.&lt;br /&gt;
Dim As String Check&lt;br /&gt;
Check = Space(4)&lt;br /&gt;
Get #1, , Check&lt;br /&gt;
If Check &amp;lt;&amp;gt; &amp;quot;PK&amp;quot; + Chr(8) + Chr(8) Then&lt;br /&gt;
	Print &amp;quot;Not a Borland CHR font.&amp;quot;&lt;br /&gt;
	End&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Load the Description&lt;br /&gt;
Dim As UByte Buffer&lt;br /&gt;
Dim As String Description&lt;br /&gt;
Do&lt;br /&gt;
	Get #1, , Buffer&lt;br /&gt;
	If Buffer &amp;lt;&amp;gt; &amp;amp;h1A Then&lt;br /&gt;
		Description = Description + Chr(Buffer)&lt;br /&gt;
	End If&lt;br /&gt;
Loop Until Buffer = &amp;amp;h1A&lt;br /&gt;
&lt;br /&gt;
&#039; Load the header size.&lt;br /&gt;
Dim As UShort HeaderSize&lt;br /&gt;
Get #1, , HeaderSize&lt;br /&gt;
&lt;br /&gt;
&#039; Load the font id.&lt;br /&gt;
Dim As String FontId&lt;br /&gt;
FontId = Space(4)&lt;br /&gt;
Get #1, , FontId&lt;br /&gt;
&lt;br /&gt;
&#039; Load the data file size. (HeaderSize + DataSize should match the size of the file.)&lt;br /&gt;
Dim As UShort DataSize&lt;br /&gt;
Get #1, , DataSize&lt;br /&gt;
&lt;br /&gt;
&#039; Load the font version number.&lt;br /&gt;
Dim As UShort FontMajorVersion&lt;br /&gt;
Get #1, , FontMajorVersion&lt;br /&gt;
Dim As UShort FontMinorVersion&lt;br /&gt;
Get #1, , FontMinorVersion&lt;br /&gt;
&lt;br /&gt;
&#039; Jump to the end of the header. The rest should be nulls anyway.&lt;br /&gt;
Get #1, HeaderSize, Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Verify this is a BGI Stroked Font.&lt;br /&gt;
Dim As String StrokedFontCheck&lt;br /&gt;
StrokedFontCheck = Space(1)&lt;br /&gt;
Get #1, , StrokedFontCheck&lt;br /&gt;
If StrokedFontCheck &amp;lt;&amp;gt; &amp;quot;+&amp;quot; Then&lt;br /&gt;
	Print &amp;quot;Not a stroked font.&amp;quot;&lt;br /&gt;
	End&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Load the number of characters.&lt;br /&gt;
Dim As UShort CharacterCount&lt;br /&gt;
Get #1, , CharacterCount&lt;br /&gt;
&lt;br /&gt;
&#039; Skip an unknown byte.&lt;br /&gt;
Get #1, , Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Load the starting charcter. This is the first character id to have a glyph associated to it.&lt;br /&gt;
Dim As UByte StartingChar&lt;br /&gt;
Get #1, , StartingChar&lt;br /&gt;
&lt;br /&gt;
&#039; Load the file offset where the stroke definitions begin.&lt;br /&gt;
Dim As UShort StrokeDefinitionOffset&lt;br /&gt;
Get #1, , StrokeDefinitionOffset&lt;br /&gt;
&lt;br /&gt;
&#039; Skip an unknown byte.&lt;br /&gt;
Get #1, , Buffer&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the top of the capital letters.&lt;br /&gt;
Dim As Byte OriginToCapital&lt;br /&gt;
Get #1, , OriginToCapital&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the baseline.&lt;br /&gt;
Dim As Byte OriginToBaseline&lt;br /&gt;
Get #1, , OriginToBaseline&lt;br /&gt;
&lt;br /&gt;
&#039; Load the distance from the origin to the bottom of the descenders.&lt;br /&gt;
Dim As Byte OriginToDescender&lt;br /&gt;
Get #1, , OriginToDescender&lt;br /&gt;
&lt;br /&gt;
&#039; Skip remaining nulls.&lt;br /&gt;
Dim As Integer I&lt;br /&gt;
For I = 0 To 4&lt;br /&gt;
	Get #1, , Buffer&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
&#039; Load offset to characters definitions.&lt;br /&gt;
Dim As UShort CharacterDefinitionOffset(StartingChar To (StartingChar + CharacterCount) - 1)&lt;br /&gt;
For I = StartingChar To (StartingChar + CharacterCount) - 1&lt;br /&gt;
	Get #1, , CharacterDefinitionOffset(I)&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
&#039; Load character widths.&lt;br /&gt;
Dim As UByte CharacterWidths(StartingChar To (StartingChar + CharacterCount) - 1)&lt;br /&gt;
For I = StartingChar To (StartingChar + CharacterCount) - 1&lt;br /&gt;
	Get #1, , CharacterWidths(I)&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
Dim As Integer CharacterHeight = OriginToCapital + (OriginToDescender * -1)&lt;br /&gt;
&lt;br /&gt;
Print &amp;quot;Font Id: &amp;quot;; FontId&lt;br /&gt;
Print &amp;quot;Description: &amp;quot;; Description&lt;br /&gt;
Print &amp;quot;Total Character Height: &amp;quot;; CharacterHeight&lt;br /&gt;
Print &amp;quot;Max Ascender: &amp;quot;; OriginToCapital&lt;br /&gt;
Print &amp;quot;Max Descender: &amp;quot;; OriginToDescender&lt;br /&gt;
Print &amp;quot;Total Characters: &amp;quot;; CharacterCount&lt;br /&gt;
Print &amp;quot;Starting Character: 0x&amp;quot;; Hex(StartingChar)&lt;br /&gt;
&lt;br /&gt;
Dim As UByte XByte, YByte, Finished&lt;br /&gt;
Dim As Integer XCurrent, YCurrent, XStart, YStart, XBuffer, YBuffer&lt;br /&gt;
Dim As Byte XNew, YNew, XOpcode, YOpcode, XSign, YSign&lt;br /&gt;
&lt;br /&gt;
XStart = 10&lt;br /&gt;
YStart = 130&lt;br /&gt;
XBuffer = 5&lt;br /&gt;
YBuffer = 10&lt;br /&gt;
&lt;br /&gt;
For I = StartingChar To (CharacterCount - StartingChar) - 1&lt;br /&gt;
	&#039; Jump to the starting offset of this character.&lt;br /&gt;
	Get #1, CharacterDefinitionOffset(I) + StrokeDefinitionOffset + HeaderSize, Buffer&lt;br /&gt;
&lt;br /&gt;
	&#039; Load all of the drawing instructions and draw the character.&lt;br /&gt;
	Finished = 0&lt;br /&gt;
	Do&lt;br /&gt;
		&#039; Load the opcode/values. Two bytes, one for X, the other for Y.&lt;br /&gt;
		&#039; 7 6 543210&lt;br /&gt;
		&#039; ^ ^ ^&lt;br /&gt;
		&#039; | | +------ Start of 6-bit number.&lt;br /&gt;
		&#039; | +-------- Sign bit for number.&lt;br /&gt;
		&#039; +---------- Opcode bit.&lt;br /&gt;
		&lt;br /&gt;
		Get #1, , XByte		&#039; First opcode and X value.&lt;br /&gt;
		Get #1, , YByte		&#039; Second opcode and Y value.&lt;br /&gt;
&lt;br /&gt;
		&#039; Read the opcode and sign bits.&lt;br /&gt;
		XOpcode = Bit(XByte, 7)&lt;br /&gt;
		YOpcode = Bit(YByte, 7)&lt;br /&gt;
		XSign = Bit(XByte, 6)&lt;br /&gt;
		YSign = Bit(YByte, 6)&lt;br /&gt;
&lt;br /&gt;
		&#039; Clear the opcode bits and the sign bits.&lt;br /&gt;
		XByte = BitReset(XByte, 7)&lt;br /&gt;
		XByte = BitReset(XByte, 6)&lt;br /&gt;
		YByte = BitReset(YByte, 7)&lt;br /&gt;
		YByte = BitReset(YByte, 6)&lt;br /&gt;
&lt;br /&gt;
		XNew = XByte&lt;br /&gt;
		YNew = YByte&lt;br /&gt;
&lt;br /&gt;
		&#039; Set the values to negative if the signed bits are on.&lt;br /&gt;
		If XSign = True Then&lt;br /&gt;
			XNew = XNew * -1&lt;br /&gt;
		End If&lt;br /&gt;
		If YSign = True Then&lt;br /&gt;
			YNew = (64 - YNew)		&#039; Normalize the descender&#039;s value.&lt;br /&gt;
			YNew = YNew * -1&lt;br /&gt;
		End If&lt;br /&gt;
&lt;br /&gt;
		&#039; Normalize the Y position.&lt;br /&gt;
		YNew = (64 - YNew)&lt;br /&gt;
&lt;br /&gt;
		If XOpcode = 0 Then&lt;br /&gt;
			If YOpcode = 0 Then&lt;br /&gt;
				&#039; End of character definition. Move to the next character.&lt;br /&gt;
				XStart = XStart + CharacterWidths(I) + XBuffer&lt;br /&gt;
				If XStart &amp;gt; 950 Then&lt;br /&gt;
					XStart = 10&lt;br /&gt;
					YStart = YStart + CharacterHeight + YBuffer&lt;br /&gt;
				End If&lt;br /&gt;
				Finished = 1&lt;br /&gt;
			Else&lt;br /&gt;
				&#039; Not sure what this is for. It&#039;s only used in the BOLD font when a character has &lt;br /&gt;
				&#039; multiple separate objects like with the colon and equal sign. However, not all &lt;br /&gt;
				&#039; characters with broken up objects in the font use it, and leaving it out doesn&#039;t &lt;br /&gt;
				&#039; appear to mess up the drawing at all.&lt;br /&gt;
			End If&lt;br /&gt;
		Else&lt;br /&gt;
			If YOpcode = 0 Then&lt;br /&gt;
				&#039; Move Pointer to X, Y.&lt;br /&gt;
				&#039; This happens below since both move and draw must change the position.&lt;br /&gt;
			Else&lt;br /&gt;
				&#039; Draw From Current Pointer to new X, Y.&lt;br /&gt;
				Line(XCurrent, YCurrent)-(XStart + XNew, YStart + YNew), RGB(255, 255, 255)&lt;br /&gt;
			End If&lt;br /&gt;
&lt;br /&gt;
			XCurrent = XStart + XNew&lt;br /&gt;
			YCurrent = YStart + YNew&lt;br /&gt;
		End If&lt;br /&gt;
	Loop Until Finished = 1&lt;br /&gt;
Next I&lt;br /&gt;
&lt;br /&gt;
Sleep&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{BeginFileFormatTools|Type=image}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland/bgifont.zip FE Stroke Font Editor]&lt;br /&gt;
| Platform = DOS&lt;br /&gt;
| canView = Yes&lt;br /&gt;
| canExport = Yes&lt;br /&gt;
| canImport = Yes&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = Yes&lt;br /&gt;
| notes = Borland&#039;s in-house font Stroked Font editor.&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This format was reverse engineered by [[User:TheAlmightyGuru|TheAlmightyGuru]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due. (A link back to this wiki would be nice too!)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/borland] - Various tools for BGI fonts.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Main_Page&amp;diff=10231</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Main_Page&amp;diff=10231"/>
		<updated>2022-01-21T16:00:17Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* Current projects */ Changed my current project.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &amp;lt;!-- Hide the &#039;table of contents&#039; box --&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Welcome to the DOS Game Modding Wiki!&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of this wiki is to assist people wishing to modify DOS games (typically those released for the PC in the early 1990s) to create entirely new games.  The wiki attempts to document all the file formats used by each game to assist programmers writing editing tools, as well as listing any existing tools that can already be used to modify the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-games.png|link=:Category:Game Intro Page]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Game Intro Page|Games]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-mods.png|link=:Category:Mods by game]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Mods by game|Mods]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-settings.png|link=:Category:File Formats]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:File Formats|File formats]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:icon-info.png|link=:Category:Tutorials]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[:Category:Tutorials|Tutorials]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About ===&lt;br /&gt;
&lt;br /&gt;
The wiki is structured so that each game has its own summary page, which in turn branches out to other pages explaining things in more detail such as file formats and instructions for using modding tools.&lt;br /&gt;
&lt;br /&gt;
If you find anything missing, incomplete or inaccurate among these pages, please fix it!  To help prevent spam, you&#039;ll need to [[Special:Userlogin|log in]] before you can edit pages - if you don&#039;t have an account, it&#039;s easy to [[Special:Userlogin|create one]].  Have a quick look at the [[ModdingWiki:Contributing|editing guidelines]] before your first edit so you know what we&#039;re expecting.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget that this site will only become a useful reference if all the modders out there lend a hand and contribute what they know!  If you&#039;ve got some info about modding a DOS game that&#039;s not yet listed, please create a new page for it!&lt;br /&gt;
&lt;br /&gt;
=== Help ===&lt;br /&gt;
&lt;br /&gt;
If you are looking for help with a mod you are working on, or if you need assistance reverse-engineering a game, please drop by the [http://www.classicdosgames.com/forum/viewforum.php?f=25 Modding section of the RGB Classic Games forum] and we&#039;ll try to help.&lt;br /&gt;
&lt;br /&gt;
=== Current projects ===&lt;br /&gt;
&lt;br /&gt;
* [[User:T-Squared|T-Squared]] is creating a mod for [[Cosmo&#039;s Cosmic Adventures]] called &amp;quot;HUMANIZED!!!&amp;quot;.  Take a look at [[User:T-Squared|T-Squared&#039;s user page]] for more info.&lt;br /&gt;
* [[User:Eros|Eros]] is remaking the original [[Catacomb]] for Windows and Linux in OpenGL.  Visit the [http://code.google.com/p/cataclone/ Google Code project page].&lt;br /&gt;
* [[User:Malvineous|Malvineous]] is working on a cross-platform modding tool called [[Camoto]], which can edit a number of different games.&lt;br /&gt;
* [[User:Nyerguds|Nyerguds]] is constantly expanding his [[Engie File Converter]] and [[Westwood Font Editor]], adding graphics formats from increasingly more non-[[:category:Westwood Studios|Westwood]] games to them, and upgrading his [[Librarian]] tool to put the edited results back into the game archives they came from.&lt;br /&gt;
* [[User:TheAlmightyGuru|TheAlmightyGuru]] wrote a graphic tile editor for [[Ultima I]].&lt;br /&gt;
* Scott Smitelli has reverse-engineered the original .EXE binaries of [[Cosmo&#039;s Cosmic Adventures]] to produce a [https://github.com/smitelli/cosmore 96%-accurate reconstruction]&lt;br /&gt;
* [[User:Lethal_guitar|lethal guitar]] is working on an open-source reimplementation of [[Duke Nukem II]], called [https://github.com/lethal-guitar/RigelEngine RigelEngine].&lt;br /&gt;
* [[User:Minuous|Minuous]] is working on the [[MCE|Multi-game Character Editor]].&lt;br /&gt;
* [[User:twinzen|twinzen]] has released a new level/graphics editor for [[Titus the Fox]], called [https://github.com/kaimitai/vtitus Visual Titus].&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Karl_Morton_Music_Format&amp;diff=10230</id>
		<title>Karl Morton Music Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Karl_Morton_Music_Format&amp;diff=10230"/>
		<updated>2022-01-21T15:58:47Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Music Infobox&lt;br /&gt;
 | Type = Tracked&lt;br /&gt;
 | Instruments = PCM&lt;br /&gt;
 | NumChannels = 32 (only 4 usable in-game)&lt;br /&gt;
 | NumTracks = no limit&lt;br /&gt;
 | NumPatterns = n/a&lt;br /&gt;
 | NumOrders = n/a&lt;br /&gt;
 | Tags = Title, instrument names&lt;br /&gt;
 | Games = &lt;br /&gt;
   {{Game|Psycho Pinball}}&lt;br /&gt;
   {{Game|Micro Machines 2}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The [[Karl Morton Music Format]] is the music format used by Karl Morton&#039;s sound engine used in the games [[Psycho Pinball]], [[Micro Machines 2]] and [[Back to Baghdad]], although the latter only uses its sound effect file format, not the music format. This is not the official name of the format, but as no official tooling or documentation seems to be available for this format, a simple name was chosen based on the sound engine author&#039;s name.&lt;br /&gt;
&lt;br /&gt;
In general, this format follows the semantics of the ProTracker MOD format. Knowledge of the MOD format and its features is assumed.&lt;br /&gt;
&lt;br /&gt;
A somewhat unique feature of this format is that subsongs can re-use samples with different metadata. For example, one song in a file might use a specific sample with a default volume of 64, while another song might reference the same sample data but with a default volume of 48. This allows for greater flexibility when reusing those samples between songs.&lt;br /&gt;
&lt;br /&gt;
== File format ==&lt;br /&gt;
&lt;br /&gt;
The format follows an IFF-like structure, but with no explicit file header (the file directly starts with the first chunk).&lt;br /&gt;
&lt;br /&gt;
=== Chunk Header ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][4] || ID || chunk ID (&amp;quot;SONG&amp;quot; or &amp;quot;SMPL&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || length || chunk length, including this header (so must be at least 8)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The first chunk in the file must be a SONG chunk, apart from this the chunk order doesn&#039;t matter.&lt;br /&gt;
&lt;br /&gt;
Typically, SONG and SMPL chunks are interleaved, each SONG being followed by the SMPLs it adds to the sample pool shared between SONGs.&lt;br /&gt;
But this order should not be relied on.&lt;br /&gt;
&lt;br /&gt;
=== SONG chunk ===&lt;br /&gt;
&lt;br /&gt;
Each subsong is represented by its own SONG chunk.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || song name || null-terminated song name&lt;br /&gt;
|-&lt;br /&gt;
| SAMPLE_REFERENCE[31] || sample map || maps song samples to those samples in the global sample pool&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][2] || unknown || always 0 (maybe just padding)&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] ||  number of channels || between 1 and 4 - file will be rejected if this is &amp;gt; 32. If it&#039;s more than 4 but less than 33 the extra channels will simply not be played.&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || restart position || byte offset into music data&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || size of music data || should be chunk size - 1108&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][] || music data || format is explained below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;SAMPLE_REFERENCE&amp;lt;/tt&amp;gt; maps samples from the SMPL chunk pool to instrument numbers in the pattern editor (the first &amp;lt;tt&amp;gt;SAMPLE_REFERENCE&amp;lt;/tt&amp;gt; is instrument 1, and so on). It is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || sample name || must reference one of the SMPL chunks&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] || MOD finetune || 0...15&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT8]] || default volume || 0...64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Music data is basically one gigantic pattern and stored in row-major order (like most module formats).&lt;br /&gt;
The pattern is played in a strictly linear order, there are no jump commands or pattern loops.&lt;br /&gt;
There is per-channel state that stores the last used note, instrument, command and parameter as well as a repeat counter.&lt;br /&gt;
&lt;br /&gt;
To decode one pattern cell:&lt;br /&gt;
&lt;br /&gt;
* If repeat counter &amp;gt; 0: Decrement repeat counter by 1 and reuse note, instrument, command and parameter from previous row. Continue with next channel.&lt;br /&gt;
* Read [[UINT8]], let&#039;s name it NOTE.&lt;br /&gt;
* If (NOTE AND 0x80): Reuse note, instrument, command and parameter from previous row and set repeat counter to (NOTE AND 0x7F). Continue with next channel.&lt;br /&gt;
* If NOTE is between 1 and 36 (inclusively), it&#039;s a regular note (C-1 to B-3 in ProTracker), otherwise no note is present&lt;br /&gt;
* Read [[UINT8]], let&#039;s name it INSTRUMENT.&lt;br /&gt;
* Set instrument number in this cell to INSTRUMENT AND 0x1F&lt;br /&gt;
* If (INSTRUMENT AND 0x80): Repeat previous command and parameter for this channel&lt;br /&gt;
* Otherwise, read the two [[UINT8]]s, the command and parameter bytes.&lt;br /&gt;
* Continue with next channel.&lt;br /&gt;
&lt;br /&gt;
Command bytes and their translation to ProTracker MOD commands:&lt;br /&gt;
* &amp;lt;tt&amp;gt;00&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;Cxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;01&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;EAx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;02&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;EBx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;03&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;E1x&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;04&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;E2x&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;05&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;E5x&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;06&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;9xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;07&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;3xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;08&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;5xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;09&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;4xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0A&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;6xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0B&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;0xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0C&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;1xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0D&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;2xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0E&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;Axx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;0F&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;E9x&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;10&amp;lt;/tt&amp;gt;: Instant portamento (like 3FF but is always fully executed on first tick)&lt;br /&gt;
* &amp;lt;tt&amp;gt;11&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;ECx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;12&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;Fxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;13&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;7xx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;14&amp;lt;/tt&amp;gt;: &amp;lt;tt&amp;gt;000&amp;lt;/tt&amp;gt; (empty command)&lt;br /&gt;
&lt;br /&gt;
Missing MOD effects are: 8, B, D, E3, E4, E5, E6, E7, E8, ED, EE, EF.&lt;br /&gt;
&lt;br /&gt;
Most commands that translate to extended Exy commands can take values &amp;gt; 0x0F as parameters (finetune command ignores high nibble).&lt;br /&gt;
&lt;br /&gt;
The player will jump to the restart position once the repeat counter of each channel has reached 0 and no bytes are left to be read.&lt;br /&gt;
&lt;br /&gt;
If no tempo is specified on the first row of the pattern, the MOD defaults of tempo 125 and 6 ticks per row are assumed.&lt;br /&gt;
&lt;br /&gt;
=== SMPL chunk ===&lt;br /&gt;
&lt;br /&gt;
Every sample is described by its own SMPL chunk.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][32] || sample name || null-terminated, referenced by SONG chunks&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || loop start || in bytes&lt;br /&gt;
|-&lt;br /&gt;
| [[UINT32LE]] || size of sample data || should be chunk size - 48&lt;br /&gt;
|-&lt;br /&gt;
| [[char]][] || sample data || in 8-bit signed mono PCM format&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that a SMPL can be shared between songs and use different finetune and volume values between songs.&lt;br /&gt;
&lt;br /&gt;
== A note on the string format ==&lt;br /&gt;
&lt;br /&gt;
The last character of sample names must be a null-terminator (the engine uses a string comparison not limited to 32 characters when matching samples).&amp;lt;br&amp;gt;&lt;br /&gt;
While it is not required by the engine, the following restrictions are proposed for newly created files to keep the life of developers easy that have to support dozens of files and may thus want to employ heuristics whether files are of a specific type:&lt;br /&gt;
It is suggested that all strings (i.e. instances of [[char]][32]) do not use byte values 1 to 31 (so only printable ASCII/ANSI), and after the first null terminator, the rest of the string has to be padded with nulls as well.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=audio}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [https://openmpt.org/ OpenMPT]&lt;br /&gt;
| Platform = Windows&lt;br /&gt;
| canPlay = Yes&lt;br /&gt;
| canCreate = No&lt;br /&gt;
| canModify = No&lt;br /&gt;
| canExport = Many&lt;br /&gt;
| canImport = No&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = No&lt;br /&gt;
| notes = OpenMPT 1.30 or higher is required.&lt;br /&gt;
}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [https://github.com/sagamusix/mod2mus mod2mus]&lt;br /&gt;
| Platform = Any&lt;br /&gt;
| canPlay = No&lt;br /&gt;
| canCreate = Yes&lt;br /&gt;
| canModify = No&lt;br /&gt;
| canExport = No&lt;br /&gt;
| canImport = MOD&lt;br /&gt;
| editHidden = No&lt;br /&gt;
| editMetadata = No&lt;br /&gt;
| notes = Converts 1-4 channel ProTracker MOD files to MUS&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
This file format was reverse-engineered by [[User:Saga|Saga]]. If you find this information helpful in a project you&#039;re working on, please give credit where credit is due.  (A link back to this wiki would be nice too!)&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=File:Mod-Ultima_I.png&amp;diff=10229</id>
		<title>File:Mod-Ultima I.png</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=File:Mod-Ultima_I.png&amp;diff=10229"/>
		<updated>2022-01-21T15:56:41Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Ultima I mod screenshot

Category:Mod screenshots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Ultima I]] mod screenshot&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod screenshots]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Ultima_I&amp;diff=10226</id>
		<title>Ultima I</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Ultima_I&amp;diff=10226"/>
		<updated>2022-01-20T15:31:04Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Added Ultima I Tile Converter editor.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ultima I&#039;&#039;&#039; is a role-playing game where you play a hero trying to defeat the evil wizard Mondain to save the lands of Lord British. It is the first game in an illustrious series spanning dozens of titles.&lt;br /&gt;
&lt;br /&gt;
Ultima was originally written for the Apple II in 1981, but a DOS port was released in 1987&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [http://www.thealmightyguru.com/Wiki/index.php?title=Ultima_I_Tile_Converter Ultima I Tile Converter]&lt;br /&gt;
| Platform = Windows&lt;br /&gt;
| grp = No&lt;br /&gt;
| map = No&lt;br /&gt;
| gfx = Yes&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
| notes = Lets you change all the tiled graphics.&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = castle.*&lt;br /&gt;
 | Format = [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Full-screen title graphic&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ???Fight.bin&lt;br /&gt;
 | Format = [[Ultima I Tile Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 24x19 pixel tiles used in space combat.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ???Mond.bin&lt;br /&gt;
 | Format = [[Ultima I Tile Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 16x16 pixel tiles used in final battle.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ???Space.bin&lt;br /&gt;
 | Format = [[Ultima I Tile Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 32x19 pixel tiles used in space docking.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ???Tiles.bin&lt;br /&gt;
 | Format = [[Ultima I Tile Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 16x16 pixel tiles used in the over world map.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ???Town.bin&lt;br /&gt;
 | Format = [[Ultima I Tile Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 8x8 pixel tiles used in castles and towns.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = map.bin&lt;br /&gt;
 | Format = [[Ultima I Map Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Over world map&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tcd.bin&lt;br /&gt;
 | Format = [[Ultima I Town Map Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Town/castle maps&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = player*.u1&lt;br /&gt;
 | Format = [[Ultima I Save Game Format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Player&#039;s saved games&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = inuse.u1&lt;br /&gt;
 | Format = [[Ultima I Save Game Format]]&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Temporary file used to transfer player data from one EXE to another.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = nif.bin&lt;br /&gt;
 | Format = [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Full-screen ending graphic&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = gen.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Main menu and character generation&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = mondain.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Final battle and end game sequence&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = out.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Outdoor map, towns, and dungeons&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = space.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Space combat&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = ultima.exe&lt;br /&gt;
 | Format = [[EXE Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Introduction and title screen&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RPG]]&lt;br /&gt;
[[Category:Origin]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=File_talk:ESI_Format.png&amp;diff=10036</id>
		<title>File talk:ESI Format.png</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=File_talk:ESI_Format.png&amp;diff=10036"/>
		<updated>2021-09-07T12:20:38Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Removed. Added origin to the file page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=File:ESI_Format.png&amp;diff=10035</id>
		<title>File:ESI Format.png</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=File:ESI_Format.png&amp;diff=10035"/>
		<updated>2021-09-07T12:20:07Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Font format used in several games by ShareData and Wesson International. This specific font is ROMAN3.ESI used in [[Jim Henson&#039;s Muppet Adventure No. 1: Chaos at the Carnival]].&lt;br /&gt;
&lt;br /&gt;
[[Category: Single images]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=9892</id>
		<title>User:TheAlmightyGuru</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=User:TheAlmightyGuru&amp;diff=9892"/>
		<updated>2021-07-13T20:40:32Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I dig videogames!&lt;br /&gt;
&lt;br /&gt;
* [http://www.vgmpf.com vgmpf.com] - The Videogame Music Preservation Foundation.&lt;br /&gt;
* [http://www.romdetectives.com romdetectives.com] - ROM Detectives (console video game hacking)&lt;br /&gt;
* [http://www.thealmightyguru.com/Wiki thealmightyguru.com/Wiki] - My home page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ve contributed significantly to the following pages:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;General Pages&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[BGI Stroked Font]]&lt;br /&gt;
* [[Borland Graphics Interface]]&lt;br /&gt;
* [[CAT Format (MPS Labs)]]&lt;br /&gt;
* [[ESI Format]]&lt;br /&gt;
* [[FLIC Format]]&lt;br /&gt;
* [[LBX Format]]&lt;br /&gt;
* [[LIB Format (Electronic Arts)]]&lt;br /&gt;
* [[LIB Format (Mythos Software)]]&lt;br /&gt;
* [[Microsoft BASIC MML]]&lt;br /&gt;
* [[Microsoft Bitmap Font Format]]&lt;br /&gt;
* [[Microsoft Vector Font Format]]&lt;br /&gt;
* [[PAK Format (Westwood)]]&lt;br /&gt;
* [[Raw CGA Data]] (Full-screen linear viewer source)&lt;br /&gt;
* [[Raw VGA Image]]&lt;br /&gt;
* [[Turbo Pascal Real]]&lt;br /&gt;
* [[VGA Palette]]&lt;br /&gt;
* [[Visage Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[4x4 Off-Road Racing]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[4x4 Off-Road Racing Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Full Screen Graphic Format]]&lt;br /&gt;
* [[4x4 Off-Road Racing Sprite Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Castle Adventure]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Castle Adventure Data Format]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Family Feud]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Family Feud Question Format]]&lt;br /&gt;
* [[Family Feud Question Flag Format]]&lt;br /&gt;
* [[Family Feud Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[God of Thunder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[DAT Format (God of Thunder)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Eye of the Beholder]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Eye of the Beholder Save Game Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Hugo&#039;s House of Horrors]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Hugo Map Formats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Major Stryker]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[HS Format (Major Stryker)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[The Oregon Trail]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Oregon Trail dialogue format]]&lt;br /&gt;
* [[Oregon Trail high scores format]]&lt;br /&gt;
* [[Oregon Trail joystick calibration format]]&lt;br /&gt;
* [[Oregon Trail save game format]]&lt;br /&gt;
* [[Oregon Trail tombstones format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[SkyRoads]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[SkyRoads save game format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Solar Winds]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Solar Winds Sprites]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Swords of Glass]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Swords of Glass fortune format]]&lt;br /&gt;
* [[Swords of Glass info format]]&lt;br /&gt;
* [[Swords of Glass map format]]&lt;br /&gt;
* [[Swords of Glass message format]]&lt;br /&gt;
* [[Swords of Glass monster format]]&lt;br /&gt;
* [[Swords of Glass names format]]&lt;br /&gt;
* [[Swords of Glass graphic format]]&lt;br /&gt;
* [[Swords of Glass people format]]&lt;br /&gt;
* [[Swords of Glass puzzle format]]&lt;br /&gt;
* [[Swords of Glass vault format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima I]]&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Ultima I Full Screen Graphic Format]]&lt;br /&gt;
* [[Ultima I Map Format]]&lt;br /&gt;
* [[Ultima I Tile Graphic Format]]&lt;br /&gt;
* [[Ultima I Town Map Format]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:140%&amp;quot;&amp;gt;[[Ultima II: Revenge of the Enchantress]]&amp;lt;span&amp;gt;&lt;br /&gt;
* [[Ultima II Map Format]]&lt;br /&gt;
* [[Ultima II Dungeon Format]]&lt;br /&gt;
* [[Ultima II Talk Format]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9875</id>
		<title>Microsoft Vector Font Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9875"/>
		<updated>2021-06-21T12:29:52Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = N/A&lt;br /&gt;
 | GlyphMaxSize = N/A&lt;br /&gt;
 | Bitmap = N&lt;br /&gt;
 | Vector = Y&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = Y&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|Balance of Power}}&lt;br /&gt;
   {{Game|Hugo&#039;s House of Horrors}}&lt;br /&gt;
   {{Game|Kick Off 96}}&lt;br /&gt;
   {{Game|Lunar Command}}&lt;br /&gt;
   {{Game|Lunar Command II}}&lt;br /&gt;
   {{Game|Steingenberger Hotelmanager}}&lt;br /&gt;
   {{Game|System-4- Mister Tengus Adventure}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft Vector Font Format&#039;&#039;&#039;, known in the files as &amp;quot;continuous scaling,&amp;quot; is a vector font format developed by Microsoft in 1985 for Windows 3. These font files have the same MZ signature as Microsoft executables, but use a *.fon extension. The same file extension and signature is used by [[Microsoft Bitmap Font Format|Microsoft bitmap fonts]], but the bitmap format is different enough to warrant its own page.&lt;br /&gt;
&lt;br /&gt;
Although the font format was designed for Windows, some DOS programs have made us of it over the years. The format was also included in the Windows installer of later DOS games.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9870</id>
		<title>Microsoft Vector Font Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9870"/>
		<updated>2021-06-18T21:01:53Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = N/A&lt;br /&gt;
 | GlyphMaxSize = N/A&lt;br /&gt;
 | Bitmap = N&lt;br /&gt;
 | Vector = Y&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = Y&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|Hugo&#039;s House of Horrors}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft Vector Font Format&#039;&#039;&#039;, known in the files as &amp;quot;continuous scaling,&amp;quot; is a vector font format developed by Microsoft in 1985 for Windows 3. These font files have the same MZ signature as Microsoft executables, but use a *.fon extension. The same file extension and signature is used by [[Microsoft Bitmap Font Format|Microsoft vector fonts]], but the bitmap format is different enough to warrant its own page.&lt;br /&gt;
&lt;br /&gt;
Although the font format was designed for Windows, some DOS programs have made us of it over the years. The format was also included in the Windows installer of later DOS games.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9869</id>
		<title>Hugo&#039;s House of Horrors</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9869"/>
		<updated>2021-06-18T20:59:08Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: Updating font information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto]]&lt;br /&gt;
| Platform = Linux/Windows&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Partial&lt;br /&gt;
| gfx = Partial&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList|header=false}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pix&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background images (*.art) and sprites (*.pix) are in 16-color [[PCX Format]]. Sprites are multiple PCX files concatenated into a single file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tmsrb.fon&lt;br /&gt;
 | Format = [[Microsoft Bitmap Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Included, but doesn&#039;t seem to be used.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = script.fon&lt;br /&gt;
 | Format = [[Microsoft Vector Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Included, but doesn&#039;t seem to be used.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = &amp;lt;tt&amp;gt;*.b&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.o&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.ob&amp;lt;/tt&amp;gt;&lt;br /&gt;
 | Format = [[Hugo Map Formats]]&lt;br /&gt;
 | KnownFormat = ?&lt;br /&gt;
 | Desc = Map files used for determining walkable borders (*.b), foreground areas (*.o), and range to objects (*.ob)&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dgray.com/hwpage.htm Official homepage] (includes Windows versions)&lt;br /&gt;
&lt;br /&gt;
[[Category:Text adventure]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9868</id>
		<title>Hugo&#039;s House of Horrors</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9868"/>
		<updated>2021-06-18T20:50:46Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto]]&lt;br /&gt;
| Platform = Linux/Windows&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Partial&lt;br /&gt;
| gfx = Partial&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList|header=false}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pix&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background images (*.art) and sprites (*.pix) are in 16-color [[PCX Format]]. Sprites are multiple PCX files concatenated into a single file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tmsrb.fon&lt;br /&gt;
 | Format = [[Microsoft Bitmap Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Bitmap font used on the title screen.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = script.fon&lt;br /&gt;
 | Format = [[Microsoft Vector Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Vector font used on the title screen.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = &amp;lt;tt&amp;gt;*.b&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.o&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.ob&amp;lt;/tt&amp;gt;&lt;br /&gt;
 | Format = [[Hugo Map Formats]]&lt;br /&gt;
 | KnownFormat = ?&lt;br /&gt;
 | Desc = Map files used for determining walkable borders (*.b), foreground areas (*.o), and range to objects (*.ob)&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dgray.com/hwpage.htm Official homepage] (includes Windows versions)&lt;br /&gt;
&lt;br /&gt;
[[Category:Text adventure]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9867</id>
		<title>Hugo&#039;s House of Horrors</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hugo%27s_House_of_Horrors&amp;diff=9867"/>
		<updated>2021-06-18T20:47:24Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: /* File formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto]]&lt;br /&gt;
| Platform = Linux/Windows&lt;br /&gt;
| grp = N/A&lt;br /&gt;
| map = Partial&lt;br /&gt;
| gfx = Partial&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
== File formats ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList|header=false}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.pix&lt;br /&gt;
 | Format = [[PCX Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background images (*.art) and sprites (*.pix) are in 16-color [[PCX Format]]. Sprites are multiple PCX files concatenated into a single file.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = tmsrb.fon&lt;br /&gt;
 | Format = [[Microsoft Bitmap Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Bitmap font used throughout most of the game.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = script.fon&lt;br /&gt;
 | Format = [[Microsoft Vector Font Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Vector font used on the title screen.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = &amp;lt;tt&amp;gt;*.b&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.o&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;*.ob&amp;lt;/tt&amp;gt;&lt;br /&gt;
 | Format = [[Hugo Map Formats]]&lt;br /&gt;
 | KnownFormat = ?&lt;br /&gt;
 | Desc = Map files used for determining walkable borders (*.b), foreground areas (*.o), and range to objects (*.ob)&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.dgray.com/hwpage.htm Official homepage] (includes Windows versions)&lt;br /&gt;
&lt;br /&gt;
[[Category:Text adventure]]&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9866</id>
		<title>Microsoft Vector Font Format</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Microsoft_Vector_Font_Format&amp;diff=9866"/>
		<updated>2021-06-18T20:37:51Z</updated>

		<summary type="html">&lt;p&gt;TheAlmightyGuru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Font Infobox&lt;br /&gt;
 | MaxGlyphs = 256&lt;br /&gt;
 | GlyphMinSize = N/A&lt;br /&gt;
 | GlyphMaxSize = N/A&lt;br /&gt;
 | Bitmap = N&lt;br /&gt;
 | Vector = Y&lt;br /&gt;
 | Compressed = N&lt;br /&gt;
 | Hidden = Y&lt;br /&gt;
 | Metadata = Y&lt;br /&gt;
 | Games =&lt;br /&gt;
   {{Game|Hugo&#039;s House of Horrors}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft Vector Font Format&#039;&#039;&#039; stores vector font data. These font files have the same MZ signature as Microsoft executables, but use a *.fon extension. The same file extension and signature is used by [[Microsoft Bitmap Font Format|Microsoft vector fonts]], but the bitmap format is different enough to warrant its own page. The format appears to have been created for Windows 3.0.&lt;br /&gt;
&lt;br /&gt;
Although the font format was designed for Windows, some DOS programs have made us of it over the years. The format was also included in the Windows installer of later DOS games.&lt;/div&gt;</summary>
		<author><name>TheAlmightyGuru</name></author>
	</entry>
</feed>