Jump to content

EMAPINFO, nextlevel, killfinale, and Doom 1's episodes


Recommended Posts

I'm working on a new version of the Jaguar TC for Doom 1 and it uses EXMX lump numbers for compatibility with the vanilla exes. For ports that allow it I'd like to have the map set function as a single "episode" like the original game. I can't seem to get this to work with Eternity though, both killfinale and nextlevel are ignored in E1M8 and E2M8, which show their end text and end pics like normal, and never load the next level. Is there anything I need to do to get this working or is doing this simply not supported? My EMAPINFO for them is pretty simple:

[E1M8]
boss-specials = E1M8
killfinale = true
nextlevel = E2M1

[E2M8]
killfinale = true
nextlevel = E3M1

Now, I got around this by making copies of these two maps with different lump names and having E1M7 and E2M7 exit to those instead. That corrects the end text problem, but the game still acts like it's in E1/E2 when entering the next level. The wrong intermission screen is shown, the wrong level names, etc., and E2M1 will exit to E1M2 if the nextlevel isn't specified. I guess that's my fault for not defining all of those things, but I wanted to bring it up incase it's something unintended.

Edit: Yeah, I've pretty much given up on getting this to work with Eternity. I'll still include the lump to give some of the E3 maps their proper sky, but it's going to stay episode based like vanilla.

Share this post


Link to post

This must be some kind of bug, as far as the finale not disabling. I will try to track that down.

But, EE does not support overriding the episode map or any such thing yet. At best all you could do is replace the map with a static background screen for each map.

You also need to specify skies for each map if you expect that kind of thing to change in the middle of an episode. Otherwise the default is determined by what episode the game believes it is in. If you start in 1, that stays as 1, and that is by design.

EDIT: I found it. G_DoCompleted is setting gameaction to ga_victory if gamemap is 8, unconditionally. I'll fix that up.

Share this post


Link to post

Cool, glad to see it will be fixed, even if I probably won't be taking advantage of it at this time.

I think you should consider allowing the episode maps to be specified, however. It was actually ZDoom's behavior with the maps that made me decide to leave them in place, even though the Jaguar version didn't have them. I hadn't intended for it to happen, but when I was testing E1M8 in ZDoom, the E1 map was shown during the stats, then automatically changed over to E2 for the "ENTERING" screen. It's a really cool effect.

Anyway, I'll probably be keeping Eternity episode based for now, unless there are plans to allow the interpic variable to override the E1-3 maps.

Share this post


Link to post
Dragonsbrethren said:

Anyway, I'll probably be keeping Eternity episode based for now, unless there are plans to allow the interpic variable to override the E1-3 maps.

I'll consider fast-tracking this. It's been in the back of my mind for a really long time ;)

Share this post


Link to post

Excellent, thanks Quasar. Is there anyway of overriding the episode selection screen? The wiki mentions an EMENUS lump but there's no information about it that I can see.

Share this post


Link to post
Dragonsbrethren said:

Excellent, thanks Quasar. Is there anyway of overriding the episode selection screen? The wiki mentions an EMENUS lump but there's no information about it that I can see.


Here is an example, which overrides the Ultimate Doom episode menu to add a 5th episode:

stdinclude("root.edf");

menu Ep5_Episode_Menu
{
   item { type = title;  patch = "M_EPISOD" }
   item { type = gap }
   item { type = runcmd; patch = "M_EPI1";   cmd = "mn_episode 1" }
   item { type = runcmd; patch = "M_EPI2";   cmd = "mn_episode 2" }
   item { type = runcmd; patch = "M_EPI3";   cmd = "mn_episode 3" }
   item { type = runcmd; patch = "M_EPI4";   cmd = "mn_episode 4" }
   item { type = runcmd; patch = "M_UNLSHD"; cmd = "mn_start_mapname E5M0" }
   
   x = 40;
   y = 30;
   first = 2;
   flags = skullmenu;
}

mn_episode = Ep5_Episode_Menu;

Share this post


Link to post

Thanks for the example. I tried using it, but Eternity terminates immediately:

E_ProcessEDF: Loading root file ./base/root.edf
Error at ./base/sprites.edf:15:
Same thing with both the 3.37.00 release and the latest SVN build.

Share this post


Link to post
Dragonsbrethren said:

Thanks for the example. I tried using it, but Eternity terminates immediately:

E_ProcessEDF: Loading root file ./base/root.edf
Error at ./base/sprites.edf:15:
Same thing with both the 3.37.00 release and the latest SVN build.

What the hell? There's no error message? There's supposed to be a second line of information after that which tells what the actual problem is o_O

Share this post


Link to post

I just realized it does give an error with 3.37.00, just not the SVN build:

E_ProcessEDF: Loading root file ./base/root.edf
Error at ./base/sprites.edf:15:
no such option 'spritenames'


SVN cuts off before the error and pops up the endoom window.

Share this post


Link to post

Also, the fix for killfinale seems to prevent switch and walkover exit lines from working in any map with it set. Switches switch but nothing happens, you walk right through a walkover like it's not even there, so you're stuck in the map.

Share this post


Link to post
Dragonsbrethren said:

Also, the fix for killfinale seems to prevent switch and walkover exit lines from working in any map with it set. Switches switch but nothing happens, you walk right through a walkover like it's not even there, so you're stuck in the map.

Damn. Any chance you have a wad I can test this out on, so I don't have to make one myself? :P

EDIT: Oh also, your syntax problem is you are using stdinclude() inside EMENUS. You don't need to (and cannot, outside of edf-branch) do that. My example was written assuming that you were pasting it into a root EDF, such as a file. Sorry because I should have realized this and told you sooner.

SUPER EDIT: Never mind, I have found the problem already. My previous fix ignored the return there, because my eye thought it was a break given its position in a switch statement... >_>

Share this post


Link to post

Great, the menu is working now. I have yet another question, is it possible to change what palette range gets translated for colored text? I have a recolored small font in the wad (using the darker range of reds, to match the large Jaguar font), and none of the menu text is colored.

(This also affects PrBoom+ and it's much worse there because you can't even tell what you have selected except for a few pixels I must've missed recoloring.)

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...