ROM-hacking
On december 28, 2021 by adminDa ROM-data er blevet skabt af mange forskellige programmører eller programmeringshold, kan de være meget forskellige.
Hex-redigeringEdit
En hex-editor er et af de mest grundlæggende værktøjer i enhver ROM-hacker’s repertoire. Hex-editorer bruges normalt til redigering af tekst og til redigering af andre data, hvis struktur er kendt (f.eks. elementegenskaber), og Assembly hacking.
Redigering af tekst er en af de mest grundlæggende former for hacking. Mange spil gemmer ikke deres tekst i ASCII-form, og på grund af dette er der blevet udviklet nogle specialiserede hex-editorer, som kan få at vide, hvilke byte-værdier der svarer til hvilke(t) bogstav(er) i alfabetet, for at lette tekstredigering; en fil, der definerer disse byte=bogstav-relationer, kaldes en “tabel”-fil. Andre spil anvender simple tekstkomprimeringsteknikker (såsom bytepar-kodning, også kaldet dual tile encoding eller DTE, hvor visse kombinationer af to eller flere bogstaver er kodet som én byte), som en passende udstyret hex-editor kan lette redigeringen.
En hex-editor er det foretrukne værktøj til redigering af ting såsom karakter/emne-egenskaber, hvis strukturen og placeringen af disse data er kendt, og der ikke findes en spilspecifik editor til spillet, der kan redigere disse oplysninger. Nogle frygtløse hackere udfører også levelredigering med en hex-editor, men dette er ekstremt vanskeligt (undtagen i spil, hvis levellagringsformat ligner meget den måde, det præsenteres i en hex-editor).
GrafikredigeringRediger
En anden grundlæggende hacker-færdighed er grafikhacking, som er at ændre udseendet af spillets miljøer, karakterer, skrifttyper eller andre lignende ting. Formatet af grafikdata varierer fra konsol til konsol, men de fleste af de tidlige konsoller (NES, Super NES, Game Boy osv.) lagrer grafik i tiles, som er 8×8-pixel dataenheder, der arrangeres på skærmen for at give det ønskede resultat. Det er også muligt at redigere disse tiles med en hex-editor, men det sker normalt med en tile-editor (såsom Tile Layer eller Tile Molester), som kan vise ROM-dataene på en grafisk måde samt finde og redigere tiles.
Grafikhacks kan spænde fra simple redigeringer (såsom at give Luigi en golfkølle eller lave pixelerede sprites til senere generationers Pokemon) til “portning” af figurer fra et spil til et andet, til fuldstændige tematiske ændringer (normalt med tilhørende paletændringer; se nedenfor).
Mere sofistikeret grafikhacking indebærer ændring af mere end blot fliser og farver, men også den måde, hvorpå fliserne er arrangeret, eller hvordan flisegrupper genereres, hvilket giver større fleksibilitet og kontrol over det endelige udseende. Dette opnås ved hjælp af hex-redigering eller et specialiseret værktøj (enten til det specifikke spil eller et specifikt system). Et godt eksempel på et grafisk hack er det ufuldendte Pokémon Torzach, et hack, som forsøgte at tilføje en helt ny generation af Pokémon og fliser til spillet. Hacket er siden blevet afbrudt, men det tjener stadig som et godt eksempel på, hvad man kan opnå med de tilgængelige værktøjer.
PaletredigeringRediger
En anden almindelig form for hacking er palethacking, hvor farveværdier ændres for at ændre de farver, som spilleren ser i spillet (dette går ofte hånd i hånd med grafikhacking); Paletværdier gemmes almindeligvis i Hex. Dette er ret nemt for NES-spil, hvis grafik bruger et foruddefineret sæt farver, som spillet vælger imellem; palettehacking indebærer i dette tilfælde at ændre hvilke af disse farver der er valgt. Sagen er lidt mere kompliceret med Super NES-spil og spil til andre systemer, som gemmer absolutte RGB-farveværdier. Palette-editorer er normalt enkle og er ofte sammen med Level-editorer eller spilspecifikke grafikeditorer.
Level-redigeringEdit
En af de mest populære former for ROM-hacking, level-redigering indebærer ændring eller omdesign af et spils baner eller kort. Dette gøres næsten udelukkende med en editor, der er specielt skræddersyet til et bestemt spil (kaldet en level editor). Levelredigering kan foretages for at gøre spillet mere udfordrende, for at ændre spillets handling eller bare for at give et gammelt spil noget nyt. Kombineret med omfattende grafikhacking kan spillet få et meget anderledes udseende og følelse.
DataredigeringEdit
En central komponent i mange hacks (især af videospil med rollespil) er redigering af data såsom karakter-, genstands- og fjendeegenskaber. Dette gøres normalt enten “i hånden” (med en hex-editor), hvis placeringen og strukturen af dataene er kendt, eller med en spilspecifik editor, der har denne funktionalitet. Herigennem kan en hacker ændre, hvordan våben virker, hvor stærke fjender er, eller hvordan de opfører sig osv. Dette kan gøres for at gøre spillet lettere eller sværere, eller for at skabe nye scenarier, som spilleren skal møde.
Assembly hackingEdit
Den mest kraftfulde, og nok også den sværeste, hackerteknik er at redigere spillets egentlige kode, en proces, der kaldes ASM-hacking (“ASM” betyder “assembly” og henviser til den type programmeringssprog, der blev brugt til tidlige videospil). Der findes ikke noget fast mønster for ASM-hacking, da koden varierer meget fra spil til spil, men de fleste dygtige ASM-hackere bruger enten en emulator med indbygget debugger eller tracer eller kører ROM’en gennem en disassembler, analyserer derefter koden og ændrer den ved hjælp af en hex-editor eller assembler efter deres behov. Selv om det er en stor udfordring i forhold til de relativt enkle metoder, der er nævnt ovenfor, er alt muligt med ASM-hacking (naturligvis inden for rammerne af hardware/software på spilplatformen), lige fra ændring af fjendens AI til ændring af den måde, grafikken genereres på. (Selvfølgelig er mulighederne stadig begrænset af hackerens evne til at forstå og ændre den eksisterende kode.)
Hvis udviklerne har brugt et typet sprog, kan hackeren måske kompilere sin egen kode til spillet i det samme sprog, hvis han har adgang til en ordentlig compiler. Et sådant eksempel kunne være at bruge C til at hacke Nintendo 64-spil, da MIPS-GCC kan kompilere kode til Nintendo 64.
MusikhackingRediger
Musikhacks er relativt sjældne på grund af de mange forskellige måder, hvorpå spil lagrer musikdata (og derfor er det vanskeligt at finde og ændre disse data), og vanskelighederne ved at komponere ny musik (eller portere musik fra et andet spil). Da det er meget ualmindeligt at cracke musik, er mange hacks ikke forsynet med porteret/komponeret musik. Programmet SapTapper kan dog bruges til at hacke Game Boy Advance-musikdata, da mange Game Boy Advance-spil bruger M4A-motoren (også kaldet “Sappy Driver”) til musik. Der blev skabt forskellige andre hjælpeprogrammer til at arbejde med motoren, f.eks. Sappy 2006.
Et andet eksempel på, at den samme motor bruges mellem spil, er på Nintendo 64, hvor de fleste spil bruger det samme format; selv om de bruger forskellige lydbanker. Et værktøj kendt som N64 Midi Tool blev skabt til at redigere de sekvenser, som de fleste Nintendo 64-spil bruger, selvom det ikke dækker de førsteparts N64-titler, der bruger en lidt anden motor, såsom Super Mario 64. Flere Mega Drive-spil bruger en lydmotor, der uofficielt er kendt som “SMPS”, og som mange hackere har forsket i årtier i. Der findes i dag forskellige værktøjer til at ændre musikken i spil, der bruger SMPS-motoren (især Sonic the Hedgehog-spil), og mange af dem har fundet vej til Steam Workshop.
ROM-udvidelseRediger
Generelt set kan en ROM-hacker normalt ikke tilføje indhold til et spil, men blot ændre eksisterende indhold. Denne begrænsning kan overvindes ved hjælp af ROM-udvidelse, hvorved den samlede størrelse af ROM-aftrykket øges, så der bliver plads til mere indhold og dermed et større spil. Vanskeligheden ved at gøre dette varierer afhængigt af det system, som spillet blev lavet til. Det kan f.eks. være vanskeligt eller endog umuligt at udvide en NES-ROM på grund af den mapper, der anvendes i spillet. Hvis en mapper f.eks. tillader 16 ROM-banker, og alle disse er brugt, er det umuligt at udvide ROM’en yderligere uden på en eller anden måde at konvertere spillet til en anden mapper, hvilket kan være let eller ekstremt vanskeligt. På den anden side er det (relativt) nemt at udvide et SNES-spil. For at udnytte den ekstra plads skal dele af spilkoden ændres eller omskrives (se Assembly hacking ovenfor), så spillet ved, hvor det skal lede. En anden type ROM-udvidelse, som er forholdsvis let, er Game Boy Advance ROM’er. Selve ROM’erne er generelt små, men den tilgængelige hukommelsesplads overskrider den nogle gange med et multiplum på op til 17.
Skriv et svar