OpenTyrian
OpenTyrian emulates Tyrian. It reads 72 files, 33 of them required: without a required file it does not start games.
About this profile
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.
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator opentyrianOpen Terminal, in Applications, then Utilities. Paste the line. Press Return.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator opentyrianOpen a terminal. Paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator opentyrianSwitch to Desktop Mode. Open Konsole. Paste with Ctrl+Shift+V. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator opentyrianInstall Termux, a terminal app. Run pkg install python and termux-setup-storage once. Then paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator opentyrianOpen a terminal on the device. Or connect from a computer with SSH, a terminal over the network. Paste the line. Press Enter.
curl -fsSL https://abdess.github.io/retrobios/i | sh -s -- --emulator opentyrianTechnical 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):
- custom_data_dir (set via --data= CLI argument, params.c:120)
- TYRIAN_DIR (compile-time constant, Makefile:5-8)
- "data" (relative subdirectory)
- "." (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.
Game data
Section titled “Game data”| File | Status |
|---|---|
tyrian.shpMain shape tables (12 sprite banks: fonts, interface, options, game sprites)
Source
| required in repo game data |
palette.datColor palette data (all palettes used by the game)
Source
| required in repo game data |
tyrian.hdtHelp and item data (weapons, ships, shields, enemies, help text)
Source
| required in repo game data |
tyrian.picPicture data (menu backgrounds, cutscene images)
Source
| required in repo game data |
tyrian.cdtCredits text (encrypted pascal strings)
Source
| required in repo game data |
tyrian.sndSound effects
Source
| required in repo game data |
voices.sndVoice samples
Source
| required in repo game data |
music.musMusic data (all game tracks)
Source
| required in repo game data |
tyrian1.lvlEpisode 1 level data (also used as data directory detection marker)
Source
| required in repo game data |
levels1.datEpisode 1 level definitions
Source
| required in repo game data |
cubetxt1.datEpisode 1 datacube text (in-game story lore)
Source
| required in repo game data |
tyrian2.lvlEpisode 2 level data
Source
| optional in repo game data |
levels2.datEpisode 2 level definitions
Source
| optional in repo game data |
cubetxt2.datEpisode 2 datacube text
Source
| optional in repo game data |
tyrian3.lvlEpisode 3 level data
Source
| optional in repo game data |
levels3.datEpisode 3 level definitions
Source
| optional in repo game data |
cubetxt3.datEpisode 3 datacube text
Source
| optional in repo game data |
tyrian4.lvlEpisode 4 level data
Source
| optional in repo game data |
levels4.datEpisode 4 level definitions
Source
| optional in repo game data |
cubetxt4.datEpisode 4 datacube text
Source
| optional in repo game data |
tyrian5.lvlEpisode 5 level data
Source
| optional in repo game data |
levels5.datEpisode 5 level definitions
Source
| optional in repo game data |
cubetxt5.datEpisode 5 datacube text
Source
| 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.shpCompressed sprites (item sprites, arrows, mouse cursor)
Source
| required in repo game data |
newsh6.shpCompressed sprites (explosions)
Source
| required in repo game data |
newsh~.shpCompressed sprites (destruct mode)
Source
| optional in repo game data |
newsh2.shpCompressed enemy sprite bank '2'
Source
| required in repo game data |
newsh4.shpCompressed enemy sprite bank '4'
Source
| required in repo game data |
newsh7.shpCompressed enemy sprite bank '7'
Source
| optional in repo game data |
newsh8.shpCompressed enemy sprite bank '8'
Source
| optional in repo game data |
newsha.shpCompressed enemy sprite bank 'a'
Source
| required in repo game data |
newshb.shpCompressed enemy sprite bank 'b'
Source
| optional in repo game data |
newshc.shpCompressed enemy sprite bank 'c'
Source
| required in repo game data |
newshd.shpCompressed enemy sprite bank 'd'
Source
| required in repo game data |
newshe.shpCompressed enemy sprite bank 'e'
Source
| required in repo game data |
newshf.shpCompressed enemy sprite bank 'f'
Source
| required in repo game data |
newshg.shpCompressed enemy sprite bank 'g'
Source
| optional in repo game data |
newshh.shpCompressed enemy sprite bank 'h'
Source
| optional in repo game data |
newshi.shpCompressed enemy sprite bank 'i'
Source
| required in repo game data |
newshj.shpCompressed enemy sprite bank 'j'
Source
| required in repo game data |
newshk.shpCompressed enemy sprite bank 'k'
Source
| optional in repo game data |
newshl.shpCompressed enemy sprite bank 'l'
Source
| required in repo game data |
newshm.shpCompressed enemy sprite bank 'm'
Source
| required in repo game data |
newshn.shpCompressed enemy sprite bank 'n'
Source
| optional in repo game data |
newsho.shpCompressed enemy sprite bank 'o'
Source
| optional in repo game data |
newshp.shpCompressed enemy sprite bank 'p'
Source
| required in repo game data |
newshr.shpCompressed enemy sprite bank 'r'
Source
| optional in repo game data |
newshs.shpCompressed enemy sprite bank 's'
Source
| required in repo game data |
newsht.shpCompressed enemy sprite bank 't'
Source
| required in repo game data |
newshu.shpCompressed enemy sprite bank 'u'
Source
| required in repo game data |
newsh5.shpCompressed enemy sprite bank '5'
Source
| optional in repo game data |
newsh#.shpCompressed enemy sprite bank '#'
Source
| optional in repo game data |
newshv.shpCompressed enemy sprite bank 'v'
Source
| optional in repo game data |
newsh0.shpCompressed enemy sprite bank '0'
Source
| optional in repo game data |
newsh3.shpCompressed enemy sprite bank '3'
Source
| optional in repo game data |
newsh^.shpCompressed enemy sprite bank '^'
Source
| optional in repo game data |
newsh9.shpCompressed enemy sprite bank '9'
Source
| optional in repo game data |
tyrianc.shpChristmas mode shape tables (replaces tyrian.shp at Xmas)
Source
| optional in repo game data |
voicesc.sndChristmas mode voice samples (replaces voices.snd at Xmas)
Source
| optional in repo game data |
tyrend.anmEnding animation sequence
Source
| optional in repo game data |
tshp2.pcxAdditional ship graphics (PCX image)
Source
| optional in repo game data |
estsc.shpEnding sequence character sprites
Source
| optional in repo game data |
demo.1Demo replay file 1
Source
| optional in repo game data |
demo.2Demo replay file 2
Source
| optional in repo game data |
demo.3Demo replay file 3
Source
| optional in repo game data |
demo.4Demo replay file 4
Source
| optional in repo game data |
demo.5Demo replay file 5
Source
| optional in repo game data |
Next steps
Section titled “Next steps”- Get your files, for the setup you play on
- Every system, and the files each one needs
- When a game does not start