Commit Graph

265 Commits

Author SHA1 Message Date
Salamanderrake
836a4abc43 CMakeLists.txt: Redid the section on c/cxx flags to sepereate them
so you can have c++ only flags along with c only flags
	fore their respective .c/.cpp builds without conflict.
2016-04-19 04:38:55 -04:00
Ryan C. Gordon
1f7bb24a4d Merge pull request #26 from DanielGibson/64bit-stuff
Some 64bit improvements, lots of 64bit TODOs/STUBBED()
2016-04-18 22:33:58 -04:00
notaz
8bbe4c1d5e fix build on gcc 4.8
some versions of gcc want to inline DitherBitmap(), and this leads to trouble:
Sources/Engine/Graphics/Graphics.cpp:1167: Error: symbol `rowLoopE' is already defined
Sources/Engine/Graphics/Graphics.cpp:1170: Error: symbol `pixLoopEL' is already defined
...
2016-04-18 23:55:41 +03:00
Daniel Gibson
ab5d0a584f Make Engine/Graphics/Texture.cpp 64bit-clean (hopefully!)
((ULONG*)td_ulObject)[iFr] is fishy - and ULONG td_ulObject already is
in an union with ULONG* td_pulObjects, so use td_pulObjects when
appropriate (i.e. if td_ctFrames>1)
Also fixed some checks accordingly.
2016-04-18 20:10:24 +02:00
Daniel Gibson
93daf905f1 EntitiesMP/Common/Particles.cpp: Don't access afStarsPositions[i][3]
fix out of bounds accesses of that array.
I guess the same will have to be done for Entities/Common/Particles.cpp
2016-04-18 19:37:02 +02:00
Daniel Gibson
80990f2317 Fix some more warnings, Warning about supressed warnings in cmake 2016-04-18 19:10:52 +02:00
Daniel Gibson
5f5106e363 CShell::[SG]etCurrentWorld() instead of putting it in INDEX console var
The code used to store the world pointer as a console variable
"pwoCurrentWorld" of type INDEX (int32) - that won't work for 64bit, so
I added CShell::SetCurrentWorld() and CShell::GetCurrentWorld() and
store it as a pointer.
2016-04-18 18:52:52 +02:00
Joshua Scoggins
a4ca331de9 Added some more todos 2016-04-18 00:13:30 -07:00
Joshua Scoggins
f8cb52f8ad Delete an unused include 2016-04-17 23:50:00 -07:00
Joshua Scoggins
a8c22df784 Forgot to write Engine to disk :( 2016-04-17 23:49:18 -07:00
Joshua Scoggins
2d8a4df68c Add the system specific include file 2016-04-17 23:49:02 -07:00
Joshua Scoggins
0c847ab479 Move system specific includes out to a separate file 2016-04-17 23:48:44 -07:00
Joshua Scoggins
8b8ec1f39a Add some C++11 features into Types.h since C++11 is so cool :D 2016-04-17 23:30:48 -07:00
Joshua Scoggins
c8ab519b77 More big endian targets to detect 2016-04-17 23:26:33 -07:00
Joshua Scoggins
42b2822414 More todo's 2016-04-17 23:20:59 -07:00
Joshua Scoggins
35955d20ba use stdint.h instead of courage in Types.h 2016-04-17 23:18:23 -07:00
Joshua Scoggins
5b2933e217 Defined USE_PORTABLE_C when we can't figure out the platform 2016-04-17 23:06:49 -07:00
Joshua Scoggins
535832668f Fixed a broken function call 2016-04-17 23:04:12 -07:00
Joshua Scoggins
e5c0e4f3f4 Add better platform detection abilities 2016-04-17 23:02:49 -07:00
Joshua Scoggins
e82ad0c131 Move system specific deinit to a separate function for now 2016-04-17 23:02:39 -07:00
Joshua Scoggins
b221d5fce2 Make it so that anything system specific is not in SE_InitEngine 2016-04-17 22:53:31 -07:00
Joshua Scoggins
a3c5d30f21 Move the "please abstract" seconds to separate static functions for now 2016-04-17 22:49:58 -07:00
Joshua Scoggins
21d4aec7f7 Follow coding conventions 2016-04-17 22:40:08 -07:00
Joshua Scoggins
12e8b991b3 Move the platform identification code out of SE_InitEngine to PlatformIdentification 2016-04-17 22:39:19 -07:00
Daniel Gibson
78ab018fde CMakeLists.txt: output lib* to Debug/ subdir; suppress more warnings
ssam expects lib* to be in the Debug subdir, so make cmake put it there,
this way it's easier to copy the binaries to your install/Bin/ dir to
test.
clang gives a lot of -Wlogical-op-parentheses warnings, suppress them.
2016-04-18 00:56:21 +02:00
Daniel Gibson
a358a1763f Some more FIXMEs 2016-04-18 00:53:58 +02:00
Daniel Gibson
599f644328 Resolved some 64bit issues, marked/commented some others
introduced PLATFORM_32BIT and PLATFORM_64BIT macros, so you can do
#ifdef PLATFORM_64BIT if you need to.
I needed that for CDrawPort::GetID() to properly CRC a pointer.
Also added a sanity check in Engine/Base/Types.h that makes sure that
uintprt_t and size_t have the same size, as the code uses size_t to
store pointers (or cast from pointer to int) all over the place.

Made some "tags" from Engine/Templates/BSP_internal.h size_t instead of
ULONG - they're used to store pointers to identify vertices and such,
so they'd better be big enough to actually store a pointer.
Some more are still missing.
2016-04-17 23:35:04 +02:00
Daniel Gibson
8d26863a51 Improve some portable C implementations of math functions
* FloatToInt() should now  round correctly ot nearest, even for
  negative numbers
* Log2() now calls log2f() instead of log10()*3.321 - no idea what the
  previous code was about, I doubt it's faster (and the ASM code uses
  something like log2, too).
* FastLog2() (for integers) now uses __builtin_clz() when building with
  GCC/clang - the resulting ASM should be pretty similar to the inline
  ASM below. I wonder why that function takes signed ints, log2(-1) in
  reality is an irrational number (but the function returns 31)..
  Also, both the inline ASM and my version return 0 for Log2(0), but
  INT_MIN would be closer to the truth
* commented out FastMaxLog2(), it's unused.
* implemented _rotl() using a fast(er) trick from
  http://blog.regehr.org/archives/1063
2016-04-17 23:15:56 +02:00
Daniel Gibson
b934fa1945 Increase SDL soundbuffer for smoother sound playback
before it sounded shitty on my system, no it sounds good.
2016-04-17 01:07:14 +02:00
Daniel Gibson
24dcb9cc4f Don't #include <malloc.h> on Linux, only on Windows
Linux, FreeBSD and OSX should use stdlib.h instead.
2016-04-17 01:06:39 +02:00
Ryan C. Gordon
dc2c869cfc Merge pull request #24 from ptitSeb/master
More OpenPandora support (special keymap) and optionnal Multi-Threading.
2016-04-15 14:52:56 -04:00
Ryan C. Gordon
d66559abfa Merge pull request #23 from Yamagi/freebsd
Add Freebsd support
2016-04-15 13:07:29 -04:00
Ryan C. Gordon
8006012b90 Merge pull request #20 from stevenc99/rdynamic
Export symbols of main executable to dynamic libs
2016-04-15 13:03:07 -04:00
Yamagi Burmeister
0e672b866e Determine CPU speed on FreeBSD 2016-04-13 19:24:51 +02:00
ptitSeb
cd2a586a9e Better #if condition, and add a warning to be better checked latter 2016-04-13 08:21:50 +02:00
Steven Chamberlain
95b4404cbc DedicatedServer: declare a dummy _hwndMain 2016-04-13 02:25:58 +01:00
Steven Chamberlain
9f7467d3ad Fix another 1L literal 2016-04-13 02:24:55 +01:00
Steven Chamberlain
1a7ec841cb Export symbols of main executables for shared libs
Set the ENABLE_EXPORTS property on the main executables, which adds
linker flag -rdynamic if the compiler supports it.  This ensures symbols
are available for dynamic objects (such as shared libEntitiesMPD.so) to
use.
2016-04-13 02:00:21 +01:00
ptitSeb
9678ec3e58 Enabled Multi-Threading (as an option) + OpenPandora specific changes (for Shoulder As Mouse Buttons) 2016-04-12 22:29:39 +02:00
Yamagi Burmeister
b299789db5 mntent.h is another linuxism and unnecessary on FreeBSD. 2016-04-12 19:27:52 +02:00
Yamagi Burmeister
d1d9c8d094 There's no malloc.h on FreeBSD.
Like in OS X malloc() is part of stdlib.h.
2016-04-12 19:27:52 +02:00
Yamagi Burmeister
08dae0c605 Add FreeBSD defined to CMakeLists.txt
- Detect FreeBSD.
- Set both PLATFORM_UNIX and PLATFORM_FREEBSD. The latter is required to
  distinguish FreeBSD from other unixoid platforms like Linux.
- On FreeBSD 3rd party libs are installed to /usr/local, we need to add
  /usr/local/include as include directory.
- Add linker options for FreeBSD. FreeBSD has no -ldl.
2016-04-12 19:26:58 +02:00
Ryan C. Gordon
df6199de70 Merge pull request #19 from rcgordon/sdl2-port
Sdl2 port
2016-04-12 01:38:05 -04:00
Ryan C. Gordon
2dd011573b Merge pull request #18 from salamanderrake/sdl2-port-findsdl2
Auto linking SDL2 libraries
2016-04-12 01:36:12 -04:00
Ryan C. Gordon
a0595204d4 Fixed what appears to be an uninitialized memory access.
This appears to fix crashes in 64-bit Linux builds. Might all be luck, though.
2016-04-12 01:27:40 -04:00
Salamanderrake
df16878e0e FindSDL2.cmake: Added module to help find system libraries for SDL2
CMakeLists.txt: Modified to link system wide SDL2 libraries and link to
	system wide headers
SplashScreen.cpp: commented out as its post SDL2.0.4 >> SDL_WINDOW_SKIP_TASKBAR
2016-04-12 01:21:25 -04:00
Ryan C. Gordon
67e940def8 Merge pull request #17 from RocketersAlex/linux-port
GameAgent - list servers bugfix.
2016-04-12 00:12:51 -04:00
Ryan C. Gordon
1d4440f02d Don't use FULLSCREEN_DESKTOP mode until Ryan finishes the backbuffer code. 2016-04-11 23:45:59 -04:00
RocketersAlex
dd0ad84385 GameAgent - list servers bugfix (update) 2016-04-12 04:10:43 +03:00
RocketersAlex
eeebba11dc GameAgent - list servers bugfix 2016-04-12 04:03:25 +03:00
ptitSeb
dfe262b619 Don't pump SDL Event in GetInput, or they will be missing in SeriousSam.cpp:SubMain(...) 2016-04-11 08:32:38 +02:00
Ryan C. Gordon
02af656d1c Whoops, forgot to actually enumerate physical display resolutions. 2016-04-10 00:54:45 -04:00
Ryan C. Gordon
927c44e9d8 Look for SDL2 libraries; I don't think this is right yet, though. 2016-04-10 00:54:23 -04:00
ptitSeb
cb039e972f Remove some Float Divide to use Integer and Shift in C Portable helper function on LayerMixer 2016-04-09 23:57:58 +02:00
ptitSeb
98ebac941a Change CTString.Match to treat backslashes as slash (fixes Netrisca categories for new messages) 2016-04-09 14:15:33 +02:00
ptitSeb
87a67eccf5 Fixed Portable C versio of ShadowMap Layer Mixer 2016-04-09 13:20:13 +02:00
Ryan C. Gordon
6ce0b9b27e First attempt at a port to SDL2. Untested! 2016-04-09 02:18:57 -04:00
Ryan C. Gordon
284f6c63ca Fixed a sizeof bug.
If you have...

void myfunc(char buf[16]) {
    printf("%d\n", (int) sizeof (buf));
}

...this will print sizeof (char *) instead of 16, so this fixes a piece of
code that assumed the latter instead of the former.
2016-04-09 01:03:44 -04:00
ptitSeb
df746ab6d1 A few TFE changes 2016-04-08 13:40:56 +02:00
ptitSeb
e1fd158fd6 TFE now start a game 2016-04-08 08:18:46 +02:00
ptitSeb
bd0b38ba00 It compile now 2016-04-08 07:51:13 +02:00
ptitSeb
422db3c58c Preliminary First Encounter support 2016-04-08 00:11:36 +02:00
ptitSeb
f37df71029 Float fest\! 2016-04-07 18:13:50 +02:00
ptitSeb
6cc2a36a34 Merge branch 'master' of https://github.com/ptitSeb/Serious-Engine 2016-04-07 15:20:20 +02:00
ptitSeb
6a2800e258 Preparing First Encounter (but it doesn't work for now) 2016-04-07 15:19:13 +02:00
ptitSeb
253df3ec46 A closing bracket seemed missplaced 2016-04-07 12:07:12 +02:00
ptitSeb
19bd3f733b Use SDL constants for mouse buttons 2016-04-07 10:45:45 +02:00
ptitSeb
0c16613056 Fix a nasty typo 2016-04-07 09:10:09 +02:00
ptitSeb
3ec4d484e2 Fix for 64bits build 2016-04-07 09:09:51 +02:00
Ryan C. Gordon
239b9c7992 Patched to compile. 2016-04-07 00:21:28 -04:00
Alexander Pavlov
6b9ebc3ccb Update GameAgent for Linuxport. 2016-04-06 23:31:08 -04:00
Ryan C. Gordon
e2e6f41582 Merge branch 'master' of git://github.com/ptitSeb/Serious-Engine into ptitSeb-master
Conflicts:
	Sources/Engine/Math/Float.cpp
2016-04-06 23:27:55 -04:00
Ryan C. Gordon
9820436fbe First pass at cleaning out 64-bit issues.
Touches a lot of code to remove long constants like "1L", so this patch is
large and ugly, but I think it makes all those Clamp() calls look nicer in
the long run.

Most of the game is 64-bit clean, since we can build without assembly code
now. I've marked the things that are obviously still wrong with STUBBED lines.

That being said: a 64-bit build can already run the demos mostly correctly,
so we're actually almost there!

There are a few obvious things that are obviously wrong, to be fixed.
2016-04-06 23:20:29 -04:00
Ryan C. Gordon
70f3f7fe35 Turned off an assert that reads past the start of an array.
It'll crash here anyway if that assertion would have triggered, I think.
2016-04-06 23:20:29 -04:00
ptitSeb
2ccc337898 The control87 is a fake one when using USE_PORTABLE_C, regardless the architecture 2016-04-06 22:45:02 +02:00
ptitSeb
efde059273 Getting paranoid with mixed integer / float operations 2016-04-06 22:45:01 +02:00
ptitSeb
ead5da376d Cannot cast a Float to Unsigned integer directly on ARM, of sign will be lost, so double cast 2016-04-06 22:45:01 +02:00
Ryan C. Gordon
553dbe2c62 Deleted changelog autogenerated by Visual C++. 2016-04-06 15:42:40 -04:00
Ryan C. Gordon
6b248af4d0 Moved STUBBED where all platforms can see it, made it more robust. 2016-04-06 15:35:12 -04:00
Ryan C. Gordon
b42025bc9f Unix basedir: Don't read past start of array if $PATH has an empty item. 2016-04-06 15:01:09 -04:00
Ryan C. Gordon
91827e7d2a Define PLATFORM_PANDORA instead of PANDORA, to match other targets. 2016-04-06 13:40:08 -04:00
ptitSeb
7590c3ca04 GLES hardware doen't read depth, so I assume ARM based machine can'tt either 2016-04-06 16:30:39 +02:00
ptitSeb
b76bbc77d4 Fixed a typo 2016-04-06 14:15:05 +02:00
ptitSeb
4bfca131b8 gettimeofday is not reliable on PANDORA, so use clock_gettime instead 2016-04-06 13:56:26 +02:00
ptitSeb
ddb0e94ef2 Rename isMenuEnabled to isMenuEnabled_ to avoid a symbol collicion that (can) happens at runtime 2016-04-06 13:54:22 +02:00
ptitSeb
4757cbbd2b Just to be safe, as casting +inf to integer gives 0xFFFFFFFF on x86 and 0x7FFFFFFF on arm 2016-04-06 13:52:10 +02:00
ptitSeb
c4ac41ed56 Added codepath for ARM here (simple copy of PPC version) 2016-04-06 13:49:12 +02:00
ptitSeb
b2fd42dc60 TREMOR function signatures 2016-04-06 13:48:32 +02:00
ptitSeb
8dd48b5cd8 Unstubbed the Portable C functions of LayerMixer 2016-04-06 13:47:10 +02:00
ptitSeb
af9d472619 Unstubbed the Dithered Portable C functions (ordered one unstested) 2016-04-06 13:46:26 +02:00
ptitSeb
73aab13a79 Try to fix the Portable C UploadTexture_OGL function 2016-04-06 13:44:36 +02:00
ptitSeb
8c03fccd64 Fixed the bsr Portable C function, the game start correctly now 2016-04-06 13:41:32 +02:00
ptitSeb
8c49b5f7a0 Unstubbed the Fog Portable C function 2016-04-06 13:40:56 +02:00
ptitSeb
2406f62c4b Unstubbed the Color Portable C functions 2016-04-06 13:40:02 +02:00
ptitSeb
73ea5ca7d4 Case fixing of an include 2016-04-06 13:38:09 +02:00
ptitSeb
0252ff1b6c ARM processor don't convert +inf to 0xFFFFFFFF like a x86 processor do 2016-04-06 13:37:07 +02:00
ptitSeb
f105e7225a Unstubbed the portable C sound mixer 2016-04-06 13:35:58 +02:00
ptitSeb
4e9dee7763 I had issue with the autoincrement. I prefer some warning about void* math 2016-04-06 13:33:54 +02:00
ptitSeb
205d71eccc Tremor can be used instead of Vorbis. Usefull for ARM based machines 2016-04-06 13:32:52 +02:00
ptitSeb
ebb70977ea ASM is now an Option, and so is Pandora build. Tremor can be used instead of Vorbis, and the binary is rename to ssam to avoid collision in name for inplace compiling 2016-04-06 13:31:53 +02:00