Wolf3d Haven Forum

Please log in or register. Smile

Join the forum, it's quick and easy

Wolf3d Haven Forum

Please log in or register. Smile

Wolf3d Haven Forum

Would you like to react to this message? Create an account in a few clicks or log in to continue.
Wolf3d Haven Forum

A friendly Wolfenstein 3D community, about Wolfenstein 3D, the game that gave birth to first person shooters...


+16
KasuPL
stathmk
Dark_wizzie
wolfie
WolferCooker
-Cobra-
ronwolf1705
Tragos2d
Metalor
Nexion
linuxwolf
Per-Scan
dosfan1990
Thomas
aarach
Mortimer
20 posters

    [Beta 2 Artpack 1.0 released] SplitWolf

    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Tue Mar 20, 2012 7:51 am

    First topic message reminder :

    Beta 2 released!

    Splitwolf beta 2 - from 25.11.2012

    (video of pre-Beta 1....meaning old)


    New in this version:

    Support of more Wolf3D/Spear versions, new art and animations (including (but not only) new Boss art by Untrustable), many bugfixes (including art fix of the famous "missing frame"), tweaks and changes based on user feedback to improve the coop experience (for example player 1 is now intuitively on the right screen etc....have fun discovering the rest of the tweaks yourself), tweaks of one of the Boss fights (find out yourself why it's not a good idea to die during that one)...and more things you have to discover yourself Smile

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Beta2_1

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Beta2_2

    SplitScreen for up to 4 players in cooperative mode on a single PC!!! (SDL)
    Support for both vertical and horizontal splitscreen!
    Minimap/radar support.

    Coding: LinuxWolf
    Additional art: DoomJedi
    New Boss art by Untrustable
    Beta testing by HexaDoken

    Readme:
    Spoiler:


    Last edited by doomjedi on Thu Jun 12, 2014 8:25 am; edited 17 times in total
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Fri Mar 22, 2013 12:45 am











    Dark_wizzie
    Dark_wizzie
    I am Death Incarnate!
    I am Death Incarnate!


    Female
    Number of posts : 5120
    Age : 30
    Location : California, USA
    Job : Investor
    Hobbie : Computers, chess, computer chess, fashion, and philosophy
    Message : I made this forum when I was 13 High on Drugs
    Registration date : 2007-03-24

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Dark_wizzie Sat Mar 23, 2013 4:19 am

    Very cool. It's be interesting to see maps which are designed so you need two players to effectively beat...
    The main problem of course, is how difficult it is to find two wolf players on at same time to conviniently play such a thing.



    Wolf3d Haven
    Minute Logic Blog
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Sat Mar 23, 2013 4:51 am

    The videos play old beta 1 BTW, as you can notice (not only by "pre beta 2" dates of those videos).
    Noone here at the community offered to make a pack of coop levels.
    I myself don't see any reasons for such zero offerings beside the "how difficult it is to find two wolf players on at same time to conviniently play such a thing." you've mentioned.

    Wolfers should try to meet each other in the real world...we have here even wolfers from the same countries....
    Dark_wizzie
    Dark_wizzie
    I am Death Incarnate!
    I am Death Incarnate!


    Female
    Number of posts : 5120
    Age : 30
    Location : California, USA
    Job : Investor
    Hobbie : Computers, chess, computer chess, fashion, and philosophy
    Message : I made this forum when I was 13 High on Drugs
    Registration date : 2007-03-24

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Dark_wizzie Sat Mar 23, 2013 5:54 am

    doomjedi wrote:The videos play old beta 1 BTW, as you can notice (not only by "pre beta 2" dates of those videos).
    Noone here at the community offered to make a pack of coop levels.
    I myself don't see any reasons for such zero offerings beside the "how difficult it is to find two wolf players on at same time to conviniently play such a thing." you've mentioned.

    Wolfers should try to meet each other in the real world...we have here even wolfers from the same countries....
    Yes, but that's is a big factor. If somebody lives in California and wants to visit me or stay a night or two to check out the are (San Francisco is less than an hour's drive away... if you drive quickly)

    I'm not sure how I would go about making a level designed for two players, actually. What do you think?



    Wolf3d Haven
    Minute Logic Blog
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Sat Mar 23, 2013 10:03 am

    Dark_wizzie wrote:)I'm not sure how I would go about making a level designed for two players, actually. What do you think?
    What do I think of what? you making coop levels?

    Why not? Make good maps, and we'll include those (with credit) in SplitWolf.
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Wed May 22, 2013 10:42 pm

    Mix of "SplitWolf" art and Afadoomer's Wolf3D TC for zDoom creates the closest experience for real Wolf3D coop multiplayer you can get at this point of time.

    Dark_wizzie
    Dark_wizzie
    I am Death Incarnate!
    I am Death Incarnate!


    Female
    Number of posts : 5120
    Age : 30
    Location : California, USA
    Job : Investor
    Hobbie : Computers, chess, computer chess, fashion, and philosophy
    Message : I made this forum when I was 13 High on Drugs
    Registration date : 2007-03-24

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Dark_wizzie Thu May 23, 2013 1:53 am

    Let's play that, but I'll block Stathmk through a door so he can't get through and I'll hog all the ammo. XD
    Just a funny thought. And what happens if I shoot the other player?



    Wolf3d Haven
    Minute Logic Blog
    stathmk
    stathmk
    Veteran
    Veteran


    Male
    Number of posts : 1791
    Age : 44
    Location : Indiana, United States
    Job : fast food worker & wolfensteingoodies.com webmaster
    Hobbie : old games & young dames
    Registration date : 2008-04-08

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Sure.

    Post by stathmk Thu May 23, 2013 11:25 am

    Dark_wizzie wrote:Let's play that, but I'll block Stathmk through a door so he can't get through and I'll hog all the ammo. XD
    Just a funny thought. And what happens if I shoot the other player?
    Sure. Just let me have a turn doing that to you.
    avatar
    KasuPL
    Wolf3d n00b
    Wolf3d n00b


    Male
    Number of posts : 3
    Age : 26
    Location : Poland
    Registration date : 2013-06-12

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by KasuPL Wed Jun 12, 2013 10:42 am

    Do SplitWolf (multiplayer) will be compatible with mods for Wolfenstein SDL port?

    Sorry for bad English. Nice project.
    Thanks.
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Wed Jun 12, 2013 11:10 am

    KasuPL wrote:Do SplitWolf (multiplayer) will be compatible with mods for Wolfenstein SDL port?






    Thank you for your interest in our project, and I'm very pleased to read that you like it.

    This particular question was asked (and answered) quite some times before.

    1. Coding-wise - as almost any actual mod (that is beyond a mappack) used a unique set of coding features (not to mention different amount of enemies, actors etc....) - "SplitWolf" engine will need a unique coding adjustment for support of any particular mod (maybe beside some generic coding features/functions/tutorials that might (?) be able to receive auto-recognition by the engine). As there are endless amount of mods - I strongly doubt our coder will do such adjustments.
    This - unless LinuxWolf will release the source to the public - and people (those mod makers of mod's diehard fans) will do those adjustments for themselves. Currently the source is not released - and for more details you can address our coder LinuxWolf directly.

    2. Artwise - in "SplitWolf" engine - each player character (especially non-BJ) and each new enemy character will need 8-directional shooting, ready-to-shoot, and pain frames (and 8-dir Boss art too) - art for such cannot be expected to be made/supplied by "SplitWolf" makers (as we have endless amount of possible enemies in Wolf3D mods) - but by the mod maker himself for his particular mod. This is not an easy art task - unless you use enemies from Doom or Build Engine games which already have such frames... I did prepare some frames for basic Wolf3D mods enemy types - but those are far from enouph.
    And to add additional enemies beyond Wolf3D ones - again - LinuxWolf will need to agree to release the source. Which he currently does not.

    Currently "SplitWolf" supports Wolf3D, "Spear of Destiny", and any classic Wolf3D mappack - and we have alot of those released over the years for both DOS and Wolf4SDL engines. Maybe community can prepare a list of such mappacks "SplitWolf" can run.
    So I don't see you getting our of maps to play so soon.
    Also you can make new maps yourself.
    As some maps can be too easy for coop mode - you're even encouraged to make special coop maps and mappacks - to play - and share with the rest. Made specifically for coop.


    Last edited by doomjedi on Wed Jun 12, 2013 11:59 am; edited 2 times in total
    avatar
    KasuPL
    Wolf3d n00b
    Wolf3d n00b


    Male
    Number of posts : 3
    Age : 26
    Location : Poland
    Registration date : 2013-06-12

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by KasuPL Wed Jun 12, 2013 11:17 am

    OK. Thanks for anwser.

    Regrads. Wink
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Wed Jun 12, 2013 11:57 am

    You're welcome Smile
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Thu Jun 13, 2013 9:51 am

    Also I'd like to mention that original Wolf3D came with a random map generator, if I'm not mistaken.
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Tue Jun 18, 2013 12:58 pm

    "10 new ones" On "SplitWolf":

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 10new

    "Thomas Wolfenstein 3-D Mapset" on "SplitWolf" Smile

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Thomas

    "Odds and Ends" on "SplitWolf" Smile

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Odds

    "Bitter End" on SplitWolf" Smile

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Bitter
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Wed Jun 11, 2014 1:12 am

    I (hopefully) will release later today an updated artpack for "SplitWolf" with many improved frames and maybe even new ones.
    Still trying to convince LinuxWolf for Beta 3 or at least Beta 2.5. But he is indeed very busy with other projects. So I try to do what I can at least artwise.

    UPDATE:: Due to unexpected delay the release will be postponed by a day or two.
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Thu Jun 12, 2014 7:08 am

    Till I'll update this at ModDB, here is the direct link and details of the new artpack:

    https://dl.dropboxusercontent.com/u/3751922/SplitWolf_ArtPack1_lwmp.rar

    12.06.2014

    This is an art patch 1.0 for "SplitWolf" (beta 2)
    http://www.moddb.com/mods/splitwolf

    Just replace the original lwmp folder with this one (deleting or overwriting the original folder)

    What's new?
    =============
    Better player and SS sprites (by DoomJedi)
    Fett and Otto 8-directional Boss frames (by UnTrustable)

    Special thanks for Untrustable for the Boss frames.
    http://forum.zdoom.org/viewtopic.php?f=19&t=33447
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Fri Jun 13, 2014 4:27 am

    Updated the dropbox link again with some quick art fixes. Nothing critical though.
    So re-download only if you're as perfectionist as myself Smile
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Fri Jun 13, 2014 4:13 pm

    Updated it once again with Hans and Gretel 8-dir frame guns recolored from grey to Wolf3D blue for consistency.
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Mon Jun 23, 2014 4:48 am

    First beta 2 video on youtube:

    I know, quality stinks, and my commentating wasn't very good. I was kind of in a bad mood, but I thought I should still upload it and support you guys Smile

    D3m3
    D3m3
    Can I Play, Daddy?
    Can I Play, Daddy?


    Male
    Number of posts : 41
    Age : 25
    Registration date : 2014-06-16

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by D3m3 Sat Nov 08, 2014 8:16 am

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Wolf4s10
    Found a nasty bug after folding and then unfolding port
    I would also like to know the list of supported mods
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Sat Nov 08, 2014 11:00 am

    D3m3 wrote:Found a nasty bug after folding and then unfolding port
    Can you give us more details about what action/event created the bug?

    I would also like to know the list of supported mods
    Well, I didn't test all mods...here are some I've tested to work:
    > "SoD Extreme http://www.moddb.com/members/doomjedi/addons/sod-extreme"
    > "Odds and Ends"
    > "Bitter End'
    > "10 new ones"
    > "Thomas Wolfenstein 3-D Mapset"

    Hope you enjoy our work! Smile


    Last edited by doomjedi on Sat Nov 08, 2014 10:10 pm; edited 2 times in total
    Andy
    Andy
    Seasoned Wolfer
    Seasoned Wolfer


    Number of posts : 280
    Registration date : 2007-12-22

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Andy Sat Nov 08, 2014 2:09 pm

    doomjedi wrote:
    D3m3 wrote:Found a nasty bug after folding and then unfolding port
    Can you give us more details about what action/event created the bug?

    It's an old Wolf4SDL problem that was fixed in revision 259 (post version 1.7), details are here.

    SVN log:

    The SVN repository is no longer available, so to apply this fix to already-changed "back-level" code, you have to manually apply this delta which I happen to have saved:

    Code:
    Index: wl_draw.cpp

    ===================================================================
    --- wl_draw.cpp (revision 258)
    +++ wl_draw.cpp (revision 259)
    @@ -1552,7 +1552,9 @@
         spotvis[player->tilex][player->tiley] = 1;       // Detect all sprites over player fix
     
         vbuf = VL_LockSurface(screenBuffer);
    -    vbuf+=screenofs;
    +    if(vbuf == NULL) return;
    +
    +    vbuf += screenofs;
         vbufPitch = bufferPitch;
     
         CalcViewVariables();
    Index: id_in.cpp
    ===================================================================
    --- id_in.cpp (revision 258)
    +++ id_in.cpp (revision 259)
    @@ -61,6 +61,7 @@
     static int JoyNumHats;
     
     static bool GrabInput = false;
    +static bool NeedRestore = false;
     
     /*
     =============================================================================
    @@ -327,6 +328,24 @@
                 break;
             }
     
    +        case SDL_ACTIVEEVENT:
    +        {
    +            if(fullscreen && (event->active.state & SDL_APPACTIVE) != 0)
    +            {
    +                if(event->active.gain)
    +                {
    +                    if(NeedRestore)
    +                    {
    +                        FreeLatchMem();
    +                        LoadLatchMem();
    +                    }
    +
    +                    NeedRestore = false;
    +                }
    +                else NeedRestore = true;
    +            }
    +        }
    +
     #if defined(GP2X)
             case SDL_JOYBUTTONDOWN:
                 GP2X_ButtonDown(event->jbutton.button);
    Index: id_vh.h
    ===================================================================
    --- id_vh.h (revision 258)
    +++ id_vh.h (revision 259)
    @@ -90,6 +90,7 @@
     void    LatchDrawPic (unsigned x, unsigned y, unsigned picnum);
     void    LatchDrawPicScaledCoord (unsigned scx, unsigned scy, unsigned picnum);
     void    LoadLatchMem (void);
    +void    FreeLatchMem();
     
     void    VH_Startup();
     boolean FizzleFade (SDL_Surface *source, int x1, int y1,
    Index: id_vl.h
    ===================================================================
    --- id_vl.h (revision 258)
    +++ id_vl.h (revision 259)
    @@ -46,9 +46,6 @@
     byte *VL_LockSurface(SDL_Surface *surface);
     void VL_UnlockSurface(SDL_Surface *surface);
     
    -#define LOCK() VL_LockSurface(curSurface)
    -#define UNLOCK() VL_UnlockSurface(curSurface)
    -
     byte VL_GetPixel        (int x, int y);
     void VL_Plot            (int x, int y, int color);
     void VL_Hlin            (unsigned x, unsigned y, unsigned width, int color);
    Index: id_vh.cpp
    ===================================================================
    --- id_vh.cpp (revision 258)
    +++ id_vh.cpp (revision 259)
    @@ -16,8 +16,11 @@
     int    width, step, height;
     byte    *source, *dest;
     byte    ch;
    + int i;
    + unsigned sx, sy;
     
    -    byte *vbuf = LOCK();
    + byte *vbuf = VL_LockSurface(curSurface);
    + if(vbuf == NULL) return;
     
     font = (fontstruct *) grsegs[STARTFONT+fontnumber];
     height = font->height;
    @@ -32,11 +35,11 @@
     for(int i=0;i<height;i++)
     {
     if(source[i*step])
    -                {
    -                    for(unsigned sy=0; sy<scaleFactor; sy++)
    -                        for(unsigned sx=0; sx<scaleFactor; sx++)
    -         dest[(scaleFactor*i+sy)*curPitch+sx]=fontcolor;
    -                }
    + {
    + for(sy=0; sy<scaleFactor; sy++)
    + for(sx=0; sx<scaleFactor; sx++)
    + dest[(scaleFactor*i+sy)*curPitch+sx]=fontcolor;
    + }
     }
     
     source++;
    @@ -45,7 +48,7 @@
     }
     }
     
    - UNLOCK();
    + VL_UnlockSurface(curSurface);
     }
     
     /*
    @@ -214,6 +217,16 @@
     
     //==========================================================================
     
    +void FreeLatchMem()
    +{
    +    int i;
    +    for(i = 0; i < 2 + LATCHPICS_LUMP_END - LATCHPICS_LUMP_START; i++)
    +    {
    +        SDL_FreeSurface(latchpics[i]);
    +        latchpics[i] = NULL;
    +    }
    +}
    +
     /*
     ===================
     =
    @@ -250,6 +263,8 @@
     }
     UNCACHEGRCHUNK (STARTTILE8);
     
    + latchpics[1] = NULL;  // not used
    +
     //
     // pics
     //
    @@ -351,8 +366,12 @@
     
         frame = GetTimeCount();
         byte *srcptr = VL_LockSurface(source);
    +    if(srcptr == NULL) return false;
    +
         do
         {
    +        IN_ProcessEvents();
    +
             if(abortable && IN_CheckAck ())
             {
                 VL_UnlockSurface(source);
    @@ -363,65 +382,81 @@
     
             byte *destptr = VL_LockSurface(screen);
     
    -        rndval = lastrndval;
    +        if(destptr != NULL)
    +        {
    +            rndval = lastrndval;
     
    -        // When using double buffering, we have to copy the pixels of the last AND the current frame.
    -        // Only for the first frame, there is no "last frame"
    -        for(int i = first; i < 2; i++)
    -        {
    -            for(unsigned p = 0; p < pixperframe; p++)
    +            // When using double buffering, we have to copy the pixels of the last AND the current frame.
    +            // Only for the first frame, there is no "last frame"
    +            for(int i = first; i < 2; i++)
                 {
    -                //
    -                // seperate random value into x/y pair
    -                //
    +                for(unsigned p = 0; p < pixperframe; p++)
    +                {
    +                    //
    +                    // seperate random value into x/y pair
    +                    //
     
    -                x = rndval >> rndbits_y;
    -                y = rndval & ((1 << rndbits_y) - 1);
    +                    x = rndval >> rndbits_y;
    +                    y = rndval & ((1 << rndbits_y) - 1);
     
    -                //
    -                // advance to next random element
    -                //
    +                    //
    +                    // advance to next random element
    +                    //
     
    -                rndval = (rndval >> 1) ^ (rndval & 1 ? 0 : rndmask);
    +                    rndval = (rndval >> 1) ^ (rndval & 1 ? 0 : rndmask);
     
    -                if(x >= width || y >= height)
    -                {
    -                    if(rndval == 0)     // entire sequence has been completed
    +                    if(x >= width || y >= height)
    +                    {
    +                        if(rndval == 0)     // entire sequence has been completed
    +                            goto finished;
    +                        p--;
    +                        continue;
    +                    }
    +
    +                    //
    +                    // copy one pixel
    +                    //
    +
    +                    if(screenBits ==
    +                    {
    +                        *(destptr + (y1 + y) * screen->pitch + x1 + x)
    +                            = *(srcptr + (y1 + y) * source->pitch + x1 + x);
    +                    }
    +                    else
    +                    {
    +                        byte col = *(srcptr + (y1 + y) * source->pitch + x1 + x);
    +                        uint32_t fullcol = SDL_MapRGB(screen->format, curpal[col].r, curpal[col].g, curpal[col].b);
    +                        memcpy(destptr + (y1 + y) * screen->pitch + (x1 + x) * screen->format->BytesPerPixel,
    +                            &fullcol, screen->format->BytesPerPixel);
    +                    }
    +
    +                    if(rndval == 0) // entire sequence has been completed
                             goto finished;
    -                    p--;
    -                    continue;
                     }
     
    -                //
    -                // copy one pixel
    -                //
    +                if(!i || first) lastrndval = rndval;
    +            }
     
    -                if(screenBits ==
    +            // If there is no double buffering, we always use the "first frame" case
    +            if(usedoublebuffering) first = 0;
    +
    +            VL_UnlockSurface(screen);
    +            SDL_Flip(screen);
    +        }
    +        else
    +        {
    +            // No surface, so only enhance rndval
    +            for(int i = first; i < 2; i++)
    +            {
    +                for(unsigned p = 0; p < pixperframe; p++)
                     {
    -                    *(destptr + (y1 + y) * screen->pitch + x1 + x)
    -                        = *(srcptr + (y1 + y) * source->pitch + x1 + x);
    +                    rndval = (rndval >> 1) ^ (rndval & 1 ? 0 : rndmask);
    +                    if(rndval == 0)
    +                        goto finished;
                     }
    -                else
    -                {
    -                    byte col = *(srcptr + (y1 + y) * source->pitch + x1 + x);
    -                    uint32_t fullcol = SDL_MapRGB(screen->format, curpal[col].r, curpal[col].g, curpal[col].b);
    -                    memcpy(destptr + (y1 + y) * screen->pitch + (x1 + x) * screen->format->BytesPerPixel,
    -                        &fullcol, screen->format->BytesPerPixel);
    -                }
    -
    -                if(rndval == 0) // entire sequence has been completed
    -                    goto finished;
                 }
    -
    -            if(!i || first) lastrndval = rndval;
             }
     
    -        // If there is no double buffering, we always use the "first frame" case
    -        if(usedoublebuffering) first = 0;
    -
    -        VL_UnlockSurface(screen);
    -        SDL_Flip(screen);
    -
             frame++;
             Delay(frame - GetTimeCount());        // don't go too fast
         } while (1);
    Index: README.txt
    ===================================================================
    --- README.txt (revision 258)
    +++ README.txt (revision 259)
    @@ -79,7 +79,7 @@
     version.h as described in that file):
     
      - Wolfenstein 3D v1.1 full Apogee
    - - Wolfenstein 3D v1.4 full Apogee (not tested)
    + - Wolfenstein 3D v1.4 full Apogee
      - Wolfenstein 3D v1.4 full GT/ID/Activision
      - Wolfenstein 3D v1.0 shareware Apogee
      - Wolfenstein 3D v1.1 shareware Apogee
    Index: id_vl.cpp
    ===================================================================
    --- id_vl.cpp (revision 258)
    +++ id_vl.cpp (revision 259)
    @@ -425,12 +425,17 @@
     
     void VL_Plot (int x, int y, int color)
     {
    +    byte *ptr;
    +
         assert(x >= 0 && (unsigned) x < screenWidth
                 && y >= 0 && (unsigned) y < screenHeight
                 && "VL_Plot: Pixel out of bounds!");
     
    -    VL_LockSurface(curSurface);
    - ((byte *) curSurface->pixels)[y * curPitch + x] = color;
    +    ptr = VL_LockSurface(curSurface);
    +    if(ptr == NULL) return;
    +
    +    ptr[y * curPitch + x] = color;
    +
         VL_UnlockSurface(curSurface);
     }
     
    @@ -444,14 +449,21 @@
     
     byte VL_GetPixel (int x, int y)
     {
    +    byte *ptr;
    +    byte col;
    +
         assert_ret(x >= 0 && (unsigned) x < screenWidth
                 && y >= 0 && (unsigned) y < screenHeight
                 && "VL_GetPixel: Pixel out of bounds!");
     
    -    VL_LockSurface(curSurface);
    - byte col = ((byte *) curSurface->pixels)[y * curPitch + x];
    +    ptr = VL_LockSurface(curSurface);
    +    if(ptr == NULL) return 0;
    +
    +    col = ((byte *) curSurface->pixels)[y * curPitch + x];
    +
         VL_UnlockSurface(curSurface);
    - return col;
    +
    +    return col;
     }
     
     
    @@ -465,13 +477,17 @@
     
     void VL_Hlin (unsigned x, unsigned y, unsigned width, int color)
     {
    +    byte *ptr;
    +
         assert(x >= 0 && x + width <= screenWidth
                 && y >= 0 && y < screenHeight
                 && "VL_Hlin: Destination rectangle out of bounds!");
     
    -    VL_LockSurface(curSurface);
    -    Uint8 *dest = ((byte *) curSurface->pixels) + y * curPitch + x;
    -    memset(dest, color, width);
    +    ptr = VL_LockSurface(curSurface);
    +    if(ptr == NULL) return;
    +
    +    memset(ptr + y * curPitch + x, color, width);
    +
         VL_UnlockSurface(curSurface);
     }
     
    @@ -486,18 +502,23 @@
     
     void VL_Vlin (int x, int y, int height, int color)
     {
    + byte *ptr;
    +
     assert(x >= 0 && (unsigned) x < screenWidth
     && y >= 0 && (unsigned) y + height <= screenHeight
     && "VL_Vlin: Destination rectangle out of bounds!");
     
    - VL_LockSurface(curSurface);
    - Uint8 *dest = ((byte *) curSurface->pixels) + y * curPitch + x;
    + ptr = VL_LockSurface(curSurface);
    + if(ptr == NULL) return;
     
    + ptr += y * curPitch + x;
    +
     while (height--)
     {
    - *dest = color;
    - dest += curPitch;
    + *ptr = color;
    + ptr += curPitch;
     }
    +
     VL_UnlockSurface(curSurface);
     }
     
    @@ -512,17 +533,21 @@
     
     void VL_BarScaledCoord (int scx, int scy, int scwidth, int scheight, int color)
     {
    + byte *ptr;
    +
     assert(scx >= 0 && (unsigned) scx + scwidth <= screenWidth
     && scy >= 0 && (unsigned) scy + scheight <= screenHeight
     && "VL_BarScaledCoord: Destination rectangle out of bounds!");
     
    - VL_LockSurface(curSurface);
    - Uint8 *dest = ((byte *) curSurface->pixels) + scy * curPitch + scx;
    + ptr = VL_LockSurface(curSurface);
    + if(ptr == NULL) return;
     
    + ptr += scy * curPitch + scx;
    +
     while (scheight--)
     {
    - memset(dest, color, scwidth);
    - dest += curPitch;
    + memset(ptr, color, scwidth);
    + ptr += curPitch;
     }
     VL_UnlockSurface(curSurface);
     }
    @@ -546,18 +571,23 @@
     void VL_MemToLatch(byte *source, int width, int height,
         SDL_Surface *destSurface, int x, int y)
     {
    +    byte *ptr;
    +    int xsrc, ysrc, pitch;
    +
         assert(x >= 0 && (unsigned) x + width <= screenWidth
                 && y >= 0 && (unsigned) y + height <= screenHeight
                 && "VL_MemToLatch: Destination rectangle out of bounds!");
     
    -    VL_LockSurface(destSurface);
    -    int pitch = destSurface->pitch;
    -    byte *dest = (byte *) destSurface->pixels + y * pitch + x;
    -    for(int ysrc = 0; ysrc < height; ysrc++)
    +    ptr = VL_LockSurface(destSurface);
    +    if(ptr == NULL) return;
    +
    +    pitch = destSurface->pitch;
    +    ptr += y * pitch + x;
    +    for(ysrc = 0; ysrc < height; ysrc++)
         {
    -        for(int xsrc = 0; xsrc < width; xsrc++)
    +        for(xsrc = 0; xsrc < width; xsrc++)
             {
    -            dest[ysrc * pitch + xsrc] = source[(ysrc * (width >> 2) + (xsrc >> 2))
    +            ptr[ysrc * pitch + xsrc] = source[(ysrc * (width >> 2) + (xsrc >> 2))
                     + (xsrc & 3) * (width >> 2) * height];
             }
         }
    @@ -579,22 +609,27 @@
     
     void VL_MemToScreenScaledCoord (byte *source, int width, int height, int destx, int desty)
     {
    +    byte *ptr;
    +    int i, j, sci, scj;
    +    unsigned m, n;
    +
         assert(destx >= 0 && destx + width * scaleFactor <= screenWidth
                 && desty >= 0 && desty + height * scaleFactor <= screenHeight
                 && "VL_MemToScreenScaledCoord: Destination rectangle out of bounds!");
     
    -    VL_LockSurface(curSurface);
    -    byte *vbuf = (byte *) curSurface->pixels;
    -    for(int j=0,scj=0; j<height; j++, scj+=scaleFactor)
    +    ptr = VL_LockSurface(curSurface);
    +    if(ptr == NULL) return;
    +
    +    for(j = 0, scj = 0; j < height; j++, scj += scaleFactor)
         {
    -        for(int i=0,sci=0; i<width; i++, sci+=scaleFactor)
    +        for(i = 0, sci = 0; i < width; i++, sci += scaleFactor)
             {
    -            byte col = source[(j*(width>>2)+(i>>2))+(i&3)*(width>>2)*height];
    -            for(unsigned m=0; m<scaleFactor; m++)
    +            byte col = source[(j * (width >> 2) + (i >> 2)) + (i & 3) * (width >> 2) * height];
    +            for(m = 0; m < scaleFactor; m++)
                 {
    -                for(unsigned n=0; n<scaleFactor; n++)
    +                for(n = 0; n < scaleFactor; n++)
                     {
    -                    vbuf[(scj+m+desty)*curPitch+sci+n+destx] = col;
    +                    ptr[(scj + m + desty) * curPitch + sci + n + destx] = col;
                     }
                 }
             }
    @@ -618,22 +653,29 @@
     void VL_MemToScreenScaledCoord (byte *source, int origwidth, int origheight, int srcx, int srcy,
                                     int destx, int desty, int width, int height)
     {
    +    byte *ptr;
    +    int i, j, sci, scj;
    +    unsigned m, n;
    +
         assert(destx >= 0 && destx + width * scaleFactor <= screenWidth
                 && desty >= 0 && desty + height * scaleFactor <= screenHeight
                 && "VL_MemToScreenScaledCoord: Destination rectangle out of bounds!");
     
    -    VL_LockSurface(curSurface);
    -    byte *vbuf = (byte *) curSurface->pixels;
    -    for(int j=0,scj=0; j<height; j++, scj+=scaleFactor)
    +    ptr = VL_LockSurface(curSurface);
    +    if(ptr == NULL) return;
    +
    +    for(j = 0, scj = 0; j < height; j++, scj += scaleFactor)
         {
    -        for(int i=0,sci=0; i<width; i++, sci+=scaleFactor)
    +        for(i = 0, sci = 0; i < width; i++, sci += scaleFactor)
             {
    -            byte col = source[((j+srcy)*(origwidth>>2)+((i+srcx)>>2))+((i+srcx)&3)*(origwidth>>2)*origheight];
    -            for(unsigned m=0; m<scaleFactor; m++)
    +            byte col = source[((j + srcy) * (origwidth >> 2) + ((i + srcx) >>2 ))
    +                + ((i + srcx) & 3) * (origwidth >> 2) * origheight];
    +
    +            for(m = 0; m < scaleFactor; m++)
                 {
    -                for(unsigned n=0; n<scaleFactor; n++)
    +                for(n = 0; n < scaleFactor; n++)
                     {
    -                    vbuf[(scj+m+desty)*curPitch+sci+n+destx] = col;
    +                    ptr[(scj + m + desty) * curPitch + sci + n + destx] = col;
                     }
                 }
             }
    @@ -670,18 +712,24 @@
             //       So, we do the blit on our own...
             if(screenBits !=
             {
    -            VL_LockSurface(source);
    -            byte *src = (byte *) source->pixels;
    -            unsigned srcPitch = source->pitch;
    +            byte *src, *dest;
    +            unsigned srcPitch;
    +            int i, j;
     
    -            VL_LockSurface(curSurface);
    -            byte *vbuf = (byte *) curSurface->pixels;
    -            for(int j=0,scj=0; j<height; j++, scj++)
    +            src = VL_LockSurface(source);
    +            if(src == NULL) return;
    +
    +            srcPitch = source->pitch;
    +
    +            dest = VL_LockSurface(curSurface);
    +            if(dest == NULL) return;
    +
    +            for(j = 0; j < height; j++)
                 {
    -                for(int i=0,sci=0; i<width; i++, sci++)
    +                for(i = 0; i < width; i++)
                     {
                         byte col = src[(ysrc + j)*srcPitch + xsrc + i];
    -                    vbuf[(scydest+scj)*curPitch+scxdest+sci] = col;
    +                    dest[(scydest + j) * curPitch + scxdest + i] = col;
                     }
                 }
                 VL_UnlockSurface(curSurface);
    @@ -696,22 +744,29 @@
         }
         else
         {
    -        VL_LockSurface(source);
    -        byte *src = (byte *) source->pixels;
    -        unsigned srcPitch = source->pitch;
    +        byte *src, *dest;
    +        unsigned srcPitch;
    +        int i, j, sci, scj;
    +        unsigned m, n;
     
    -        VL_LockSurface(curSurface);
    -        byte *vbuf = (byte *) curSurface->pixels;
    -        for(int j=0,scj=0; j<height; j++, scj+=scaleFactor)
    +        src = VL_LockSurface(source);
    +        if(src == NULL) return;
    +
    +        srcPitch = source->pitch;
    +
    +        dest = VL_LockSurface(curSurface);
    +        if(dest == NULL) return;
    +
    +        for(j = 0, scj = 0; j < height; j++, scj += scaleFactor)
             {
    -            for(int i=0,sci=0; i<width; i++, sci+=scaleFactor)
    +            for(i = 0, sci = 0; i < width; i++, sci += scaleFactor)
                 {
                     byte col = src[(ysrc + j)*srcPitch + xsrc + i];
    -                for(unsigned m=0; m<scaleFactor; m++)
    +                for(m = 0; m < scaleFactor; m++)
                     {
    -                    for(unsigned n=0; n<scaleFactor; n++)
    +                    for(n = 0; n < scaleFactor; n++)
                         {
    -                        vbuf[(scydest+scj+m)*curPitch+scxdest+sci+n] = col;
    +                        dest[(scydest + scj + m) * curPitch + scxdest + sci + n] = col;
                         }
                     }
                 }
    Index: id_ca.cpp
    ===================================================================
    --- id_ca.cpp (revision 258)
    +++ id_ca.cpp (revision 259)
    @@ -979,6 +979,9 @@
         memptr  bigbufferseg;
         int32_t    *source;
         int             next;
    +    byte *pic, *vbuf;
    +    int x, y, scx, scy;
    +    unsigned i, j;
     
     //
     // load the chunk into a buffer
    @@ -1002,22 +1005,25 @@
     // allocate final space, decompress it, and free bigbuffer
     // Sprites need to have shifts made and various other junk
     //
    -    byte *pic = (byte *) malloc(64000);
    +    pic = (byte *) malloc(64000);
         CHECKMALLOCRESULT(pic);
         CAL_HuffExpand((byte *) source, pic, expanded, grhuffman);
     
    -    byte *vbuf = LOCK();
    -    for(int y = 0, scy = 0; y < 200; y++, scy += scaleFactor)
    +    vbuf = VL_LockSurface(curSurface);
    +    if(vbuf != NULL)
         {
    -        for(int x = 0, scx = 0; x < 320; x++, scx += scaleFactor)
    +        for(y = 0, scy = 0; y < 200; y++, scy += scaleFactor)
             {
    -            byte col = pic[(y * 80 + (x >> 2)) + (x & 3) * 80 * 200];
    -            for(unsigned i = 0; i < scaleFactor; i++)
    -                for(unsigned j = 0; j < scaleFactor; j++)
    -                    vbuf[(scy + i) * curPitch + scx + j] = col;
    +            for(x = 0, scx = 0; x < 320; x++, scx += scaleFactor)
    +            {
    +                byte col = pic[(y * 80 + (x >> 2)) + (x & 3) * 80 * 200];
    +                for(i = 0; i < scaleFactor; i++)
    +                    for(j = 0; j < scaleFactor; j++)
    +                        vbuf[(scy + i) * curPitch + scx + j] = col;
    +            }
             }
    +        VL_UnlockSurface(curSurface);
         }
    -    UNLOCK();
         free(pic);
         free(bigbufferseg);
     }


    Don't be discouraged: it is do-able. I've done this one at least 2 or 3 times for various projects. :)
    avatar
    Dakota Hedgepeth
    Don't Hurt Me!
    Don't Hurt Me!


    Male
    Number of posts : 61
    Age : 26
    Registration date : 2014-10-22

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Dakota Hedgepeth Wed Nov 26, 2014 6:52 am

    What upcoming mods will have splitwolf?
    doomjedi
    doomjedi
    Hardcore Wolfer
    Hardcore Wolfer


    Male
    Number of posts : 1378
    Age : 45
    Location : Israel
    Hobbie : Gaming and Modding, Pixel Art
    Registration date : 2007-03-26

    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by doomjedi Wed Nov 26, 2014 7:06 am

    What do you mean be "have"? Will support SplitWolf?
    I'm not aware of such at this point. SplitWolf supports classic mappacks and some mods.
    We have a list of some that I've tested, there are plenty of others I'm sure.

    I wonder why noone mapped for SplitWolf yet or made a mod focused on SplitWolf (difficulty and map design-wise (for coop, teamwork)). It's untapped territory, donnow why.
    But any classic (or just art-replacement) mappack will run on SplitWolf.

    Sponsored content


    [Beta 2 Artpack 1.0 released] SplitWolf - Page 3 Empty Re: [Beta 2 Artpack 1.0 released] SplitWolf

    Post by Sponsored content


      Current date/time is Thu Nov 21, 2024 3:38 am