ROM hacking
On december 28, 2021 by adminDe ROM gegevens zijn door veel verschillende programmeurs of programmeerteams gemaakt en kunnen dus zeer divers zijn.
Hex editingEdit
Een hex editor is een van de meest fundamentele gereedschappen in het repertoire van elke ROM hacker. Hex editors worden meestal gebruikt voor het bewerken van tekst, en voor het bewerken van andere gegevens waarvan de structuur bekend is (bijvoorbeeld item eigenschappen), en Assembly hacking.
Het bewerken van tekst is een van de meest elementaire vormen van hacken. Veel spellen slaan hun tekst niet op in ASCII-vorm, en daarom zijn er enkele gespecialiseerde hex-editors ontwikkeld, die kunnen worden verteld welke byte-waarden corresponderen met welke letter(s) van het alfabet, om tekstbewerking te vergemakkelijken; een bestand dat deze byte=letter-relaties definieert, wordt een “tabel”-bestand genoemd. Andere spellen gebruiken eenvoudige tekstcompressietechnieken (zoals byte-paar-codering, ook wel dual tile-codering of DTE genoemd, waarbij bepaalde combinaties van twee of meer letters als één byte worden gecodeerd) die met een goed uitgeruste hex-editor kunnen worden bewerkt.
Een hex-editor is het gereedschap bij uitstek voor het bewerken van zaken als karakter/item-eigenschappen, als de structuur en locatie van deze gegevens bekend is en er geen spelspecifieke editor voor het spel is die deze informatie kan bewerken. Sommige onverschrokken hackers bewerken ook levels met een hex-editor, maar dit is extreem moeilijk (behalve bij spellen waarvan het level-opslagformaat sterk lijkt op hoe het wordt gepresenteerd in een hex-editor).
Grafische bewerkingEdit
Een andere basisvaardigheid voor hacken is het grafisch hacken, wat het veranderen is van het uiterlijk van de omgevingen, personages, lettertypen, of andere dergelijke dingen van het spel. Het formaat van de grafische gegevens varieert van console tot console, maar de meeste van de vroege (NES, Super NES, Game Boy, enz.) slaan graphics op in tegels, dat zijn 8×8-pixel eenheden van gegevens, die worden gerangschikt op het scherm om het gewenste resultaat te produceren. Het bewerken van deze tiles is ook mogelijk met een hex editor, maar wordt over het algemeen gedaan met een tile editor (zoals Tile Layer of Tile Molester), die de ROM data op een grafische manier kan weergeven, en ook tiles kan vinden en bewerken.
Graphics hacks kunnen variëren van eenvoudige bewerkingen (zoals Luigi een golf club geven, of het maken van gepixeleerde sprites voor latere generatie Pokemon) tot het “porten” van karakters van het ene spel naar het andere, tot volledige thematische veranderingen (meestal met bijbehorende palet veranderingen; zie hieronder).
Meer geavanceerde graphics hacking houdt in dat niet alleen tiles en kleuren worden veranderd, maar ook de manier waarop de tiles worden gerangschikt, of tile groepen worden gegenereerd, wat meer flexibiliteit en controle geeft over het uiteindelijke uiterlijk. Dit wordt bereikt door hex editing of een gespecialiseerd gereedschap (ofwel voor het specifieke spel of een specifiek systeem). Een goed voorbeeld van een grafische hack is de onvoltooide Pokémon Torzach, een hack die probeerde een geheel nieuwe generatie Pokémon en tiles aan het spel toe te voegen. De hack is sindsdien gestopt, maar het dient nog steeds als een goed voorbeeld van wat kan worden bereikt met de beschikbare tools.
Palette editingEdit
Een andere veel voorkomende vorm van hacking is palette hacking, waarbij kleurwaarden worden gewijzigd om de kleuren die een speler in het spel ziet te veranderen (dit gaat vaak hand-in-hand met graphics hacking); Palette waarden worden meestal opgeslagen in Hex. Dit is vrij eenvoudig voor NES spellen, waarvan de graphics gebruik maken van een vooraf gedefinieerde set kleuren waaruit een spel selecteert; palette hacking houdt in dit geval in dat wordt veranderd welke van die kleuren worden geselecteerd. De zaak ligt iets gecompliceerder bij Super NES spellen en spellen voor andere systemen, die absolute RGB kleurwaarden opslaan. Palet editors zijn meestal eenvoudig en vaak samen met Level editors, of Game specifieke graphics editors.
Level editingEdit
Een van de meest populaire vormen van ROM hacking, level editing houdt in het wijzigen of herontwerpen van de levels of maps van een spel. Dit wordt bijna uitsluitend gedaan met een editor die speciaal is gemaakt voor een bepaald spel (een level editor genoemd). Levelbewerkingen kunnen worden gedaan om het spel uitdagender te maken, om de plot van het spel te veranderen, of gewoon om een oud spel iets nieuws te geven. Gecombineerd met uitgebreide grafische hacking, kan het spel een heel andere look en feel krijgen.
Gegevens bewerkenEdit
Een kernonderdeel van veel hacks (vooral van role-playing videospellen) is het bewerken van gegevens zoals karakter-, item-, en vijand-eigenschappen. Dit wordt meestal “met de hand” gedaan (met een hex editor) als de locatie en structuur van de gegevens bekend is, of met een spel-specifieke editor die deze functionaliteit heeft. Hiermee kan een hacker veranderen hoe wapens werken, hoe sterk vijanden zijn of hoe ze zich gedragen, enz. Dit kan worden gedaan om het spel makkelijker of moeilijker te maken, of om nieuwe scenario’s voor de speler te creëren.
Assembly hackingEdit
De krachtigste, en misschien wel de moeilijkste, hacking techniek is het bewerken van de eigenlijke code van het spel, een proces dat ASM hacking wordt genoemd (“ASM” betekent “assembly”, verwijzend naar het type programmeertaal dat werd gebruikt voor de vroege video games). Er is geen vast patroon voor ASM hacking, aangezien de code sterk varieert van spel tot spel, maar de meeste ervaren ASM hackers gebruiken ofwel een emulator uitgerust met een ingebouwde debugger of tracer, of laten de ROM door een disassembler lopen, analyseren dan de code en wijzigen deze met behulp van een hex editor of assembler naar gelang hun behoeften. Hoewel dit een hele uitdaging is in vergelijking met de relatief eenvoudige methodes hierboven, is alles mogelijk met ASM hacking (uiteraard binnen de limieten van de hardware/software van het spelplatform), gaande van het wijzigen van vijandelijke AI tot het wijzigen van hoe graphics worden gegenereerd. (Natuurlijk zijn de mogelijkheden nog steeds beperkt door het vermogen van de hacker om de bestaande code te begrijpen en te wijzigen.)
Als de ontwikkelaars een getypte taal hebben gebruikt, kan de hacker in staat zijn om zijn eigen code voor het spel in dezelfde taal te compileren als hij toegang heeft tot een goede compiler. Een voorbeeld hiervan is het gebruik van C om Nintendo 64-spellen te hacken, aangezien MIPS-GCC code voor de Nintendo 64 kan compileren.
Muziek hackenEdit
Muziekhacks zijn relatief zeldzaam, vanwege de grote verscheidenheid aan manieren waarop games muziekgegevens opslaan (vandaar de moeilijkheid om deze gegevens te lokaliseren en te wijzigen) en de moeilijkheden bij het componeren van nieuwe muziek (of het porten van muziek uit een ander spel). Aangezien het kraken van muziek zeer ongebruikelijk is, hebben veel hacks geen geporteerde/gecomponeerde muziek toegevoegd. Het programma SapTapper kan echter wel gebruikt worden om Game Boy Advance muziekgegevens te kraken, aangezien veel Game Boy Advance spellen de M4A Engine (ook wel “Sappy Driver” genoemd) gebruiken voor muziek. Verschillende andere hulpprogramma’s werden gemaakt om met de engine te werken, zoals Sappy 2006.
Een ander voorbeeld van dezelfde engine die tussen spellen wordt gebruikt is op de Nintendo 64, waar de meeste spellen hetzelfde formaat gebruiken; hoewel ze verschillende geluidsbanken gebruiken. Een hulpprogramma dat bekend staat als de N64 Midi Tool is gemaakt om de sequenties te bewerken die de meerderheid van de Nintendo 64-spellen gebruikt, hoewel het niet de first-party N64-titels dekt die een iets andere engine gebruiken, zoals Super Mario 64. Verschillende Mega Drive-spellen gebruiken een geluidsengine die onofficieel bekend staat als “SMPS” en die al tientallen jaren wordt onderzocht door veel hackers. Vandaag de dag bestaan er verschillende tools om de muziek van games die gebruik maken van de SMPS engine (Sonic the Hedgehog games in het bijzonder) te veranderen, en veel van deze tools hebben hun weg gevonden naar de Steam Workshop.
ROM expansionEdit
In het algemeen kan een ROM hacker geen inhoud toevoegen aan een spel, maar alleen bestaande inhoud veranderen. Deze beperking kan worden overwonnen door ROM-uitbreiding, waarbij de totale grootte van de ROM-afbeelding wordt vergroot, zodat er ruimte komt voor meer inhoud en, op zijn beurt, een groter spel. De moeilijkheid om dit te doen varieert naar gelang van het systeem waarvoor het spel is gemaakt. Het kan bijvoorbeeld moeilijk of zelfs onmogelijk zijn om een ROM van de NES uit te breiden vanwege de mapper die door het spel wordt gebruikt. Als een mapper bijvoorbeeld 16 ROM-banken toestaat en ze allemaal worden gebruikt, is het onmogelijk de ROM verder uit te breiden zonder het spel op een of andere manier naar een andere mapper om te zetten, wat gemakkelijk of uiterst moeilijk kan zijn. Anderzijds is het (relatief) eenvoudig om een SNES spel uit te breiden. Om de extra ruimte te benutten, moeten delen van de spelcode worden gewijzigd of herschreven (zie Assembly hacking hierboven) zodat het spel weet waar het moet zoeken. Een ander type ROM-uitbreiding dat vrij eenvoudig is, zijn de Game Boy Advance ROM’s. De ROM’s zelf zijn over het algemeen klein, maar de beschikbare geheugenruimte is soms een veelvoud van 17.
Geef een antwoord