Porting di MAME 0.289 originale su tvOS — selezione dei sistemi e integrazione con SDL3 #303
Unanswered
AleessandroCeccarelli
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Buongiorno a tutto il team MAME,
siamo un piccolo team italiano e stiamo sviluppando Amarcord, un’applicazione nativa per Apple TV (tvOS) dedicata alla conservazione e alla fruizione di videogiochi e sistemi retro.
Vorremmo chiedere il vostro consiglio su quello che per noi è un punto tecnico molto importante: portare MAME originale su tvOS nel modo più corretto e rispettoso possibile dell’architettura del progetto MAME.
Il nostro obiettivo non è creare un fork di MAME né modificare il suo codice di emulazione.
Vorremmo partire dal MAME ufficiale 0.289 e realizzare una build destinata a tvOS utilizzando gli strumenti Apple/Xcode e SDL3 con il relativo supporto tvOS.
I sistemi che vorremmo includere
Non abbiamo bisogno dell’intero universo dei sistemi non-arcade presenti in MAME.
Vorremmo selezionare esclusivamente:
Il nostro intento è quindi capire quale sia, secondo voi, il modo corretto e previsto dall’architettura/build system di MAME per ottenere una build che contenga questi sistemi, senza dover includere inutilmente tutto il resto.
Nessuna modifica all’emulazione
Vogliamo essere molto chiari su questo punto:
non vogliamo modificare il codice di emulazione di MAME.
Non vogliamo alterare i driver, correggere o riscrivere il comportamento dei sistemi, né creare una nostra implementazione alternativa.
Vorremmo utilizzare MAME esattamente per ciò per cui è stato progettato: come framework di emulazione accurato e preservativo.
Se per il porting tvOS fosse necessario apportare modifiche al livello di build, OSD o piattaforma, vorremmo naturalmente capire quali siano le modifiche appropriate e come realizzarle senza compromettere il codice originale.
Licenze e codice sorgente
Siamo altrettanto consapevoli dell’importanza delle licenze MAME.
Non vogliamo aggirare, modificare o nascondere alcuna licenza.
Amarcord sarà un’applicazione gratuita.
La nostra interfaccia utente e il codice specifico dell’applicazione rimarranno closed source, mentre MAME rimarrà separato dal target principale dell’applicazione e continuerà a essere trattato come software open source secondo le rispettive licenze.
Le licenze, gli avvisi di copyright e le attribuzioni richieste saranno inclusi nell’applicazione nei punti appropriati, rispettando le condizioni applicabili al codice MAME e alle sue dipendenze.
Non vogliamo appropriarci del lavoro della comunità MAME: al contrario, vogliamo renderne esplicita la provenienza e dare il credito dovuto.
Architettura che stiamo cercando di ottenere
Idealmente vorremmo mantenere MAME fuori dal target principale di Amarcord, evitando di trasformare il progetto Amarcord in un enorme target contenente direttamente tutti i sorgenti MAME.
L’idea è avere una build MAME dedicata a tvOS, integrata nell’applicazione attraverso un’interfaccia appropriata.
In questo modo:
Amarcord
→ UI nativa SwiftUI/tvOS
→ gestione libreria e metadati
→ gestione controller
→ gestione artwork
→ esperienza utente
mentre:
MAME
→ emulazione dei sistemi selezionati
→ gestione delle ROM
→ hardware emulato
→ audio/video/input attraverso il relativo layer di piattaforma
Vorremmo inoltre utilizzare il più possibile le API e gli strumenti nativi messi a disposizione da Apple per tvOS, evitando soluzioni proprietarie quando non necessarie.
La nostra domanda principale
Per questo vorremmo chiedere direttamente a voi:
Qual è, secondo voi, il modo corretto per aggiungere un target tvOS a MAME 0.289 utilizzando SDL3 tvOS e, contemporaneamente, limitare la build ai sistemi che abbiamo indicato?
In particolare ci interesserebbe sapere:
Abbiamo esaminato anche alcuni porting esistenti per Apple/tvOS, ma non vorremmo utilizzare un fork come base: preferiremmo partire direttamente dal MAME ufficiale e capire da voi quale sia la strada tecnicamente più corretta.
Sappiamo che MAME è un progetto enorme e che il lavoro viene portato avanti da sviluppatori e collaboratori volontari.
Se qualcuno del team o della comunità potesse darci anche solo alcune indicazioni iniziali sul percorso corretto, ci sarebbe di enorme aiuto.
Siamo perfettamente disponibili a condividere informazioni tecniche, configurazioni di build e risultati dei test qualora possano essere utili.
Grazie sinceramente per il lavoro che portate avanti da tanti anni e per aver reso possibile la conservazione di una parte così importante della storia dell’informatica e dei videogiochi.
Grazie per qualsiasi aiuto possiate darci nel portare avanti questo progetto.
Alessandro
Italy
Amarcord Project
⸻
🇬🇧 English version
Hello to the MAME team,
We are a small Italian development team working on Amarcord, a native Apple TV (tvOS) application focused on the preservation and enjoyment of retro videogames and systems.
We would like to ask for your advice regarding an important technical aspect of our project: bringing the original MAME project to tvOS in the most correct way possible, while respecting MAME’s architecture and licensing.
Our intention is not to create a MAME fork or to modify MAME’s emulation code.
We would like to start from the official MAME 0.289 source tree and create a tvOS build using Apple’s Xcode/toolchain and SDL3 with its tvOS support.
Systems we would like to include
We do not need the entire non-arcade system collection available in MAME.
We would like our build to include only:
Our main question is therefore how, according to the intended MAME architecture and build system, we should create a build containing these systems without unnecessarily including the rest.
No changes to MAME emulation
We want to make this absolutely clear:
We do not want to modify MAME’s emulation code.
We do not intend to alter drivers, change system behaviour, or implement our own alternative emulation.
We want to use MAME for exactly what it was designed for: accurate emulation and preservation.
If changes are required at the build, OSD, or platform level to support tvOS, we would like to understand what the appropriate changes are and how they should be implemented without compromising the original MAME codebase.
Licensing and source code
We are also very conscious of the importance of MAME’s licensing requirements.
We do not want to bypass, alter, or conceal any MAME licensing requirements.
Amarcord will be a free application.
The Amarcord user interface and application-specific code will remain closed source, while MAME will remain separate from the application’s main target and will continue to be treated as open-source software according to its applicable licenses.
Required licenses, copyright notices and attributions will be included in the appropriate parts of the application, respecting the applicable licenses for MAME and its dependencies.
We do not want to claim the work of the MAME community as our own. On the contrary, we want to clearly acknowledge MAME and give proper credit to its contributors.
Architecture we are aiming for
Ideally, we would like to keep MAME outside the main Amarcord application target, rather than turning the Amarcord project itself into a huge target containing the entire MAME source tree.
Our intention is to have a dedicated MAME tvOS build which can then be integrated into the application through an appropriate interface.
In other words:
Amarcord
→ native SwiftUI/tvOS UI
→ library and metadata management
→ controller handling
→ artwork
→ user experience
while:
MAME
→ emulation of the selected systems
→ ROM handling
→ emulated hardware
→ audio/video/input through its platform layer
We would also like to make full use of Apple’s native APIs and tools provided for tvOS, avoiding proprietary solutions wherever they are not necessary.
Our main question
We would therefore very much appreciate your advice:
What would be the correct way to add a tvOS target to MAME 0.289 using SDL3 tvOS, while at the same time limiting the build to the systems listed above?
In particular:
We have also examined existing Apple/tvOS ports, but we do not want to use a fork as our foundation. We would much rather start directly from official MAME and understand from the MAME developers what the technically correct approach should be.
We fully understand that MAME is a huge project maintained by developers and volunteers who generously dedicate their time to it.
Even a few initial pointers from the team or community would be extremely valuable to us.
We are also happy to share technical information, build configurations and test results if they could be useful.
Thank you sincerely for the work you have been doing for so many years, and for making the preservation of such an important part of computing and videogame history possible.
Thank you very much for any help you can give us in bringing this project forward.
Alessandro
Italy
Amarcord Project
All reactions