#osu-game #game #memory #osu

rosu-memory-lib

A library to read osu! memory

7 stable releases

1.3.1 Sep 13, 2025
1.3.0 Sep 7, 2025
1.2.1 Aug 10, 2025
1.2.0 Jul 13, 2025

#85 in Games

Download history 2/week @ 2025-07-26 117/week @ 2025-08-09 12/week @ 2025-08-16 6/week @ 2025-08-23 105/week @ 2025-09-06 148/week @ 2025-09-13 15/week @ 2025-09-20 14/week @ 2025-09-27 4/week @ 2025-10-04

530 downloads per month

MIT license

77KB
1.5K SLoC

rosu-memory-lib

A modular Rust library for reading osu! memory, forked from rosu-memory.

Overview

While rosu_memory was originally designed as a binary application, this fork transforms it into a flexible library that can be integrated into any Rust project. This architectural change allows developers to build their own tools and applications around osu! memory reading capabilities.

Features

  • Memory reading for stable (lazer support may come soon)
  • Modular design allowing custom implementations
  • Callback system for real-time data processing
  • Type-safe memory access
  • Cross-platform support (Windows primary focus)

Basic example:

use rosu_memory_lib::reader::{init_loop, waiting_for_play};

fn main() -> eyre::Result<()> {
    // Initialize the memory reader
    let (mut state, process) = init_loop(500)?;

    // Wait for gameplay with optional callback
    waiting_for_play(&process, &mut state, Some(|p, state| {
        println!("beatmap title: {}", rosu_memory_lib::reader::beatmap::stable::get_title(p,state))
        Ok(())
    }))?;

    Ok(())
}

Examples

Check out the examples/ directory for various implementations and use cases.

Language Bindings

The library provides bindings for multiple programming languages (not finished):

Python

Python bindings are available in the bindings/python directory. They provide a Pythonic interface to the library's functionality using PyO3.

Example:

from rosu_memory import init_loop, get_beatmap_info

# Initialize the memory reader
state, process = init_loop(500)

# Get current beatmap info
beatmap = get_beatmap_info(process, state)
print(f"Playing: {beatmap.metadata.title_romanized}")

Projects Using It

Here are some projects that use rosu-memory-lib:

  • rosu-snippets - Create your own snippets for efficient mapping in mania

If you're using rosu-memory-lib in your project, feel free to submit a PR to add it to this list!

Contributing

Contributions are welcome! Feel free to submit issues and pull requests.

Credits

  • Original rosu_memory by 486c
  • All contributors to the original project

License

Same as original rosu_memory

Dependencies

~3–28MB
~356K SLoC