Commit graph

2697 commits

Author SHA1 Message Date
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
Clownacy
c12149b96e Fix a weird old typo 2020-09-13 19:35:31 +01:00
Clownacy
7bc028f5d8 Enable window-resizing in the SDLTexture renderer
Previously, the window was a fixed size just like the original.

This change highlights a weird issue in CSE2: this doesn't exactly
match the behaviour of the original game, so why did I change it?
Simple: monitors had much lower pixel-densities back in the early
2000s, meaning that 320x240 and 640x480 weren't as laughably small as
they are today.

I like to think of CSE2's portable branch as Cave Story's equivalent
to Chocolate Doom: the point isn't to replicate the game's behaviour
100% - that's the accurate branch's job - no, the point of the
portable branch is to replicate the *experience* of the game, as it
was back in 2004. This means no commically-small windows.

This is the same reason font anti-aliasing is disabled, even in
versions of Windows later than XP.

Sidenote: the OpenGL3/OpenGLES2 renderers already had this feature,
but they used linear-filtering, causing the screen to be extremely
blurry in 320x240 mode. This renderer uses a better method, which
does apply slight blurring at the edges of pixels at resolutions
that aren't an exact multiple of 320x240/640x480, but otherwise it
resembles nearest-neighbour. This is way nicer to look at, and fits
the game's aesthetic. This feature will be ported to the other
renderers soon.
2020-09-13 18:17:58 +01:00
Clownacy
aa3cd55b43 Fix SDLTexture surface freeing 2020-09-13 12:30:56 +01:00
Clownacy
bf93334b94 Fix out-of-bounds font atlas accesses 2020-09-13 12:30:01 +01:00
Clownacy
5e7f514b6f Hopefully fix font atlas pixel bleeding 2020-09-13 12:29:50 +01:00
Clownacy
5b33d0280d Merge branch 'accurate' into portable 2020-09-12 00:30:03 +01:00
Clownacy
f47ffea577 Remove a bugfix
It can't be saved...
2020-09-12 00:01:42 +01:00
Clownacy
f54dc8ce05 Ramble about the broken font sizes 2020-09-11 23:55:25 +01:00
Clownacy
a6408b330f Fix build error 2020-09-11 23:10:47 +01:00
Clownacy
a37e1d31f2 Remove extra newline 2020-09-11 13:06:52 +01:00
Clownacy
0324d1532b Apply SurfaceID type 2020-09-10 21:29:25 +01:00
Clownacy
1f88f7ffaf Make some code uniform 2020-09-10 21:26:22 +01:00