fabiangreffrath / crispy-doom

Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
https://fabiangreffrath.github.io/crispy-homepage
GNU General Public License v2.0
802 stars 132 forks source link

Heretic: support automatic version selection of HEHACKED patches #1167

Open kitchen-ace opened 8 months ago

kitchen-ace commented 8 months ago

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

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.

NightFright2k19 commented 8 months ago

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 commented 8 months ago

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.