Cada rom proviene de una placa arcade que han desmontado para poder copiar los datos.
Si encuentran otra versión con cambios, en esa rom guardan la parte que cambia.
Si la copia inicial tenía fallos, cuando hacen otra le ponen número de versión.
De vez en cuando tienen que reestructurar el sistema de nombrado de las roms, por lo que dejan de funcionar las anteriores.
Mantienen el sistema de 8+3 caracteres en los nombres por temas de compatibilidad.
La parte física (el circuito) la traducen a lógica por software. Es una de las partes de mame que va cambiando en cada versión.
En
http://adb.arcadeitalia.net/lista_mame.php puedes buscar cualquier juego para ver cómo ha avanzado su emulación.
Hasta aquí he hablado de mame, ahora algunas cosas sobre retroarch, que es lo que se usa en las pi, entre otros.
Para su uso en equipos que no puedan mover un mame actual, se usan versiones anteriores. Por eso hay varios cores de mame.
Eligen las últimas antes de un cambio grande, ya sea en requisitos o renombrado de roms.
Hay juegos que funcionan mejor en una determinada versión.
Por eso si usas varios cores, es mejor tener sus roms en carpetas separadas.
Cuando empezaron las máquinas para emuladores, estaban muy limitadas. GP32, dingoo, las primeras para android como mame4all, etc.
La dingoo tenía un procesador a 300Mh, y opendingux se sigue usando en máquinas nuevas.