Comments (6)
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.
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.
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?
libretro-prboom/doc/umapinfo.txt
Line 27 in de19b11
from libretro-prboom.
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.
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.
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)
- [RAM] High memory usage. HOT 24
- prboom.cfg
- I want to be able to use IWAD alone
- Add aliases for IWADs
- Does not recognize pk3 files
- Does not recognize pk3 files
- Enhanced MIDI emulation support...? HOT 1
- sigil.wad breaks normal access to Episodes 2, 3 and 4 of Ultimate Doom
- Doom Episode 4 par times
- Wii version analog sticks not detected for GCC
- Add a new xbox or ps4 controller style layouts for better weapon switching? HOT 4
- Crashes when viewing the 3rd page of General settings on Nintendo 2DS XL
- Last commits break WAD loading for classic_armv7_a7 HOT 3
- First frame when entering a new level is wrong
- Reloading 'prbmsav0.dsg' sometimes tries to load 'prbmsav1.dsg' instead
- WAD detection (I_FindFile) should not be case sensitive
- SIGIL don't start the right map when used with doom.wad HOT 5
- Linux IWAD issues - Doom1.wad megawads don't work (Bug)
- Compiling libretro-prboom with gcc-14 requires -D_POSIX_C_SOURCE=199309L
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libretro-prboom.