Lo sviluppatore Maurice Heumann ha riferito il 9 ottobre 2026 che una ricostruzione in C++ di Call of Duty: Modern Warfare 2 (2009) — gioco identificato da Tom’s Hardware — comprende il 99% delle funzioni. Nel resoconto di Heumann, l’83% di tutte le funzioni coincide invece byte per byte con l’originale: sono due misure diverse.

Che cosa misurano il 99% e l’83%

Il 99% indica la quota di funzioni presenti nel codice ricostruito; l’83% indica quella delle funzioni che, secondo Heumann, hanno superato il confronto byte per byte. Una funzione può quindi essere presente senza rientrare nel secondo risultato.

Per il confronto, Heumann riferisce di aver ricompilato il codice con il compilatore usato per il gioco originale e di aver confrontato le funzioni ricostruite con quelle dell’eseguibile. Il risultato byte per byte riguarda le funzioni che hanno superato questo controllo. Heumann sostiene che quelle corrispondenti abbiano la stessa semantica, compresi gli eventuali bug originali.

Come funziona il confronto byte per byte

Il processo confronta i dati delle funzioni nei file oggetto prodotti dalla ricostruzione con quelli dell’eseguibile e dei file PDB del gioco originale. Un file oggetto, spesso indicato con l’estensione .obj, contiene codice compilato; i file PDB forniscono informazioni di debug, come i simboli. Heumann dice che il controllo considera anche dati e tipi e che i risultati registrati vengono ricontrollati in CI, cioè nell’integrazione continua usata per individuare regressioni.

Quando un riferimento contiene un indirizzo che cambia tra le compilazioni, il programma non confronta quei byte direttamente: verifica invece che il riferimento punti allo stesso simbolo e allo stesso offset, cioè alla stessa posizione relativa. In questo modo il controllo separa le differenze legate agli indirizzi dal resto dei byte confrontati.

Perché alcune funzioni non coincidono

Maurice Heumann ricostruisce MW2 con l’aiuto dell’IA

Un mancato riscontro byte per byte non dice, da solo, perché i codici differiscano. Heumann indica tra le possibili cause le variazioni nell’output del compilatore, le convenzioni di chiamata, la scelta dei registri, l’inlining — l’inserimento del codice di una funzione in quella chiamante — e l’accorpamento di funzioni COMDAT identiche, una tecnica del linker.

Heumann ritiene semanticamente corrette anche le funzioni senza corrispondenza esatta, ma queste non hanno superato il test byte per byte. Il dato dell’83% descrive dunque le funzioni corrispondenti, non un risultato byte per byte esteso a ogni funzione del gioco.

Il resoconto racconta anche che le prime quattro settimane produssero codice leggibile ma con errori semantici, tra cui firme di funzione, tipi, strutture e logica sbagliati. Heumann afferma che ricominciare da capo richiese meno tempo che recuperare quel lavoro: l’aspetto leggibile del codice non bastava a stabilirne la correttezza.

Lo stato del progetto

In un post del 30 settembre 2026, Heumann aveva riferito su X che 17 agenti lavoravano in parallelo e che il gioco era giocabile. Nel resoconto del 9 ottobre ha detto che il codice ricostruito resterà privato e verrà usato per le sue esigenze.