Skip to content

OpenTyrian emulates Tyrian. It reads 72 files, 33 of them required: without a required file it does not start games.

About this profile
Detail Value
Type libretro
Classification Game engine
Source https://github.com/trapexit/libretro-opentyrian
Upstream https://github.com/opentyrian/opentyrian
Version none stated in the source
Revision trapexit/libretro-opentyrian@3e9df7a6bc48, opentyrian/opentyrian@ac5d0e71f424
Profiled 2026-03-24
Profile YAML, JSON
Cores opentyrian, tyrian
Systems Tyrian
Checks the file by existence
Install this emulator's files

The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.

Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.

PowerShell
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator opentyrian
Technical notes

OpenTyrian is a source port of the DOS vertical scrolling shooter Tyrian, ported to libretro. It loads the Tyrian 2.1 freeware game data directly. Tyrian 1.x, 2.0, and Tyrian 2000 data files are NOT compatible.

The core's .info file sets supports_no_game = true. The core locates the data directory by probing for tyrian1.lvl in several paths (file.c:33-58):

  1. custom_data_dir (set via --data= CLI argument, params.c:120)
  2. TYRIAN_DIR (compile-time constant, Makefile:5-8)
  3. "data" (relative subdirectory)
  4. "." (current working directory) The first path containing tyrian1.lvl wins.

On startup (opentyr.c:270-388), the core:

  • Scans for episodes by checking tyrian1.lvl through tyrian5.lvl (episodes.c:270-277)
  • Loads palette data from palette.dat (palette.c:45)
  • Loads main shape tables from tyrian.shp (sprite.c:669-722, 12 sprite banks packed in one file: fonts, interface, option sprites, game sprites, weapon sprites, etc.)
  • Loads sound effects from tyrian.snd and voice samples from voices.snd (nortsong.c:112-134, opentyr.c:333)
  • Loads music from music.mus (loudness.c:196)
  • Loads help/item data from tyrian.hdt (helptext.c:184, episodes.c:60)
  • Loads picture data from tyrian.pic (picload.c:32)
  • Loads credits from tyrian.cdt (mainint.c:2002)

Each episode loads additional files dynamically (episodes.c:261-263):

  • tyrianN.lvl (level data, N=1-5)
  • levelsN.dat (episode level definitions)
  • cubetxtN.dat (datacube text for story mode)

The game engine also loads shape files on demand:

  • shapesX.dat where X is a character read from the level file (5 used: ), W, X, Y, Z) (lvlmast.c:23-27, tyrian2.c:3079). Characters used: 2,4,7,8,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,5,#,V,0,@,3,^,9
  • newshX.shp loaded via JE_loadCompShapes (sprite.c:469-481) using the same character set plus '~' for destruct mode (destruct.c:569) and '1' for arrow/mouse cursor sprites (mainint.c:493,884,1462) and '6' for explosion sprites (tyrian2.c:771)

Additional optional files:

  • tyrianc.shp and voicesc.snd for Christmas mode (opentyr.c:301-309)
  • tyrend.anm for ending animation (tyrian2.c:2473)
  • tshp2.pcx loaded during gameplay (tyrian2.c:2757, pcxload.c:25)
  • estsc.shp for ending sequence sprites (mainint.c:1995)
  • demo.1 through demo.5 for demo playback (mainint.c:1781-1786)

All filenames must be lowercase on case-sensitive filesystems. The repo includes lower-script.sh for batch renaming.

The Tyrian 2.1 freeware data is available at: https://camanis.net/tyrian/tyrian21.zip

No separate BIOS or firmware is needed. The freeware game data set is the sole system requirement.

72 files: 33 required, 39 optional.

By kind: 72 game data.

In this collection: 72 in repo and 0 missing.

72 rows
FileStatus

tyrian.shp

Main shape tables (12 sprite banks: fonts, interface, options, game sprites)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/sprite.c:669-722 (emulator code, libretro port)
required in repo game data

palette.dat

Color palette data (all palettes used by the game)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/palette.c:45 (emulator code, libretro port)
required in repo game data

tyrian.hdt

Help and item data (weapons, ships, shields, enemies, help text)

Source
required in repo game data

tyrian.pic

Picture data (menu backgrounds, cutscene images)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/picload.c:32 (emulator code, libretro port)
required in repo game data

tyrian.cdt

Credits text (encrypted pascal strings)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/mainint.c:2002 (emulator code, libretro port)
required in repo game data

tyrian.snd

Sound effects

Source
required in repo game data

voices.snd

Voice samples

Source
required in repo game data

music.mus

Music data (all game tracks)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/loudness.c:196 (emulator code, libretro port)
required in repo game data

tyrian1.lvl

Episode 1 level data (also used as data directory detection marker)

Source
required in repo game data

levels1.dat

Episode 1 level definitions

Source
required in repo game data

cubetxt1.dat

Episode 1 datacube text (in-game story lore)

Source
required in repo game data

tyrian2.lvl

Episode 2 level data

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:274 (emulator code, libretro port)
optional in repo game data

levels2.dat

Episode 2 level definitions

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:263 (emulator code, libretro port)
optional in repo game data

cubetxt2.dat

Episode 2 datacube text

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:262 (emulator code, libretro port)
optional in repo game data

tyrian3.lvl

Episode 3 level data

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:274 (emulator code, libretro port)
optional in repo game data

levels3.dat

Episode 3 level definitions

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:263 (emulator code, libretro port)
optional in repo game data

cubetxt3.dat

Episode 3 datacube text

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:262 (emulator code, libretro port)
optional in repo game data

tyrian4.lvl

Episode 4 level data

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:274 (emulator code, libretro port)
optional in repo game data

levels4.dat

Episode 4 level definitions

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:263 (emulator code, libretro port)
optional in repo game data

cubetxt4.dat

Episode 4 datacube text

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:262 (emulator code, libretro port)
optional in repo game data

tyrian5.lvl

Episode 5 level data

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:274 (emulator code, libretro port)
optional in repo game data

levels5.dat

Episode 5 level definitions

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:263 (emulator code, libretro port)
optional in repo game data

cubetxt5.dat

Episode 5 datacube text

Source
  • Asked for by: emulator code, libretro port
  • Source: src/episodes.c:262 (emulator code, libretro port)
optional in repo game data

shapes).dat

Source
required in repo game data

shapesw.dat

Source
required in repo game data

shapesx.dat

Source
required in repo game data

shapesy.dat

Source
required in repo game data

shapesz.dat

Source
required in repo game data

newsh1.shp

Compressed sprites (item sprites, arrows, mouse cursor)

Source
required in repo game data

newsh6.shp

Compressed sprites (explosions)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/tyrian2.c:771 (emulator code, libretro port)
required in repo game data

newsh~.shp

Compressed sprites (destruct mode)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/destruct.c:569 (emulator code, libretro port)
optional in repo game data

newsh2.shp

Compressed enemy sprite bank '2'

Source
required in repo game data

newsh4.shp

Compressed enemy sprite bank '4'

Source
required in repo game data

newsh7.shp

Compressed enemy sprite bank '7'

Source
optional in repo game data

newsh8.shp

Compressed enemy sprite bank '8'

Source
optional in repo game data

newsha.shp

Compressed enemy sprite bank 'a'

Source
required in repo game data

newshb.shp

Compressed enemy sprite bank 'b'

Source
optional in repo game data

newshc.shp

Compressed enemy sprite bank 'c'

Source
required in repo game data

newshd.shp

Compressed enemy sprite bank 'd'

Source
required in repo game data

newshe.shp

Compressed enemy sprite bank 'e'

Source
required in repo game data

newshf.shp

Compressed enemy sprite bank 'f'

Source
required in repo game data

newshg.shp

Compressed enemy sprite bank 'g'

Source
optional in repo game data

newshh.shp

Compressed enemy sprite bank 'h'

Source
optional in repo game data

newshi.shp

Compressed enemy sprite bank 'i'

Source
required in repo game data

newshj.shp

Compressed enemy sprite bank 'j'

Source
required in repo game data

newshk.shp

Compressed enemy sprite bank 'k'

Source
optional in repo game data

newshl.shp

Compressed enemy sprite bank 'l'

Source
required in repo game data

newshm.shp

Compressed enemy sprite bank 'm'

Source
required in repo game data

newshn.shp

Compressed enemy sprite bank 'n'

Source
optional in repo game data

newsho.shp

Compressed enemy sprite bank 'o'

Source
optional in repo game data

newshp.shp

Compressed enemy sprite bank 'p'

Source
required in repo game data

newshr.shp

Compressed enemy sprite bank 'r'

Source
optional in repo game data

newshs.shp

Compressed enemy sprite bank 's'

Source
required in repo game data

newsht.shp

Compressed enemy sprite bank 't'

Source
required in repo game data

newshu.shp

Compressed enemy sprite bank 'u'

Source
required in repo game data

newsh5.shp

Compressed enemy sprite bank '5'

Source
optional in repo game data

newsh#.shp

Compressed enemy sprite bank '#'

Source
optional in repo game data

newshv.shp

Compressed enemy sprite bank 'v'

Source
optional in repo game data

newsh0.shp

Compressed enemy sprite bank '0'

Source
optional in repo game data

newsh3.shp

Compressed enemy sprite bank '3'

Source
optional in repo game data

newsh^.shp

Compressed enemy sprite bank '^'

Source
optional in repo game data

newsh9.shp

Compressed enemy sprite bank '9'

Source
optional in repo game data

tyrianc.shp

Christmas mode shape tables (replaces tyrian.shp at Xmas)

Source
  • Asked for by: emulator code, libretro port
  • Source: src/opentyr.c:301-309 (emulator code, libretro port)
optional in repo game data

voicesc.snd

Christmas mode voice samples (replaces voices.snd at Xmas)

Source
optional in repo game data

tyrend.anm

Ending animation sequence

Source
  • Asked for by: emulator code, libretro port
  • Source: src/tyrian2.c:2473 (emulator code, libretro port)
optional in repo game data

tshp2.pcx

Additional ship graphics (PCX image)

Source
optional in repo game data

estsc.shp

Ending sequence character sprites

Source
  • Asked for by: emulator code, libretro port
  • Source: src/mainint.c:1995 (emulator code, libretro port)
optional in repo game data

demo.1

Demo replay file 1

Source
optional in repo game data

demo.2

Demo replay file 2

Source
optional in repo game data

demo.3

Demo replay file 3

Source
optional in repo game data

demo.4

Demo replay file 4

Source
optional in repo game data

demo.5

Demo replay file 5

Source
optional in repo game data
.