Commit graph

129 commits

Author SHA1 Message Date
Clownacy
4e239c3175 Restore the rendering backend callbacks
Now the SDLSurface backend survives window resizes (also triggered by
alt-tabbing while in fullscreen), and the SDLTexture backend properly
regenerates its textures after a fullscreen alt-tab in DirectX mode.
2019-09-06 19:07:49 +00:00
Clownacy
8114f88dd1 Shut up some build warnings 2019-09-06 15:21:43 +00:00
Clownacy
12f69e3c6c Fix idling hogging 100% of a CPU core
This was me not converting the WinAPI code properly. Stupid me.
2019-09-05 21:07:30 +00:00
Clownacy
0be5e9ead8 Restored the window icon and custom cursor 2019-09-04 14:39:37 +00:00
Clownacy
5ea356a3bd Weed out a lot of the Windows dependency
Storytime: Cucky's original SDL2 port work involved using SDL2's
threading API to emulate the original WinAPI threading.

I can't be assed with that stuff, so I used the same trick Cucky did
for the Wii port, and hooked Organya up to the SDL2 audio callback.
This actually opens up the possibility for perfectly-synchronised
Organya playback. By that I mean, instead of needing a super
low-latency audio callback, I can have the callback synchronise its
audio mixing with Organya itself. I haven't done it yet, I plan to
soon.
2019-09-04 00:28:23 +01:00
Clownacy
5a9492166d Restored the new SDL2 audio system
While I was at it, I overhauled the thing and found a bunch of
optimisations,
2019-09-03 22:29:57 +01:00
Clownacy
8dce9c5aff Add some missing code to the main function
This code was previously in WindowProc, which was replaced.
2019-09-03 00:43:05 +01:00
Clownacy
c00262bcd8 Restore the SDL2 joystick code
Modified to fit the original code better
2019-09-02 23:09:26 +01:00
Clownacy
fd855ee732 Restore the new renderers 2019-09-02 22:46:36 +01:00
Clownacy
ce33ada2c8 Fix window focus event handling 2019-09-02 22:28:21 +01:00
Clownacy
86f737802e Merge branch 'accurate' into portable 2019-09-02 20:30:26 +01:00
Clownacy
bc262bd5e2 Explain some Shift-JIS 2019-09-02 20:28:41 +01:00
Clownacy
1301ea8797 Replace WinAPI with SDL2 as the windowing system 2019-09-02 20:17:06 +01:00
Clownacy
35344c5f4f Fixes
What is it with Pixel's official code, and relying on non-standard
stuff? Even his PxTone library had portability issues.
2019-09-02 02:02:25 +01:00
Clownacy
2a70cbe89a Shut up a warning
The ASM is unaffected
2019-09-01 23:42:28 +01:00
Clownacy
d35c9cd09e Deobfuscate WinMain, and make some accuracy improvements 2019-09-01 23:35:41 +01:00
Clownacy
2b78821786 Add an option to re-enable the Debug Save feature
This includes the ability to drag-and-drop save files onto the game
window, which this feature was likely meant to be used with.
2019-09-01 19:55:54 +01:00
Clownacy
8892dc24b5 ASM-accurate Main.cpp and added the various Windows menus 2019-09-01 18:15:12 +01:00
Clownacy
451945e80c Ripped out SDL2, and begun made WinMain ASM-accurate
Almost there... see #74.
2019-09-01 14:39:16 +01:00
Clownacy
f956eb9264 Mostly ASM-accurate Draw.cpp
See #74
2019-08-31 17:43:45 +01:00
Clownacy
03e513365b PATH_LENGTH is actually Windows's MAX_PATH
When MAX_PATH isn't available, use FILENAME_MAX. This might be a bad
idea.
2019-08-31 01:44:53 +01:00
Clownacy
2f56effc51 Accurate main function variable names 2019-08-29 20:19:31 +01:00
Clownacy
d5ee5f6979 Made Input.cpp ASM-accurate
See #74
2019-08-29 19:27:56 +01:00
Clownacy
17ae81823c Fixes 2019-08-29 00:00:17 +01:00
Clownacy
470c5d86d5 ASM-accurate Sound.cpp and Organya.cpp (except for one function) 2019-08-28 07:55:42 +01:00
Clownacy
e67c1e3640 Migrated to the native Windows resource file system 2019-08-27 23:59:57 +01:00
Clownacy
59735a61e6 Minor style change 2019-08-13 05:03:43 +00:00
Clownacy
0b874153d4 Free the string returned by SDL_GetBasePath
Thanks, Fayti1703.
2019-07-29 14:33:14 +00:00
Clownacy
9948fa8b07 Move the SDL_Window creation to the rendering backends
Whoops, didn't mean to commit the Main.cpp edit way back when I made
the OpenGL 2.1 backend.
2019-07-24 20:20:06 +01:00
Clownacy
05f382961d Added OpenGL 2.1 renderer
Yay 100% hardware-acceleration. Yes, I know 2.1 is outdated and
crappy, but it was the easiest one to write. I'll probably make an
OpenGL 3.0 Core renderer at some point.

Anyway, font rendering isn't here yet, because I plan to overhaul it.
2019-07-23 15:20:14 +01:00
Clownacy
36fdb4596d Cleanup and an accuracy improvement 2019-07-16 13:21:21 +01:00
Clownacy
81eb438482 Fixes and tweaks 2019-07-16 00:15:20 +01:00
Clownacy
6a4f4e0df3 Added handlers for render target loss/window resize
These only really happen when you use exclusive fullscreen and
alt-tab out. Or, at least, it does on Windows with SDL2 in DirectX
mode.
2019-07-15 17:47:22 +01:00
Clownacy
3ef9b67b1d Replaced a lot of Draw.cpp with a software renderer
Also fixed the SDL_Window not being freed. This commit's a bit of a
blob, since I made a bunch of tweaks to Draw.cpp while adding the new
renderer. Don't worry though, I'll add the hardware accelerated code
back again soon. In fact, I've got an idea on how to make it even
faster, while still being able to survive render target losses.

Hopefully this software renderer will come in handy for the Wii U
port: its SDL2 port's hardware acceleration is broken, and the
SDL_Surface API is too slow.
2019-07-15 11:41:40 +01:00
Clownacy
97acb292bb Made Game.cpp ASM-accurate
Working towards #74.
2019-06-30 03:03:25 +01:00
Clownacy
44f142d8e7 Big ugly rework of WindowsWrapper.h
Okay so WindowsWrapper.h now just includes Windows.h if it wants
non-portability. This meant I had to split the custom RECT struct
back to the original RECT and unknown nameless struct (one uses
left/right, while the other uses front/back).
2019-06-20 20:06:55 +01:00
Clownacy
44094b103e <SDL.h> -> "SDL.h"
The SDL devs recommend this:
https://wiki.libsdl.org/FAQDevelopment#Do_I_.23include_.3CSDL.h.3E_or_.3CSDL.2FSDL.h.3E.3F
2019-06-06 18:51:44 +00:00
Clownacy
c80b593a3f Some #include fixes
Finally figured out how to get include-what-you-use working
2019-06-06 18:44:28 +00:00
Clownacy
d2b5872c95 Weeded out some bool usage
Cave Story was written in C89. No bools. I've left in Sound.cpp's
though, since that's written in C++98 currently.
2019-05-24 10:07:30 +01:00
Clownacy
00ca00f5dd Weed out some usage of C++ bools
Pixel used BOOL, the C89-friendly Windows-specific equivalent
2019-05-14 01:35:04 +01:00
Clownacy
c9d5b3d03a Made Ending.cpp ASM-accurate 2019-05-13 20:43:43 +01:00
Clownacy
9b82baeb02 Made MiniMap.cpp actually ASM-accurate 2019-05-13 17:50:09 +01:00
Clownacy
676ee004fe Removed the dependency on stdint.h
This doesn't exist in MSVC2003, and nothing in the Linux port's debug
symbols indicate Pixel used it.
2019-05-13 15:18:33 +01:00
Clownacy
b5699d9760 SDL's docs specifically calls these 'scancodes' not 'scan codes' 2019-05-09 18:45:28 +01:00
Gabriel Ravier
c6bcbeab2f Revert "corrections" of "colour" to "color", makes style inconsistent though :(
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2019-05-08 18:01:15 +02:00
Gabriel Ravier
70818bd58c Some orthograph corrections
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2019-05-08 12:19:15 +02:00
Gabriel Ravier
b19733f47e Correct formatting in Main.cpp
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2019-05-08 09:30:14 +02:00
Gabriel Ravier
960fa6f456 Removed all trailing spaces and added newline at EOF (when not present)
Also changed a "linux" to "Linux"

Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2019-05-07 11:55:42 +02:00
Clownacy
f7c1ca86c3 Remove Resource.cpp's dependence on SDL2
This also makes its API a lot more similar to Windows'
2019-05-05 01:57:23 +01:00
Gabriel Ravier
d854004463 Added .gitattributes for normalisation and normalized a few sources files to LF (from CRLF)
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2019-05-03 12:27:11 +02:00