Commit graph

1394 commits

Author SHA1 Message Date
Clownacy
b57ccd7ed5 Shut up errors on Windows 2020-03-31 20:22:54 +01:00
Clownacy
b4ec82d81b Add dummy GLFW3 controller backend 2020-03-31 16:38:05 +01:00
Clownacy
63e75089d6 Split SDL2 code from Game.cpp 2020-03-31 16:32:50 +01:00
Clownacy
584ea57c5d Split SDL2 code from Profile.cpp and TextScr.cpp 2020-03-31 16:28:28 +01:00
Clownacy
37c5236b9b Split SDL2 code from Input.cpp
...So, *all* of it.
2020-03-31 16:24:20 +01:00
Clownacy
142bca6578 Split SDL2 code from Draw.cpp 2020-03-31 16:11:31 +01:00
Clownacy
3a5a5044b1 Split SDL2 code from Main.cpp 2020-03-31 16:07:34 +01:00
Clownacy
51562f6fd8 Use standard main return values
`WinMain` has weird rules for this, and they don't match `main`.
2020-03-31 15:37:51 +01:00
Clownacy
d0b20316de Don't do -Iexternal
It pollutes the #include space.
2020-03-31 14:26:24 +01:00
Clownacy
b8de1cb5db Merge branch 'accurate' into portable 2020-03-31 14:07:21 +01:00
Clownacy
61e708751d Apply missing OpenGL constants 2020-03-31 12:53:58 +01:00
Clownacy
d91c1e9bdc Update the SDL2 audio backend
Now uses the shared software mixer
2020-03-31 12:19:44 +01:00
Clownacy
732d3bbc5c Split software audio mixer to its own file
This will be shared between the SDL2 and miniaudio backends,
eliminating all that digusting duplicate code.
2020-03-31 12:14:20 +01:00
Clownacy
4e58457e1d Make miniaudio backend use native sample rate
This avoids the need for miniaudio to resample the mixer's output.
2020-03-31 10:20:20 +01:00
Clownacy
ca6538561f Document ActNpc061 (King) 2020-03-27 17:49:58 +00:00
Clownacy
7820926bfd Remove outdated comments 2020-03-22 15:37:00 +00:00
Clownacy
c34a7fc354 Fix build error 2020-03-22 15:35:59 +00:00
Clownacy
b374a8046c Add some missing global/static variable names
Also from the Mac port.
2020-03-22 15:31:28 +00:00
Clownacy
f6606b7748 Add some missing function names
These were retrieved from the Mac port (v0.0.7), which kept these
functions.

Unfortunately, this port is missing local variable names, so we can't
use it to make InitBack accurate.
2020-03-22 15:31:28 +00:00
Gabriel Ravier
fb353fbc7e Backends/Rendering/SDLTexture: Solve -Wnarrowing warning
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-03-18 11:54:46 +01:00
Clownacy
cf75cbcad2 Don't embed font in executable
Creating a Japanese build would require 4GB+ of RAM because of this.
It's about time it got removed. It was a silly idea anyway.
2020-03-17 21:14:15 +00:00
Gabriel Ravier
6f114d0da5 Bullet, Caret, NpcAct1{2,4,8}0, TextScr: Add a note about some overflow bugs 2020-03-17 15:31:02 +01:00
Clownacy
dd04977f29 Update miniaudio to v0.10.1
This newer version supports marking all of its declarations as
static, avoiding the conflict between the miniaudio audio backend,
and the copy of miniaudio embedded in clownaudio in the enhanced
branch.
2020-03-17 13:25:41 +00:00
Clownacy
61aec1cb15 Use native Windows types/macros when available
This prevents conflicts when a translation unit includes
`WindowsWrapper.h`, and middleware that includes `windows.h`.
2020-03-17 13:21:37 +00:00
Clownacy
d80d7ed8c8 Merge branch 'accurate' into portable 2020-03-14 19:26:39 +00:00
Clownacy
169a755ec3 Wrap UTF-8 strings in C89-style comments
This should prevent compilation errors when compilers don't read the
source files as UTF-8.

MSVC in certain codepages previously misread some UTF-8 comments as
containing newlines, causing it to try to process the rest of the
comment as code. This was fixed by forcing MSVC to read the files as
UTF-8 using the `/utf-8` flag, but this doesn't seem to be supported
in older versions.

Since the issue was caused by newlines being added where they didn't
belong, using C89-style comments instead should avoid the problem
altogether.

I'll still keep the utf-8 flag around for supported compilers - just
in case.
2020-03-14 14:12:53 +00:00
Clownacy
76e4fb5e8a Improve MSVC6 hacks 2020-03-14 14:08:25 +00:00
Clownacy
c6b77fb015 Move the windows.h include to the right place 2020-03-14 13:25:25 +00:00
Clownacy
8a3b5c1f7a Use macros instead of __stdcall
Wow Microsoft's documentation sucks: it constantly omits these,
making you think they're just plain `__cdecl`.
2020-03-14 13:22:36 +00:00
Clownacy
4e0a168533 Move the MSVC6 hacks to WindowsWrapper.h
Now the wrapper has a purpose again, and it keeps things neat.
2020-03-14 12:55:22 +00:00
Clownacy
05fb5cf106 Fix build error with MinGW 2020-03-13 22:01:02 +00:00
Clownacy
406ff18909 Add CMakeLists.txt and Visual Studio 6 support
The CMake file allows you to compile the accurate branch with
whatever version of Visual Studio you have lying around, without
having to clumbsily convert the VS2003 project.

I've tested this with VS2019, VS2003, and VS6. VS6 is goofy - it's
missing a few types and constants, and it's not smart enough to
realise that ints and longs are the same in ILP32 data models. I've
added a few small hacks to address this. Might undo them. Who knows.

For now, I want to support VS6 because Mint compiled CSE2 with it
before, and because VS6 uses `msvcrt.dll` as its C runtime, which
apparently comes pre-installed in Windows, as opposed to all those
other annoying runtime versions that require they be installed
separately (which is why MinGW targets it specifically).

Also, VS6 *should* give us Win95-compatible builds. The internet says
MSVC2003 is Win95-compatible too, but Mint claims the vanilla EXE
doesn't run on there. I imagine it has something to do with its
static runtime library (VS2003 links the static one by default for
some reason).
2020-03-13 21:35:51 +00:00
Clownacy
27d82e9762 Set STB_IMAGE_STATIC
Reduce global namespace clutter.

...Man, I wish other single-header-file libs had an option like this
- this is a big part of why the new miniaudio backend's been causing
so many problems lately.
2020-03-05 00:04:47 +00:00
Clownacy
9af25f7c67 Hopefully fixed miniaudio backend on Windows
Stupid BOOL type
2020-03-04 21:02:17 +00:00
Clownacy
af24d010a5 Clean-up miniaudio backend a little
Really need to figure out the best way to abstract-away the software
mixer...
2020-02-29 18:19:06 +00:00
Clownacy
8ec8a8d990 Added unfinished miniaudio audio backend
Currently only works with CMake
2020-02-29 18:18:59 +00:00
Clownacy
934054806e Merge branch 'accurate' into portable 2020-02-25 17:56:17 +00:00
Clownacy
e4a20a983e
Similar fixes 2020-02-20 15:59:04 +00:00
Clownacy
ed97e374f8
Fix screen centering in wide/tallscreen
Previously, it would misbehave if the screen is slightly wider than the level
(because it wasn't accounting for the fact that the game hides half of the
border tiles)
2020-02-20 13:11:39 +00:00
Gabriel Ravier
b238bcee03 Remove random lines mistakenly added by merge 2020-02-14 08:27:07 +01:00
Gabriel Ravier
5bd70eb2db Removed ATTRIBUTE_OPTIMIZE from MakePixelWaveData
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-02-13 19:55:39 +01:00
Gabriel Ravier
5d61641415 Added ATTRIBUTE_HOT to Backend_ColourFill
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-02-13 19:55:39 +01:00
Gabriel Ravier
f43bd4f876 Removed bad omp (it doesn't actually improve anything, i did my measurements wrong) 2020-02-13 19:55:39 +01:00
Gabriel Ravier
2adfef0035 Got Backend_Blit to go from 17% CPU usage to 11% :
- used __builtin_expect to get a 8.5% performance improvement
- used #pragma omp for to get a 30% performance improvement

Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-02-13 19:55:39 +01:00
Gabriel Ravier
e8ec6a8ffb Optimize Backend_Blit a bit 2020-02-13 19:55:39 +01:00
Gabriel Ravier
6ccfe063ce Made MakePixelWaveData use ffast-math 2020-02-13 19:55:39 +01:00
Gabriel Ravier
65db12baaa Started trying to optimize MakePixelWaveData 2020-02-13 19:55:39 +01:00
Clownacy
a7f1d80a06 Fix compilation with modern Visual Studio 2020-02-13 18:16:01 +00:00
Clownacy
a767c16d83 Un-un-const a few things 2020-02-09 18:55:41 +00:00
Clownacy
f82a53d336 Prevent errors encountered by MSVC 2020-02-09 18:47:50 +00:00