From 50ce152c69fa11faef84cb51f215d787852d4742 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sun, 28 Aug 2016 13:19:17 +0100 Subject: [PATCH 01/12] Cleaned up some performance issues in Skytop Zone (2.1.16: THE SUGOI UPDATE) arising from some inefficiencies with P_GetMobjGravity. FPS drops only occasionally to 34 now, which is a big improvement when I was frequently getting 27 in Salt's 15andahalf.exe. --- src/p_mobj.c | 57 +++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 62dee0a6..91451e06 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1278,25 +1278,23 @@ fixed_t P_GetMobjGravity(mobj_t *mo) for (rover = mo->subsector->sector->ffloors; rover; rover = rover->next) { - if (!(rover->flags & FF_EXISTS)) + if (!((rover->flags & FF_EXISTS) && (P_InsideANonSolidFFloor(mo, rover)))) continue; - if (P_InsideANonSolidFFloor(mo, rover)) - { - if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER)) - goopgravity = true; - if (rover->master->frontsector->gravity) - { - gravityadd = -FixedMul(gravity, - (FixedDiv(*rover->master->frontsector->gravity>>FRACBITS, 1000))); + if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER)) + goopgravity = true; - if (rover->master->frontsector->verticalflip && gravityadd > 0) - mo->eflags |= MFE_VERTICALFLIP; + if (!(rover->master->frontsector->gravity)) + continue; - no3dfloorgrav = false; - break; - } - } + gravityadd = -FixedMul(gravity, + (FixedDiv(*rover->master->frontsector->gravity>>FRACBITS, 1000))); + + if (rover->master->frontsector->verticalflip && gravityadd > 0) + mo->eflags |= MFE_VERTICALFLIP; + + no3dfloorgrav = false; + break; } } @@ -1318,28 +1316,22 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (mo->player) { - if (mo->player->charability == CA_FLY && (mo->player->powers[pw_tailsfly] - || (mo->state >= &states[S_PLAY_SPC1] && mo->state <= &states[S_PLAY_SPC4]))) - gravityadd = gravityadd/3; // less gravity while flying - if (mo->player->pflags & PF_GLIDING) - gravityadd = gravityadd/3; // less gravity while gliding - if (mo->player->climbing) - gravityadd = 0; - if (mo->player->pflags & PF_NIGHTSMODE) + if ((mo->player->pflags & PF_GLIDING) + || (mo->player->charability == CA_FLY && (mo->player->powers[pw_tailsfly] + || (mo->state >= &states[S_PLAY_SPC1] && mo->state <= &states[S_PLAY_SPC4])))) + gravityadd = gravityadd/3; // less gravity while flying/gliding + if (mo->player->climbing || (mo->player->pflags & PF_NIGHTSMODE)) gravityadd = 0; { - UINT8 bits = 0; - if (mo->flags2 & MF2_OBJECTFLIP) - bits ^= 1; - if (mo->player->powers[pw_gravityboots]) - bits ^= 1; - if (bits & 1) + if (!!(mo->flags2 & MF2_OBJECTFLIP) != !!(mo->player->powers[pw_gravityboots])) { gravityadd = -gravityadd; mo->eflags ^= MFE_VERTICALFLIP; } } + if (!!(mo->eflags & MFE_VERTICALFLIP) != wasflip) + P_PlayerFlip(mo); } else { @@ -1347,10 +1339,10 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (mo->flags2 & MF2_OBJECTFLIP) { mo->eflags |= MFE_VERTICALFLIP; - if (gravityadd < 0) // Don't sink, only rise up - gravityadd *= -1; if (mo->z + mo->height >= mo->ceilingz) gravityadd = 0; + else if (gravityadd < 0) // Don't sink, only rise up + gravityadd *= -1; } else //Otherwise, sort through the other exceptions. { @@ -1396,9 +1388,6 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (goopgravity) gravityadd = -gravityadd/5; - if (mo->player && !!(mo->eflags & MFE_VERTICALFLIP) != wasflip) - P_PlayerFlip(mo); - gravityadd = FixedMul(gravityadd, mo->scale); return gravityadd; From c0f5f22b6a11d66f68ff72ba1127f640964dfacf Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sun, 28 Aug 2016 13:51:32 +0100 Subject: [PATCH 02/12] Suggested improvement by MI on irc. --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 91451e06..a66e9cf7 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1278,7 +1278,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) for (rover = mo->subsector->sector->ffloors; rover; rover = rover->next) { - if (!((rover->flags & FF_EXISTS) && (P_InsideANonSolidFFloor(mo, rover)))) + if (!(rover->flags & FF_EXISTS) || !P_InsideANonSolidFFloor(mo, rover)) continue; if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER)) From 25ab97786285cc89a66b5f2c765b5632c85af905 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sun, 28 Aug 2016 14:06:20 +0100 Subject: [PATCH 03/12] ...didn't realise P_InsideANonSolidFFloor checks for FF_EXISTS itself, so HM --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index a66e9cf7..7a96dfd5 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1278,7 +1278,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) for (rover = mo->subsector->sector->ffloors; rover; rover = rover->next) { - if (!(rover->flags & FF_EXISTS) || !P_InsideANonSolidFFloor(mo, rover)) + if (!P_InsideANonSolidFFloor(mo, rover)) // P_InsideANonSolidFFloor checks for FF_EXISTS itself continue; if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER)) From e8775419d135a40ea549824fe90139c8d134cbc4 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sun, 28 Aug 2016 14:09:15 +0100 Subject: [PATCH 04/12] Removed now-irrelevant braces. --- src/p_mobj.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 7a96dfd5..547941e7 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1323,12 +1323,10 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (mo->player->climbing || (mo->player->pflags & PF_NIGHTSMODE)) gravityadd = 0; + if (!!(mo->flags2 & MF2_OBJECTFLIP) != !!(mo->player->powers[pw_gravityboots])) { - if (!!(mo->flags2 & MF2_OBJECTFLIP) != !!(mo->player->powers[pw_gravityboots])) - { - gravityadd = -gravityadd; - mo->eflags ^= MFE_VERTICALFLIP; - } + gravityadd = -gravityadd; + mo->eflags ^= MFE_VERTICALFLIP; } if (!!(mo->eflags & MFE_VERTICALFLIP) != wasflip) P_PlayerFlip(mo); From 3bad307e2d464eeae5d106183db6b7620c6e3bd7 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sun, 28 Aug 2016 20:46:56 +0100 Subject: [PATCH 05/12] Sorry, Inu. --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 547941e7..68f4f40f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1278,7 +1278,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) for (rover = mo->subsector->sector->ffloors; rover; rover = rover->next) { - if (!P_InsideANonSolidFFloor(mo, rover)) // P_InsideANonSolidFFloor checks for FF_EXISTS itself + if (!(rover->flags & FF_EXISTS) || !P_InsideANonSolidFFloor(mo, rover)) // P_InsideANonSolidFFloor checks for FF_EXISTS itself, but let's not always call this function continue; if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER)) From 6ff75d2aa1bd6f2aa32e8e5a65de2e7ce79525ec Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sat, 3 Sep 2016 21:37:52 +0100 Subject: [PATCH 06/12] Double negation becomes single negation, with handy comment! --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 68f4f40f..eaef05aa 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1323,7 +1323,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) if (mo->player->climbing || (mo->player->pflags & PF_NIGHTSMODE)) gravityadd = 0; - if (!!(mo->flags2 & MF2_OBJECTFLIP) != !!(mo->player->powers[pw_gravityboots])) + if (!(mo->flags2 & MF2_OBJECTFLIP) != !(mo->player->powers[pw_gravityboots])) // negated to turn numeric into bool - would be double negated, but not needed if both would be { gravityadd = -gravityadd; mo->eflags ^= MFE_VERTICALFLIP; From 5bb0b5684e822ed773fda46a1d1c6b6f61732df2 Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sat, 3 Sep 2016 21:43:02 +0100 Subject: [PATCH 07/12] More irrelevant negation reduction, sorry. --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index eaef05aa..6337730f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1328,7 +1328,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) gravityadd = -gravityadd; mo->eflags ^= MFE_VERTICALFLIP; } - if (!!(mo->eflags & MFE_VERTICALFLIP) != wasflip) + if (!(mo->eflags & MFE_VERTICALFLIP) == wasflip) P_PlayerFlip(mo); } else From 2d94256490d2c11fa91d0e9a05932cb508cc393b Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Sat, 3 Sep 2016 16:05:45 -0500 Subject: [PATCH 08/12] Shut the compiler up --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 6337730f..0d7f8884 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1328,7 +1328,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) gravityadd = -gravityadd; mo->eflags ^= MFE_VERTICALFLIP; } - if (!(mo->eflags & MFE_VERTICALFLIP) == wasflip) + if (wasflip == !(mo->eflags & MFE_VERTICALFLIP)) // note!! == ! is not equivalent to != here - turns numeric into bool this way P_PlayerFlip(mo); } else From f1ab448442d9a8387634649de191c1be440b0cfa Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Sat, 3 Sep 2016 16:50:00 -0500 Subject: [PATCH 09/12] Readme rewrite --- README.md | 22 ++++++++ readme.txt | 155 ----------------------------------------------------- 2 files changed, 22 insertions(+), 155 deletions(-) create mode 100644 README.md delete mode 100644 readme.txt diff --git a/README.md b/README.md new file mode 100644 index 00000000..a357feea --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +Sonic Robo Blast 2 +================== +[![Build status](https://ci.appveyor.com/api/projects/status/399d4hcw9yy7hg2y?svg=true)](https://ci.appveyor.com/project/STJr/srb2) [![Build status](https://travis-ci.org/STJr/SRB2.svg?branch=master)](https://travis-ci.org/STJr/SRB2) +================== + +[Sonic Robo Blast 2](https://srb2.org/) is a 3D Sonic the Hedgehog fangame based on a modified version of [Doom Legacy](http://doomlegacy.sourceforge.net/). + +## Dependencies +- NASM (x86 builds only) +- SDL2 (Linux/OS X only) +- SDL2-Mixer (Linux/OS X only) +- libupnp (Linux/OS X only) +- libgme (Linux/OS X only) + +Warning: 64-bit builds are not netgame compatible. Use at your own risk. + +## Compiling + +See [SRB2 Wiki/Source code compiling](http://wiki.srb2.org/wiki/Source_code_compiling) + +### Disclaimer +Sonic Team Junior is in no way affiliated with SEGA or Sonic Team. We do not claim ownership of any of SEGA's intellectual property used in SRB2. diff --git a/readme.txt b/readme.txt deleted file mode 100644 index c1898d49..00000000 --- a/readme.txt +++ /dev/null @@ -1,155 +0,0 @@ -Here it is! SRB2 v2.1.14 source code! -(why do we keep the version number up to date - when everything else in this file is hilariously old? - - Inuyasha) - - -Win32 with Visual C (6SP6+Processor Pack OR 7) -~~~ - -2 VC++ 6.0 project files are included: - -Win32/DirectX/FMOD -src\win32\wLegacy.dsw -You'll need FMOD to compile this version (www.fmod.org) -or -Win32/SDL/SDL_mixer -src\sdl\Win32SDL.dsp -You'll need SDL and SDL_mixer for this version (www.libsdl.org) - -Both needs NASM (http://sourceforge.net/projects/nasm) -For PNG screenshot, libPNG, and Zlib (from http://gnuwin32.sourceforge.net/) - -No warranty, support, etc. of any kind is offered, -just plain old as is. -Some bits of code are still really scary. -Go nuts! - - -Win32 with Dev-C++ (http://bloodshed.net/ free!) -~~~ -2 Dev-C++ project files are included: - -Win32/DirectX/FMOD -src\win32\SRB2.dev -or -Win32/SDL/SDL_mixer -src\sdl\Win32SDL.dev -You'll need SDL and SDL_mixer for this version (www.libsdl.org) -libPNG and Zlib (from http://gnuwin32.sourceforge.net/) -Note there are precompiled libpng.a and libz.a for Mingw - -you will need NASM for both SDL/SDL_mixer and DirectX/FMOD -and you need DirectX 6 (or up) Dev-Paks to compile DirectX version - -GNU/Linux -~~~ - -Dependencies: - SDL 1.2.7 or better (from libsdl.org) - SDL_Mixer 1.2.2(.7 for file-less music playback) (from libsdl.org) - Nasm (use NOASM=1 if you don't have it or have an non-i386 system, I think) - libPNG 1.2.7 - Zlib 1.2.3 - The Xiph.org libogg and libvorbis libraries - The OpenGL headers (from Mesa, usually shipped with your X.org or XFree - installation, so you needn't worry, most likely) - GCC 3.x toolchain and binutils - GNU Make - -Build instructions: - -make -C src LINUX=1 - -Build instructions (64 bit): - -make -C src LINUX64=1 - -Build instructions to build for Wii Linux/SRB2Wii on a PowerPC system, -follow cross-compiling instructions for cross-compiling on a x86 system: - -make -C src LINUX=1 WIILINUX=1 - -Build instructions to build for Pandora (Linux) on a ARM system, -follow cross-compiling instructions for cross-compiling on a x86 system: - -make -C src PANDORA=1 - -Solaris -~~~ - -Dependencies: - SDL 1.2.5 or better (from libsdl.org) - SDL_Mixer 1.2.2(.7 for file-less music playback) (from libsdl.org) - libPNG 1.2.7 - Zlib 1.2.3 - The Xiph.org libogg and libvorbis libraries - The OpenGL headers (from Mesa, usually shipped with your X.org or XFree - installation, so you needn't worry, most likely) - GCC 3.x toolchain and binutils - GNU Make - - You can get all these programs/libraries from the Companion CD (except SDL_mixer and OpenGL) - -Build instructions: - -gmake -C src SOLARIS=1 - -FreeBSD -~~~ - -Dependencies: - SDL 1.2.7 or better (from libsdl.org) - SDL_Mixer 1.2.2(.7 for file-less music playback) (from libsdl.org) - Nasm (use NOASM=1 if you don't have it or have an non-i386 system, I think) - libPNG 1.2.7 - Zlib 1.2.3 - The Xiph.org libogg and libvorbis libraries - The OpenGL headers (from Mesa, usually shipped with your X.org or XFree - installation, so you needn't worry, most likely) - GCC 3.x toolchain and binutils - GNU Make - -Build instructions: - -gmake -C src FREEBSD=1 - -DJGPP/DOS -~~~ - -Dependencies: - Allegro 3.12 game programming library, (from - http://alleg.sourceforge.net/index.html) - Nasm (use NOASM=1 if you don't have it) - libsocket (from http://homepages.nildram.co.uk/~phekda/richdawe/lsck/) or - Watt-32 (from http://www.bgnett.no/~giva/) - GCC 3.x toolchain and binutils - GNU Make - -Build instructions: - -make -C src # to link with Watt-32, add WATTCP=1 - # for remote debugging over the COM port, add RDB=1 - -Notes: - use tools\djgpp\all313.diff to update Allegro to a "more usable" version ;) - Example: E:\djgpp\allegro>patch -p# < D:\SRB2Code\1.1\srb2\tools\djgpp\all313.diff - -Windows CE -~~~ - -Dependencies: - SDL 1.27 - -Build instructions: - -use src\SDL\WinCE\SRB2CE.vcw - -------------------------------------------------------------------------------- - -binaries will turn in up in bin/ - -note: read the src/makefile for more options - -- Sonic Team Junior -http://www.srb2.org From f9e01c2b652666d205f32a8c9f474b04f7f141f2 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Sun, 4 Sep 2016 20:12:59 +0100 Subject: [PATCH 10/12] Fixed up markdown so the build status isn't treated as a header anywhere --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a357feea..b0841759 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -Sonic Robo Blast 2 -================== -[![Build status](https://ci.appveyor.com/api/projects/status/399d4hcw9yy7hg2y?svg=true)](https://ci.appveyor.com/project/STJr/srb2) [![Build status](https://travis-ci.org/STJr/SRB2.svg?branch=master)](https://travis-ci.org/STJr/SRB2) -================== +# Sonic Robo Blast 2 + +[![Build status](https://ci.appveyor.com/api/projects/status/399d4hcw9yy7hg2y?svg=true)](https://ci.appveyor.com/project/STJr/srb2) +[![Build status](https://travis-ci.org/STJr/SRB2.svg?branch=master)](https://travis-ci.org/STJr/SRB2) [Sonic Robo Blast 2](https://srb2.org/) is a 3D Sonic the Hedgehog fangame based on a modified version of [Doom Legacy](http://doomlegacy.sourceforge.net/). From 86ccecc6c13ab4727ccb540b0b1e05c0675dbcbd Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Sun, 4 Sep 2016 21:26:34 +0100 Subject: [PATCH 11/12] Let's be more specific here --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0841759..4ee6ebec 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ - libupnp (Linux/OS X only) - libgme (Linux/OS X only) -Warning: 64-bit builds are not netgame compatible. Use at your own risk. +Warning: 64-bit builds are not netgame compatible with 32-bit builds. Use at your own risk. ## Compiling From 0595325f4bf2b3ea7638eae8cecc8ee40c2dda50 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Sun, 4 Sep 2016 21:54:11 +0100 Subject: [PATCH 12/12] Make disclaimer H2 instead of H3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ee6ebec..eb06156b 100644 --- a/README.md +++ b/README.md @@ -18,5 +18,5 @@ Warning: 64-bit builds are not netgame compatible with 32-bit builds. Use at you See [SRB2 Wiki/Source code compiling](http://wiki.srb2.org/wiki/Source_code_compiling) -### Disclaimer +## Disclaimer Sonic Team Junior is in no way affiliated with SEGA or Sonic Team. We do not claim ownership of any of SEGA's intellectual property used in SRB2.