GithubHelp home page GithubHelp logo

milasudril / wad64 Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 1.19 MB

Modern version of classic DOOM WAD archive

License: MIT License

C++ 97.05% Shell 0.44% Makefile 1.20% Roff 0.52% Python 0.79%
wad file-archive library

wad64's Introduction

WAD64

WAD64 is a modern version of the classic DOOM archive format. It is more or less an identical archive file format, with larger fields.

Features

  • Full random access to individual lumps
  • 64-bit file offsets
  • Up to 2^63 - 1 directory entries
  • 255 byte long lump names

Differences between classic DOOM WAD and WAD64

  • WAD64 lump names should be encoded as UTF-8. If a lump name contains any null bytes, the must appear last. Also, the lump name must end with a null byte. That is why only 255 bytes are allowed. The last byte must always be a null byte.

  • WAD64 forbids overlapping lumps. Note however, that a file of zero length, may have the same start offset as any other file. This is similar to the [[no_unique_address]] attribute in C++.

Common archive features that are not supported nativly

  • Hierarchical directory structures. However, since it is possible to have longer lump names, it can be emulated by following some convention. For example, it is possible to us / in lump names. Another possibility is to have WAD:s inside WAD:s. This works, because the file format allows full random access. The utility application wad64 uses the first approach because it is simpler to implement.

  • Compression/encryption. It is possible to add compressed/encrypted lumps (in fact, a lump can contain anything), provided that the reader knows what compression/encryption scheme is used. The directory cannot be compressed/encryption, because then it is not possible to find the data.

  • File metadata. If desired, a special file such as a medadata.json file can be added to the archive

  • Any checksums. If desired, this can also be added by adding a special file to the archive

wad64's People

Contributors

milasudril avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

wad64's Issues

Add XDG mime file

This is useful for detecting wad64 files.

Tasks

  • Write proper XML files
  • Provide a utility that can extract a .thumbnail file as a png, so it can be shown in file managers on GNU/Linux.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.