Merge branch 'next' into extra-textures

This commit is contained in:
Lactozilla 2024-02-16 16:56:44 -03:00
commit 5b37333621
39 changed files with 12087 additions and 1588 deletions

3
.gitignore vendored
View file

@ -24,4 +24,5 @@ Win32_LIB_ASM_Release
/build
/build/*
/CMakeUserPresets.json
/out
/out
/objs/VC10

View file

@ -153,8 +153,8 @@ default:
- - |
# ccache_stats
echo -e "\e[0Ksection_start:`date +%s`:ccache_stats[collapsed=true]\r\e[0Kccache statistics:"
- ccache --show-stats --verbose
- ccache --show-log-stats --verbose
- ccache --show-stats
- ccache --show-log-stats || true
- |
# ccahe_stats
echo -e "\e[0Ksection_end:`date +%s`:ccache_stats\r\e[0K"
@ -283,6 +283,47 @@ Debian stable:amd64:
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
Debian oldstable:amd64:
extends: Debian stable:amd64
when: manual
image: git.do.srb2.org:5050/stjr/srb2ci/srb2ci:oldstable
allow_failure: true
artifacts:
paths:
- "bin/"
- "src/comptime.h"
expose_as: "Debian old amd64"
name: "$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA-old-x86-64"
script:
- - |
# apt_toolchain
echo -e "\e[0Ksection_start:`date +%s`:apt_toolchain[collapsed=true]\r\e[0KInstalling toolchain packages"
- apt-get install gcc-x86-64-linux-gnu || apt-get install gcc
- |
# apt_toolchain
echo -e "\e[0Ksection_end:`date +%s`:apt_toolchain\r\e[0K"
- - |
# apt_development
echo -e "\e[0Ksection_start:`date +%s`:apt_development[collapsed=true]\r\e[0KInstalling development packages"
- apt-get install libsdl2-mixer-dev:amd64 libpng-dev:amd64 libcurl4-openssl-dev:amd64 libopenmpt-dev:amd64 libminiupnpc-dev:amd64
- |
# apt_development
echo -e "\e[0Ksection_end:`date +%s`:apt_development\r\e[0K"
- - |
# make
echo -e "\e[0Ksection_start:`date +%s`:make[collapsed=false]\r\e[0KCompiling SRB2"
- make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 NOGME=1 || make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 NOGME=1
- |
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
Debian stable:i386:
stage: build
@ -370,6 +411,86 @@ Debian stable:arm64:
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
Debian oldstable:arm64:
extends: Debian stable:arm64
when: manual
image: git.do.srb2.org:5050/stjr/srb2ci/srb2ci:oldstable
allow_failure: true
artifacts:
paths:
- "bin/"
- "src/comptime.h"
expose_as: "Debian old arm64"
name: "$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA-old-aarch64"
script:
- - |
# apt_toolchain
echo -e "\e[0Ksection_start:`date +%s`:apt_toolchain[collapsed=true]\r\e[0KInstalling toolchain packages"
- apt-get install gcc-aarch64-linux-gnu || apt-get install gcc
- |
# apt_toolchain
echo -e "\e[0Ksection_end:`date +%s`:apt_toolchain\r\e[0K"
- - |
# apt_development
echo -e "\e[0Ksection_start:`date +%s`:apt_development[collapsed=true]\r\e[0KInstalling development packages"
- apt-get install libsdl2-mixer-dev:arm64 libpng-dev:arm64 libcurl4-openssl-dev:arm64 libopenmpt-dev:arm64 libminiupnpc-dev:arm64
- |
# apt_development
echo -e "\e[0Ksection_end:`date +%s`:apt_development\r\e[0K"
- - |
# make
echo -e "\e[0Ksection_start:`date +%s`:make[collapsed=false]\r\e[0KCompiling SRB2"
- make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 ERRORMODE=1 NONX86=1 ARM64=1 NOGME=1 || make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 NONX86=1 ARM64=1 NOGME=1
- |
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
batocera:arm64:
extends: Debian stable:arm64
when: manual
allow_failure: true
artifacts:
paths:
- "bin/"
- "src/comptime.h"
expose_as: "Debian old arm64"
name: "$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA-batocera-aarch64"
script:
- - |
# apt_toolchain
echo -e "\e[0Ksection_start:`date +%s`:apt_toolchain[collapsed=true]\r\e[0KInstalling toolchain packages"
- apt-get install gcc-aarch64-linux-gnu || apt-get install gcc
- |
# apt_toolchain
echo -e "\e[0Ksection_end:`date +%s`:apt_toolchain\r\e[0K"
- - |
# apt_development
echo -e "\e[0Ksection_start:`date +%s`:apt_development[collapsed=true]\r\e[0KInstalling development packages"
- apt-get install libsdl2-mixer-dev:arm64 libpng-dev:arm64 libcurl4-openssl-dev:arm64 libopenmpt-dev:arm64 libminiupnpc-dev:arm64
- |
# apt_development
echo -e "\e[0Ksection_end:`date +%s`:apt_development\r\e[0K"
- - |
# make
echo -e "\e[0Ksection_start:`date +%s`:make[collapsed=false]\r\e[0KCompiling SRB2"
- make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 ERRORMODE=1 NONX86=1 ARM64=1 NOGME=1 || make --directory=src --keep-going CCACHE=1 ERRORMODE=1 LINUX64=1 NONX86=1 ARM64=1 NOGME=1
- |
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
Windows x64:
stage: build
@ -596,3 +717,38 @@ Alpine 3 GCC:
- |
# ccahe_stats
echo -e "\e[0Ksection_end:`date +%s`:ccache_stats\r\e[0K"
Alpine 3 GCC Dedicated:
extends: Alpine 3 GCC
artifacts:
paths:
- "bin/"
- "src/comptime.h"
expose_as: "Apline-3-Dedicated"
name: "$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA-Apline-3-Dedicated"
script:
- - |
# apk_toolchain
echo -e "\e[0Ksection_start:`date +%s`:apk_toolchain[collapsed=true]\r\e[0KInstalling toolchain packages"
- apk add gcc
- |
# apk_toolchain
echo -e "\e[0Ksection_end:`date +%s`:apk_toolchain\r\e[0K"
- - |
# apk_development
echo -e "\e[0Ksection_start:`date +%s`:apk_development[collapsed=true]\r\e[0KInstalling development packages"
- apk add musl-dev libpng-dev curl-dev
- |
# apk_development
echo -e "\e[0Ksection_end:`date +%s`:apk_development\r\e[0K"
- - |
# make
echo -e "\e[0Ksection_start:`date +%s`:make[collapsed=false]\r\e[0KCompiling SRB2"
- make --directory=src --keep-going CCACHE=1 ERRORMODE=1 NONX86=1 NOEXECINFO=1 DEDICATED=1 || make --directory=src --keep-going CCACHE=1 ERRORMODE=1 NONX86=1 NOEXECINFO=1 DEDICATED=1
- |
# make
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"

View file

@ -40,7 +40,9 @@ common
defaultflatscale = 1.0f;
scaledtextureoffsets = true;
// Colormap/fade related options
maxcolormapalpha = 25;
// TODO: change to 255;
// Thing number for start position in 3D Mode
start3dmode = 3328;
@ -100,11 +102,23 @@ mapformat_udmf
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = false;
// Enables support for individual offsets of upper/middle/lower sidedef textures
localsidedeftextureoffsets = true;
distinctfloorandceilingbrightness = true;
// Enables support for plane equation slopes
planeequationsupport = true;
// Enables support for vertex heights
vertexheightsupport = true;
// Enables setting distinct brightness for floor, ceiling, and walls
distinctfloorandceilingbrightness = true;
distinctwallbrightness = false;
// Enables setting distinct brightness for upper, middle, and lower sidedef parts
distinctsidedefpartbrightness = false;
// Special linedefs
include("SRB222_misc.cfg", "speciallinedefs_udmf");

View file

@ -9,7 +9,7 @@ udmf
title = "None";
prefix = "(0)";
}
6
{
title = "Sector Set Portal";
@ -97,6 +97,7 @@ udmf
41
{
title = "Horizon Effect";
id = "srb2_horizonline";
prefix = "(41)";
}
@ -147,10 +148,12 @@ udmf
arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
title = "Sequence";
title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
}
arg2
{
@ -167,6 +170,7 @@ udmf
arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
@ -182,6 +186,7 @@ udmf
{
title = "Sound";
type = 2;
tooltip = "Takes a DS constant.\nExample: DSTHOK";
}
}
@ -203,10 +208,12 @@ udmf
arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
title = "Sequence";
title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
}
arg2
{
@ -226,7 +233,7 @@ udmf
}
arg1
{
title = "Debris lifetime";
title = "Debris lifetime (tics)";
}
arg2
{
@ -237,6 +244,7 @@ udmf
stringarg0
{
title = "Debris object type";
tooltip = "Uses a MT_ constant.\nExample: MT_ROCKCRUMBLE16\nDefaults to MT_ROCKCRUMBLE1.";
type = 2;
}
}
@ -298,21 +306,22 @@ udmf
20
{
title = "First Line";
title = "PolyObject First Line";
prefix = "(20)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Parent ID";
title = "Parent PolyObject tag";
type = 14;
}
arg2
{
title = "Translucency";
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg3
{
@ -338,45 +347,48 @@ udmf
30
{
title = "Waving Flag";
title = "Waving PolyObject Flag";
prefix = "(30)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Distance";
tooltip = "How far to move in either direction, in fracunits.";
}
}
31
{
title = "Displacement by Front Sector";
title = "Move PolyObject by Front Sector Displacement";
prefix = "(31)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Base speed";
tooltip = "How much the front sector displacement translates.\nA value of 256 amounts to a 1:1 translation.";
}
}
32
{
title = "Angular Displacement by Front Sector";
title = "Rotate PolyObject by Front Sector Displacement";
prefix = "(32)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
@ -413,6 +425,7 @@ udmf
arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
@ -444,10 +457,12 @@ udmf
arg2
{
title = "Forward speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Return speed";
tooltip = "In fracunits per tic.";
}
arg4
{
@ -477,10 +492,12 @@ udmf
arg2
{
title = "Forward speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Return speed";
tooltip = "In fracunits per tic.";
}
arg4
{
@ -504,10 +521,11 @@ udmf
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Starting delay";
title = "Starting delay (tics)";
}
arg3
{
@ -543,16 +561,18 @@ udmf
arg2
{
title = "Crush speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Retract speed";
tooltip = "In fracunits per tic.";
}
}
66
{
title = "Move Planes by Displacement";
title = "Move Planes by Front Sector Displacement";
prefix = "(66)";
arg0
{
@ -589,6 +609,7 @@ udmf
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
@ -640,14 +661,17 @@ udmf
arg1
{
title = "Falling speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Rising speed";
tooltip = "In fracunits per tic.";
}
stringarg0
{
title = "Crushing sound";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
}
@ -720,6 +744,7 @@ udmf
arg1
{
title = "Sinking speed";
tooltip = "In fracunits per tic.";
}
arg2
{
@ -761,6 +786,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -804,6 +830,7 @@ udmf
{
title = "Alpha";
default = 128;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -880,6 +907,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -922,6 +950,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -952,6 +981,7 @@ udmf
arg5
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg6
{
@ -1009,6 +1039,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -1079,14 +1110,17 @@ udmf
arg1
{
title = "Falling speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Rising speed";
tooltip = "In fracunits per tic.";
}
stringarg0
{
title = "Crushing sound";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
}
@ -1105,6 +1139,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -1162,6 +1197,7 @@ udmf
arg2
{
title = "Sinking speed";
tooltip = "In fracunits per tic.";
}
arg3
{
@ -1183,6 +1219,7 @@ udmf
{
title = "Alpha";
default = 128;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -1216,6 +1253,7 @@ udmf
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
@ -2155,6 +2193,7 @@ udmf
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
}
@ -2260,6 +2299,7 @@ udmf
arg2
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg3
{
@ -2276,7 +2316,7 @@ udmf
405
{
title = "Move Planes by Distance";
title = "Move Planes by Set Distance";
prefix = "(405)";
arg0
{
@ -2296,6 +2336,7 @@ udmf
arg3
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg4
{
@ -2328,14 +2369,15 @@ udmf
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Starting delay";
title = "Starting delay (tics)";
}
arg3
{
title = "Delay before flip";
title = "Delay before flip (tics)";
}
arg4
{
@ -2367,10 +2409,12 @@ udmf
arg2
{
title = "Crush speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Retract speed";
tooltip = "In fracunits per tic.";
}
}
}
@ -2385,7 +2429,7 @@ udmf
prefix = "(412)";
arg0
{
title = "Destination tag";
title = "Destination thing tag";
type = 14;
}
arg1
@ -2771,6 +2815,7 @@ udmf
stringarg0
{
title = "Music name";
tooltip = "Takes a music lump name, without the O_ or D_ prefix. Use - to disable music.\nExample: GFZ1";
type = 2;
}
}
@ -2810,6 +2855,7 @@ udmf
stringarg0
{
title = "Sound name";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
}
@ -3065,11 +3111,11 @@ udmf
prefix = "(448)";
arg0
{
title = "Viewpoint ID";
title = "Viewpoint thing tag";
}
arg1
{
title = "Centerpoint ID";
title = "Centerpoint thing tag";
}
arg2
{
@ -3154,6 +3200,7 @@ udmf
arg2
{
title = "Alpha";
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg3
{
@ -3184,10 +3231,11 @@ udmf
arg2
{
title = "Alpha";
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg3
{
title = "Fading speed";
title = "Fading speed (tics)";
}
arg4
{
@ -3373,16 +3421,17 @@ udmf
480
{
title = "Door Slide";
title = "PolyObject Door Slide";
prefix = "(480)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
@ -3390,22 +3439,23 @@ udmf
}
arg3
{
title = "Return delay";
title = "Return delay (tics)";
}
}
481
{
title = "Door Swing";
title = "PolyObject Door Swing";
prefix = "(481)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
@ -3414,22 +3464,23 @@ udmf
}
arg3
{
title = "Return delay";
title = "Return delay (tics)";
}
}
482
{
title = "Move";
title = "Move PolyObject";
prefix = "(482)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
@ -3445,20 +3496,22 @@ udmf
484
{
title = "Rotate";
title = "Rotate PolyObject";
prefix = "(484)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In degrees per tic.";
}
arg2
{
title = "Rotation";
tooltip = "How many degrees the PolyObject will rotate.";
type = 8;
}
arg3
@ -3477,20 +3530,22 @@ udmf
488
{
title = "Move by Waypoints";
title = "Move PolyObject by Waypoints";
prefix = "(488)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
}
arg3
{
@ -3517,11 +3572,11 @@ udmf
489
{
title = "Set Visibility, Tangibility";
title = "Set PolyObject Visibility/Tangibility";
prefix = "(489)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
@ -3550,16 +3605,17 @@ udmf
491
{
title = "Set Translucency";
title = "Set PolyObject Translucency";
prefix = "(491)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg2
{
@ -3571,16 +3627,17 @@ udmf
492
{
title = "Fade Translucency";
title = "Fade PolyObject Translucency";
prefix = "(492)";
arg0
{
title = "PolyObject ID";
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg2
{
@ -3608,7 +3665,7 @@ udmf
500
{
title = "Scroll Walls";
title = "Scroll Wall";
prefix = "(500)";
arg0
{
@ -3628,7 +3685,7 @@ udmf
502
{
title = "Scroll Walls Remotely";
title = "Scroll Tagged Walls";
prefix = "(502)";
arg0
{
@ -3665,6 +3722,7 @@ udmf
{
title = "Sector tag";
type = 13;
tooltip = "A tag of 0 will scroll the planes of this line's front sector.";
}
arg1
{
@ -3702,6 +3760,7 @@ udmf
{
title = "Sector tag";
type = 13;
tooltip = "A tag of 0 will apply the effect to this line's front sector.";
}
arg1
{
@ -3725,7 +3784,7 @@ udmf
{
title = "Flags";
type = 12;
flags
enum
{
1 = "Slide";
2 = "Non-exclusive";

View file

@ -229,20 +229,363 @@ Field data types:
*/
universalfields
{
sector
{
}
linedef
{
alpha
{
type = 1;
default = 1.0;
}
comment
{
type = 2;
default = "";
}
renderstyle
{
type = 2;
default = "";
}
stringarg0
{
type = 2;
default = "";
}
stringarg1
{
type = 2;
default = "";
}
executordelay
{
type = 0;
default = 0;
}
}
sidedef
{
comment
{
type = 2;
default = "";
}
//light
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute
//{
// type = 3;
// default = false;
//}
//
//light_top
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_top
//{
// type = 3;
// default = false;
//}
//
//light_mid
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_mid
//{
// type = 3;
// default = false;
//}
//
//light_bottom
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_bottom
//{
// type = 3;
// default = false;
//}
offsetx_bottom
{
type = 1;
default = 0.0;
}
offsetx_mid
{
type = 1;
default = 0.0;
}
offsetx_top
{
type = 1;
default = 0.0;
}
offsety_bottom
{
type = 1;
default = 0.0;
}
offsety_mid
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
scalex_bottom
{
type = 1;
default = 1.0;
}
scalex_mid
{
type = 1;
default = 1.0;
}
scalex_top
{
type = 1;
default = 1.0;
}
scaley_bottom
{
type = 1;
default = 1.0;
}
scaley_mid
{
type = 1;
default = 1.0;
}
scaley_top
{
type = 1;
default = 1.0;
}
}
thing
{
comment
{
type = 2;
default = "";
}
pitch
{
type = 0;
}
roll
{
type = 0;
}
scalex
{
type = 1;
default = 1.0;
}
scaley
{
type = 1;
default = 1.0;
}
stringarg0
{
type = 2;
default = "";
}
stringarg1
{
type = 2;
default = "";
}
mobjscale
{
type = 1;
default = 1.0;
managed = false;
}
}
sector
{
comment
{
type = 2;
default = "";
}
damagetype
{
type = 2;
default = "";
}
gravity
{
type = 1;
default = 1.0;
}
lightcolor
{
type = 0;
default = 0;
}
fadecolor
{
type = 0;
default = 0;
}
lightalpha
{
type = 0;
default = 25;
}
fadealpha
{
type = 0;
default = 25;
}
fadestart
{
type = 0;
default = 0;
}
fadeend
{
type = 0;
default = 31;
}
xpanningfloor
{
type = 1;
default = 0.0;
}
ypanningfloor
{
type = 1;
default = 0.0;
}
rotationfloor
{
type = 1;
default = 0.0;
}
xscalefloor
{
type = 1;
default = 1.0;
}
yscalefloor
{
type = 1;
default = 1.0;
}
lightfloor
{
type = 0;
default = 0;
}
lightfloorabsolute
{
type = 3;
default = false;
}
xpanningceiling
{
type = 1;
default = 0.0;
}
ypanningceiling
{
type = 1;
default = 0.0;
}
rotationceiling
{
type = 1;
default = 0.0;
}
xscaleceiling
{
type = 1;
default = 1.0;
}
yscaleceiling
{
type = 1;
default = 1.0;
}
lightceiling
{
type = 0;
default = 0;
}
lightceilingabsolute
{
type = 3;
default = false;
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,24 @@
makedir:=$(makedir)/Dedicated
sources+=$(call List,dedicated/Sourcefile)
opts+=-DDEDICATED
ifdef FREEBSD
# on FreeBSD, we have to link to libpthread explicitly
libs+=-lpthread
endif
ifdef MINGW
libs+=-mconsole
endif
ifndef NOTHREADS
opts+=-DHAVE_THREADS
sources+=dedicated/i_threads.c
endif
NOOPENMPT=1
NOGME=1
NOHW=1
NOUPNP=1

View file

@ -2,8 +2,6 @@
# Makefile options for unices (linux, bsd...)
#
EXENAME?=lsdl2srb2
opts+=-DUNIXCOMMON -DLUA_USE_POSIX
# Use -rdynamic so a backtrace log shows function names
# instead of addresses
@ -14,7 +12,20 @@ opts+=-I/usr/X11R6/include
libs+=-L/usr/X11R6/lib
endif
ifndef DEDICATED
ifndef DUMMY
SDL?=1
DEDICATED?=0
endif
endif
ifeq (${SDL},1)
EXENAME?=lsdl2srb2
endif
ifeq (${DEDICATED},1)
EXENAME?=lsrb2d
endif
# In common usage.
ifdef LINUX

View file

@ -65,6 +65,8 @@ endif
ifeq ($(SDL), 1)
include Makefile.d/sdl.mk
else ifeq ($(DEDICATED), 1)
include Makefile.d/dedicated.mk
else
include Makefile.d/dummy.mk
endif

View file

@ -17,7 +17,11 @@ sources+=win32/Srb2win.rc
opts+=-DSTDC_HEADERS
libs+=-ladvapi32 -lkernel32 -lmsvcrt -luser32
ifndef DEDICATED
ifndef DUMMY
SDL?=1
endif
endif
ifndef NOHW
opts+=-DUSE_WGL_SWAP

View file

@ -31,6 +31,26 @@ LUALIB_API void (luaL_setn) (lua_State *L, int t, int n);
/* extra error code for `luaL_load' */
#define LUA_ERRFILE (LUA_ERRERR+1)
/* Compiler-specific attributes and other macros */
#ifdef __GNUC__ // __attribute__ ((X))
#if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) && defined (__MINGW32__) // MinGW, >= GCC 4.1
#if 0 //defined (__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO > 0
#define FUNCREPORT __attribute__ ((format(gnu_printf, 2, 3)))
#elif (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) // >= GCC 4.4
#define FUNCREPORT __attribute__ ((format(ms_printf, 2, 3)))
#else
#define FUNCREPORT __attribute__ ((format(printf, 2, 3)))
#endif
#else
#define FUNCREPORT __attribute__ ((format(printf, 2, 3)))
#endif
#endif
#ifndef FUNCREPORT
#define FUNCREPORT
#endif
typedef struct luaL_Reg {
const char *name;
@ -65,7 +85,7 @@ LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname);
LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
LUALIB_API void (luaL_where) (lua_State *L, int lvl);
LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
LUALIB_API FUNCREPORT int (luaL_error) (lua_State *L, const char *fmt, ...);
LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def,
const char *const lst[]);

View file

@ -220,7 +220,7 @@ static char *bindtable[NUMINPUTS];
static void CONS_Bind_f(void)
{
size_t na;
char *newcmd;
char *newcmd = NULL;
//size_t newlen = 0;
unsigned int i;
INT32 key;
@ -1339,6 +1339,8 @@ boolean CON_Responder(event_t *ev)
if (input_sel != input_cur)
CON_InputDelSelection();
if (ev->type == ev_console)
CON_InputAddChar(key);
return true;
}

View file

@ -1295,7 +1295,7 @@ void D_SRB2Main(void)
#endif
// for dedicated server
#if !defined (_WINDOWS) //already check in win_main.c
#if !defined (_WINDOWS) && !defined (DEDICATED) //already check in win_main.c
dedicated = M_CheckParm("-dedicated") != 0;
#endif

5
src/dedicated/Sourcefile Normal file
View file

@ -0,0 +1,5 @@
i_net.c
i_system.c
i_main.c
i_video.c
i_sound.c

189
src/dedicated/i_main.c Normal file
View file

@ -0,0 +1,189 @@
// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2023 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file d_main.c
/// \brief Main program, simply calls D_SRB2Main and D_SRB2Loop, the high level loop.
#include "../doomdef.h"
#include "../m_argv.h"
#include "../d_main.h"
#include "../m_misc.h"/* path shit */
#include "../i_system.h"
#include "../netcode/d_clisrv.h"
#if defined (__GNUC__) || defined (__unix__)
#include <unistd.h>
#endif
#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
#include <errno.h>
#endif
#include "time.h" // For log timestamps
#ifdef LOGMESSAGES
FILE *logstream = NULL;
char logfilename[1024];
#endif
#ifndef DOXYGEN
#ifndef O_TEXT
#define O_TEXT 0
#endif
#ifndef O_SEQUENTIAL
#define O_SEQUENTIAL 0
#endif
#endif
#if defined (_WIN32)
#include "../win32/win_dbg.h"
typedef BOOL (WINAPI *p_IsDebuggerPresent)(VOID);
#endif
#ifdef LOGMESSAGES
static void InitLogging(void)
{
const char *logdir = NULL;
time_t my_time;
struct tm * timeinfo;
const char *format;
const char *reldir;
int left;
boolean fileabs;
#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
const char *link;
#endif
logdir = D_Home();
my_time = time(NULL);
timeinfo = localtime(&my_time);
if (M_CheckParm("-logfile") && M_IsNextParm())
{
format = M_GetNextParm();
fileabs = M_IsPathAbsolute(format);
}
else
{
format = "log-%Y-%m-%d_%H-%M-%S.txt";
fileabs = false;
}
if (fileabs)
{
strftime(logfilename, sizeof logfilename, format, timeinfo);
}
else
{
if (M_CheckParm("-logdir") && M_IsNextParm())
reldir = M_GetNextParm();
else
reldir = "logs";
if (M_IsPathAbsolute(reldir))
{
left = snprintf(logfilename, sizeof logfilename,
"%s"PATHSEP, reldir);
}
else
#ifdef DEFAULTDIR
if (logdir)
{
left = snprintf(logfilename, sizeof logfilename,
"%s"PATHSEP DEFAULTDIR PATHSEP"%s"PATHSEP, logdir, reldir);
}
else
#endif/*DEFAULTDIR*/
{
left = snprintf(logfilename, sizeof logfilename,
"."PATHSEP"%s"PATHSEP, reldir);
}
strftime(&logfilename[left], sizeof logfilename - left,
format, timeinfo);
}
M_MkdirEachUntil(logfilename,
M_PathParts(logdir) - 1,
M_PathParts(logfilename) - 1, 0755);
#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
logstream = fopen(logfilename, "w");
#ifdef DEFAULTDIR
if (logdir)
link = va("%s/"DEFAULTDIR"/latest-log.txt", logdir);
else
#endif/*DEFAULTDIR*/
link = "latest-log.txt";
unlink(link);
if (symlink(logfilename, link) == -1)
{
I_OutputMsg("Error symlinking latest-log.txt: %s\n", strerror(errno));
}
#else/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
logstream = fopen("latest-log.txt", "wt+");
#endif/*defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)*/
}
#endif
/** \brief The main function
\param argc number of arg
\param *argv string table
\return int
*/
#if defined (__GNUC__) && (__GNUC__ >= 4)
#pragma GCC diagnostic ignored "-Wmissing-noreturn"
#endif
int main(int argc, char **argv)
{
myargc = argc;
myargv = argv; /// \todo pull out path to exe from this string
dedicated = true;
#ifdef LOGMESSAGES
if (!M_CheckParm("-nolog"))
InitLogging();
#endif/*LOGMESSAGES*/
//I_OutputMsg("I_StartupSystem() ...\n");
I_StartupSystem();
#if defined (_WIN32)
LoadLibraryA("exchndl.dll");
#ifndef __MINGW32__
prevExceptionFilter = SetUnhandledExceptionFilter(RecordExceptionInfo);
#endif
#endif
// startup SRB2
CONS_Printf("Setting up SRB2...\n");
D_SRB2Main();
#ifdef LOGMESSAGES
if (!M_CheckParm("-nolog"))
CONS_Printf("Logfile: %s\n", logfilename);
#endif
CONS_Printf("Entering main game loop...\n");
// never return
D_SRB2Loop();
#ifdef BUGTRAP
// This is safe even if BT didn't start.
ShutdownBugTrap();
#endif
// return to OS
return 0;
}

7
src/dedicated/i_net.c Normal file
View file

@ -0,0 +1,7 @@
#include "../netcode/i_net.h"
boolean I_InitNetwork(void)
{
// NOTE: this is no longer used.
return false;
}

214
src/dedicated/i_sound.c Normal file
View file

@ -0,0 +1,214 @@
#include "../i_sound.h"
UINT8 sound_started = 0;
void *I_GetSfx(sfxinfo_t *sfx)
{
(void)sfx;
return NULL;
}
void I_FreeSfx(sfxinfo_t *sfx)
{
(void)sfx;
}
void I_StartupSound(void){}
void I_ShutdownSound(void){}
void I_UpdateSound(void){};
//
// SFX I/O
//
INT32 I_StartSound(sfxenum_t id, UINT8 vol, UINT8 sep, UINT8 pitch, UINT8 priority, INT32 channel)
{
(void)id;
(void)vol;
(void)sep;
(void)pitch;
(void)priority;
(void)channel;
return -1;
}
void I_StopSound(INT32 handle)
{
(void)handle;
}
boolean I_SoundIsPlaying(INT32 handle)
{
(void)handle;
return false;
}
void I_UpdateSoundParams(INT32 handle, UINT8 vol, UINT8 sep, UINT8 pitch)
{
(void)handle;
(void)vol;
(void)sep;
(void)pitch;
}
void I_SetSfxVolume(UINT8 volume)
{
(void)volume;
}
/// ------------------------
// MUSIC SYSTEM
/// ------------------------
void I_InitMusic(void){}
void I_ShutdownMusic(void){}
/// ------------------------
// MUSIC PROPERTIES
/// ------------------------
musictype_t I_SongType(void)
{
return MU_NONE;
}
boolean I_SongPlaying(void)
{
return false;
}
boolean I_SongPaused(void)
{
return false;
}
/// ------------------------
// MUSIC EFFECTS
/// ------------------------
boolean I_SetSongSpeed(float speed)
{
(void)speed;
return false;
}
/// ------------------------
// MUSIC SEEKING
/// ------------------------
UINT32 I_GetSongLength(void)
{
return 0;
}
boolean I_SetSongLoopPoint(UINT32 looppoint)
{
(void)looppoint;
return false;
}
UINT32 I_GetSongLoopPoint(void)
{
return 0;
}
boolean I_SetSongPosition(UINT32 position)
{
(void)position;
return false;
}
UINT32 I_GetSongPosition(void)
{
return 0;
}
/// ------------------------
// MUSIC PLAYBACK
/// ------------------------
boolean I_LoadSong(char *data, size_t len)
{
(void)data;
(void)len;
return -1;
}
void I_UnloadSong(void)
{
}
boolean I_PlaySong(boolean looping)
{
(void)looping;
return false;
}
void I_StopSong(void)
{
}
void I_PauseSong(void)
{
}
void I_ResumeSong(void)
{
}
void I_SetMusicVolume(UINT8 volume)
{
(void)volume;
}
boolean I_SetSongTrack(INT32 track)
{
(void)track;
return false;
}
/// ------------------------
// MUSIC FADING
/// ------------------------
void I_SetInternalMusicVolume(UINT8 volume)
{
(void)volume;
}
void I_StopFadingSong(void)
{
}
boolean I_FadeSongFromVolume(UINT8 target_volume, UINT8 source_volume, UINT32 ms, void (*callback)(void))
{
(void)target_volume;
(void)source_volume;
(void)ms;
(void)callback;
return false;
}
boolean I_FadeSong(UINT8 target_volume, UINT32 ms, void (*callback)(void))
{
(void)target_volume;
(void)ms;
(void)callback;
return false;
}
boolean I_FadeOutStopSong(UINT32 ms)
{
(void)ms;
return false;
}
boolean I_FadeInPlaySong(UINT32 ms, boolean looping)
{
(void)ms;
(void)looping;
return false;
}

1575
src/dedicated/i_system.c Normal file

File diff suppressed because it is too large Load diff

359
src/dedicated/i_threads.c Normal file
View file

@ -0,0 +1,359 @@
// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 2020-2023 by James R.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file i_threads.c
/// \brief Multithreading abstraction
#if defined (__unix__) || (!defined(__APPLE__) && defined (UNIXCOMMON))
#include <pthread.h>
#include "../i_threads.h"
#include "../doomdef.h"
#include "../doomtype.h"
typedef struct thread_s thread_t;
struct thread_s
{
thread_t *next;
void *userdata;
I_thread_fn func;
pthread_t thread;
};
// we use a linked list to avoid moving memory blocks when allocating new threads.
static thread_t *thread_list;
static pthread_mutex_t thread_lock = PTHREAD_MUTEX_INITIALIZER;
static void *HandleThread(void *data)
{
thread_t *thread = data;
thread->func(thread->userdata);
pthread_mutex_lock(&thread_lock);
thread->func = NULL;
pthread_mutex_unlock(&thread_lock);
return NULL;
}
void I_spawn_thread(const char *name, I_thread_fn entry, void *userdata)
{
thread_t *thread;
(void)name;
pthread_mutex_lock(&thread_lock);
thread = thread_list;
while (thread != NULL)
{
if (thread->func == NULL)
{
// join with the exited thread to release it's resources.
pthread_join(thread->thread, NULL);
break;
}
thread = thread->next;
}
if (thread == NULL)
{
thread = malloc(sizeof(thread_t));
thread->next = thread_list;
thread_list = thread;
}
thread->func = entry;
thread->userdata = userdata;
pthread_create(&thread->thread, NULL, HandleThread, thread);
pthread_mutex_unlock(&thread_lock);
}
int I_thread_is_stopped(void)
{
thread_t *thread;
pthread_mutex_lock(&thread_lock);
thread = thread_list;
while (thread != NULL)
{
if (thread->func != NULL)
{
pthread_mutex_unlock(&thread_lock);
return false;
}
thread = thread->next;
}
pthread_mutex_unlock(&thread_lock);
return true;
}
void I_start_threads(void)
{
}
void I_stop_threads(void)
{
thread_t *thread = thread_list;
while (thread != NULL)
{
// join with all threads here, since finished threads haven't been awaited yet.
pthread_join(thread->thread, NULL);
thread = thread->next;
}
}
void I_lock_mutex(I_mutex *anchor)
{
pthread_mutex_lock(&thread_lock);
if (*anchor == NULL)
{
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
// SRB2 relies on lock recursion, so we need a mutex configured for that.
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
*anchor = malloc(sizeof(pthread_mutex_t));
pthread_mutex_init(*anchor, &attr);
pthread_mutexattr_destroy(&attr);
}
pthread_mutex_unlock(&thread_lock);
pthread_mutex_lock(*anchor);
}
void I_unlock_mutex(I_mutex id)
{
pthread_mutex_unlock(id);
}
void I_hold_cond(I_cond *cond_anchor, I_mutex mutex_id)
{
I_Assert(mutex_id != NULL);
pthread_mutex_lock(&thread_lock);
if (*cond_anchor == NULL)
{
*cond_anchor = malloc(sizeof(pthread_cond_t));
pthread_cond_init(*cond_anchor, NULL);
}
pthread_mutex_unlock(&thread_lock);
pthread_cond_wait(*cond_anchor, mutex_id);
}
void I_wake_one_cond(I_cond *anchor)
{
pthread_mutex_lock(&thread_lock);
if (*anchor == NULL)
{
*anchor = malloc(sizeof(pthread_cond_t));
pthread_cond_init(*anchor, NULL);
}
pthread_mutex_unlock(&thread_lock);
pthread_cond_signal(*anchor);
}
void I_wake_all_cond(I_cond *anchor)
{
pthread_mutex_lock(&thread_lock);
if (*anchor == NULL)
{
*anchor = malloc(sizeof(pthread_t));
pthread_cond_init(*anchor, NULL);
}
pthread_mutex_unlock(&thread_lock);
pthread_cond_broadcast(*anchor);
}
#elif defined (_WIN32)
#include <windows.h>
#include "../i_threads.h"
#include "../doomdef.h"
#include "../doomtype.h"
typedef struct thread_s thread_t;
struct thread_s
{
thread_t *next;
void *userdata;
I_thread_fn func;
HANDLE thread;
DWORD thread_id;
};
// we use a linked list to avoid moving memory blocks when allocating new threads.
static thread_t *thread_list;
static CRITICAL_SECTION thread_lock;
static DWORD __stdcall HandleThread(void *data)
{
thread_t *thread = data;
thread->func(thread->userdata);
EnterCriticalSection(&thread_lock);
thread->func = NULL;
LeaveCriticalSection(&thread_lock);
return 0;
}
void I_spawn_thread(const char *name, I_thread_fn entry, void *userdata)
{
thread_t *thread;
(void)name;
EnterCriticalSection(&thread_lock);
thread = thread_list;
while (thread != NULL)
{
if (thread->func == NULL)
{
CloseHandle(thread->thread);
break;
}
thread = thread->next;
}
if (thread == NULL)
{
thread = malloc(sizeof(thread_t));
thread->next = thread_list;
thread_list = thread;
}
thread->func = entry;
thread->userdata = userdata;
thread->thread = CreateThread(NULL, 0, HandleThread, thread, 0, &thread->thread_id);
LeaveCriticalSection(&thread_lock);
}
int I_thread_is_stopped(void)
{
thread_t *thread;
EnterCriticalSection(&thread_lock);
thread = thread_list;
while (thread != NULL)
{
if (thread->func != NULL)
{
LeaveCriticalSection(&thread_lock);
return false;
}
thread = thread->next;
}
LeaveCriticalSection(&thread_lock);
return true;
}
void I_start_threads(void)
{
InitializeCriticalSection(&thread_lock);
}
void I_stop_threads(void)
{
thread_t *thread = thread_list;
while (thread != NULL)
{
WaitForSingleObject(thread->thread, INFINITE);
CloseHandle(thread->thread);
thread = thread->next;
}
DeleteCriticalSection(&thread_lock);
}
void I_lock_mutex(I_mutex *anchor)
{
EnterCriticalSection(&thread_lock);
if (*anchor == NULL)
{
*anchor = malloc(sizeof(CRITICAL_SECTION));
InitializeCriticalSection(*anchor);
}
LeaveCriticalSection(&thread_lock);
EnterCriticalSection(*anchor);
}
void I_unlock_mutex(I_mutex id)
{
LeaveCriticalSection(id);
}
void I_hold_cond(I_cond *cond_anchor, I_mutex mutex_id)
{
I_Assert(mutex_id != NULL);
EnterCriticalSection(&thread_lock);
if (*cond_anchor == NULL)
{
*cond_anchor = malloc(sizeof(CONDITION_VARIABLE));
InitializeConditionVariable(*cond_anchor);
}
LeaveCriticalSection(&thread_lock);
SleepConditionVariableCS(*cond_anchor, mutex_id, INFINITE);
}
void I_wake_one_cond(I_cond *anchor)
{
EnterCriticalSection(&thread_lock);
if (*anchor == NULL)
{
*anchor = malloc(sizeof(CONDITION_VARIABLE));
InitializeConditionVariable(*anchor);
}
LeaveCriticalSection(&thread_lock);
WakeConditionVariable(*anchor);
}
void I_wake_all_cond(I_cond *anchor)
{
EnterCriticalSection(&thread_lock);
if (*anchor == NULL)
{
*anchor = malloc(sizeof(CONDITION_VARIABLE));
InitializeConditionVariable(*anchor);
}
LeaveCriticalSection(&thread_lock);
WakeAllConditionVariable(*anchor);
}
#else
void I_spawn_thread(const char *name, I_thread_fn entry, void *userdata)
{
(void)name;
entry(userdata);
}
int I_thread_is_stopped(void)
{
}
void I_start_threads(void)
{
}
void I_stop_threads(void)
{
}
void I_lock_mutex(I_mutex *anchor)
{
(void)anchor;
}
void I_unlock_mutex(I_mutex id)
{
(void)id;
}
void I_hold_cond(I_cond *cond_anchor, I_mutex mutex_id)
{
(void)cond_anchor;
(void)mutex_id;
}
void I_wake_one_cond(I_cond *anchor)
{
(void)anchor;
}
void I_wake_all_cond(I_cond *anchor)
{
(void)anchor;
}
#endif

81
src/dedicated/i_video.c Normal file
View file

@ -0,0 +1,81 @@
#include "../doomdef.h"
#include "../command.h"
#include "../i_video.h"
rendermode_t rendermode = render_none;
rendermode_t chosenrendermode = render_none;
boolean highcolor = false;
boolean allow_fullscreen = false;
consvar_t cv_vidwait = CVAR_INIT ("vid_wait", "On", CV_SAVE, CV_OnOff, NULL);
void I_StartupGraphics(void){}
void I_ShutdownGraphics(void){}
void VID_StartupOpenGL(void){}
void I_SetPalette(RGBA_t *palette)
{
(void)palette;
}
INT32 VID_NumModes(void)
{
return 0;
}
INT32 VID_GetModeForSize(INT32 w, INT32 h)
{
(void)w;
(void)h;
return 0;
}
void VID_PrepareModeList(void){}
INT32 VID_SetMode(INT32 modenum)
{
(void)modenum;
return 0;
}
boolean VID_CheckRenderer(void)
{
return false;
}
void VID_CheckGLLoaded(rendermode_t oldrender)
{
(void)oldrender;
}
const char *VID_GetModeName(INT32 modenum)
{
(void)modenum;
return NULL;
}
UINT32 I_GetRefreshRate(void) { return 35; }
void I_UpdateNoBlit(void){}
void I_FinishUpdate(void){}
void I_UpdateNoVsync(void) {}
void I_WaitVBL(INT32 count)
{
(void)count;
}
void I_ReadScreen(UINT8 *scr)
{
(void)scr;
}
void I_BeginRead(void){}
void I_EndRead(void){}

View file

@ -206,5 +206,10 @@ void I_GetCursorPosition(INT32 *x, INT32 *y)
(void)y;
}
const char *I_GetSysName(void)
{
return NULL;
}
#include "../sdl/dosstr.c"

View file

@ -4621,6 +4621,9 @@ void G_SaveGameData(gamedata_t *data)
INT32 curmare;
if (!data)
return; // data struct not valid
if (!data->loaded)
return; // If never loaded (-nodata), don't save

View file

@ -7247,7 +7247,6 @@ static CV_PossibleValue_t glfiltermode_cons_t[]= {{HWD_SET_TEXTUREFILTER_POINTSA
CV_PossibleValue_t glanisotropicmode_cons_t[] = {{1, "MIN"}, {16, "MAX"}, {0, NULL}};
consvar_t cv_glshaders = CVAR_INIT ("gr_shaders", "On", CV_SAVE, glshaders_cons_t, NULL);
consvar_t cv_glallowshaders = CVAR_INIT ("gr_allowclientshaders", "On", CV_NETVAR, CV_OnOff, NULL);
#ifdef ALAM_LIGHTING
consvar_t cv_gldynamiclighting = CVAR_INIT ("gr_dynamiclighting", "On", CV_SAVE, CV_OnOff, NULL);
@ -7306,7 +7305,6 @@ void HWR_AddCommands(void)
CV_RegisterVar(&cv_glfakecontrast);
CV_RegisterVar(&cv_glshearing);
CV_RegisterVar(&cv_glshaders);
CV_RegisterVar(&cv_glallowshaders);
CV_RegisterVar(&cv_glfiltermode);
CV_RegisterVar(&cv_glanisotropicmode);

View file

@ -335,4 +335,8 @@ void I_GetCursorPosition(INT32 *x, INT32 *y);
*/
void I_SetMouseGrab(boolean grab);
/** \brief Returns the system name.
*/
const char *I_GetSysName(void);
#endif

View file

@ -21791,7 +21791,7 @@ void P_PatchInfoTables(void)
INT32 i;
char *tempname;
#if NUMSPRITEFREESLOTS > 1000
#if NUMSPRITEFREESLOTS > 9999 //tempname numbering actually starts at SPR_FIRSTFREESLOT, so the limit is actually 9999 + SPR_FIRSTFREESLOT-1, but the preprocessor doesn't understand enums, so its left at 9999 for safety
"Update P_PatchInfoTables, you big dumb head"
#endif
@ -21799,8 +21799,8 @@ void P_PatchInfoTables(void)
for (i = SPR_FIRSTFREESLOT; i <= SPR_LASTFREESLOT; i++)
{
tempname = sprnames[i];
tempname[0] = 'F';
tempname[1] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)/100));
tempname[0] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)/1000));
tempname[1] = (char)('0' + (char)(((i-SPR_FIRSTFREESLOT+1)/100)%10));
tempname[2] = (char)('0' + (char)(((i-SPR_FIRSTFREESLOT+1)/10)%10));
tempname[3] = (char)('0' + (char)((i-SPR_FIRSTFREESLOT+1)%10));
tempname[4] = '\0';

View file

@ -572,7 +572,7 @@ void A_ChangeHeight();
extern int actionsoverridden[NUMACTIONS][MAX_ACTION_RECURSION];
// ratio of states to sprites to mobj types is roughly 6 : 1 : 1
#define NUMMOBJFREESLOTS 512
#define NUMMOBJFREESLOTS 1024
#define NUMSPRITEFREESLOTS NUMMOBJFREESLOTS
#define NUMSTATEFREESLOTS (NUMMOBJFREESLOTS*8)

View file

@ -312,17 +312,12 @@ static int lib_searchBlockmap(lua_State *L)
continue; // our thing just found itself, so move on
funcret = lib_searchBlockmap_Objects(L, mobj, itmobj);
if (funcret == 2) {
lua_pushboolean(L, false);
return 1;
}
else if (funcret == 1)
retval = false;
if (P_MobjWasRemoved(mobj)) {
if (funcret == 2 || P_MobjWasRemoved(mobj)) {
retval = false;
break;
}
else if (funcret == 1)
retval = false;
}
}
while (itmobj != NULL);

View file

@ -483,7 +483,7 @@ static int spriteinfo_set(lua_State *L)
}
}
else
return luaL_error(L, va("Field %s does not exist in spriteinfo_t", field));
return luaL_error(L, "Field %s does not exist in spriteinfo_t", field);
return 0;
}
@ -577,7 +577,7 @@ static int framepivot_get(lua_State *L)
lua_pushinteger(L, 0);
}
else
return luaL_error(L, va("Field %s does not exist in spriteframepivot_t", field));
return luaL_error(L, "Field %s does not exist in spriteframepivot_t", field);
return 1;
}
@ -604,7 +604,7 @@ static int framepivot_set(lua_State *L)
else if (fastcmp("rotaxis", field))
LUA_UsageWarning(L, "\"rotaxis\" is deprecated and will be removed.")
else
return luaL_error(L, va("Field %s does not exist in spriteframepivot_t", field));
return luaL_error(L, "Field %s does not exist in spriteframepivot_t", field);
return 0;
}
@ -1663,7 +1663,7 @@ static void setRamp(lua_State *L, skincolor_t* c) {
lua_pushnil(L);
for (i=0; i<COLORRAMPSIZE; i++) {
if (lua_objlen(L,-2)!=COLORRAMPSIZE) {
luaL_error(L, LUA_QL("skincolor_t") " field 'ramp' must be %d entries long; got %d.", COLORRAMPSIZE, lua_objlen(L,-2));
luaL_error(L, LUA_QL("skincolor_t") " field 'ramp' must be %d entries long; got %d.", COLORRAMPSIZE, luaL_getn(L,-2));
break;
}
if (lua_next(L, -2) != 0) {

View file

@ -1003,6 +1003,9 @@ static int mapthing_get(lua_State *L)
return 0;
}
if (field == (enum mapthing_e)-1)
return LUA_ErrInvalid(L, "fields");
switch (field)
{
case mapthing_valid:
@ -1061,7 +1064,7 @@ static int mapthing_get(lua_State *L)
break;
default:
if (devparm)
return luaL_error(L, LUA_QL("mapthing_t") " has no field named " LUA_QS, field);
return luaL_error(L, "%s %s", LUA_QL("mapthing_t"), va("has no field named: %ui", field));
else
return 0;
}
@ -1078,6 +1081,9 @@ static int mapthing_set(lua_State *L)
if (!mt)
return luaL_error(L, "accessed mapthing_t doesn't exist anymore.");
if (field == (enum mapthing_e)-1)
return LUA_ErrInvalid(L, "fields");
if (hud_running)
return luaL_error(L, "Do not alter mapthing_t in HUD rendering code!");
if (hook_cmd_running)
@ -1135,7 +1141,7 @@ static int mapthing_set(lua_State *L)
mt->mobj = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ));
break;
default:
return luaL_error(L, LUA_QL("mapthing_t") " has no field named " LUA_QS, field);
return luaL_error(L, "%s %s", LUA_QL("mapthing_t"), va("has no field named: %ui", field));
}
return 0;

View file

@ -1423,8 +1423,8 @@ static int power_len(lua_State *L)
return 1;
}
#define NOFIELD luaL_error(L, LUA_QL("ticcmd_t") " has no field named " LUA_QS, field)
#define NOSET luaL_error(L, LUA_QL("ticcmd_t") " field " LUA_QS " should not be set directly.", ticcmd_opt[field])
#define NOFIELD luaL_error(L, "%s %s", LUA_QL("ticcmd_t"), va("has no field named %ui", field))
#define NOSET luaL_error(L, LUA_QL("ticcmd_t") " field %s should not be set directly.", ticcmd_opt[field])
enum ticcmd_e
{
@ -1455,6 +1455,9 @@ static int ticcmd_get(lua_State *L)
if (!cmd)
return LUA_ErrInvalid(L, "player_t");
if (field == (enum ticcmd_e)-1)
return LUA_ErrInvalid(L, "fields");
switch (field)
{
case ticcmd_forwardmove:
@ -1489,6 +1492,9 @@ static int ticcmd_set(lua_State *L)
if (!cmd)
return LUA_ErrInvalid(L, "ticcmd_t");
if (field == (enum ticcmd_e)-1)
return LUA_ErrInvalid(L, "fields");
if (hud_running)
return luaL_error(L, "Do not alter player_t in HUD rendering code!");

View file

@ -10535,7 +10535,7 @@ static void M_StartTimeAttackReplay(INT32 choice)
// Player has selected the "REPLAY" from the time attack screen
static void M_ReplayTimeAttack(INT32 choice)
{
const char *which;
const char *which = NULL;
UINT8 error = DFILE_ERROR_NONE;
if (currentMenu == &SP_ReplayDef)

View file

@ -393,6 +393,9 @@ consvar_t cv_ps_descriptor = CVAR_INIT ("ps_descriptor", "Average", 0, ps_descri
consvar_t cv_freedemocamera = CVAR_INIT("freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL);
// NOTE: this should be in hw_main.c, but we can't put it there as it breaks dedicated build
consvar_t cv_glallowshaders = CVAR_INIT ("gr_allowclientshaders", "On", CV_NETVAR, CV_OnOff, NULL);
char timedemo_name[256];
boolean timedemo_csv;
char timedemo_csv_id[256];
@ -526,6 +529,8 @@ void D_RegisterServerCommands(void)
// for master server connection
AddMServCommands();
CV_RegisterVar(&cv_glallowshaders);
// p_mobj.c
CV_RegisterVar(&cv_itemrespawntime);
CV_RegisterVar(&cv_itemrespawn);
@ -3812,18 +3817,7 @@ static void Command_Version_f(void)
#endif
// OS
// Would be nice to use SDL_GetPlatform for this
#if defined (_WIN32) || defined (_WIN64)
CONS_Printf("Windows ");
#elif defined(__linux__)
CONS_Printf("Linux ");
#elif defined(MACOSX)
CONS_Printf("macOS ");
#elif defined(UNIXCOMMON)
CONS_Printf("Unix (Common) ");
#else
CONS_Printf("Other OS ");
#endif
CONS_Printf("%s ", I_GetSysName());
// Bitness
if (sizeof(void*) == 4)

View file

@ -1096,8 +1096,6 @@ bthingit_t *P_NewBlockThingsIterator(int x1, int y1, int x2, int y2)
return NULL;
block = GetBlockmapBlock(x1, y1);
if (!block)
return NULL;
if (freeiters != NULL)
{
@ -1189,12 +1187,12 @@ mobj_t *P_BlockThingsIteratorNext(bthingit_t *it, boolean centeronly)
if (!it->dynhash)
{
it->dynhashcapacity = 50;
Z_Calloc(it->dynhashcapacity * sizeof(it->dynhashcapacity), PU_LEVEL, &it->dynhash);
Z_Calloc(it->dynhashcapacity * sizeof(*it->dynhash), PU_LEVEL, &it->dynhash);
}
if (it->dynhashcount == it->dynhashcapacity)
{
it->dynhashcapacity *= 2;
it->dynhash = Z_Realloc(it->dynhash, it->dynhashcapacity * sizeof(it->dynhashcapacity), PU_LEVEL, &it->dynhash);
it->dynhash = Z_Realloc(it->dynhash, it->dynhashcapacity * sizeof(*it->dynhash), PU_LEVEL, &it->dynhash);
}
i = (int)it->dynhashcount;
it->dynhashcount++;

View file

@ -376,7 +376,7 @@ void *Picture_PatchConvert(
// Write columns
for (INT32 x = 0; x < inwidth; x++)
{
post_t *post;
post_t *post = NULL;
size_t post_data_offset = 0;
boolean was_opaque = false;

View file

@ -147,7 +147,7 @@ static void R_DrawFlippedColumnInCache(column_t *column, UINT8 *cache, texpatch_
if (count > 0)
{
for (; dest < cache + position + count; --source)
for (; dest < cache + position + count; --source, is_opaque++)
{
*dest++ = *source;
*is_opaque = true;
@ -191,7 +191,7 @@ static void R_DrawBlendColumnInCache(column_t *column, UINT8 *cache, texpatch_t
if (count > 0)
{
for (; dest < cache + position + count; source++, dest++)
for (; dest < cache + position + count; source++, dest++, is_opaque++)
{
*dest = ASTBlendPaletteIndexes(*dest, *source, originPatch->style, originPatch->alpha);
*is_opaque = true;
@ -235,7 +235,7 @@ static void R_DrawBlendFlippedColumnInCache(column_t *column, UINT8 *cache, texp
if (count > 0)
{
for (; dest < cache + position + count; --source, dest++)
for (; dest < cache + position + count; --source, dest++, is_opaque++)
{
*dest = ASTBlendPaletteIndexes(*dest, *source, originPatch->style, originPatch->alpha);
*is_opaque = true;
@ -472,7 +472,7 @@ UINT8 *R_GenerateTexture(size_t texnum)
for (x = 0; x < texture->width; x++)
{
post_t *post;
post_t *post = NULL;
boolean was_opaque = false;
column_t *column = &temp_columns[x];

View file

@ -165,7 +165,22 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<LanguageStandard>stdcpp17</LanguageStandard>
<PreprocessorDefinitions>HAVE_CURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\libs\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<CustomBuild>
<Command />
</CustomBuild>
<CustomBuild>
<Message />
</CustomBuild>
<CustomBuild>
<Outputs />
</CustomBuild>
<Link>
<AdditionalDependencies>libcurl.dll.a;libz32.a;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\libs\zlib\win32;..\..\libs\curl\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@ -175,7 +190,50 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<DisableSpecificWarnings>4244;4267;4146;4003</DisableSpecificWarnings>
<PreprocessorDefinitions>HAVE_CURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\libs\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<CustomBuild>
<Command />
</CustomBuild>
<CustomBuild>
<Message />
</CustomBuild>
<CustomBuild>
<Outputs />
</CustomBuild>
<Link>
<AdditionalDependencies>libcurl.dll.a;libz32.a;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\libs\zlib\win32;..\libs\curl\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<TreatWarningAsError>false</TreatWarningAsError>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<DisableSpecificWarnings>4244;4267;4146</DisableSpecificWarnings>
<PreprocessorDefinitions>HAVE_CURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\libs\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalModuleDependencies>..\libs\curl\lib64;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
</ClCompile>
<Link>
<AdditionalDependencies>libcurl.a;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\libs\curl\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>HAVE_CURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>libcurl.a;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\libs\curl\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\..\libs\libpng-src\projects\visualc10\libpng.vcxproj">
@ -314,7 +372,6 @@
<ClInclude Include="..\netcode\server_connection.h" />
<ClInclude Include="..\netcode\tic_command.h" />
<ClInclude Include="..\p5prof.h" />
<ClInclude Include="..\p_haptic.h" />
<ClInclude Include="..\p_local.h" />
<ClInclude Include="..\p_maputl.h" />
<ClInclude Include="..\p_mobj.h" />
@ -400,6 +457,7 @@
<ClCompile Include="..\blua\lmem.c" />
<ClCompile Include="..\blua\lobject.c" />
<ClCompile Include="..\blua\lopcodes.c" />
<ClCompile Include="..\blua\loslib.c" />
<ClCompile Include="..\blua\lparser.c" />
<ClCompile Include="..\blua\lstate.c" />
<ClCompile Include="..\blua\lstring.c" />
@ -438,6 +496,8 @@
<ClCompile Include="..\hardware\hw_md3load.c" />
<ClCompile Include="..\hardware\hw_model.c" />
<ClCompile Include="..\hardware\r_opengl\r_opengl.c" />
<ClCompile Include="..\lua_colorlib.c" />
<ClCompile Include="..\r_bbox.c" />
<ClCompile Include="..\u_list.c" />
<ClCompile Include="..\hu_stuff.c" />
<ClCompile Include="..\info.c" />
@ -495,7 +555,6 @@
<ClCompile Include="..\p_ceilng.c" />
<ClCompile Include="..\p_enemy.c" />
<ClCompile Include="..\p_floor.c" />
<ClCompile Include="..\p_haptic.c" />
<ClCompile Include="..\p_inter.c" />
<ClCompile Include="..\p_lights.c" />
<ClCompile Include="..\p_map.c" />
@ -567,7 +626,6 @@
<ClCompile Include="IMG_xpm.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="i_gamepad.c" />
<ClCompile Include="i_main.c" />
<ClCompile Include="i_net.c" />
<ClCompile Include="i_system.c" />
@ -584,4 +642,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View file

@ -255,9 +255,6 @@
<ClInclude Include="..\hardware\hw_model.h">
<Filter>Hw_Hardware</Filter>
</ClInclude>
<ClInclude Include="..\hardware\u_list.h">
<Filter>Hw_Hardware</Filter>
</ClInclude>
<ClInclude Include="..\byteptr.h">
<Filter>I_Interface</Filter>
</ClInclude>
@ -378,9 +375,6 @@
<ClInclude Include="..\netcode\gamestate.h">
<Filter>D_Doom</Filter>
</ClInclude>
<ClInclude Include="..\netcode\http-mserv.h">
<Filter>I_Interface</Filter>
</ClInclude>
<ClInclude Include="..\netcode\i_addrinfo.h">
<Filter>I_Interface</Filter>
</ClInclude>
@ -558,12 +552,16 @@
<ClInclude Include="..\r_fps.h">
<Filter>R_Rend</Filter>
</ClInclude>
<ClInclude Include="..\p_haptic.h">
<Filter>P_Play</Filter>
</ClInclude>
<ClInclude Include="..\m_easing.h">
<Filter>M_Misc</Filter>
</ClInclude>
<ClInclude Include="..\d_clisrv.h" />
<ClInclude Include="..\d_net.h" />
<ClInclude Include="..\d_netcmd.h" />
<ClInclude Include="..\d_netfil.h" />
<ClInclude Include="..\u_list.h" />
<ClInclude Include="..\mserv.h" />
<ClInclude Include="..\http-mserv.h" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\tmap.nas">
@ -753,15 +751,9 @@
<ClCompile Include="..\hardware\hw_model.c">
<Filter>Hw_Hardware</Filter>
</ClCompile>
<ClCompile Include="..\hardware\u_list.c">
<Filter>Hw_Hardware</Filter>
</ClCompile>
<ClCompile Include="..\filesrch.c">
<Filter>I_Interface</Filter>
</ClCompile>
<ClCompile Include="..\i_tcp.c">
<Filter>I_Interface</Filter>
</ClCompile>
<ClCompile Include="..\lua_baselib.c">
<Filter>LUA</Filter>
</ClCompile>
@ -1105,21 +1097,25 @@
<ClCompile Include="..\lua_hudlib_drawlist.c">
<Filter>LUA</Filter>
</ClCompile>
<ClCompile Include="i_gamepad.c">
<Filter>SDLApp</Filter>
</ClCompile>
<ClCompile Include="..\i_time.c">
<Filter>I_Interface</Filter>
</ClCompile>
<ClCompile Include="..\r_fps.c">
<Filter>R_Rend</Filter>
</ClCompile>
<ClCompile Include="..\p_haptic.c">
<Filter>P_Play</Filter>
</ClCompile>
<ClCompile Include="..\m_easing.c">
<Filter>M_Misc</Filter>
</ClCompile>
<ClCompile Include="..\u_list.c" />
<ClCompile Include="..\blua\loslib.c">
<Filter>BLUA</Filter>
</ClCompile>
<ClCompile Include="..\lua_colorlib.c">
<Filter>LUA</Filter>
</ClCompile>
<ClCompile Include="..\r_bbox.c">
<Filter>R_Rend</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="Srb2SDL.ico">

View file

@ -652,7 +652,6 @@ void I_GetConsoleEvents(void)
else if (tty_con.cursor < sizeof (tty_con.buffer))
{
// push regular character
ev.type = ev_text;
ev.key = tty_con.buffer[tty_con.cursor] = key;
tty_con.cursor++;
// print the current line (this is differential)
@ -3256,4 +3255,10 @@ const CPUInfoFlags *I_CPUInfo(void)
// note CPUAFFINITY code used to reside here
void I_RegisterSysCommands(void) {}
const char *I_GetSysName(void)
{
return SDL_GetPlatform();
}
#endif