Wednesday, 13 September 2017

3DS max 2016 Metasequoia (.MQO) Importer

Since the website with the Metasequoia importers/exporters for modern versions of 3DS max has disappeared I tried my hand at compiling sio29’s 3DS max 9 code for 3DS max 2016.

Sunday, 18 June 2017

Github Desktop Program Tutorial

Github Desktop is a GUI program for git version control that is distributed by

The video below explains how to use it the best in my opinion.

Markdown cheatsheet for writing is here. [link]

Friday, 26 May 2017


Version: 0.71
Status: Released

An attempt to replicate aktrekker’s TR2PRJ program for the TRLE community.

I noticed aktrekker’s program gets some of the geometry incorrect, especially some split sectors and some sectors beneath horizontal doors.

Unlike aktrekker’s program I only extract geometry so rooms will have to be manually reconnected, retextured, and triggers, objects and lights added.

aktrekker’s program seems to convert black in the textures to magenta instead of alpha to magenta so I fixed this too.

Source and release at GitHub. [link]

If building from source you need to download the Vampyre Imaging Library. The latest released version does not compile under Delphi XE7 so get the version from Mercurial repository. [link]

Since I don’t know how aktrekker extracted textures and created doors I may in future add ability to import TR2PRJ’s prj file and inject this data into the prj I create.

  • Open .TR4 file
  • Click Save As to save .prj and .tga file

Monday, 1 May 2017

Delphi TOpenDialog option ofExtensionDifferent

ofExtensionDifferent doesn’t appear to be set in Windows 8.1.

The following example from [link] fails.

procedure TForm1.Button1Click(Sender: TObject);
Done: Boolean;
filenamestring : String;
  OpenPictureDialog1.DefaultExt := GraphicExtension(TIcon);
  filenamestring := GraphicFileMask(TIcon);
  OpenPictureDialog1.FileName := filenamestring;
  OpenPictureDialog1.Filter := GraphicFilter(TIcon);
  OpenPictureDialog1.Options := [ ofFileMustExist, ofHideReadOnly, ofNoChangeDir ];
  Done := False;
  while not Done do
  if OpenPictureDialog1.Execute then
    if not (ofExtensionDifferent in OpenPictureDialog1.Options) then
      Done := True;
//      OpenPictureDialog1.Options := OpenPictureDialog1.Options - ofExtensionDifferent;
  else { User cancelled }
    Done := True;
CodeTyphon (Lazarus fork) doesn't have this problem. 

Tuesday, 18 April 2017

FBX ASCII 7300 (2013) File Format

Wednesday, 5 April 2017

WIP: WadViewer

Version: 0.4
Status: Released

WadViewer is TRViewer adapted to open/save .wad files.

It was created for the purpose of importing .3ds files directly into a .wad file so a lot of the TRViewer functionality has been disabled since it is incompatible with .wad files.

WadViewer.exe must be copied into an existing TRViewer folder to work.

WARNING: Use only on a copy of your .wad or have a backup of your .wad. The program has not been tested much.