Skip to content

empyzz/M1-Android

 
 

Repository files navigation

M1-Android (Restoration Project)

A modern revival of the classic M1 Arcade Music Player for Android.

This project is a fork of the original M1-Android by Neko68k. It has been updated to compile with modern Android Studio, newer Gradle versions, and run on current Android devices (Android 11+).

Fast Travel

Origin Story

This project started after my father asked my if i could build the original M1-Android for him, since the original got deleted from the playstore, so i tried to do that

I accepted the challenge, fixed the build errors, resolved dependency mismatches, and patched the native C++ code to bypass modern Android security crashes (FORTIFY). Now that the "engine" is running, the goal is to completely overhaul the "body" of the application. After the visual overhaul, i maybe try to improve the C/C++ code for better security.

Project Status

  • Core Engine (Native C/C++): Functional. The original 2008 audio engine has been preserved but patched to prevent buffer overflows (strcpy crashes) on modern CPUs.
  • Android Layer (Java): Currently legacy code (Activities/AsyncTasks). It builds and runs, but is due for a total rewrite.
  • Support: Runs on Android Emulators and Physical Devices (API 34+).

Roadmap

The immediate plan is to move away from the legacy 2010-era Java code and rebuild the frontend using modern Android standards:

  • Phase 1: Resurrection - Fix build scripts, NDK compilation, and crash loops (Completed).
  • Phase 2: Java -> Kotlin Rewrite - Convert AsyncTasks to Coroutines and replace Java with Kotlin for null-safety.
  • Phase 3: UI Overhaul - Replace XML layouts with Jetpack Compose for a modern, responsive UI.

How to Build

Because this project relies on a legacy C++ engine, it requires a specific build process:

  1. Clone the repo:
    git clone https://github.com/empyzz/M1-Android
  2. Compile the Native Core: You must compile the C++ library manually before running the app.
    • Navigate to: app/src/main/jni/
    • Run: ndk-build (Ensure you have the Android NDK installed).
  3. Build the APK: Open the project in Android Studio and click Run.

Setup and File Structure

To use the app, you must manually set up the files on your device (due to scoped storage restrictions on modern Android):

  1. Create a folder: /sdcard/m1/
  2. Place your m1.xml (Game Database) in that folder.
  3. Place your m1.ini in that folder (Content: [ROMPATH] roms).
  4. Create a subfolder /sdcard/m1/roms/ and place your .zip game files there.

Disclaimer

  • Native Code: The C/C++ files are largely untouched from the original repository. They are complex legacy code; my focus is currently on the Android wrapper.
  • ROMs: No ROM files are included in this repository. You must provide your own legally owned game files.

Original M1 emulator by R. Belmont. Android port originally by Neko68k.

About

M1 arcade and pinball machine sound emulator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 82.6%
  • C++ 15.3%
  • Java 1.9%
  • Makefile 0.2%