Commit Graph
36790 Commits
Author SHA1 Message Date
Crash Cringleandteejusb c3886adb07 Update Banner handling for new sorts 2025-03-03 23:36:06 -08:00
Crash Cringleandteejusb b482c26612 Give these sorts sections so it's clear where they start and end 2025-03-03 23:36:06 -08:00
Crash Cringleandteejusb 6201e1ab94 Add Recently Played and Most Played per Profile as sorts 2025-03-03 23:36:06 -08:00
sukibabyandteejusb 6707922be8 Remove dead code from RageSoundReader_MP3.cpp
Unused.
2025-03-03 23:33:53 -08:00
3c0b480b93 Replace the vendored libjpeg with the submodule of libjpeg-turbo 3.1.0
Co-authored-by: phantom10111 <phantom10111@gmail.com>
2025-03-03 23:33:15 -08:00
sukibabyandteejusb 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
Rafał Florczakandteejusb e0aad77672 Check for glu and udev in cmake 2025-03-03 23:26:54 -08:00
Crash Cringleandteejusb b770e9ad6b Use Log->Warn 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 17e4953d54 Add Luadocs for Group 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb dbbcc57112 Explicitly require and use capital NULL and ITG everywhere for sync bias, comment fix, nullptr check for group 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 35570a0880 Condense trim/check empty pack.ini logic to vector looping 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 8f6d5b44b9 Move sync offset application to song load (as early as possible) 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 9d61cb4c06 Okay we use -9ms here because this counters the +9ms folks add to their charts. Ensure we clear the series map when freeing songs 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 6fbbf931ac Use std::string instead of RString for mappings 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 218d5734a3 Change group map to an unordered_map 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 830bf1bb8d Change series map value from a vector to an unordered set, remove series prefixing, ensure always defaulting to group disk name for sorting 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb dd60d36093 Implement changes from feedback 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 694a724770 Move ASSERT_Ms to debugging and replace with warns, include <array>
(See feedback in PR)
Co-authored-by: sukibaby <163092272+sukibaby@users.noreply.github.com>
2025-03-03 23:25:32 -08:00
437f72b13d Update src/ScreenOptionsMasterPrefs.cpp
Co-authored-by: sukibaby <163092272+sukibaby@users.noreply.github.com>
2025-03-03 23:25:32 -08:00
0b3ed6d4f9 Update src/SongManager.cpp
Co-authored-by: sukibaby <163092272+sukibaby@users.noreply.github.com>
2025-03-03 23:25:32 -08:00
fc98959db4 Update src/SongManager.cpp
Co-authored-by: sukibaby <163092272+sukibaby@users.noreply.github.com>
2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb ec814a6b74 Add version to Pack.ini, auto populate this value in the Pack.ini if it isn't manually provided 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 48b5b35e23 Rewrite a few comments 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 53a26f2fa4 Add some nullptr handling 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb ac767b3ce8 Move GetGroup to SONGMAN, rename variables consistently, move "pack.ini" to constant var, flip sync bias sign 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb ea588c8504 Remove extra fields for now 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb e8f0d55d6e Add SONGMAN:HasGroupIni(string groupName) which returns true/false 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 05cd7ed922 reimplement "SyncBias" as something that tells us the sync of the pack so we may adjust accordingly rather than the blanket sync to apply to the pack. 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb f59a5b1e72 Rename group.ini back to pack.ini to avoid conflict with the existing waiei standard. See: https://github.com/waiei/Group.ini-lua 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb a7cb3b0264 Remove unnecessary GetSongs accessor from Group object 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 13e6aaacb3 start addressing review/feedback 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 00342feadc Add new preference: DefaultGroupOffsetSeconds to dictate the default sync bias on the machine when no group.ini is present (or if there is no SyncOffset field in said file).
- Generally Supports either ITG (9ms) or NULL (0ms).
- Alternatively, one could edit the preference manually to put a different value
- Name/Description probably worth ironing out
2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 835ca35065 Ensure the Group Offset is applied when Reloading a Song from Disk 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb fe1bfbdde2 Fix the AutoSync Relay showing Global Offset instead of the song Offset when Auto Syncing
- Unrelated to group.ini
2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 01eea5cd42 Remove additional leftover debug message 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 1bf9dd004d Use the Translit field from Group.ini, Migrate Banner code to Group class 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 520173ef5d Safe delete Groups 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb c06059b274 Further Group enhancements.
- Adjust the variable scope of group attributes
- Remove the now redundant GroupBannerPaths vector and replace its usage.
- Migrate ini loading logic to Group class
- Better clarity on comments for Group
- Remove GetTotalSongs in favor of GetSongs.
- Add Year as a value to Group.ini
- Ensure new group and song maps are cleared properly when freeing songs
2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 096d3093e4 Add Group files to cmake 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 5abaf5318a Move group into its own class, add Credit and AuthorsNotes fields, Begin exposing methods to lua 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 1aa44cacb6 Rename Pack -> Group for consistency. Remove leftover logging and extra lines from debugging.
Misc patches via PR review.
2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb e55475a295 Add enums for ITG/NULL in pack.ini for SyncOffset 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 798201cce4 Add Pack Offset and Group Banners to pack.ini, Remove debug logging 2025-03-03 23:25:32 -08:00
Crash Cringleandteejusb 5e6f3378a8 Thrown together Initial working implementation of pack.ini
# Conflicts:
#	src/MusicWheel.cpp
2025-03-03 23:25:32 -08:00
Michael Votawandteejusb 239d38d5aa pre-initialize size of vectors for writing nps/notes per measure to cache file. 2025-03-03 21:24:17 -08:00
Michael Votawandteejusb c0db6beb9c We don't need to set cached nps per player individually, just parse all of it and pass it to Steps 2025-03-03 21:24:17 -08:00
Michael Votawandteejusb 2625394ac0 Only store NotesPerMeasure and NpsPerMeasure values per-player if the steps type has different steps per player. 2025-03-03 21:24:17 -08:00
Michael Votawandteejusb fd790eb83e Replace #MEASUREINFO with two separate tags, #NPSPERMEASURE and #NOTESPERMEASURE. Stop storing MeasureInfo objects on Steps, and just directly store NpsPerMeasure, NotesPerMeasure, and peakNPS. 2025-03-03 21:24:17 -08:00
sukibabyandteejusb 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
sukibabyandteejusb 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