Code Monkey home page Code Monkey logo

wadgadget's Introduction

WadGadget icon

WadGadget is a console-based, interactive WAD file editor for Doom engine games (and others that reuse the WAD format).

Screenshot of WadGadget

The program is a love letter to TiC's New WAD Tool, a '90s WAD editing tool that I have continued to find useful even two decades after its last release. The user interface is inspired both by orthodox file management tools like Norton Commander but also by the unfinished 1.4 beta release of NWT which was going to have a two-pane interface for viewing two WAD files simultaneously.

A two-pane WAD editing tool has several advantages. Firstly, when editing Doom WAD files, one develops PWADs as a patch against the original IWAD file. The result is a merger between the two, and it's helpful to be able to explore this and see the effect of one on the other. Secondly, WadGadget fully integrates both the filesystem and WAD views; the actions of importing, exporting or copying between WADs all take place through a consistent interface.

Features

WadGadget aims at minimum for feature parity with NWT; this goal has not yet been met. It also adds new features and a more logical GUI, but is likely never going to include as many features as other tools like the excellent SLADE.

The following table gives a brief summary of the current state:

NWT WadGadget SLADE
Operating System DOS Linux, macOS, BSD, other Unixes Windows, macOS, Linux
Software License License-free; v1.3 source is public GNU GPLv2 GNU GPLv2
Interface Text UI (80x25) ncurses (~any screen size) GUI (wxWidgets)
Two pane view ✓ (in 1.4 beta) ✓ (multi-tab)
File formats WAD WAD WAD, ZIP, PAK, HOG, many others
Fundamentals: Create, Delete, Rename
Rearrange lumps within WAD
Filesystem navigation ✓ (fully integrated with WAD view)
Basic file management ✓ (open, copy, delete, rename files) ✓ (kind of, via OS file open dialog)
Quick search within WAD
Open/edit via external editors
Quick summary of lump contents ✓ (graphics, demos) ✓ (graphics, demos, SFX, PC speaker sounds) ✓ (almost everything)
WAD clean/compact ✓ (via command line)
Undo ✓ (multi-level, plus redo) ✓ (multi-level, plus redo)
Hexdump view
View ENDOOM
Viewing graphics/flats ✓ (for terminals that support Sixels)
Graphics import ✓ (GIF, PCX) ✓ (PNG) ✓ (many formats)
Graphics export ✓ (GIF, PCX) ✓ (PNG) ✓ (many formats)
Edit graphic offsets #11
PNG grAb chunk support
Audio playback #13
Audio import ✓ (WAV, VOC) ✓ (WAV, VOC, FLAC, others) ✓ (many formats)
Audio export ✓ (WAV, VOC) ✓ (WAV) ✓ (many formats)
Music playback #14
Music import ✓ (many formats)
Music export ✓ (MUS) ✓ (converts MUS to MID) ✓ (many formats)
Palette/colormap import ✓ (PNG)
Palette/colormap export ✓ (PNG)
Texture editor WIP (#9); can be edited as text as a stopgap
PNAMES editor
Online help ✓ (Hypertext-based contextual help) ✓ (browser tabs to access help/wiki)
View/edit levels
Edit ACS scripts
Source port features
Scripting ✓ (via Lua)
A zillion other features

FAQ

Can I use this under Microsoft Windows?

There is not yet a native Windows version. You can probably make it work by using Windows Subsystem for Linux; I have not yet heard from anyone who has tried this.

Will you add {my favorite feature here}?

Firstly, WadGadget is never going to implement every feature found in other editors like SLADE. Some of the planned features are listed in the table above. If there is a particular feature that you think is important to add to the program, file a feature request.

What features will never be implemented?

The goal of the project is to develop a curses-based Doom WAD editor. This necessarily means that various features will always be out of scope. Some examples are:

  • It will never include a level editor, or anything else that requires a graphical display (like an image editor). It's better to delegate that kind of thing to other programs.
  • It is unlikely to ever include any kind of GUI or GUI integration
  • It is unlikely there will ever be support for other archive formats, like .zip/.pk3 (used in some Doom source ports), or formats like .pak or .grp used in other games.

The project also tries to avoid "useless" features -- for example, configuration options to change the colors of the interface (Commander Mode is the one such feature that is the exception).

Why is this ugly/slow on FreeBSD?

The version of curses shipped with FreeBSD seems to be very limited or an old version for some reason. Make sure you compile against the version from the ports database, and also install the terminfo database. You can do this with pkg install ncurses terminfo-db.

wadgadget's People

Contributors

fragglet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wadgadget's Issues

Mouse support

Curses has APIs for registering mouse clicks, for terminals that support it.

Texture editor

We should have a texture editor like NWT. It should be possible to make something significantly better.

nwt_002

Undo support

It would be nice to be able to undo changes to WAD files if a mistake is made. This should actually be fairly straightforward by keeping duplicate copies of the WAD directory for each change that is made. This will waste space though so #5 is probably a prerequisite

Allow alternate format selection for import/export

Alt+F5 allows import/export as a raw lump, but we can provide more options. For example, PNG files can be imported as a graphic lump, raw lump, flat, hires graphic or raw data. Similarly we could allow sound files to be exported as raw lump, WAV, VOC, FLAC or something else.

Pnames lump editor

We should probably have a PNAMES editor like NWT, although autogenerating PNAMES from TEXTURE1 should probably be an option too.

nwt_003

Plain text pager

Useful for:

  • Viewing plain text lumps
  • Viewing hexdumps (#7)
  • Viewing help text

View and edit lumps

We can do this by exporting to a temporary file and (if changed) importing it back again

Playback of MIDI files

A feature of NWT. Could be implemented using PortMIDI (& probably PortSMF) for cross-platform support.

Hexdump view

We should have a hexdump view to match NWT's.

nwt_001

Edit graphic offsets

There is currently no way to change graphic offsets, other than modifying a grAb lump externally.

Pictured: what NWT provides.

nwt_004

Update function

Import is now implemented but not the update function that replaces existing lumps

Binary lump decoder/editor

Some code for this is already in place (struct.c), but it would be nice to be able to at least inspect the contents of common lump types, like LINEDEFS, SIDEDEFS, etc.

Better palette support

The palette is currently hard-coded to the Doom palette. It ought to be possible to load other palettes as well.

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.