Bij een bytegelijke reconstructie levert het opnieuw bouwen precies dezelfde programmabestanden op als het onderzochte origineel. Het project adonis-singh/re4 claimt dat voor Resident Evil 4 op de Nintendo GameCube. Het gaat specifiek om debugbuild G4BE08: een ontwikkelversie die het project aanduidt als het prototype van 25 november 2004. Daarmee is de vraag nog niet beantwoord of alle oorspronkelijke programmeertekst terug is.

Wat is het verschil tussen broncode en een gamebestand?

Broncode bestaat uit opdrachten die programmeurs schrijven, bijvoorbeeld in de talen C en C++. Voor een uitvoerbaar programma moet die tekst worden omgezet. De handleiding van GCC, een verzameling programmeergereedschappen, beschrijft daarvoor verschillende stappen. Eerst wordt de tekst voorbewerkt. Een compiler vertaalt de programmeertekst naar een tussenvorm, die vervolgens wordt omgezet in machinecode: instructies voor de processor. Daarna worden de onderdelen samengevoegd, oftewel gekoppeld. Vergelijk het met bouwtekeningen en een gebouwd huis: de beschrijving en het resultaat zijn verschillende dingen. Die vergelijking verklaart ook waarom een uitvoerbaar bestand niet simpelweg dezelfde tekst is in een ander lettertype.

Hoe krijg je precies dezelfde bytes terug?

De makers zoeken programmeertekst die hun gereedschappen dezelfde uitvoer laat maken. Dat proces heet hier matching, oftewel overeen laten komen. De matchingnotities laten zien hoe nauw dit luistert. Een andere compilerversie of een andere vorm van dezelfde berekening kan andere machine-instructies opleveren. Het project onderzoekt daarom het gedrag van oude compilers en past de vorm van de broncode daarop aan. Een berekening die hetzelfde antwoord geeft, is voor deze opdracht niet automatisch goed genoeg. Ook de opgeslagen instructies moeten overeenkomen. Zo ontstaat een controleerbare reconstructie, zonder dat iedere geschreven regel noodzakelijk de oorspronkelijke regel is.

Hoe controleer je zo'n claim?

De bijdragehandleiding schrijft voor dat een wijziging opnieuw wordt opgebouwd en vergeleken. Het project controleert de resulterende bestanden met controlewaarden, berekende vingerafdrukken van de bestanden, en kan afzonderlijke onderdelen naast het origineel leggen. Opnieuw opbouwen is belangrijk: oude tussenbestanden kunnen anders blijven staan, waardoor je niet werkelijk de nieuwste broncode controleert. De handleiding vraagt bovendien een controle op rechtstreeks ingevoegde machine-instructies. Zo probeert het project te bewaken hoe de reconstructie is gemaakt. Dit zijn de beschreven controleprocedures van de makers. Voor dit artikel zijn hun documenten gelezen; de volledige gamebuild is niet zelfstandig gereproduceerd.

Zijn alle namen dan ook teruggevonden?

Nee. Het document over naamgeving maakt onderscheid tussen verschillende soorten bewijs. De debugbestanden bevatten oorspronkelijke functienamen: namen voor onderdelen die een taak uitvoeren. Voor gegevensvelden gebruikt het project daarnaast informatie uit een PS2-ontwikkelversie. Waar zo'n naam ontbreekt, leiden onderzoekers soms een naam af uit het gebruik. Die namen noemt het project uitdrukkelijk schattingen. Andere velden houden tijdelijke aanduidingen omdat hun betekenis nog onbekend is. De concrete les: dezelfde uitvoerbare bytes betekenen niet dat iedere betekenis of naam is opgehelderd. Je kunt dus een technisch passende reconstructie hebben die mensen nog verder moeten begrijpen.

Wat kun je er als nieuwsgierige gamer aan hebben?

Leesbare code helpt verklaren wat een spel achter de schermen doet. De projectgids beschrijft bijvoorbeeld een systeem dat de moeilijkheid aanpast met punten voor onder meer raak schieten, opgelopen schade en sterven. Die waarde werkt door in eigenschappen van vijanden en andere spelonderdelen. Dat geeft onderzoekers een aanknopingspunt om waargenomen gedrag terug te zoeken in concrete functies. Het is meer informatie dan alleen zien dat een gevecht soms makkelijker voelt. Deze beschrijving hoort wel bij de onderzochte ontwikkelversie; ze bewijst niet dat iedere latere uitgave of remake precies dezelfde regels gebruikt.

Is dit al een nieuwe pc-port?

Een herbouwd GameCube-programma is op zichzelf nog geen programma dat rechtstreeks voor Windows is aangepast. Emulatie is weer een andere route: software bootst de benodigde consolewerking na. Dolphin noemt zichzelf bijvoorbeeld een GameCube- en Wii-emulator en draait op verschillende besturingssystemen. Zijn documentatie waarschuwt dat prestaties per game en computer verschillen. Voor Nederlandse en Belgische lezers is dat hetzelfde technische onderscheid: broncode reconstrueren, een console emuleren en een game naar een ander platform overbrengen zijn verschillende projecten. Uit een geslaagde reconstructie volgt dus geen belofte van betere beelden of hogere snelheid op jouw laptop.

Volgens de RE4-projectpagina bevat de gedeelde codeverzameling geen spelassets, zoals beelden en geluiden. Zelf herbouwen vereist eigen schijfkopieën van juist deze debugversie. De codepagina is daarmee geen compleet downloadbaar spelpakket.

Verder bij de bron

Lees zelf de onderzoeken, uitleg en aankondigingen achter dit verhaal.

Bronnen en werkwijze