Jump to content

RUDE: another chocolate-doom fork


Recommended Posts

 @Quasar: I've reverted the medusa fix (with MBF code) and restored the original code and merged your emulation branch. Planisphere 2 doesn't crash either but there i don't see any effect.
 @fabian: Which compiler are you using? For me Planisphere 2 (2016 version) crashes with the VS 2017 build and i think it's the same code, the map uses DeepBSP nodes and seems it's a compiler bug related to subsectors loading.

Edited by drfrag

Share this post


Link to post
14 hours ago, Voltcom said:

Hey I'm intrigued by this port but what does it really do that makes it different than Crispy?

It modifies some stuff like the pistol and has a new difficulty from LZDoom.

Edited by TheNoob_Gamer

Share this post


Link to post
22 hours ago, drfrag said:

@fabian: Which compiler are you using? For me Planisphere 2 (2016 version) crashes with the VS 2017 build and i think it's the same code, the map uses DeepBSP nodes and seems it's a compiler bug related to subsectors loading.

I know planisf2.wad, but I don't know what you mean by the 2016 version. Where can I find it?

Also, do you mean that Crispy crashes upon loading the map or your own port?

The compiler for windows builds should be some sort of mingw. You'll have to ask @fraggle for details, because the builds are created on his machine. 

Share this post


Link to post

 I explained what this is about in the first post. Actually i've removed the new skill level from the menu in LZDoom, it's not the same and here i've done what i wanted to do. I think Unholy Massacre is great and quite challenging, nothing to do with nightmare, here you face double the monsters and ammo balance is very tight (and there's less health), you'd better use the pistol and even the punch as much as possible (i've tweaked them a bit for this skill) or try to leave some baddies alone.
 Now i want to make the switch to SDL2 if i get support to pay another internet connection (see the LZDoom thread).
 
 I can't remember where i got it (i think from a doomworld thread not idgames), there was a version from 2012 without nodes and that one doesn't work, the one from 2016 with DeepBSP nodes does both here and in Crispy. It runs in my fork with the MinGW build (release) but crashes with VS 2017, i suspect the same will happen with Crispy (AFAIK it's the same code for that stuff).

https://www.doomworld.com/forum/topic/61701-planisphere-2/

Edited by drfrag

Share this post


Link to post
17 hours ago, drfrag said:

i suspect the same will happen with Crispy (AFAIK it's the same code for that stuff).

 

Not necessarily, if you only pick the one commit that introduces a feature but not the follow-ups. Any chance to build a Crispy binary with VS2017 and see if that crashes, too?

Edited by fabian

Share this post


Link to post

 I've managed to compile Crispy after changing #include <doomstat.h> in r_swirl.c to #include "doomstat.h".
 As expected the crash is the same. BTW Crispy doesn't launch without the sound libs and why are you using libmad and not libmpg123?
 The medusa emulation works well but cybie2.wad hangs after a while. Crispy also hangs (5.6.2), i used the "chainsaw" a lot near the parking looking at the vehicles but seems it doesn't matter, may be it's the dehacked patch.

 >	crispy-doom.exe!P_GroupLines() Line 791	C
 	crispy-doom.exe!P_SetupLevel(int episode, int map, int playermask, skill_t skill) Line 1235	C
 	crispy-doom.exe!G_DoLoadLevel() Line 857	C
 	crispy-doom.exe!G_InitNew(skill_t skill, int episode, int map) Line 2418	C
 	crispy-doom.exe!G_DoNewGame() Line 2222	C
 	crispy-doom.exe!G_Ticker() Line 1110	C
 	crispy-doom.exe!RunTic(ticcmd_t * cmds, boolean * ingame) Line 95	C
 	crispy-doom.exe!TryRunTics() Line 798	C
 	crispy-doom.exe!D_RunFrame(...) Line 508	C
 	crispy-doom.exe!D_DoomLoop() Line 576	C
 	crispy-doom.exe!D_DoomMain() Line 2397	C
 	crispy-doom.exe!SDL_main(int argc, char * * argv) Line 79	C
 	crispy-doom.exe!main_getcmdline(...) Line 177	C
 	crispy-doom.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int sw) Line 205	C

+		&segs	0x00d4876c {crispy-doom.exe!seg_t  *segs} {0x043db79c {v1=0x03a93134 {x=45875200 y=-801374208 r_x=45875200 ...} ...}}	seg_t * *
+		&segs[ss->firstline]	0x04c1b79c {v1=0xcdcdcdcd {x=??? y=??? r_x=??? ...} v2=0xcdcdcdcd {x=??? y=??? r_x=??? ...} offset=-842150451 ...}	seg_t *
		i	0	int
		numsubsectors	17352	int
-		seg	0x04c1b79c {v1=0xcdcdcdcd {x=??? y=??? r_x=??? ...} v2=0xcdcdcdcd {x=??? y=??? r_x=??? ...} offset=-842150451 ...}	seg_t *
+		v1	0xcdcdcdcd {x=??? y=??? r_x=??? ...}	vertex_t *
+		v2	0xcdcdcdcd {x=??? y=??? r_x=??? ...}	vertex_t *
		offset	-842150451	int
		angle	3452816845	unsigned int
+		sidedef	0xcdcdcdcd {textureoffset=??? rowoffset=??? toptexture=??? ...}	side_t *
+		linedef	0xcdcdcdcd {v1=??? v2=??? dx=??? ...}	line_s *
+		frontsector	0xcdcdcdcd {floorheight=??? ceilingheight=??? floorpic=??? ...}	sector_t *
+		backsector	0xcdcdcdcd {floorheight=??? ceilingheight=??? floorpic=??? ...}	sector_t *
		length	3452816845	unsigned int
		r_angle	3452816845	unsigned int
		fakecontrast	-842150451	int
+		seg->sidedef	0xcdcdcdcd {textureoffset=??? rowoffset=??? toptexture=??? ...}	side_t *
+		ss	0x0424a6ec {sector=0xcdcdcdcd {floorheight=??? ceilingheight=??? floorpic=??? ...} numlines=4 firstline=...}	subsector_s *
		ss->firstline	196608	int
+		ss->sector	0xcdcdcdcd {floorheight=??? ceilingheight=??? floorpic=??? ...}	sector_t *

 

Share this post


Link to post

Looks like structs aren't properly packed when compiled with MSVC.

 

Could you try if the following patch helps?

 

--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -69,8 +69,12 @@
 #define PRINTF_ARG_ATTR(x) __attribute__((format_arg(x)))
 #define NORETURN __attribute__((noreturn))

+#else
+#if defined(_MSC_VER)
+#define PACKEDATTR __pragma(pack(pop))
 #else
 #define PACKEDATTR
+#endif
 #define PRINTF_ATTR(fmt, first)
 #define PRINTF_ARG_ATTR(x)
 #define NORETURN
@@ -78,6 +82,8 @@

 #ifdef __WATCOMC__
 #define PACKEDPREFIX _Packed
+#elif defined(_MSC_VER)
+#define PACKEDPREFIX __pragma(pack(push,1))
 #else
 #define PACKEDPREFIX
 #endif

 

Share this post


Link to post

Yep, that fixed it. Don't forget to change the include.

BTW guys i still need help to get a new internet connection.:(

Share this post


Link to post
On 12/9/2019 at 9:18 PM, drfrag said:

The medusa emulation works well but cybie2.wad hangs after a while. Crispy also hangs (5.6.2), i used the "chainsaw" a lot near the parking looking at the vehicles but seems it doesn't matter, may be it's the dehacked patch.

 

What do you mean it "hangs", could you elaborate a bit?

Share this post


Link to post

Uploaded another test build with the latest changes from SmileTheory's v0.99 PR and Quasar's medusa emulation (tested in cybie2.wad). I reverted my slowdown emulation since it made Planisphere 2 unplayable (it's full of medusas but you don't see them). I bet medusas will be slow on a pentium anyway.

https://github.com/drfrag666/chocolate-doom/releases/download/2.5.0c/RUDE-2.5.0c-win32.zip

Share this post


Link to post
On 12/16/2019 at 6:02 PM, drfrag said:

 Exactly that, the application stops responding but it's not a crash.

 

Is this with plain Crispy Doom or did you apply some patch? Sorry, but I cannot seem to reproduce this. Would you mind sharing a savegame or a screenshot of the critical location on the automap?

Share this post


Link to post

 Sorry seems it's gone now in 5.6.3, so it must have been fixed after 5.6.2. I was testing with Crispy 5.6.2 in a window on win10 64 bit. Hanging it took a while so i'm not completely sure it's gone. I was near the parking lot looking at the vehicles using the "chainsaw".

Share this post


Link to post

I suspect someting wrong with the dehacked patch, with break all under VS i get this wall of text for the main thread:
 

>    crispy-doom.exe!PIT_CheckThing(mobj_s * thing) Line 462    C
     crispy-doom.exe!P_BlockThingsIterator(int x, int y, boolean(*)(mobj_s *) func) Line 529    C
     crispy-doom.exe!P_CheckPosition(mobj_s * thing, int x, int y) Line 546    C
     crispy-doom.exe!P_TryMove(mobj_s * thing, int x, int y) Line 582    C
     crispy-doom.exe!P_Move(mobj_s * actor) Line 302    C
     crispy-doom.exe!A_Chase(mobj_s * actor) Line 786    C
     crispy-doom.exe!P_SetMobjState(mobj_s * mobj, statenum_t state) Line 80    C
     crispy-doom.exe!P_MobjThinker(mobj_s * mobj) Line 587    C
     crispy-doom.exe!P_RunThinkers() Line 113    C
     crispy-doom.exe!P_Ticker() Line 152    C
     crispy-doom.exe!G_Ticker() Line 1265    C
     crispy-doom.exe!RunTic(ticcmd_t * cmds, boolean * ingame) Line 95    C
     crispy-doom.exe!TryRunTics() Line 798    C
     crispy-doom.exe!D_RunFrame(...) Line 508    C
     crispy-doom.exe!D_DoomLoop() Line 576    C
     crispy-doom.exe!D_DoomMain() Line 2397    C
     crispy-doom.exe!SDL_main(int argc, char * * argv) Line 79    C
     crispy-doom.exe!main_getcmdline(...) Line 177    C
     crispy-doom.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int sw) Line 205    C

        blockdist    2621440    int
        damage    -858993460    int
        solid    -858993460    boolean
+        thing    0x034b470c {thinker={prev=0x034b4644 {prev=0x034b457c {prev=0x034b44b4 {prev=0x034b43ec {prev=0x034b4324 {...} ...} ...} ...} ...} ...} ...}    mobj_s *
        unblocking    false (0)    boolean

        MF_SOLID    MF_SOLID (2)    mobjflag_t
-        thing    0x034b470c {thinker={prev=0x034b4644 {prev=0x034b457c {prev=0x034b44b4 {prev=0x034b43ec {prev=0x034b4324 {...} ...} ...} ...} ...} ...} ...}    mobj_s *
+        thinker    {prev=0x034b4644 {prev=0x034b457c {prev=0x034b44b4 {prev=0x034b43ec {prev=0x034b4324 {prev=0x034b425c {...} ...} ...} ...} ...} ...} ...}    thinker_s
        x    -299845216    int
        y    -47773792    int
        z    -4194304    int
+        snext    0x034b457c {thinker={prev=0x034b44b4 {prev=0x034b43ec {prev=0x034b4324 {prev=0x034b425c {prev=0x034b4194 {...} ...} ...} ...} ...} ...} ...}    mobj_s *
+        sprev    0x00000000 <NULL>    mobj_s *
        angle    1073741824    unsigned int
        sprite    SPR_BOSS (42)    spritenum_t
        frame    3    int
+        bnext    0x034c73d4 {thinker={prev=0x034c730c {prev=0x034c7244 {prev=0x034c717c {prev=0x034c70b4 {prev=0x034c6fec {...} ...} ...} ...} ...} ...} ...}    mobj_s *
+        bprev    0x00000000 <NULL>    mobj_s *
+        subsector    0x03394760 {sector=0x03280c18 {floorheight=-4194304 ceilingheight=12582912 floorpic=37 ...} numlines=...}    subsector_s *
        floorz    -4194304    int
        ceilingz    12582912    int
        radius    1310720    int
        height    3670016    int
        momx    0    int
        momy    0    int
        momz    0    int
        validcount    0    int
        type    MT_BRUISER (15)    mobjtype_t
+        info    crispy-doom.exe!0x00d8fbd0 {doomednum=3003 spawnstate=527 spawnhealth=120 ...}    mobjinfo_t *
        tics    3    int
+        state    crispy-doom.exe!0x00d7775c {sprite=SPR_BOSS (42) frame=3 tics=3 ...}    state_t *
        flags    1077936134    int
        health    120    int
        movedir    2    int
        movecount    1    int
+        target    0x034ad07c {thinker={prev=0x034acfb4 {prev=0x034aceec {prev=0x034ace24 {prev=0x034acd5c {prev=0x034acc94 {...} ...} ...} ...} ...} ...} ...}    mobj_s *
        reactiontime    0    int
        threshold    0    int
+        player    0x00000000 <NULL>    player_s *
        lastlook    0    int
+        spawnpoint    {x=-4624 y=-760 angle=180 ...}    mapthing_t
+        tracer    0x00000000 <NULL>    mobj_s *
        interp    1    int
        oldx    -299845216    int
        oldy    -48560224    int
        oldz    -4194304    int
        oldangle    1073741824    unsigned int
        thing->flags    1077936134    int
        unblocking    false (0)    boolean

 

Share this post


Link to post

I have created a savegame with Crisp which I can load in Choco without crahing, but of course the fence will look corrupted. I can still get it to hang in the exact same code loop, then.

Share this post


Link to post

 For me it didn't hang without the dehacked patch, may be the patch is bad but i doubt it hung in PRBoom.

Share this post


Link to post

I think it has to do with the patch removing the NOBLOCKMAP flag from certain projectiles, but a detailed analysis will have to wait.

Share this post


Link to post

I've merged with Choco3 and it's working but needs testing. That's why i've released a test build.

https://github.com/drfrag666/chocolate-doom/releases/tag/3.1.0pre

 

Next i want to port Widescreen from Russian Doom but i want it to be an option and as less intrusive as possible so the idea is to make it work only at max screen size. And i want to add the mugshot (only) for that mode.

Share this post


Link to post
  • 2 weeks later...

Another source port that says it supports sigil. Argh. Sigil is vanilla compatible and there is no need to write additional part of code that just prints a "Sigil" word in the episode menu and some more.

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...