Commit graph

1910 commits

Author SHA1 Message Date
Clownacy
f2c0f94e42 Faster binary search 2020-09-18 02:55:45 +01:00
Clownacy
729565b5ca Might as well not obscure the code 2020-09-18 02:05:37 +01:00
Clownacy
b0974c3def Binary-search optimisations and fixes 2020-09-18 02:03:14 +01:00
Clownacy
4763aecdbd Correct Lanczos array initialisation
I must have forgotten that Lanczos reads backwards too
2020-09-18 00:59:05 +01:00
Clownacy
d3e18d795d Merge branch 'accurate' into portable 2020-09-17 22:10:24 +01:00
Clownacy
620a25d75c Made out ASM-accurate
It just so happens that a path buffer and a FILE pointer both take up
the right amount of stack space *and* have the correct stack frame
ordering, so maybe this is actually what the original source code
did.
2020-09-17 21:44:13 +01:00
Clownacy
3a3530252b Document some leftover debug-related code 2020-09-17 21:07:49 +01:00
Clownacy
c0a6441bcb Fix another typo 2020-09-17 21:07:48 +01:00
Clownacy
527328c303 Fix a typo 2020-09-17 21:07:48 +01:00
Clownacy
2882f6651a Apply some Windows types to InitBack
Thanks, Cucky
2020-09-17 21:07:43 +01:00
Clownacy
4e936d4f45 Add a todo 2020-09-17 20:13:44 +01:00
Clownacy
f61ffac785 Turns out raw unicode *is* UTF32 2020-09-17 19:43:12 +01:00
Clownacy
ada7d91f17 Tiny cleanup 2020-09-17 19:39:34 +01:00
Clownacy
79586f5b90 Speed-up glyph lookup 2020-09-17 19:34:18 +01:00
Clownacy
ff44d2fd06 Note something 2020-09-17 18:42:36 +01:00
Clownacy
83e8320d84 Fix other renderers 2020-09-17 18:26:32 +01:00
Clownacy
5c6b71e3a1 Optimise a little when using OpenGL3 2020-09-17 18:22:44 +01:00
Clownacy
b8ceefcefd Flexible OpenGL unpack alignment 2020-09-17 18:05:38 +01:00
Clownacy
86d084f750 Get OpenGL renderers working again 2020-09-17 17:39:02 +01:00
Clownacy
2b848ad16e Finally, Windows-accurate font sizing
And of course Windows has some weird bug that has to be emulated with
FreeType.
2020-09-17 15:02:42 +01:00
Clownacy
c9f17c4411 Rename FreeType font functions 2020-09-17 15:02:42 +01:00
Clownacy
9973dddbbd Restore the FreeType code
Now you can select either the FreeType fonts or the pre-rendered
fonts with CMake's 'FREETYPE_FONTS' option.
2020-09-17 15:02:42 +01:00
Clownacy
a542a5c11d Cleanup and fixes 2020-09-17 15:02:42 +01:00
Clownacy
aac1c9c844 Get 640x480 and Japanese builds working again 2020-09-17 15:02:42 +01:00
Clownacy
fe76fe6dea Big scary messy unfinished font overhaul
This is currently hardcoded to 640x480 English builds.

What I've done is temporarily gutted the FreeType2 font renderer, and
instead introduced a system where the font is read from a
pre-rendered font atlas. This allows me to get 100% accurate font
rendering to Windows XP... because I literally created these atlases
with Windows XP.

So not only does this eliminate the issue of FreeType producing
misshapen glyphs, but it also works around the copyright issue
regarding bundling the Courier New and MS Gothic fonts with CSE2.

You see, font files can be copyrighted like any old software, however
typefaces have a lot less protection - they're basically fair-game.
IANAL, of course - look it up yourself.

I don't really want to throw away the FreeType font system since I
spent a ton of time working on it, it allows you to use other font
files, and I'll probably wind up needing it for CSE2EX. I guess I'll
just have to find some way to either have the two systems coexist, or
make it so one or the other can be selected at compile-time.
2020-09-17 15:02:36 +01:00
Clownacy
febeb1b692 More-efficient way of determining atlas size 2020-09-16 18:18:37 +01:00
Clownacy
d1560da217 Fix bitmaps at 640x480 2020-09-16 17:45:15 +01:00
Clownacy
08b14fa03f Don't use upscaled framebufer if it's not needed
This matches the SDLTexture backend.

Again, it would be really nice if this code weren't duplicated.
2020-09-15 22:16:05 +01:00
Clownacy
97d5373fa5 Add smooth upscaling to the OpenGL backends
Bleh, this is kind of messy and ugly. I also don't like how much
duplicate code there is from the SDLTexture backend.
2020-09-15 22:05:58 +01:00
Clownacy
fd82adf099 Remove invalid comment 2020-09-15 21:00:27 +01:00
Clownacy
13ce62ae05 Minor cleanup 2020-09-15 20:51:04 +01:00
Clownacy
c6af61de5e Chars aren't guaranteed to overflow at 256 2020-09-15 20:49:24 +01:00
Clownacy
52c2a5ceee Make software renderer a bit more foolproof
This also eliminates some comparisons with mismatching signedness
2020-09-15 20:48:18 +01:00
Clownacy
11bbad7372 Cleanup
Now RenderBackend_DrawGlyph doesn't pass an unnecessary parameter
2020-09-15 19:40:10 +01:00
Clownacy
392d5898a3 Make GetVertexBufferSlot consistent
It would be nice keep this batching stuff in a common file
somewhere...
2020-09-15 16:28:35 +01:00
Clownacy
e2b64df84a Oops, also offload colour-fill vertices as well 2020-09-15 16:18:48 +01:00
Clownacy
0f5af36951 Offload vertex transformation to the GPU 2020-09-15 16:08:56 +01:00
Clownacy
07e4e3b971 Offload texture coord transformation to GPU
I imagine this isn't too helpful when the GPU is the bottleneck, like
on my Raspberry Pi.
2020-09-15 14:21:58 +01:00
Clownacy
f0e1119a91 Move OpenGL shader stuff to a struct
The uniform naming scheme was already emulating this
2020-09-15 14:13:45 +01:00
Clownacy
6b96ada4a8 Use proper OpenGL buffer access specifier
The previous value was inherited from the old pre-batching code,
where it actually made sense.
2020-09-15 00:48:14 +01:00
Clownacy
142db71cb9 Move sanity checks to Draw.cpp
There, no need to keep track of a bunch of duplicate sanity checks
2020-09-15 00:07:10 +01:00
Clownacy
611afe7417 Remove those annoying renderer sanity checks
Duplicate junk. If they're that important, they can go in the game,
not the backends.
2020-09-14 23:55:39 +01:00
Clownacy
27b3980a56 Flush Wii U vertex buffers when stuff happens
You know, this 50-character commit name limit is really annoying.
2020-09-14 23:47:52 +01:00
Clownacy
e96ee6ed89 Don't leave dangling OpenGL texture IDs 2020-09-14 23:43:18 +01:00
Clownacy
9ea6caad72 Merge branch 'accurate' into portable 2020-09-14 23:31:01 +01:00
Clownacy
eadc04e46e Bump StartDirectDraw fix to FIX_MAJOR_BUGS
I was debugging GLFW earlier, and this fix wasn't being enabled.
FIX_BUGS should be for aesthetic bugs that only affect gameplay, not
ones that affect fundamental stability.
2020-09-14 23:30:11 +01:00
Clownacy
2bcab6adee Change software renderer sub-backend API
No more locking
2020-09-14 23:26:55 +01:00
Clownacy
30ea89d3fa Remove some now-unneeded struct members 2020-09-14 23:17:21 +01:00
Clownacy
e18ec87f99 Update Wii U renderer 2020-09-14 23:16:45 +01:00
Clownacy
98f66444d7 Updated OpenGL renderers 2020-09-14 23:12:18 +01:00