Commit graph

168 commits

Author SHA1 Message Date
Clownacy
d04bd94649 Use SDL_TICKS_PASSED for frame-limiting
This probably works-around overflow
2020-01-20 23:53:41 +00:00
Clownacy
79886f5ae4 Add debug prints for listing SDL2 drivers
These list what video/render/audio backends are available, and which
are currently being used.

SDL2 allows you to choose a specific video/audio driver with the
SDL_VIDEODRIVER and SDL_AUDIODRIVER environment variables,
respectively, but there's no such option for the render driver.
2020-01-20 15:27:05 +00:00
Clownacy
84626ea710 Merge branch 'accurate' into portable 2020-01-07 04:55:16 +00:00
Clownacy
a0eb646a1f Add ability to lock certain parts of a surface
This avoids conditional jumps based on uninitalised memory, and
should be faster, and should be lighter on memory.
2020-01-07 03:52:37 +00:00
Clownacy
58d7a45392 Empty Tags.h
There's no evidence Tags.h contained these variables (if anything, it
appears that Pixel manually declared them in every file that used
them).

gg Pixel
2020-01-06 21:20:17 +00:00
Gabriel Ravier
befb5f7fb5 ScaleAndUploadSurface now doesn't take ownership of the surface it is passed and frees it. This is to correct multiple occurences of use-after-free occuring from use of the passed surface after a call to ScaleAndUploadSurface using it 2020-01-06 18:26:25 +01:00
Clownacy
2e8d3441ed Turns out I'm the stupid one 2020-01-04 19:49:43 +00:00
Clownacy
0ec5d85d56 Merge branch 'accurate' into portable 2019-11-17 18:30:44 +00:00
Clownacy
989013168c Clean-up Draw.cpp 2019-11-15 21:00:29 +00:00
Clownacy
85890ef1e6 Shut up some Clang warnings 2019-10-29 12:14:48 +00:00
Clownacy
c2daebe38a Handle Backend_Init failing
Should really give those render-backend functions a different prefix.
2019-10-27 01:57:09 +00:00
Clownacy
a8cf5e1846 Fix a typo in a comment 2019-10-20 21:08:47 +00:00
Clownacy
d1595d536b Merge branch 'accurate' into portable 2019-09-10 12:35:31 +00:00
Clownacy
3889bd9f1d Add missing #include to Draw.cpp
Thanks to GabrielRavier for noticing.
2019-09-10 12:31:38 +00:00
Clownacy
4b8a6849d3 Actually make the surface regeneration work 2019-09-06 22:13:00 +01:00
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
e4fcf6a5e1 Fixed spacing for fonts that aren't Courier New
Previous, I used a godawful hack to emulate Windows' API, but it
seems this only ever worked for Courier New: with something like
Liberation Mono, it would squash the font. Now I'm just giving up on
it, and using actual font sizes rather than "cell" sizes.

I'm not sure if this is accurate the original EXE.
2019-09-04 19:21:51 +00:00
Clownacy
ae8aeae2ac Restored the new font system 2019-09-04 15:43:28 +00:00
Clownacy
6bb31bf868 Merge branch 'accurate' into portable 2019-09-04 14:14:40 +00:00
Clownacy
93029e8e2c Fix incorrectly-ordered #include 2019-09-04 14:13:51 +00:00
Clownacy
2b4b57c6eb Merge branch 'accurate' into portable 2019-09-04 14:11:54 +00:00
Clownacy
0531a2c482 Remove the Windows-style path separators
There, *now* the game runs on Linux
2019-09-04 13:54:19 +00:00
Clownacy
dcf9921481 Move SystemTask from WindowsWrapper.h to Main.h 2019-09-04 02:23:49 +01:00
Clownacy
b553b0c2e9 Remove DWORD and BYTE
They're not as deeprooted as BOOL.
2019-09-04 01:10:54 +01: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
1f3728c177 Restore the new resource file system 2019-09-02 23:32:19 +01:00
Clownacy
fd855ee732 Restore the new renderers 2019-09-02 22:46:36 +01:00
Clownacy
0faf06224f Added a bugfix for font creation
Fixes Japanese builds using the wrong charset on non-Japanese Windows
installations, and fixed the font using antialiasing, causing it to
clash with the game's colour-keying.
2019-09-01 20:30:26 +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
0af39741d4 Merge branch 'master' into accurate 2019-08-29 00:22:18 +01:00
Clownacy
9f81f9e080 Move MakeSurface_Generic to the correct place in Draw.cpp 2019-08-29 00:21:43 +01:00
Clownacy
e67c1e3640 Migrated to the native Windows resource file system 2019-08-27 23:59:57 +01:00
Clownacy
b6322d5e0f Make LoadBitmap take a pixel buffer instead of an SDL_RWops 2019-08-27 16:10:37 +01:00
Clownacy
64598dc2a5 Rename Surface_Ids to SurfaceID
For code style consistency (this isn't a vanilla enum name - I don't
think there even was an enum for this in the original source code)
2019-08-21 16:18:55 +00:00
Clownacy
f354b84f6a Revert "Glyphs now regenerate with the rest of the game's textures"
This reverts commit aa6174b3f2.
2019-08-14 16:26:37 +00:00
Clownacy
e708dc3a7d Make the surface_metadata struct match the original 2019-08-13 19:48:18 +01:00
Clownacy
aa6174b3f2 Glyphs now regenerate with the rest of the game's textures
God-damn this code is ugly
2019-08-13 18:32:44 +01:00
Clownacy
16b2f6a474 Added enums for the surface types 2019-08-13 04:42:29 +00:00
Clownacy
d47f683491 Ported the Windows version's surface regeneration
Has the same imperfections: if you regenerate the surfaces while a
text box is open (and while using Courier New I guess), the text will
regenerate with smaller spaces.
2019-08-13 04:36:05 +00:00
Clownacy
1b6804bbe1 Fix BackupSurface 2019-08-13 02:52:37 +00:00
Clownacy
3f8ead09d6 Renderer backend simplification part 1: Draw.cpp and Software.cpp
By emulating the DirectDraw code more closely, I can simplify the
renderer backend API.
2019-08-13 01:39:08 +00:00
Clownacy
85f58d7d39 Rendering backend API naming improvements 2019-08-10 19:50:10 +01:00
Clownacy
2b86db32a0 Backend_Blit always uses a colour key 2019-08-10 19:31:45 +01:00
Clownacy
607bbfcef8 Remove some debug prints
I prefer to only print on error
2019-07-31 23:12:06 +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
6d385e674f Font refactor part 1: Software
With this, font blitting is handled by the rendering backend, paving
the way for hardware-accelerated font drawing in the accelerated
backends.
2019-07-23 16:38:04 +01:00
Clownacy
a3278a60b5 A fix, some documentation, and cleanup 2019-07-19 19:19:35 +01:00
Clownacy
74c9931ebb Change the renderer backend API for uploading pixels
Also fix some blatant build errors. I must be going mad - I swear
I've fixed that typedef thing like twice already.
2019-07-19 08:45:59 +01:00
Clownacy
36fdb4596d Cleanup and an accuracy improvement 2019-07-16 13:21:21 +01:00