Commit Graph
100 Commits
Author SHA1 Message Date
sukibaby 7792a82e7a OS-agnostic log warning for invalid sound driver entry. 2025-05-23 19:49:42 -07:00
sukibaby 45925badfd Update Windows build flags
/MP2 limits the build processes to a maximum of 2. Many CPU's nowadays have more than two cores, so the integer specifier is removed so that the build is not artificially constrained to two cores.

/FS allows multiple compiler processes to write to the .pdb file; it should be used in conjunction with /MP to speed up the build.

/permissive- disables certain MSVC-specific extensions and follows the C standard more closely. Using this flag should help to ensure behavior matches gcc & clang a little more closely.

Note, /utf-8 does NOT build the program with Unicode support. It merely indicates to the compiler that the source files are using UTF-8 encoding.
2025-05-23 19:47:21 -07:00
sukibaby 71cb44bde3 Make SetThreadPrecedence return a std::string 2025-05-22 20:08:56 -07:00
sukibaby 6a29f651c7 Remove implicit conversion operator from RString to const char* (macOS)
Tested via CI (don't have a Mac).
2025-05-22 20:08:56 -07:00
sukibaby 25b57c13d5 Replace some lrint's with GetTimeSinceStartSeconds()
Optimization to avoid several stages of integer-to-float and float-to-integer by making use of GetTimeSinceStartSeconds().
2025-05-10 10:09:44 -07:00
sukibaby d3ff9a0683 Replace GetRandomInt()
RageUtil already had a RandomInt function, this wasn't needed after all.
2025-05-10 09:27:05 -07:00
sukibaby 60f57cd337 Song::GetFileHash cleanup
Implement a range-based loop instead of a big list of if statements.

& prefer ssc to sm to all else

Song::GetFileHash: Fix indentation
2025-05-09 10:48:37 -07:00
sukibaby e84b774166 Remove an expensive but low-importance log
We only see this if & when we shut down cleanly. It's not worth calculating every time we mix a sound into the buffer.
2025-05-09 10:25:12 -07:00
sukibaby d428bbbcd4 Fix for Code scanning alert #40 "Unsigned difference expression compared to zero" 2025-05-06 15:44:15 -07:00
sukibaby 33a6912778 Code scanning alert #487 "Multiplication result converted to larger type"
My own fix, not auto-generated.
m_iChannels is implicitly promoted to size_t.
2025-05-06 15:43:38 -07:00
sukibaby 21e6498414 Resolve critical CWE-134 warning
Resolves CWE-134: Use of Externally-Controlled Format String by using c_str on the path variable and removing an invalid string concatenation.
2025-05-06 15:43:03 -07:00
sukibaby f18dddd43e Fix a malformed CHECKPOINT_M
It uses %s, but there is no variable passed to it, so it literally prints "Driver %s successfully made", this fixes that.
2025-05-03 22:42:19 -07:00
sukibaby 79f2e2e5ee Revert "Fix two small RageFile bugs"
This reverts commit 5d2667add1.
2025-05-03 07:54:02 -07:00
sukibaby a517a3887c Use std::call_once in ArchHooks_Win32Static
Makes use of this <mutex> feature to ensure the timer is only initialized once. Reduces clutter, and improves thread-safety.
2025-05-03 07:53:33 -07:00
sukibaby a3eb3d8646 SaveScreenshot: remove unused timer
The timer is only used by the commented-out debug log methods, but the timer itself still runs. This removes the timer as well as the unused logs.
2025-05-01 13:10:30 -07:00
sukibaby b5a2f86277 SaveScreenshot: Use const & in function header
Pass sPath by reference to avoid unnecessary copies.
2025-05-01 13:10:12 -07:00
sukibaby 16b3ba488d SaveScreenshot: return the status boolean directly
Remake of PR #790 due to merge conflicts
2025-05-01 13:09:55 -07:00
sukibaby 64a1e3a49c SaveScreenshot: remove unneeded boolean 2025-05-01 00:25:09 -07:00
sukibaby dacf87fb3b SaveScreenshot: improve error logging
The existing code uses repeated error messages at different points in the code, making debugging very difficult. This makes every step more unique for easier state tracking. Also changes trace to warn, to make it a little easier to spot failed screenshots in the log.
2025-05-01 00:23:53 -07:00
sukibaby d50ad757cb Remove useless alias
This used to be a different function than GetTimeSinceStart which returned a lower precision value but we don't do that anymore.
2025-04-29 21:42:37 -07:00
sukibaby ab6d2ff3d0 columnCount -> columnCount_
Resolves MSVC compiler warning C4458 by renaming the class variables to columnCount_.
https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4458
2025-04-29 21:40:54 -07:00
sukibaby 305a24196a Make some constants constexpr, mark as float so MSVC doesn't print a warning about a double to float truncation 2025-04-29 21:40:54 -07:00
sukibaby 3a12adc56c Pass a const char* instead of RString to RageException::Throw
For #781
2025-04-27 12:01:40 -07:00
sukibaby 04c58309b7 Remove a CPY macro from ActorMultiVertex 2025-04-26 16:21:39 -07:00
sukibaby 4ae1b79578 Rewrite constructor
The existing code looks like it's attempting to call another constructor, and seems to be creating a temporary object, which I don't think is the intention of the code.
2025-04-26 00:10:28 -07:00
sukibaby 57935cee81 Increase check frequency, improve comment 2025-04-23 09:29:29 -07:00
sukibaby 744bfe7800 Global function CallEveryNFrames
Call a function every `n` frames.
2025-04-23 09:29:29 -07:00
sukibaby 1435fc3e9a Slow down frequency at which device strings are updated in controller mapping screen
Currently the input mapping screen asks for an updated list of button names every single frame. As this is a bit excessive, it's changed to run every 120ish frames.
2025-04-23 09:29:29 -07:00
sukibaby bfa9d3f600 PeekDeltaTime() -> Ago()
Remove a useless alias.
2025-04-23 01:59:00 -07:00
sukibaby 774af7bd19 Update ArchHooks_Win32Static.cpp
Thanks to evbo from the ITC discord for pointing out this improvement.  It does take bring the thread polling interval down from every 10ms to every 1ms.
2025-04-22 23:14:35 -07:00
sukibaby 1a2188e898 Precompute values & reserve memory in CreateFrameRects()
Reduce the number of calculations in nested loops, and reserve the needed amount of memory instead of relying on the vector to resize itself.
2025-04-22 22:18:23 -07:00
sukibaby 6401c66129 Reorganize machine sync bias handing in Group constructor
All logic is moved into one section now instead of being split between two places.

This is a minor change, but I'd be more comfortable with this because it more explicitly defines the different possibilities for group/machine offset combinations than the existing code.

Revert "Reorganize machine sync bias handing in Group constructor"

This reverts commit b53d26df494aea9d7491d2410c214b146ab09034.

Reorganize machine sync bias handing in Group constructor
2025-03-26 10:41:08 -07:00
sukibaby 07483ef6f9 Added video banner logic in ScreenSelectMusic
Currently, video banners are treated the same as still-image banners, where we assume we need to let the low-res banner fade in before swapping it out with the high-res banner. This isn't the correct way to handle video banners, since we don't make low-res placeholders for them, so we now check the banner's extension to see if it's a video or not, and directly load the video if so.
2025-03-23 01:34:43 -07:00
sukibaby c59c491fd0 Revert "(Win32 refresh) GraphicsWindow"
This reverts commit 6aa81a9dd2 to resolve issue #681
2025-03-22 12:43:13 -07:00
sukibaby 58f88569d5 Remove AdjustForChangedSystemCapabilities() from StepMania.cpp
Remove this method, which only executes on Windows, which overwrites a few of your preferences based on whether or not you have at least 192MB of free RAM. The entire body of the function is wrapped in _WIN32 ifdefs. It is the only function making use of the LastSeenMemory value stored in Preferences.ini.
2025-03-18 07:29:56 -07:00
sukibaby 9787e01acf Add braces to Song::ReloadFromSongDir
The LOG->Warn line is being executed unconditionally due to the the lack of braces. The indentation is misleading as a result. This adds braces to ensure the intended behavior is performed.
2025-03-11 21:34:22 -07:00
sukibaby 674fdb4fcb Correct an invalid jpeg quality parameter.
With our new libjpeg_turbo library, a quality of 150 doesn't seem to be valid, so I'm changing this to 95. I chose 95 over 100 because the libjpeg_turbo project uses a quality of 95 for all testing and benchmarking shown in their documentation, and notes that a quality of 95 "has been determined to be perceptually lossless under most viewing conditions".
2025-03-10 22:39:26 -07:00
sukibaby 22216f02e3 Only save high quality jpeg screenshots.
Removing the case where `StepMania::SaveScreenshot` may request to save a low quality jpeg. The file size difference between a quality 70 and quality 95 jpeg is very small by modern storage standards.
2025-03-10 22:39:26 -07:00
sukibaby d6e8e0ba7f Add capital NULL in fallbacks for non-English languages 2025-03-09 11:16:12 -07:00
sukibaby 34de803f7b Add MachineSyncBias strings to language fallbacks 2025-03-09 09:57:35 -07:00
sukibaby 6707922be8 Remove dead code from RageSoundReader_MP3.cpp
Unused.
2025-03-03 23:33:53 -08:00
sukibaby e1bf59458f Check the ShowMouseCursor preference on Windows
Respect the user's setting in Preferences.ini. Hides the cursor if ShowMouseCursor is set to 0, shows the cursor if ShowMouseCursor is set to 1.
2025-03-03 23:28:13 -08:00
sukibaby 2414595063 do_mad_frame_decode might return 0, protect against possible crash
In the song wheel, if you scroll back and forth over an MP3 song very fast, you might get some audible corruption at the beginning of the song preview, and it might even crash the game.

This fixes both of those problems.
2025-03-02 22:21:30 -08:00
sukibaby 6f497f70e7 Use SetPosition_hard instead of SetPosition_toc for the mp3 position, remove dependency on accurate sync boolean
Resolves #610.

`RageSoundReader_MP3` has three different methods of setting the position. The default choice of `SetPosition_toc` is unable to provide an accurate result. The reason Edit Mode has such a severe desync when working with MP3's is due to the preference of using `SetPosition_toc`.

We can prevent this by using `SetPosition_hard` which works very well.  Judging by comments in the file, it seems like `SetPosition_hard` was too resource intensive to use as the default method, 20+ years ago.

The only downside is, if you start from an arbitrary position (which is **only** possible in Edit Mode), you have a few milliseconds of corrupted audio, but then the sync is perfect.  You can hear this in the demonstration video below.

When we start from the beginning of a file, such as playing a song, or using `Play whole song` in edit mode, `MADLIB_rewind` will be used.

`SetPosition_hard` provides an accurate result, and is consistent with the offset provided by `MADLIB_rewind`. The result is a consistent sync experience whether the MP3 is started from the beginning, or from an arbitrary position midway thru the file.

The `m_bAccurateSync` boolean dependency has been removed from SetPosition since it does not seem to provide any benefit on modern hardware. It seems fine to remove it so that we can call `MADLIB_rewind` or `SetPosition_hard` as fast as possible.

In my testing I never got `SetPosition_estimate` to be used, but I've left it in as a backup option.
2025-03-02 22:21:30 -08:00
sukibaby 5326808f38 Revert "(Win32 refresh) LoadingWindow_Win32"
This reverts commit afc3083b3e.

Revert "be 32 bit"

This reverts commit 4d8d22d223.
2025-03-02 15:05:31 -08:00
sukibaby 2feb9e784c RageSoundReader_Merge fixes
This is the fixed Merge from the 2025-1-26 test build. It will more strictly check the drift with each iteration of the m_aSounds loop, whereas the original implementation can allow small amounts of desync to accumulate over time if none of them exceed the threshold.
2025-03-02 09:13:31 -08:00
sukibaby 4f4167e3c7 Fix DirectSound and set it to default on Windows.
I've fixed the issues with the DirectSound driver which a number of commits from 2016 attempted to address. Additionally, build testers strongly prefer the fixed DirectSound to WaveOut (the current default driver for Windows) in terms of both game stability and sync stability, so I'm making it the default driver as well.

StepMania commit 75a9532 from 2006 had a subtle error, the declaration of len and locked_buf will hide the previous local declaration of these variables. The issues causing the DirectSound driver to be unreliable in terms of sync were due to this. This PR renames the variables from the 2006 commit to prevent this, and also ensures all variables are properly initialized.

Renamed `locked_buf` and `len` in `MixerThread` to `locked_buf_init` and `len_init` to avoid shadowing.

Prevent use of uninitialized member variables by initializing `m_pPCM`, `m_iSampleRate`, and `m_bShutdownMixerThread` in the constructor.
2025-03-02 09:11:25 -08:00
sukibaby 5673d84567 undo whitespace changes in Threads_Win32 2025-03-02 09:04:34 -08:00
sukibaby 1b258a4a00 use ExitThread instead of TerminateThread
Preferred in Windows, especially when we can't guarantee that we are able to perform a proper clean-up before terminating. Halt may be called with the Kill flag which indicates everything must shut down. This is the preferred approach in the Windows API.

Another preferred option is to use WaitForSingleObject with a timeout, but Halt with the Kill flag is being called when the game is about to crash, so that's not a realistic option and may cause the program to hang indefinitely.
2025-03-02 09:04:34 -08:00
sukibaby 1da7f6167f (Win32 refresh) Threads_Win32
This file handles OS side interaction as well as the creation of threads within the game -  std::unique_ptr and std::mutex are introduced here for their safety and memory management benefits.

A custom wrapper PortableSignalObjectAndWait was removed in favor of directly calling SignalObjectAndWait.

In SetThreadName, we change from EXCEPTION_CONTINUE_EXECUTION to EXCEPTION_EXECUTE_HANDLER as suggested by the compiler to avoid a potential infinite loop.

ThreadImpl_Win32::Halt has been refactored to unequivocably call SuspendThread instead of TerminateThread, as TerminateThread doesn't allow for proper thread cleanup.

Don't bother with the try-catch in SetThreadName unless this is a debug build (since exceptions are disabled in ITGm, so it won't work as expected).
2025-03-02 09:04:34 -08:00
sukibaby 3f348117e2 (Win32 refresh) GetFileInformation, DebugInfoHunt
DebugInfoHunt was also updated since GetFileInformation directly uses it.

- GetMemoryDebugInfo is updated as GlobalMemoryStatus is deprecated.
- GetWindowsVersionDebugInfo is updated to use RtlGetVersion.
- GetFileInformation updated to use vector and string, as well as const correctness and modern  Windows methods. Mostly removing Win9x-XP compatibility code.
- Also gets rid of some workarounds aimed at XP era versions of Visual Studio.

Fix a mistake in Windows version detection logic
2025-03-02 08:51:21 -08:00
sukibaby a7477a6c56 Better type choices, comment improvements, adding missing braces, removal of dead code. 2025-03-02 08:40:36 -08:00
sukibaby 94eb8d2a7f Vector based RageSoundMixBuffer
Bringing in algorithm for std::copy, and vector for automatic memory management.

Initializing the buffer with zeroes in the same operation as resizing the buffer. Going back to using an unsigned int for realsize, to prevent the buffer from becoming an unreasonably large size.

The constructor and destructor can be empty since the vector<float>'s own destructor will take care of freeing allocated memory.

The static_cast to an int in read(int16_t *pBuf) is changed to a static_cast to an int16_t, as audio data is expressed in 16 bit integers, and the fractional part is inherently rounded towards zero by truncation.
2025-03-02 08:40:36 -08:00
sukibaby 4d8d22d223 be 32 bit 2025-02-26 11:07:54 -08:00
sukibaby afc3083b3e (Win32 refresh) LoadingWindow_Win32
Speed up the loading window. SetPixelV is slow.  No perceptible difference in loading window behavior, but is faster.  The goal here is to alleviate the case where the loading window is the bottleneck when loading songs on a fast computer.
2025-02-26 11:07:54 -08:00
sukibaby 4601da4ab9 Update RageUtil::power_of_two
Replacing the SM5 power-of-two code with the implementation from Bit Twiddling Hacks, since the current implementation isn't correctly handling the edge case where the input is 0, and is a little overcomplicated.
2025-02-11 22:55:29 -08:00
sukibaby 200a44d8a1 Remove references to m_sUrl; disable GetUrl with a warning; add a missing brace to IsZero() since we removed a URL variable from it 2025-01-26 18:07:28 -08:00
sukibaby cc5670e8d1 Remove GotoURL
"Report" button has not been removed from CrashHandlerChild / Crash.mm / DialogDriver_Win32, but functionality has been removed.
2025-01-25 23:53:44 -08:00
sukibaby 6aa81a9dd2 (Win32 refresh) GraphicsWindow
Bring in std::optional<DEVMODE> to gracefully handle the case where the function may not return anything valid. This helps to avoid undefined behavior caused by unexpected/invalid return values, as an extra protection to supplement the check if we can identify the refresh rate.
2025-01-20 09:47:51 -08:00
sukibaby 03c71aec90 (Win32 refresh) AppInstance
Use wchar as well as GetModuleFileNameW for native unicode support. Added some logging to catch any cases of unexpected behavior on the OS side.
2025-01-20 09:47:13 -08:00
sukibaby cbd186dab2 (Win32 refresh) arch_setup
This eluded the update to use `_WIN32` preprocessor macro across the codebase.

Also adding an error message so we don't fail silently if we can't get the command line arguments.
2025-01-20 09:46:34 -08:00
sukibaby 3a51f00147 (Win32 refresh) Update DirectXHelpers.cpp
The DirectInput / DirectSound version defs need to be exposed to other parts of the engine, so they are moved to the header instead of the cpp file.

The includes can be consolidated after that.

I'm also replacing the usage of a raw array of char *'s with an RString and using c_str() to get its value - a small change, but raw arrays are unreliable.
2025-01-20 09:46:15 -08:00
sukibaby f783588adb (Win32 refresh) CommandLine
Directly use CommandLineToArgvW, replacing legacy code. Support Unicode natively by natively using std::string and wchar.  shellapi.h is brought in for CommandLineToArgvW
2025-01-20 09:45:43 -08:00
sukibaby 54232bed78 (Win32 refresh) DialogUtil
Fixes a 20 year old font leak issue which can be avoided by storing the font handle in a unique_ptr.
2025-01-20 09:44:24 -08:00
sukibaby 641fac232a (Win32 refresh) GotoURL
Mitigate some security concerns, update API calls (RegOpenKeyExW & ShellExecuteEx), support unicode natively, const correctness, etc. - not doing anything new, just updating what's here to be more modern.
2025-01-15 22:51:48 -08:00
sukibaby aba00ed8ec Improve precision in BGAnimationLayer
Floating point time is being stored as a float here, we can prevent precision loss by changing some of these to double during the lifetime of the function to get a more accurate result.
2025-01-15 08:58:40 -08:00
sukibaby 1fa31c64c6 Improve precision in ArrowEffects
Floating point time is being stored as a float here, we can prevent precision loss by changing some of these to double during the lifetime of the function to get a more accurate result.
2025-01-15 08:58:40 -08:00
sukibabyandScott Brenner 21238b90ff Apply suggestions from code review
👍

Co-authored-by: Scott Brenner <[email protected]>
2025-01-05 16:30:48 -08:00
sukibaby 54a53b4b2d Delete Build/INSTALL.md
Move INSTALL.md contents into README.md
2025-01-05 16:30:48 -08:00
sukibaby d837599530 Prevent leaking compilation path to log file
The current code leaks the build path of the machine the game is compiled on
2025-01-05 12:35:32 -08:00
sukibaby f57c71bd23 Ensure a consistent definition of TimingSegment::EPSILON
Since the EPSILON variable in the header file was declared but not assigned any value, it could lead to undefined behavior or calculation errors when the variable is used without initialization.  This ensures a consistent value is always used and is also defined at compile time for further safety.
2024-12-24 22:42:58 -08:00
sukibaby 4af78281cf Properly destroy closed WebSocketHandles 2024-12-17 09:02:53 -08:00
sukibaby 29d6531a50 Rearrange ShutdownGame() to prevent network based crash
This prevents a crash that occurs when trying to exit the game while a connection attempt is being made (such as closing the game while it's in the middle of trying to connect to GrooveStats).
2024-12-17 09:02:53 -08:00
sukibaby 83af23787c Revision to ActorMultiVertex changes
Following the discovery of the underlying bugs in BitmapText causing issues with performance of Step Statistics, I wanted to revisit some changes I made to ActorMultiVertex in ae6d7cecb5. Some things were reverted to prefer original behavior.
2024-12-06 21:08:21 -08:00
sukibaby 7b45a5f599 RageTimer bug fix
Fast data types are good for audio processing, but not so much for timekeeping. This PR should resolve a number of smaller issues.
2024-12-04 09:41:26 -08:00
sukibaby 3eae2f2052 Preference to handle the debug overlay, create fake classes to disable unwanted debug lines (for now)
Ideally this would also have an option to allow AutoSync,  AutoPlay, and Assist Tick with the debug overlay disabled, but that would require migrating that functionality elsewhere.
2024-11-30 22:56:28 -08:00
sukibaby 2147aa435a NotesLoader::GetMainAndSubTitlesFromFullTitle
Minor cleanup on `GetMainAndSubTitlesFromFullTitle` to use a range-based for loop, and also is slightly improved so that separators of any length will work, whereas the original code only works when the separator is one character long.
2024-11-28 11:22:08 -08:00
sukibaby 758ae970e2 Go back to using float time values in ScreenEdit
This fixes a regression where record mode can't tell if you're trying to input a hold or not.
2024-11-28 11:03:52 -08:00
sukibaby a6a60e2e56 Remove std prefix from int types
std::int* -> int*
2024-10-08 20:52:52 -07:00
sukibaby fbe0e0b658 Create FailWithMessage/AssertWithMessage
Migrate some very frequently called macros from global.h to global.cpp. This reduces Windows release executable size by 43 KB.

After moving ASSERT_M and FAIL_M into void functions, these two virtuals in RageFileBasic.h won't compile as they don't return a value. This changes them to return a default value.
2024-10-08 20:52:25 -07:00
sukibaby 1c46342a95 Fix SongPosition variable initialization
Move SongPosition::Reset into the header file, and call it in the constructor.
2024-10-05 20:25:09 -07:00
sukibaby 659cd549a2 Remove std prefix from uint types
std::uint*  ->  uint*
2024-10-05 19:25:41 -07:00
sukibaby 57afab25c1 Remove m_iRageSoundSampleCountClamp preference
Windows XP era DirectSound hack - removing the functions that used this.
2024-10-01 13:03:06 -07:00
sukibaby 584fca49b7 Remove low_sample_count_workaround
No longer needed now that hardware clamping methods are corrected.
2024-10-01 13:03:06 -07:00
sukibaby 856f6b3058 Revert to the old RadianToDegree method
Doesn't seem to be getting called, but prefer to maintain the original behavior to reduce uncertainty.
2024-10-01 01:50:16 -07:00
sukibaby c297f73f69 Revert "Run as "High Priority" on Windows"
Revert "Run as "High Priority" on Windows"

This reverts commit 3f8a7f5fd3.
2024-10-01 01:49:22 -07:00
sukibaby e0b254968d std::size_t -> size_t
Removing std prefix from all size_t.
2024-10-01 01:46:26 -07:00
sukibaby 8d125f3951 pos_map_backlog_frames optimization
The value was determined by profiling the `Cleanup` function as well as monitoring how frequent "Audio frame out of range" errors occurred. This provides an ideal balance of low latency and prevention of out-of-range errors.
2024-09-30 22:24:32 -07:00
sukibaby bcd7e8e1d2 put the enum class back 2024-09-30 17:17:02 -07:00
sukibaby af33f7d5c9 Indicate fallthrough to prevent a GCC warning
Without this here, GCC 11 and 12 will print a warning during compilation about a possible fallthrough, but we're doing that on purpose, so this simply adds an indicator to the compiler that we know what we're doing.
2024-09-30 17:17:02 -07:00
sukibaby d13740ce33 Rename the StretchType enum in Actor
The lowercase enum is confusing because it looks like a variable. This prefixes it with a class name so it's easier to understand its purpose.
2024-09-30 17:17:02 -07:00
sukibaby 8804607be4 ActorFrame: replace a switch with an if/else
More of a stylistic change than an optimization, but makes it easier to understand what's happening.
2024-09-30 17:17:02 -07:00
sukibaby 93c15f9b15 Change ARROW_SIZE to a constexpr int 2024-09-30 17:17:02 -07:00
sukibaby abf89ec2b1 Replace SAFE_DELETE / SAFE_DELETE_ARRAY macros
SAFE_DELETE -> RageUtil::SafeDelete
SAFE_DELETE_ARRAY -> RageUtil::SafeDeleteArray

Update JsonUtil.h to include RageUtil.h - MSVC doesn't need it included for some reason, but GCC and XCode does.
2024-09-30 15:13:32 -07:00
sukibaby 25f1bebf0e Fix a regression in BitmapText
Shouldn't have made this namespace as it complicates matters and breaks debug builds.
2024-09-27 20:25:39 -07:00
sukibaby f5cb958f78 Delete src/archutils/Win32/ThreadPriorityHelper
unused
2024-09-27 12:47:44 -07:00
sukibaby 01795ef948 fixes 2024-09-22 11:00:41 -07:00
sukibaby b000887f76 Remove some macros related to Rainbow Mode
Should help allowing the compiler to properly optimize this operation, as these macros are only used here.
2024-09-22 11:00:41 -07:00
sukibaby 080f95bf97 Expand BitmapText::UpdateBaseZoom()
The macro here is unnecessary.
2024-09-22 11:00:41 -07:00
sukibaby 3b69a3179e Undefine CPY macro 2024-09-22 11:00:41 -07:00