E' un problema di architettura. Quella dell'Amiga, considerando in che modo funzionavano e venivano programmate le varie componenti, è decisamente complessa da emulare, difatti se l'obiettivo è la massima compatibilità l'unica strada è l'emulazione cycle-exact, come già detto, dove ciclo di clock per ciclo si simula (quindi siamo più nel campo della simulazione che dell'emulazione) cosa succede alla macchina in quel ciclo di clock a quelle precise condizioni.
Hardware che sulla carta è ben più potente, come quelli che avete citato, non richiede un'emulazione così accurata. E' sufficiente in questi casi la classica emulazione più ad alto livello (HLE), dove basta ottenere gli stessi risultati.
Esempio spicciolo. Su Amiga gli sprite vengono disegnati riga per riga, e tenendo conto delle varie priorità dei livelli. Questo significa che per ogni riga del display da visualizzare, l'emulatore deve provvedere a controllare se per quella word (16 bit moltiplicato per il numero di bitplane) del display c'è una qualche sovrapposizione con gli sprite, e provvedere a effettuare i dovuti "masking" & "oring" per ottenere il risultato finale. Questo poteva accadere più volte all'interno della stessa riga di raster, grazie alla famosa (e abbastanza usata) tecnica del riutilizzo degli sprite (per "aumentarne" il numero).
Su sistemi come NeoGeo, PSX, ecc. si procede in modo completamente diverso. Si disegnano le tile sui diversi schermi, e poi gli sprite sugli schermi appropriati. Il massimo dell'accuratezza nell'emulazione è prendere l'intera riga, disegnare le parti delle tile corrispondenti (una riga per ogni tile), e schiaffarci le parti degli sprite (una riga per ogni sprite visibile).
Nulla a che vedere con l'emulazione ciclo per ciclo, insomma.
Ovviamente il fatto che l'Amiga funzioni coi bitplane anziché coi chunky pixel complice enormemente il tutto, perché è anche necessaria una fase di conversione bitplane-to-planar.
Altra cosa, e chiudo, non ci sono quad core che tengano nell'emulazione. L'emulazione è un processo strettamente sequenziale, dove si usa un solo core e un solo processo, qualunque sia la macchina e il s.o. "host". Al più si può delegare a uno specifico thread l'invio al s.o. della grafica e dei buffer sonori appena elaborati, ma si tratta di un risparmio irrisorio.