Commit Graph

308 Commits

Author SHA1 Message Date
ptitSeb
e1921174d4 Restrict the Eps precision change only to Pandora platform 2016-04-22 22:03:05 +02:00
ptitSeb
c32b7cc829 fix Inverted Right and Middle button on certain case with SDL 2016-04-22 22:03:04 +02:00
ptitSeb
b4e43fac95 Lower Epsilonon Pandora 2016-04-22 22:03:03 +02:00
Joshua Scoggins
88a0ec269b Use stdint.h everywhere since Serious Engine requires MSVC 2013 or greater (#40) 2016-04-22 13:57:32 -04:00
Rohit Nirmal
cb3f3bf521 Use those other averages. (#41) 2016-04-22 13:57:04 -04:00
Ryan C. Gordon
7213794459 Merge pull request #38 from DanielGibson/fix-FloatToInt
Fix for FloatToInt
2016-04-21 23:00:03 -04:00
Daniel Gibson
1f23f37b36 CMakeLists.txt: suppress some warnings also for gcc, not only clang
also, check for AppleClang, not only Clang.
2016-04-22 04:27:29 +02:00
Daniel Gibson
c74fa69bf6 gcc told me copysignf() in FloatToInt() didn't do anything. oops.
sometimes using GCC *does* find problems clang didn't :)
2016-04-22 04:27:29 +02:00
notaz
52c178718c fix SoundMixer asm
SoundMixer386.asm forgot to save some callee-save registers too
2016-04-22 02:29:47 +03:00
notaz
b1837c2e58 fix Graphics asm
same stuff as in previous commit
2016-04-22 02:29:30 +03:00
notaz
a1b84b3ba0 Revert "fix build on gcc 4.8"
This reverts commit 8bbe4c1d5e.
Going to fix it properly.
2016-04-22 02:29:30 +03:00
notaz
fd045e5025 fix LayerMixer asm
- clobber the whole x87 state for mmx (emms alone requires this)
- add all modified registers to clobber list
  (in some cases use dummy output vars instead)
- use symbolic names
- use more relaxed constraints where possible
- allow gcc to allocate ebx replacement reg
2016-04-22 02:28:42 +03:00
notaz
cb69bd3cdd add some asm helpers 2016-04-22 02:28:41 +03:00
Ryan C. Gordon
fd52a044d4 Merge pull request #36 from DrItanium/abstraction-layer
Abstraction layer
2016-04-21 12:40:44 -04:00
Daniel Gibson
a28a7bb00f now TFE builds on OSX, too 2016-04-21 17:46:44 +02:00
Daniel Gibson
2a58209487 Some cmake fixes, fixing OSX build (incl 64bit) + disable i386ASM by default
OSX build was a bit broken, it needs to be linked against zlib.
Furthermore it now uses the systems libSDL2 framework, unless you use
-DUSE_SYSTEM_SDL2=FALSE

i386 ASM is now disabled by default, we have plain C fallbacks for
everything that seems to work well enough (and if not they need more
testing which is likely to happen this way)
2016-04-21 17:40:42 +02:00
Daniel Gibson
64e6b915b7 Fix out of bounds access of afStarsPositions in TFE Particles.cpp
same as before for EntitiesMP/Common/Particles.cpp, this time for
the first encounter.
2016-04-21 16:21:47 +02:00
Daniel Gibson
72bd84edb8 Fix 64-bit build of Entities/Player.es (of First Encounter) 2016-04-21 16:21:47 +02:00
Daniel Gibson
430e0c8a95 Remove "64-bit issue" STUBBED() in Model.cpp, as it only looks fishy
.. but is really fine (most probably).

I added comments instead; see them for explanation why it's fine ;-)
2016-04-21 16:21:47 +02:00
Daniel Gibson
d228b6a7a7 make all BSP-related tags size_t so they can store pointers
The tags are often initially assigned from pointers and then copied
around, even from one tag type to the other.
As BSPTree::MoveSubTreeToArray() uses them to get the original pointer,
we need the pointers anyway, so just CRC-ing the pointers doesn't seem
like a good option. As the tags are assigned from other tag-types
sometimes, I probably would have needed to add Pointers for the same
values in addition to the ULONG tags, that are also copied around along
the tags, to keep the tags ULONG - that seemed like a worse alternative.

However, when writing (via BSPTree::Write_t()) the bn_ulPlaneTag tag
needs to be ULONG, so there I actually use CRC for 64bit pointers (via
IntPtrToID()) - when restoring (in Read_t()), the pointers aren't valid
anymore anyway, so that all should somehow be fine.
I assume that Write_t() is only used by the Editor, anyway, so I fear I
won't be able to test that part of the code on Linux anytime soon.
2016-04-21 16:21:47 +02:00
Daniel Gibson
b437abf10d Use PointerToID() for sound-event ID in CSoundObject::Play()/Stop()
so that code should be 64bit-clean now.
2016-04-21 16:21:47 +02:00
Daniel Gibson
23b6374e9a Add ULONG PointerToID(void*) and IntPtrToID(size_t) that CRC 64bit pointers
Sometimes pointers are casted to ULONG just to get an ID or tag - this
is fine for 32bit pointers, but 64bit pointers will truncate which might
result in not being so unique after all.
CRC-ing the pointer should yield a more likely to be unique 32bit value.
NULL is a special case that yields 0 instead of the CRC, so code that
handles IDs/Tags with value 0 differently will continue to work.
For 32bit builds, it just returns the pointer as ULONG.
2016-04-21 16:21:47 +02:00
Daniel Gibson
e642cbcd20 Change PLATFORM_32/64BIT detection
turns out that using UINTPTR_MAX is a pain on several systems like
FreeBSD or even older Linux/glibc systems, so maybe let's not do that
anymore.
Now I check for known CPU-architectures instead.

I also added some sanity checks to make sure the detection was
correct.
2016-04-21 16:21:47 +02:00
Joshua Scoggins
7f682180f3 Use SERIOUS_MHZ envvar for the time being 2016-04-20 19:24:51 -07:00
Joshua Scoggins
dbd896b58d Use the platform independent version of ReadTSC
- If I use the gnu inline version, the game runs way too fast on my cpu due to
  frequency scaling (I think).
2016-04-20 19:06:02 -07:00
Joshua Scoggins
1b873d3ab4 Bool's must be 32-bits wide 2016-04-20 18:50:36 -07:00
Rohit Nirmal
e166958881 Silence -Wreorder warnings. 2016-04-20 13:31:49 -05:00
Ryan C. Gordon
3e84eafe15 Merge pull request #28 from salamanderrake/icculus-master-cmake-bms
CMakeLists.txt changes plus install.
2016-04-19 22:53:41 -04:00
Salamanderrake
9477af7bfa CMakeLists.txt: Applied some changes Ryan wanted with the c/cxx flags. 2016-04-19 18:16:45 -04:00
ptitSeb
c8291e6d37 More macro for UNIPTR_MAX 2016-04-19 22:00:29 +02:00
ptitSeb
e077fd664d Need __STDC_LIMIT_MACROS macro here too 2016-04-19 22:00:28 +02:00
ptitSeb
4b47c278bb Nedd __STDC_LIMIT_MACROS for *_MAX constant to be defined 2016-04-19 22:00:27 +02:00
ptitSeb
b9bb24e608 Don't regulate Framerate on Pandora 2016-04-19 22:00:27 +02:00
ptitSeb
484d49434b Restrict the Eps precision change only to Pandora platform 2016-04-19 21:54:46 +02:00
ptitSeb
9288c42268 fix Inverted Right and Middle button on certain case with SDL 2016-04-19 21:54:43 +02:00
ptitSeb
7c1cc68d6f Lower Epsilonon Pandora 2016-04-19 21:54:43 +02:00
Yamagi Burmeister
794180c598 bswap_32() is a linuxism, use inline code instead.
bswap_32() is a function specific to Linux, unavailable on FreeBSD and
OS X. Instead of messing with other platform specific functions, #ifdef
and so on provide a fast inline implementation.
2016-04-19 19:09:20 +02:00
Daniel Gibson
8de421dc9d Textures.cpp: improved td_pulObjects/td_ulObject fix
* td_pulObjects is explicitly set to NULL in the constructor - before
  only td_ulObject was set to NONE (0), so on 64bit half of
  td_pulObjects bytes would remain garbage
* only check td_ulObject for NONE if td_ctFrames <= 1 (until now it
  would frequently check it for NONE even if td_ctFrames > 1, if
  td_pulObjects was != NULL)
2016-04-19 14:38:25 +02:00
Salamanderrake
380bade7c0 CMakeLists.txt: BMS, Added a small explanation about the default CMAKE_INSTALL_PREFIX 2016-04-19 04:43:59 -04:00
Salamanderrake
90a614b03c CMakeLists.txt: Added an install section and fixed permissions issues with libraries. 2016-04-19 04:41:55 -04:00
Salamanderrake
b7c49d4e51 CMakeLists.txt: Some cleanup and removing redundent lines from the CMakeLists.txt file. 2016-04-19 04:41:55 -04:00
Salamanderrake
ec1448c4d4 build-linux32.sh: Renamed build-linux.sh build script to show which arch it is compiling
build-linux64.sh: for use build native 64bit linux binaries.
2016-04-19 04:41:55 -04:00
Salamanderrake
86b487df9e CMakelists.txt: Removed my attempt at making Engine a static lib again. plus other small cmake fixes 2016-04-19 04:41:55 -04:00
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