-
Notifications
You must be signed in to change notification settings - Fork 1
Game Assets
The assets of Diablo 1 are stored in MPQ files. They can be extracted by e.g. the MPQ Editor using a listfiles.txt file.
The list of necessary MPQ files can be found in the Installation Guide.
Menu UI
Cutscenes
In-Game UI
- gfxfile: .cel*
- panels (talk/quest/char/inventory/spellbook/teams/golddrop)
- cursors** (see Items)
- menu button
- fonts
- belt
- flask icons** (in vanilla the files don't have frame headers)
- durability icons
- action(walk/attack/skill) icons
- sfxfile: .wav
- 1 wav file for each dungeon type which contains the music played on levels of the given dungeon type
- txtfile: .txt
- help lines (colored red if the line starts with $)
Dungeon
-
gfxfile: .cel (level CEL file for the normal tiles), *s.cel (CEL file for the special tiles in town* and in dungeon**)
One .cel file per dungeon types which contains the micros of the sub-tile and one optional *s.cel file might be added to each sub-tile.
When processing a sub-tile, the content of .cel is drawn first.
Then the items/objects/players/monsters are drawn. The content of *s.cel is drawn at the end.- .pal
~6 palette files per dungeon type. Randomized, used only one at a time. The last half of the palette is the same in each file to display common assets (items, panels, missiles, players, etc..) properly.
- .pal
-
metadata:
-
mapdata: .dun
One .dun file for each setmap or setmap-piece.
Objects
- gfxfile: .cel**
One .cel file per object type containing the image of the object depending on its placement and/or interaction state, or a sequence of images in case of animated objects - sfxfile: .wav
One .wav file which is played only for specific object types.
e.g. when a shrine is activated or a barrel is destroyed.
Items
- gfxfile:
Objcurs.cel** + .cel**
Objcurs.celcontains the images of the item (in inventory or on cursor) +
One .cel file per cursor type which contains the drop animation of the item and the item image if it is on the floor (last frame of the drop animation)
special case: MAGIC_ROCK - the drop animation is used as normal animation - sfxfile: .wav
Two .wav files per cursor type- played when the item is dropped (in the middle of the animation)
- played when the item is placed in the inventory or used
Players
-
gfxfile: .cl2**
9 .cl2 files with AS(ST)/AW(WL)/AT/HT/LM/FM/QM/DT/BL suffix- per class (Warrior: W, Rogue: R, Sorceror: S, Monk: M, Bard: R, Barbarian: W)
- per armor type (Light: L, Medium: M, Heavy: H)
- per weapon type (Unarmed: N, Shield: U, Sword: S, Sword + Shield: D, Bow: B, Axe: A, Mace: M, Mace + Shield: H, Staff: T)
which are used to display the player when it stands(in town)/walks(in town)/attacks/got hit/cast light/cast fire/cast magic/dies/blocks
8 groups of images for the 8 directions
e.g.WHSAW.cl2(warrior in heavy armor with sword walking in dungeon) -
sfxfile: .wav
more than 40 sfx-sets which are class dependent, 4 casting effects + swing, walk, block sfx which are not class dependent.
Towners
Monsters
- gfxfile: .cl2**
6 .cl2 files with N/W/A/H/D/S suffix which are used to display the monster when it stands/walks/attacks/got hit/die/perform a special action.
8 groups of images for the 8 directions
e.g.MonsterN.cl2(Monster standing)- .trn (optional) One trn file per monster type to alter the color of the monster
- sfxfile: .wav
4 .wav files with A/H/D/S suffix which are played when the monster attacks/got hit/die/perform a special action.
e.g.MonsterA.wav(Monster attacking)
Missiles
- gfxfile: .cl2*
One or more .cl2 files. In case of one .cl2 file the animation is either non-directional, or the frame is selected based on the direction and the animation is 'locked'. In case of multiple .cl2 files the animation file is selected based on the direction.
e.g.Scubmisb.cl2(flare of a Snow Witch),Fireba5.cl2(fireball to west),FArrow9.cl2(fire-arrow to north)- .trn (optional)
One trn file per missile type to alter the color of the missile.
- .trn (optional)
- sfxfile: .wav
0 or more .wav files which are played when the missile is launched.
0 or more .wav files which are played on impact of the missile.
* CEL file without frame header, CL2 without groups
** CEL file with frame header, CL2 with groups
- In case of the cl2 files only the first entry from each frame is used.
- main menu
- dungeon levels
Normally the upper 128 bytes (and the first byte) of the palette is shared throughout of the game. These colors are used to draw generic assets like UI, cursor, players, monsters, items, missiles. The first byte is always black, while the upper 128 bytes are shades of blue(8), red(8), yellow(8), orange(8), beige(16), light-blue(16), light-yellow(16), light-orange(16), light-red(16) and gray(16).
The game engine uses a light-system which handles the colors in groups. Each group of the non-shared colors consists of 16 colors. In order to get the best result, the lightness of the colors in these groups should be linear.
The lower 127 bytes are context specific colors. These are used to draw the dungeon, the pages of the main menu, etc... The first color is always black. Additionally some colors are reserved for special effects in dungeon:
- Caves (1-31): lava flow
- Hell (1-31): chaos/boiling
- Nest (1-31): acid lakes
- Crypt (1-31): lava flow
- credits
- cutscenes
Specific screens have completely unique palettes. This means the whole palette is used to draw the screen (in turn the mouse is not shown).
Setmaps and map-fragments (DUN-files) can have two versions to support map modifications during game-play. In this case the content of first map is mostly ignored except for the tiles and its protections. The second file must contain the subtile-protections, the monsters and the objects.
The game can be compiled with e.g. ASSET_MPL=2 parameter to support high definition assets. In this case the game requires an additional mpq file (e.g. devilx_hd2.mpq) containing the high definition assets.
The original assets might be upscaled using GUI Tools, Converters(C++) or you might create/download them yourself.
The format of the high definition assets are the same as the original ones, except for the MIN files and their corresponding CEL files:
- The
{CEL FRAME REFERENCE}in the MIN files do not contain the{CEL FRAME TYPE}. The frame type is defined in the corresponding CEL files, where the first BYTE of the{CEL FRAME DATA}is the{CEL FRAME TYPE}. - In the original MINs the micros are lines (pairs) from top to bottom. In case of high definition assets the lines are multiple (2 * n) micros and listed from bottom to top.
- In the original assets the size of the sub-tiles (block size) varies depending on the dungeon type, the block size in the MIN files of the high definition assets is always the same (8 * 2 * n * n).
Steps to use upscaled assets:
- extract base mpqs to a temporary folder (
folderA) - extract devilx.mpq to
folderA - upscale the assets in
folderAwith GUI Tools setting the game's folder as a destination - use the patcher to:
- patch the non-upscaled files
- merge the assets either to a single MPQ or just into the
devilx_hdX.mpq