Skip to content

Heretic: support automatic version selection of HEHACKED patches #1167

Open
@kitchen-ace

Description

@kitchen-ace

Crispy can load HEHACKED patches in wads automatically now, which is great. However it defaults to version 1.0 patches; 1.3 patches (needed to change the map and episode names of episodes 4 & 5) still need the parameter -hhever 1.3.

This should be fairly easy to change, and I'm willing to do it. But how best to implement it?

For reference here is the header for a HHE patch:

Patch File for HHE v1.1

# Note: Use the pound sign ('#') to start comment lines.

Heretic version = 10
Patch format = 1
  • Heretic version and Patch format numbers can be changed and read by Crispy Heretic currently, but trying to load them in HHE.EXE produces a warning and then defaults back to 10 and 1 when saved, respectively.
  • Comments do not produce errors and can be used as 'magic strings', these again do not get saved in HHE.EXE
  • A separate HHEVER lump could be used.
  • We could try to use heuristics to determine if the patch is for Heretic 1.3; any patch with strings for the 4th or 5th episode can safely be assumed to be 1.3, and anyone wishing to force 1.3 compatibility in their patch can include a replacement for one of these strings (even if the 'replacement' is the original string).
    Certain other features (code pointer changes etc.) can cause Crispy to error out and suggest using the hhever switch, if they don't match up with what it's expecting for a 1.0 patch.

Assuming any embedded HEHACKED lump is a 1.3 patch is a bad option IMO, especially since there already exist wads with HEHACKED lumps that use the 1.0 format, to avoid needing the -hhever switch.

Last option: someone can help me rewrite Dehacked to support Heretic. (Dehacked has its source released, but Hehacked does not.) Something I've thought of trying before, but a little ambitious for me I think.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions