My Audiosurf/Quest3D reverse engineering journey

If you have a lot to say about something and feel like writing an Effort Post™ about it, post it here!
User avatar
m1nt_
Posts: 11
Joined: Thu Sep 14, 2023 4:32 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by m1nt_ »

trob2026 wrote: Sun Apr 26, 2026 12:02 pm error[E0433]: cannot find module or crate `flate2` in this scope
--> lib.rs:98:31
|
98 | let mut decoder = flate2::read::ZlibDecoder::new(tags[3].data.as_slice());
| ^^^^^^ use of unresolved module or unlinked crate `flate2`
|
= help: you might be missing a crate named `flate2`

error[E0601]: `main` function not found in crate `lib`
--> lib.rs:195:2
|
195 | }
| ^ consider adding a `main` function to `lib.rs`
Thanks! flate2 is listed as a dependency in the crate - you should try seeing if it works when you use gingerlib in another program ("cargo new" to create a new project, "cargo add gingerlib" in the project's folder to add gingerlib. See rainbowdream or gingerlib's documentation to find out how to use the library)
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

m1nt_ wrote: Sun Apr 26, 2026 12:12 pm Thanks! flate2 is listed as a dependency in the crate - you should try seeing if it works when you use gingerlib in another program ("cargo new" to create a new project, "cargo add gingerlib" in the project's folder to add gingerlib. See rainbowdream or gingerlib's documentation to find out how to use the library)
I did try adding gingerlib to rainbowdream, and it worked. Now, what apps are you talking about in terms of gingerlib?
User avatar
m1nt_
Posts: 11
Joined: Thu Sep 14, 2023 4:32 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by m1nt_ »

gingerlib just provides a generic way to read and write data to/from CGR files - it's pretty much up to you what you do with that
The functionality is kind of basic, but should be enough to scan files for interesting data. A bit of programming knowledge will be required to do this kind of stuff, so if you're not familiar with it, I'd recommend picking up some Rust basics first (or, if you're not familiar with programming in general, any other programming language is fine at first, so you can learn the fundamentals, since programming is a very good skill to have for this stuff).
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

m1nt_ wrote: Sun Apr 26, 2026 12:27 pm gingerlib just provides a generic way to read and write data to/from CGR files - it's pretty much up to you what you do with that
The functionality is kind of basic, but should be enough to scan files for interesting data. A bit of programming knowledge will be required to do this kind of stuff, so if you're not familiar with it, I'd recommend picking up some Rust basics first (or, if you're not familiar with programming in general, any other programming language is fine at first, so you can learn the fundamentals, since programming is a very good skill to have for this stuff).
I've learned a little bit.
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

Now, I'm trying to run CranberryCity.
User avatar
m1nt_
Posts: 11
Joined: Thu Sep 14, 2023 4:32 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by m1nt_ »

trob2026 wrote: Sun Apr 26, 2026 12:57 pm Now, I'm trying to run CranberryCity.
CranberryCity doesn't work, unfortunately. Never got around to fixing that since I'm busy with a bunch of other things nowadays
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

m1nt_ wrote: Sun Apr 26, 2026 1:03 pm CranberryCity doesn't work, unfortunately. Never got around to fixing that since I'm busy with a bunch of other things nowadays
Oh well. Now, I tried decompressing the MoneyFloaterCommander file with rainbowdreams, it didn't work because there's no ash file.
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

New day, still trying to figure out how to decompress using GingerLib.
User avatar
m1nt_
Posts: 11
Joined: Thu Sep 14, 2023 4:32 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by m1nt_ »

trob2026 wrote: Sun Apr 26, 2026 1:16 pm Oh well. Now, I tried decompressing the MoneyFloaterCommander file with rainbowdreams, it didn't work because there's no ash file.
Hello, RainbowDream is specifically for making custom Audiosurf Radio songs. You can look at the code as reference for how to use GingerLib in general, but RainbowDream itself is only for that one specific purpose.

This particular function from GingerLib may be of interest: https://docs.rs/gingerlib/latest/ginger ... _from_file
trob2026
Posts: 13
Joined: Fri Apr 24, 2026 3:13 pm

Re: My Audiosurf/Quest3D reverse engineering journey

Post by trob2026 »

m1nt_ wrote: Wed Apr 29, 2026 5:47 pm Hello, RainbowDream is specifically for making custom Audiosurf Radio songs. You can look at the code as reference for how to use GingerLib in general, but RainbowDream itself is only for that one specific purpose.

This particular function from GingerLib may be of interest: https://docs.rs/gingerlib/latest/ginger ... _from_file
What Rust applets can decompress the files with GingerLib?