Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Heretic: support automatic version selection of HEHACKED patches #1167

Open
kitchen-ace opened this issue Feb 16, 2024 · 2 comments · May be fixed by #1173
Open

Heretic: support automatic version selection of HEHACKED patches #1167

kitchen-ace opened this issue Feb 16, 2024 · 2 comments · May be fixed by #1173
Assignees

Comments

@kitchen-ace
Copy link
Collaborator

kitchen-ace commented Feb 16, 2024

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.

@kitchen-ace kitchen-ace self-assigned this Feb 17, 2024
@NightFright2k19
Copy link

For my taste, HEHACKED text replacements are quite cryptic in general. You basically need to know the text ID for an entry, like an episode name or level title. DEHACKED is so much simpler in comparison, regardless whether it's vanilla or Bex.

@kitchen-ace
Copy link
Collaborator Author

For my taste, HEHACKED text replacements are quite cryptic in general.

Everything about HEHACKED is messy compared to DEHACKED, and most of it still would be even if there wasn't the multiple versions issue. It could be possible to write up a new standard for advanced ports, but in my ideal world we'd also have a replacement that works on vanilla Heretic and gets support in Chocolate. However maybe that's letting perfect be the enemy of good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants