Commit Graph
36655 Commits
Author SHA1 Message Date
Brandon Wandteejusb ff8e018fbf Fix a case where we receive no hints on the number of frames in a file. 2024-12-08 08:07:20 -08:00
sukibabyandteejusb 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
Yauhen Artsiukhouandteejusb ada419f1ff Fix lights driver regression after restart button added
Relates pull: #347
2024-12-04 12:59:20 -08:00
sukibabyandteejusb 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
Scott Brennerandteejusb ffc576a210 Fix CI badge in README.md 2024-12-01 14:31:33 -08:00
sukibabyandteejusb 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
sukibabyandteejusb 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
glitchbearandteejusb b46f929178 Fixed display settings and refresh rate selection for exclusive fullscreen mode. Now applies the selected settings to the preferred display instead of the primary display. 2024-11-28 11:14:08 -08:00
glitchbearandteejusb 29ae636255 Testing refresh rate being selected based on fetching the preferred display rather than primary. 2024-11-28 11:14:08 -08:00
glitchbearandteejusb a3a22040a2 Clean up strings and fix behavior when switching to windowed mode 2024-11-28 11:14:08 -08:00
glitchbearandteejusb 2dcd4eb2ee Add option to select output display in Windows 2024-11-28 11:14:08 -08:00
sukibabyandteejusb 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
Brandon Wandteejusb ee16093adc Create a "GameplayHelpers" file and move the margin gathering code
in there.
2024-11-28 11:01:24 -08:00
Brandon Wandteejusb 98b7f28c26 Fixes for Google style guide. 2024-11-06 01:20:31 -08:00
Brandon Wandteejusb 1626398244 Fix for movies shorter than the buffer size. 2024-10-22 16:45:24 -07:00
sukibabyandteejusb a6a60e2e56 Remove std prefix from int types
std::int* -> int*
2024-10-08 20:52:52 -07:00
sukibabyandteejusb 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
Yauhen Artsiukhouandteejusb 59e6e94cf3 Embed libusb 1.0 into project 2024-10-06 17:43:13 -07:00
sukibabyandteejusb 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
sukibabyandteejusb 659cd549a2 Remove std prefix from uint types
std::uint*  ->  uint*
2024-10-05 19:25:41 -07:00
sukibabyandteejusb 57afab25c1 Remove m_iRageSoundSampleCountClamp preference
Windows XP era DirectSound hack - removing the functions that used this.
2024-10-01 13:03:06 -07:00
sukibabyandteejusb 584fca49b7 Remove low_sample_count_workaround
No longer needed now that hardware clamping methods are corrected.
2024-10-01 13:03:06 -07:00
sukibabyandteejusb 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
sukibabyandteejusb 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
sukibabyandteejusb e0b254968d std::size_t -> size_t
Removing std prefix from all size_t.
2024-10-01 01:46:26 -07:00
sukibabyandteejusb 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
Brandon Wandteejusb 7b2f0338b8 Add centering back into edit/practice mode playback. 2024-09-30 17:20:11 -07:00
sukibabyandteejusb bcd7e8e1d2 put the enum class back 2024-09-30 17:17:02 -07:00
sukibabyandteejusb 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
sukibabyandteejusb 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
sukibabyandteejusb 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
sukibabyandteejusb 93c15f9b15 Change ARROW_SIZE to a constexpr int 2024-09-30 17:17:02 -07:00
sukibabyandteejusb 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
Brandon Wandteejusb cff063cd21 Fix routine chart loading/playback in EditMode. 2024-09-30 13:59:47 -07:00
sukibabyandteejusb 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
sukibabyandteejusb f5cb958f78 Delete src/archutils/Win32/ThreadPriorityHelper
unused
2024-09-27 12:47:44 -07:00
sukibabyandteejusb 01795ef948 fixes 2024-09-22 11:00:41 -07:00
sukibabyandteejusb 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
sukibabyandteejusb 080f95bf97 Expand BitmapText::UpdateBaseZoom()
The macro here is unnecessary.
2024-09-22 11:00:41 -07:00
sukibabyandteejusb 3b69a3179e Undefine CPY macro 2024-09-22 11:00:41 -07:00
sukibabyandteejusb 506adb80ba Standardize use of size_t
Instead of a mix of std::size_t and size_t. Not using the std prefix is more modern.
2024-09-22 11:00:41 -07:00
sukibabyandteejusb 934fc54b8a BitmapText::DrawPrimitives noexcept
This function indirectly determines the amount of average audio latency, this is why changes to BitmapText can affect global offset significantly. Aim to make the function as fast as possible to minimize latency.

1) make BitmapText::DrawPrimitives noexcept
   -  note: RollingNumbers::DrawPrimitives has to also become noexcept as a consequence

2) Define repeated calculations as constexpr functions defined within an anonymous namespace

3) Fix some formatting stuff
2024-09-22 11:00:41 -07:00
Brandon Wandteejusb 5bb277b5de Optionally load in P2 during PracticeMode playback.
Use the first PlayerNumber that comes in under export options, this fixes P2
loading by itself in PracticeMode.
2024-09-22 10:59:06 -07:00
sukibabyandteejusb 0aa41b305d Make static vectors of default driver lists
Currently we are storing the default driver lists as a macro, and splitting them into RString vectors every time they are needed. This commit changes the macros in `arch_default.h` into vectors of RStrings, so that they do not need to be split each time.

I have updated all references where the default driver lists are being called so that the vector is used directly.

A new function is added to RageUtil to make a compatible vector of RStrings from user input which may be separated with a comma.

RageSoundDriver was refactored to check user input in Preferences.ini against the default driver list, and in case of incorrect spelling or failure, provides a detailed error message (including a list of valid options) in logs so the user can resolve the problem.

`fix_bogus_sound_driver_pref` is no longer needed, since we are now telling the user what their valid options are if the user provides an incorrect entry for the `SoundDrivers` preference, instead of silently attempting to guess what the user wanted. Since I think it's rare that someone wants to specify a driver to begin with, we should let them know their exact options if they put something wrong here, instead of silently failing or using an unwanted driver.

I tested this on Windows by specifying `DirectSound-sw` in Preferences.ini, and it worked as expected. I also tried putting an unusable value in, and got the error in logs letting me know what my valid driver options were. Of course, input and movies all work as expected too.
2024-09-22 10:51:58 -07:00
Brandon Wandteejusb 804b15959d Implement sliding window between AVPackets and AVFrames, to save memory. 2024-09-22 10:51:01 -07:00
sukibabyandteejusb eb35a9b9af Switch from Float to Integer Time Values
- Use fast data types where possible so the compiler can optimize for speed based on platform
    - for example, 128 bits might be fastest on ARM
    - good future-proofing

- Refactor GetTimeSinceStart() to be a bit faster
    - multiplication is much faster than division

- Implement a RageTimer method to get the seconds value as a plain int, for the places which cast the seconds value to an int

- Changing from GetTimeSinceStartFast() to GetTimeSinceStart() where accuracy is important

- Changing from GetTimeSinceStart() to GetUsecsSinceStart() for timestamp diffs

- Adjust RageThreads to accomodate an unsigned timestamp value
   - a constant for the maximum value of `uint_fast64_t` replaces `-1` to accommodate the change from signed to unsigned for the `locked_at` variable
   - i have separate constants for `std::numeric_limits<std::uint_fast64_t>::max()` and `static_cast<std::uint_fast64_t>(-1)`, so the reader understands -1 represents an error code, though they evaluate to the same value, so i could remove one of the two

- Add two methods to calculate the MMSSMsMs / MMSSMsMsMs time value from usecs directly instead of inferring it from a seconds value, in RageUtil

- Use a similar counter/modulo based method for WheelNotifyIcon, similar to what i did for text_glow in NoteField in 2eeee03

- Make `g_iStartTime` static const for safety

Rename two timer functions:
GetUsecsSinceStart -> GetTimeSinceStartMicroseconds
GetMicrosecondsSinceStart -> GetSystemTimeAsMicroseconds

Remove std prefix from uint_fast64_t
2024-09-22 01:27:45 -07:00
sukibabyandteejusb 53cd968b90 Removing bApproximate (part 2)
This should wrap up removing this flag from the code base.
2024-09-20 22:03:15 -07:00
sukibabyandteejusb 221752215c Clean up RageSoundReader_Resample_Good
Increasing security and efficiency of math in order to prevent potential errors from occurring.

1.  L is a macro made to equal 8. It's only used in conjunction with other `int`'s, so it's safe to make into a constant called FILTER_LENGTH.

2.  Define a very tiny number to avoid a potential mistake in ApplyKaiserWindow.

3.  Define constants for BesselI0, making the functions easier to read but also improve security of the math.

4.  Make some variables const and prevent redundant calculations or variable creations in ApplyKaiserWindow and GenerateSincLowPassFilter.

5. Use `double` interally in GenerateSincLowPassFilter
2024-09-20 21:56:32 -07:00
sukibabyandteejusb 5b0323b0e3 Update README.md for GPLv3 2024-09-20 21:37:52 -07:00
sukibabyandteejusb efa835c448 Update Licenses.txt for GPL v3 2024-09-20 21:37:32 -07:00