Commit graph

958 commits

Author SHA1 Message Date
Clownacy
7f7553bef2 An accuracy improvement in Triangle.cpp
This one's weird: it doesn't affect the actual generation of ASM in
the function, but rather it affects the ASM of sinf and cosf.

You see, sinf and cosf are static - they're built right into the EXE.
Since the previous code used cosf and sinf, they were embedded into
the EXE, and InitTriangleTable would call them directly.

However, this isn't what the original EXE does: instead,
InitTriangleTable calls an intermediary function, that in turn calls
the real cosf and sinf. Turns out this strange code generation is
caused by calling cos and sin instead of cosf and sinf, but still
using float parameters.
2019-09-05 17:04:07 +01:00
Clownacy
54b3cd9c11 Revert "Add the typos back to the stage table"
This reverts commit 5dd3a5dd2d.

Obviously don't want these
2019-09-05 15:20:03 +01:00
Clownacy
8916ee7dd8 Merge branch 'accurate' into portable 2019-09-05 15:16:29 +01:00
Clownacy
3bac7674f4 Correct some WinAPI usage
All the broken stuff just happened to work on 32-bit, but would cause
MinGW-w64 to explode if you tried building as 64-bit.

I guess thanks to Microsoft keeping the basic C int types the same
size in 64-bit as they were in 32-bit, this branch compiles as 64-bit
just fine, despite Cave Story's many int-size dependencies.
2019-09-05 15:03:34 +01:00
Clownacy
5dd3a5dd2d Add the typos back to the stage table
These were corrected in an earlier commit because they affect
portability.
2019-09-05 14:56:03 +01:00
Clownacy
5b5d5ae729 Revert "Restore the Windows-style path separators"
This reverts commit 42e1b36fd8.
2019-09-05 14:19:17 +01:00
Clownacy
84c3cd825e Merge branch 'accurate' into portable 2019-09-05 14:18:42 +01:00
Clownacy
42e1b36fd8 Restore the Windows-style path separators 2019-09-05 14:05:27 +01:00
Clownacy
ce055c12cb Remove a now-unused function 2019-09-05 03:17:20 +00:00
Clownacy
22c967ca3a Add a replication of MSVC2003's rand() algorithm
This actually affects how the game sounds. Seriously, listen to the
dialogue boxes. Now it matches the original.
2019-09-04 19:23:35 +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
0be5e9ead8 Restored the window icon and custom cursor 2019-09-04 14:39:37 +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
7a5eb3993c Remove some FIX_BUGS things that aren't actually bugs
Code cleanup isn't within the scope of the project.
2019-09-04 13:57:22 +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
0424c3e275 More portability improvements
Now this actually compile on Linux, but it doesn't run.
2019-09-04 13:51:49 +00:00
Clownacy
a3bb651194 Change the audio backend API a little
AudioBackend_SetSoundPosition was very loosely-defined.
2019-09-04 03:16:33 +01:00
Clownacy
dcf9921481 Move SystemTask from WindowsWrapper.h to Main.h 2019-09-04 02:23:49 +01:00
Clownacy
4e50046d4b Remove WINDOWS and NONPORTABLE
Now that the portable stuff gets its own branch, these are unneeded
2019-09-04 02:14:15 +01:00
Clownacy
79759145c0 Merge branch 'accurate' into portable 2019-09-04 01:53:58 +01:00
Clownacy
987ecd5340 Apply a missing constant in Organya 2019-09-04 01:41:15 +01:00
Clownacy
6932e01650 Fix some horribly platform-dependant code in Organya 2019-09-04 01:37:15 +01:00
Clownacy
b553b0c2e9 Remove DWORD and BYTE
They're not as deeprooted as BOOL.
2019-09-04 01:10:54 +01:00
Clownacy
73e18b4610 Removed the WINDOWS and NONPORTABLE stuff
Now that all the ASM-accurate stuff is in its own branch, we don't
need these anymore.
2019-09-04 00:54:11 +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
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
7ed6731e46 Merge branch 'accurate' into portable 2019-09-03 14:19:43 +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
8f1bc269f0 I might have found out why Sound.cpp uses DSBUFFERDESC1 2019-09-03 00:34:47 +01:00
Clownacy
09b188ac29 Add a bugfix for a bizarre function call 2019-09-03 00:17:42 +01:00
Clownacy
1f3728c177 Restore the new resource file system 2019-09-02 23:32:19 +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
4dadefc7d4 Add a missing NULL 2019-09-02 20:02:25 +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
46b48510a8 Remove File.cpp 2019-09-01 20:39:26 +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
ea489f9063 Added a bugfix for OpenVolumeConfiguration
Now it works on newer versions of Windows
2019-09-01 20:20:54 +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