Cosa significa "emulazione precisa al ciclo"? [duplicare]

Aug 22 2020

Nota: ho tentato più volte di porre questa domanda nella categoria "Arqade". Proprio come con la categoria "Cronologia", tutto ciò che chiedo viene cancellato dai loro robot non funzionanti subito dopo averlo pubblicato. E non intendo "chiuso", ma ELIMINATO . Come in, memoryholed. Errore 404. Ecco perché lo chiedo qui. Non perché penso che questa sia la categoria più adatta, ma è la migliore successiva, riguarda i computer retrò e ha anche un tag di "emulazione".

Dalla fine degli anni '90 ho provato innumerevoli emulatori di videogiochi, di tutto, dal NES al Nintendo 64. Sono stati tutti orribili .

Non sto insinuando che potrei fare di meglio, ovviamente (non potrei nemmeno fare un emulatore schifoso), ma come persona cresciuta con i videogiochi dell'era d'oro (1980-2000), sono diventato sempre più sconvolto da come i giochi classici vengono massacrati da persone che apparentemente non sono in grado di capire la differenza.

Ogni volta che ho parlato di quanto orribilmente macellati i giochi appaiono, suonano e giocano attraverso il loro emulatore, si sono comportati come se stessi insultando personalmente loro, i loro genitori oi loro figli. Se non vengo bannato / bloccato subito, diventano nel migliore dei casi molto scontrosi, non importa quanto bene lo metta.

Sembra davvero che non riescano a distinguere. Mi sento una sorta di snob del cibo che cerca di convincere qualcuno che il loro pacchetto di patatine ammuffite che hanno trovato in un cassonetto dietro un fast food non è lo stesso del cibo che si ottiene nel miglior ristorante della città.

Noto immediatamente che la risoluzione è completamente sbagliata, che le proporzioni sono estese al widescreen, che il testo e gli sprite 2D sembrano completamente deformati e "tagliati", che vari interi strati non sono presenti o sfarfallano, che il gioco " L'oggetto "grande schermo" in Mario Kart 64 non mostra nulla, che le animazioni sono assurdamente spente / glitch, il suono è tutto distorto / suona sbagliato, il tempismo di tutti i tipi di cose sembra non essere come se fossero sul hardware reale, ecc.

Mi sembra che da molti anni abbiano interrotto completamente lo sviluppo dell'emulazione. Ogni volta, a distanza di 5 anni, quando provo gli emulatori più recenti, noto che sono ancora anni luce dall'emulare effettivamente l'hardware reale. Anche per il NES impazzito, per quanto folle possa sembrare! Ma soprattutto per SNES, Nintendo 64, PlayStation, Saturn, ecc.

Forse sono solo un idiota che non riesce a trovare i "veri" emulatori, ma non credo che esistano. Penso che le persone che li usano semplicemente non abbiano la capacità di dire quanto siano cattivi. Non sto chiedendo link o nomi di emulatori perché sono abbastanza sicuro di conoscerli tutti.

Sogno il giorno in cui potrò finalmente giocare a tutti questi giochi che non ho mai avuto da bambino, e che ora sono troppo costosi per essere effettivamente acquistati di seconda mano, e che vengono massacrati con gli attuali emulatori.

Con questo in mente, cosa significa "emulazione accurata del ciclo"? Esistono tali emulatori là fuori? E questo significa che è impossibile al 100% distinguerli dall'hardware reale nel 100% di tutti i casi, se collegato a un televisore CRT e utilizzando una sorta di adattatore per poter utilizzare i controller reali?

Risposte

7 Tommy Aug 22 2020 at 04:32

Parlando come autore di un emulatore, "emulazione accurata del ciclo" è un'etichetta che gli autori applicano al loro emulatore se vogliono pubblicizzare che hanno tentato di implementare le parti della logica che considerano fondamentali in modo che ogni evento che modellano si verifichi all'interno del corretto intervallo di tempo discreto come indicato dall'orologio di sistema.

Su qualcosa come un NES, ciò dovrebbe significare che il processore prende le sue decisioni nei momenti giusti, che il processore di immagini recupera le tessere e gli sprite agli intervalli corretti, e quindi che quelle cose si intersecano come hanno fatto sull'hardware reale.

In sostanza: l'obiettivo è garantire che sia impossibile per il software rilevare che si trova in un ambiente diverso da quello originale.

Per il NES, FCEUX è affermato di essere accurato per il ciclo e ampiamente accettato come tale. Quindi è probabile.

Con molti emulatori le cose cadono un po 'al punto dell'output video: è ancora abbastanza comune inviare fotogrammi completi in modo atomico e visualizzarli con il rapporto pixel esatto 1: 1 con lo schermo della macchina host. Quindi, in termini moderni, i pixel finiscono sempre quadrati. Alcuni emulatori tentano la post-elaborazione per applicare le proporzioni corrette e possibilmente per dare una visualizzazione più simile alla TV, ma il chilometraggio varia e l'invio chiaro di un intero frame e quindi la post-elaborazione è completamente distinta dal modo in cui funzionano le apparecchiature audio-video reali.

Sono l'autore di un emulatore che cerca di mantenere la fedeltà a livello di segnale anche nell'ultimo miglio, il che significa che ce ne saranno anche altri, ma non sono a conoscenza di alcun emulatore mainstream che lo faccia.

3 MartinMaly Aug 22 2020 at 16:51

"Precisione del ciclo" significa che le parti emulate (principalmente la CPU e il processore video) fanno le cose alla stessa velocità e con la stessa sequenza di passaggi dell'hardware originale. Ad esempio, la CPU reale ha eseguito il recupero delle istruzioni nel primo ciclo, quindi ha eseguito la decodifica delle istruzioni, quindi ha effettuato l'accesso alla memoria, quindi ha letto il valore, ecc ... Allo stesso tempo, il processore video ha svolto il proprio lavoro. Molti effetti speciali sono stati ottenuti con questa cooperazione (o "condizione di razza") nella mente, a seconda del momento esatto. Cioè la CPU cambia i registri del processore video in un momento molto preciso per generare l'effetto video desiderato, e questo tempo dipendeva dai "cicli di clock per ogni istruzione".

Tale livello di emulazione è più difficile da raggiungere, quindi molti emulatori funzionano in modo semplice: emula semplicemente "un mucchio di istruzioni della CPU" alla volta, quindi calcola il risultato del video e così via. È più facile e "abbastanza giusto", ma non può ottenere l'aspetto corretto, soprattutto nei casi in cui il software si basa sul tempismo esatto.