About this app
About Mini Emulator
Mini Emulator libretro 코어를 쓰는 안드로이드용 에뮬레이터 앱입니다. 앱을 열면 GBA · Neo Geo · 아케이드 중 모드를 고릅니다. 패키지: com.example.minigba.gbaonly 버전: app/build.gradle의 versionName / versionCode 참고 (릴리스마다 1씩 올림) minSdk 24 / targetSdk 34, arm64-v8a 전용 이 소스에 대해 원본 프로젝트 폴더가 없어서 **배포된 APK(MiniGBA)에서 복원한 소스**입니다. | 구성 | 상태 | |---|---| | Java 코드 (app/src/main/java) | jadx로 디컴파일한 뒤 정리했습니다. 클래스·메서드·필드 이름은 원본과 같습니다. 디컴파일러가 망가뜨린 메서드는 바이트코드를 보고 다시 썼습니다. 스트림 처리는 try-with-resources로, 람다는 람다로 되돌렸습니다. | | 네이티브 브리지 (app/src/main/cpp/gbabridge.cpp) | 원본 libgbabridge.so를 디스어셈블해 동작을 분석하고 C++로 새로 작성했습니다. 빌드할 때 CMake로 컴파일됩니다. | | mGBA 코어 (app/src/main/jniLibs/arm64-v8a/libmgba_libretro_android.so) | libretro/mgba(MPL 2.0)를 빌드한 바이너리로, APK에 들어 있던 것을 그대로 씁니다. | | Neo Geo · 아케이드 엔진 | FinalBurn Neo와 MAME 2003-Plus를 cores/build-cores.sh로 직접 빌드합니다(커밋 고정, 저장소에는 바이너리를 넣지 않음). 둘 다 비상업용 라이선스입니다. | | MAME 2010 엔진 | MAME 2010(MAME 0.139, 비상업용)을 cores/build-mame2010.sh로 빌드합니다. 빌드가 길어서 CI에서 따로 캐시합니다. | | MAME 2015 엔진 | MAME 2015(비상업용)를 cores/build-mame2015.sh로 빌드합니다. ARM64용 재컴파일러가 없어 -nodrc(해석 실행)로 돌립니다(ST-V 측정에서 C 백엔드보다 2.5배 빠름). CI에서 따로 캐시합니다. | | 매니페스트, 리소스, assets/ | APK에서 그대로 복원했습니다. | 알아둘 점: 지역 변수 이름(z, i2 등)과 주석은 APK에 남아 있지 않아서 원래대로 되돌릴 수 없습니다. com.seleuco.mame4droid.Emulator는 아케이드(MAME) 코어용 코드입니다. 이 GBA 전용 빌드에는 libmame4droid-jni.so가 없어서 아케이드 기능은 동작하지 않습니다. 네이티브 브리지 동작 NativeGba.create()가 libretro 코어를 dlopen해서 전용 스레드에서 돌립니다. 화면…