GithubHelp home page GithubHelp logo

Comments (6)

robwill80 avatar robwill80 commented on July 30, 2024

On further reading, it looks like support for a UMAPINFO feature was added, which in some respects is meant to approach fixing this.

However, I note that there is no information provided in the Libretro docs for the average end-user to figure this out. I have no idea how to add that map data to the existing wad, or a new supplemental wad. I'm not against learning it, but a straight answer is hard to find using Google.

from libretro-prboom.

robwill80 avatar robwill80 commented on July 30, 2024

I'll say "never mind" for my own part - I think I figured out how to edit the wad properly after a day of tinkering, but there really should be some hard-coded support for the original wad in here.

One thing, though. If UMAPINFO is supported, the "ParTime" key hasn't been implemented. It doesn't show up in the level stats using that. I had to find an alternative.

In the end, I copied over the UMAPINFO and DEHACKED entries from sigil.wad using Slade, and modified them with values from the DMAPINFO entry in the Unity port's nerve.wad. I cropped and used that wad's Title and Intermission screens too. I think I got it working well enough.

from libretro-prboom.

Ferk avatar Ferk commented on July 30, 2024

It would be interesting to add support for the nerve.wad from the Unity port. That version already includes a nice DMAPINFO that would not be too hard to parse (maybe just loosing a bit the UMAPINFO parsing so it supports that other format as well) and it would unlock "out of the box" support for all the other addons the Unity port includes: https://doomwiki.org/wiki/Official_add-ons

One thing to note is that those include widescreen graphics for several screens. I actually added support for those in a branch where I was working on widescreen support for the core (https://github.com/Ferk/libretro-prboom/tree/widescreen). But the in-game widescreen wasn't working well, I've yet to resume work on that.

I'll have to check on that issue with the par times, because as far as I remember they "should" work.
Note that in UMAPINFO the name of the field is "partime", while in DMAPINFO it's just "par". Could you share the UMAPINFO you used?

partime = seconds ; Specifies the level's par time.

from libretro-prboom.

robwill80 avatar robwill80 commented on July 30, 2024

Sure. I'll just add that in testing, I found that UMAPINFO worked in tandem with DEHACKED for par times. Using UMAPINFO alone wouldn't show any par times, while only relying on DEHACKED for par times showed a stat for par, but reported it as zero.

Also of note, "InterMusic" doesn't appear to function. I finished a playthrough, and there was no stats screen (I couldn't figure out how to keep both that and the ending cast screen). Instead, the intermission screen appeared, and continued to play the music of the level I just finished.

I'll post my edits below. Sorry, if I messed it up. The edits were done to the PC "BFG Edition" nerve.wad.

UPDATE: I'm removing the UMAPINFO and DEHACKED from this post, and posting slightly modified versions in a new post. This is to try and avoid confusion, narrow down the issues, and provide an update of my own progress of solving this externally of the core. The issues mentioned here are unchanged.

from libretro-prboom.

robwill80 avatar robwill80 commented on July 30, 2024

Okay, I've now modified nerve.wad to function as a second "episode" of Doom 2, similar to how it works in BFG edition. Otherwise, nerve.wad would mess up at least one Demo that plays during the title screen loop (because of replaced maps). The Unity port also shares this bug. I'll detail my findings below, in case someone wants to make or offer their own patch for use with lr-prboom. It's far from perfect, though. There are caveats with the current core.

I'm using the original DOS version of doom2.wad (because it keeps the title screen), and nerve.wad from the BFG Edition (because the new Unity port additions are as yet unsupported). The doom2.wad is unmodified. For nerve.wad, I imported some graphics entries from doom2.wad from the BFG Edition - M_EPISOD, M_EPI1, M_EPI2 (episode selection text) and DMENUPIC (the stat screen background from the XBLA version). I renamed the MAP01 - MAP09 entries to MAP34 - MAP42, and the CWILV00 - CWILV08 entries to CWILV33 - CWILV41.

This is the UMAPINFO text that I added to nerve.wad:

// UMAPINFO for DOOM2

map MAP01
{
	LevelName = "Entryway"
	Label = "Level 1"
	LevelPic = "CWILV00"
	ParTime = 30
	Episode = "M_EPI1", "Hell on Earth", "H"
}

// UMAPINFO for NERVE

map MAP34
{
	LevelName = "The Earth Base"
	Label = "Level 1"
	LevelPic = "CWILV33"
	Next = "MAP35"
	SkyTexture = "SKY1"
	Music = "D_MESSAG"
	ExitPic = "DMENUPIC"
	ParTime = 75
	Episode = "M_EPI2", "No Rest for the Living", "N"
}

map MAP35
{
	LevelName = "The Pain Labs"
	Label = "Level 2"
	LevelPic = "CWILV34"
	Next = "MAP36"
	SkyTexture = "SKY1"
	Music = "D_DDTBLU"
	ExitPic = "DMENUPIC"
	ParTime = 105
}

map MAP36
{
	LevelName = "Canyon of the Dead"
	Label = "Level 3"
	LevelPic = "CWILV35"
	Next = "MAP37"
	SkyTexture = "SKY1"
	Music = "D_DOOM"
	ExitPic = "DMENUPIC"
	ParTime = 120
}

map MAP37
{
	LevelName = "Hell Mountain"
	Label = "Level 4"
	LevelPic = "CWILV36"
	Next = "MAP38"
	NextSecret = "MAP42"
	SkyTexture = "SKY3"
	Music = "D_SHAWN"
	ExitPic = "DMENUPIC"
	ParTime = 105
}

map MAP38
{
	LevelName = "Vivisection"
	Label = "Level 5"
	LevelPic = "CWILV37"
	Next = "MAP39"
	SkyTexture = "SKY3"
	Music = "D_IN_CIT"
	ExitPic = "DMENUPIC"
	ParTime = 210
}

map MAP39
{
	LevelName = "Inferno of Blood"
	Label = "Level 6"
	LevelPic = "CWILV38"
	Next = "MAP40"
	SkyTexture = "SKY3"
	Music = "D_THE_DA"
	ExitPic = "DMENUPIC"
	ParTime = 105
}

map MAP40
{
	LevelName = "Baron's Banquet"
	Label = "Level 7"
	LevelPic = "CWILV39"
	Next = "MAP41"
	SkyTexture = "SKY3"
	Music = "D_IN_CIT"
	ExitPic = "DMENUPIC"
	ParTime = 165
}

map MAP41
{
	LevelName = "Tomb of Malevolence"
	Label = "Level 8"
	LevelPic = "CWILV40"
	SkyTexture = "SKY3"
	Music = "D_SHAWN"
	ExitPic = "DMENUPIC"
	ParTime = 105
	EndCast = true
	InterText = "TROUBLE WAS BREWING AGAIN IN YOUR FAVORITE",
	"VACATION SPOT... HELL. SOME CYBERDEMON",
	"PUNK THOUGHT HE COULD TURN HELL INTO A",
	"PERSONAL AMUSEMENT PARK, AND MAKE EARTH",
	"THE TICKET BOOTH.",
	"",
	"WELL THAT HALF-ROBOT FREAK SHOW DIDN'T",
	"KNOW WHO WAS COMING TO THE FAIR. THERE'S",
	"NOTHING LIKE A SHOOTING GALLERY FULL OF",
	"HELLSPAWN TO GET THE BLOOD PUMPING...",
	"",
	"NOW THE WALLS OF THE DEMON'S LABYRINTH",
	"ECHO WITH THE SOUND OF HIS METALLIC LIMBS",
	"HITTING THE FLOOR. HIS DEATH MOAN GURGLES",
	"OUT THROUGH THE MESS YOU LEFT OF HIS FACE.",
	"",
	"THIS RIDE IS CLOSED."
	InterBackdrop = "SLIME16"
	InterMusic = "D_READ_M"
}

map MAP42
{
	LevelName = "March of the Demons"
	Label = "Level 9"
	LevelPic = "CWILV41"
	Next = "MAP38"
	SkyTexture = "SKY1"
	Music = "D_DDTBLU"
	ExitPic = "DMENUPIC"
	ParTime = 135
}

Some issues with the core, here. UMAPINFO's "Label" key doesn't appear to work. It doesn't affect the text label shown on the map screen. Next, as mentioned in an earlier post, "ParTime" doesn't appear to work independently. It will work, provided that an additional DEHACKED text entry is added with Par information. I'll add that below. Finally, as mentioned earlier, "InterMusic" doesn't appear to work. In the position where I placed it, to accompany the ending text, the music that played during the level will continue instead.

This is the DEHACKED text that I added to nerve.wad:

Patch File for DeHackEd v3.0
# Created with WhackEd4 1.2.0 BETA
# Note: Use the pound sign ('#') to start comment lines.

Doom version = 21
Patch format = 6

[PARS]
par  01 30
par  34 75
par  35 105
par  36 120
par  37 105
par  38 210
par  39 105
par  40 165
par  41 105
par  42 135

I have tested the levels that form "No Rest for the Living," and they appear to work properly, except from the above issues. As for "Hell on Earth," I've only yet had time to play up until MAP07, to see that the intermission screen still appears. UMAPINFO additions appear to give way to original coding as the first level ends, as I was hoping. But I will update later if I find any other issues.

from libretro-prboom.

robwill80 avatar robwill80 commented on July 30, 2024

Having looked at the WADs, there would be 2 issues with using DMAPINFO as a compatibility fix for this core.

First, at least with No Rest for the Living, the DMAPINFO has no code included to bypass an intermission before MAP07. The expansion as written does not have an intermission there, while Doom 2 does.

Second, the version of Sigil used for the Unity port is the "compat" version, the one which replaces episode 3 of Ultimate Doom. While that in itself is fine, the documentation of this core claims compatibility with the "normal" version of Sigil. As I wrote in another thread, there are issues with the current implementation.

from libretro-prboom.

Related Issues (20)

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.