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
Clownacy
f55c965a70
Update SDLTexture backend
2020-09-14 23:09:55 +01:00
Clownacy
37a1518056
Update SDLSurface renderer
2020-09-14 23:06:42 +01:00
Clownacy
6b18ec91be
Replace LockSurface with UploadSurface
...
The old locking/unlocking API was plain inefficient. Soon I'll move
upscaling to the backend anyway, to minimise the overhead where
possible.
Currently only the software renderer has been updated.
2020-09-14 23:03:23 +01:00
Clownacy
ba797d0fea
Merge branch 'accurate' into portable
2020-09-14 20:04:41 +01:00
Clownacy
55b473a490
Document Flash.cpp some more
2020-09-14 17:01:00 +01:00
Clownacy
95f370a720
Integer-only ratio logic
2020-09-14 16:31:54 +01:00
Clownacy
746ebb822c
Bump glyph cache limit to 256
...
This should fit an entire extended ASCII set, and also help Japanese
support a little by having a larger pool of cached glyphs.
2020-09-14 15:29:04 +01:00
Clownacy
2446ec02c8
More PHILOSOPHY.md tidying
2020-09-14 13:29:27 +01:00
Clownacy
f9fa8ccbbf
Rework PHILOSOPHY.md some more
2020-09-14 13:21:47 +01:00
Clownacy
d59b3fab89
Update PHILOSOPHY.md
...
This branch has shifted focus slightly, from just porting Cave Story
as-is, to porting it while also trying to recreate the original 2004
experience.
2020-09-14 12:49:46 +01:00
Clownacy
afed830366
Only mark render-target textures as lost
...
SDL2 only loses target textures.
2020-09-14 12:49:34 +01:00
Clownacy
05b8b607fa
Correct outdated comment
2020-09-14 12:26:56 +01:00
Clownacy
63e4ac9aa9
Remove RenderBackend_FlushGlyphs
...
No longer used for anything
2020-09-14 12:25:39 +01:00
Clownacy
daa55b1a3c
Allow font atlases to be non-square
...
Saves a little memory in some cases. It's the backend's job to decide
if this is a problem or not, and pad it if it has to.
2020-09-14 12:08:27 +01:00
Clownacy
17da39fa14
Rename FontObject to Font
...
Explicitly calling it an object just seems unnecessarily verbose,
2020-09-14 11:54:37 +01:00
Clownacy
1625d3961d
Correct some awkward wording
2020-09-14 11:50:48 +01:00
Clownacy
0cdd6ad4df
Rename a rect
2020-09-14 10:44:54 +01:00
Clownacy
2d5f6a547d
Disable blending for the framebuffer
2020-09-14 10:42:31 +01:00
Clownacy
5e28463509
Remember to free the upscaled framebuffer
2020-09-14 10:39:16 +01:00
Clownacy
56b96ed432
Only use an upscaled framebuffer if we have to
2020-09-14 10:36:35 +01:00
Clownacy
53e96486ce
Use proper texture access type
2020-09-13 19:50:47 +01:00
Clownacy
2f748810bf
Disable blending for the upscaled framebuffer
...
I'd set it to RGB24 instead of RGBA32, but I don't know if there'd be
a performance penalty.
2020-09-13 19:41:19 +01:00
Clownacy
4517c9be9e
Fix incorrect upscaled framebuffer size
2020-09-13 19:37:01 +01:00