ROM hacking
On december 28, 2021 by adminA ROM-adatok sok különböző programozó vagy programozói csapat által készítettek, így nagyon sokfélék lehetnek.
Hex-szerkesztésEdit
A hexaszerkesztő az egyik legalapvetőbb eszköz minden ROM-hacker repertoárjában. A hex-szerkesztőket általában szövegszerkesztésre és más olyan adatok szerkesztésére használják, amelyek szerkezete ismert (például az elemek tulajdonságai), valamint Assembly hacking.
A szövegszerkesztés a hackelés egyik legalapvetőbb formája. Sok játék nem ASCII formában tárolja a szövegét, és emiatt kifejlesztettek néhány speciális hexaszerkesztőt, amelyeknek meg lehet mondani, hogy az ábécé melyik betű(k)nek milyen byte-értékek felelnek meg, hogy megkönnyítsék a szövegszerkesztést; egy olyan fájlt, amely meghatározza ezeket a byte=betű kapcsolatokat, “táblázatos” fájlnak nevezzük. Más játékok egyszerű szövegtömörítési technikákat használnak (mint például a bájtpáros kódolás, más néven dual tile encoding vagy DTE, amelyben két vagy több betű bizonyos kombinációi egy bájtként vannak kódolva), amelyek szerkesztését egy megfelelően felszerelt hexaszerkesztő megkönnyítheti.
A hexaszerkesztő a megfelelő eszköz az olyan dolgok szerkesztésére, mint például a karakter/tárgy tulajdonságai, ha ezen adatok szerkezete és helye ismert, és nincs a játékhoz olyan játék-specifikus szerkesztő, amely képes szerkeszteni ezeket az információkat. Néhány bátortalan hacker a szintek szerkesztését is hexaszerkesztővel végzi, de ez rendkívül nehéz (kivéve olyan játékoknál, amelyeknek a szintek tárolási formátuma nagyon hasonlít a hexaszerkesztőben való megjelenéshez).
Grafikai szerkesztésSzerkesztés
Egy másik alapvető hacker készség a grafikai hackelés, ami a játék környezetének, karaktereinek, betűtípusainak vagy más hasonló dolgok megjelenésének megváltoztatását jelenti. A grafikai adatok formátuma konzolról konzolra változik, de a legtöbb korai konzol (NES, Super NES, Game Boy stb.) a grafikát csempékben tárolja, amelyek 8×8 pixeles adategységek, amelyeket a képernyőn a kívánt eredmény elérése érdekében rendezünk el. Ezeknek a csempéknek a szerkesztése hexaszerkesztővel is lehetséges, de általában egy csempeszerkesztővel (pl. Tile Layer vagy Tile Molester) történik, amely képes a ROM-adatok grafikus megjelenítésére, valamint a csempék megtalálására és szerkesztésére.
A grafikai hackek az egyszerű szerkesztésektől kezdve (például ha Luigi golfütőt kap, vagy ha pixeles sprite-okat készítünk a későbbi generációs Pokemonokhoz) a karakterek “átültetésén” egyik játékból a másikba, egészen a teljes körű tematikus változtatásokig (általában a paletta módosításával együtt; lásd alább).
A kifinomultabb grafikai hackelés nem csak a csempék és a színek megváltoztatását foglalja magában, hanem a csempék elrendezésének módját is, vagy a csempecsoportok generálását, ami nagyobb rugalmasságot és irányítást biztosít a végső megjelenés felett. Ez hexaszerkesztéssel vagy egy speciális eszközzel érhető el (akár az adott játékhoz, akár egy adott rendszerhez). Jó példa a grafikai hackre a befejezetlen Pokémon Torzach, egy hack, amely megpróbált egy teljesen új generációs Pokémont és csempét adni a játékhoz. A hacket azóta megszüntették, de még mindig jó példaként szolgál arra, hogy mit lehet elérni a rendelkezésre álló eszközökkel.
Paletta szerkesztésSzerkesztés
A hackelés másik gyakori formája a paletta hackelés, ahol a színértékeket módosítják, hogy megváltoztassák a játékos által a játékban látott színeket (ez gyakran kéz a kézben jár a grafikai hackeléssel); a palettaértékeket általában Hex-ben tárolják. Ez meglehetősen egyszerű a NES-játékok esetében, amelyek grafikája előre meghatározott színkészletet használ, amelyek közül a játék választ; a paletta-hackelés ebben az esetben azt jelenti, hogy megváltoztatjuk, hogy ezek közül a színek közül melyiket választjuk ki. A dolog kissé bonyolultabb a Super NES-játékok és más rendszerekhez készült játékok esetében, amelyek abszolút RGB színértékeket tárolnak. A palettaszerkesztők általában egyszerűek, és gyakran a szintszerkesztőkkel, vagy a játék specifikus grafikai szerkesztőkkel együtt vannak.
SzintszerkesztésSzerkesztés
A ROM hackelés egyik legnépszerűbb formája, a szintszerkesztés a játék szintjeinek vagy pályáinak módosítását vagy újratervezését jelenti. Ezt szinte kizárólag egy kifejezetten az adott játékra szabott szerkesztővel (úgynevezett szintszerkesztővel) végzik. A szintek szerkesztése történhet azért, hogy a játék nagyobb kihívást jelentsen, hogy megváltoztassa a játék cselekményének menetét, vagy csak azért, hogy valami újat adjon egy régi játéknak. Kiterjedt grafikai hackeléssel kombinálva a játék egészen más kinézetet és hangulatot kaphat.
AdatszerkesztésSzerkesztés
Számos hackelés (különösen a szerepjátékos videojátékok esetében) központi eleme az adatok, például a karakterek, tárgyak és ellenségek tulajdonságainak szerkesztése. Ez általában vagy “kézzel” (hexaszerkesztővel) történik, ha az adatok helye és szerkezete ismert, vagy egy olyan játék-specifikus szerkesztővel, amely rendelkezik ezzel a funkcióval. Ezen keresztül egy hacker megváltoztathatja a fegyverek működését, az ellenségek erejét vagy viselkedését stb. Ezzel könnyebbé vagy nehezebbé teheti a játékot, vagy új forgatókönyveket hozhat létre a játékos számára.
Assembly hackingEdit
A legerősebb, és vitathatatlanul a legnehezebb hackelési technika a játék tényleges kódjának szerkesztése, az úgynevezett ASM hacking (“ASM” jelentése “assembly”, ami a korai videojátékokban használt programozási nyelvre utal). Az ASM hackelésre nincs meghatározott minta, mivel a kód játékonként nagyon eltérő, de a legtöbb gyakorlott ASM hacker vagy egy beépített debuggerrel vagy nyomkövetővel felszerelt emulátort használ, vagy a ROM-ot egy disassemblerrel futtatja, majd elemzi a kódot, és egy hexaszerkesztő vagy assembler segítségével módosítja azt az igényeinek megfelelően. Bár a fent felsorolt viszonylag egyszerű módszerekhez képest elég nagy kihívás, az ASM hackeléssel bármi lehetséges (természetesen a játékplatform hardverének/szoftverének korlátain belül), az ellenséges mesterséges intelligencia megváltoztatásától kezdve a grafika generálásának megváltoztatásáig. (Természetesen a lehetőségeket még mindig korlátozza a hacker képessége, hogy megértse és módosítsa a meglévő kódot.)
Ha a fejlesztők tipizált nyelvet használtak, a hacker képes lehet a saját kódját ugyanezen a nyelven lefordítani a játékhoz, ha hozzáférése van egy megfelelő fordítóprogramhoz. Ilyen példa lehet például a C nyelv használata Nintendo 64-es játékok hackelésére, mivel a MIPS-GCC képes kódot fordítani a Nintendo 64-hez.
Zenei hackelésSzerkesztés
A zenei hackelés viszonylag ritka, mivel a játékok sokféleképpen tárolják a zenei adatokat (ezért nehéz megtalálni és módosítani ezeket az adatokat), és nehéz új zenét komponálni (vagy más játékból zenét átvinni). Mivel a zenetörés nagyon ritka, sok hack nem tartalmaz semmilyen átvitt/komponált zenét. A SapTapper program azonban használható a Game Boy Advance zenei adatok feltörésére, mivel sok Game Boy Advance játék az M4A Engine-t (más néven “Sappy Driver”) használja a zenéhez. Különböző más segédprogramok is készültek a motorral való együttműködésre, mint például a Sappy 2006.
Egy másik példa arra, hogy ugyanazt a motort használják a játékok között, a Nintendo 64, ahol a legtöbb játék ugyanazt a formátumot használja; bár különböző hangbankokat használnak. Az N64 Midi Tool nevű segédprogramot a Nintendo 64 játékok többsége által használt szekvenciák szerkesztésére hozták létre, bár ez nem terjed ki az első féltől származó N64 címekre, amelyek kissé eltérő motort használnak, mint például a Super Mario 64. Számos Mega Drive játék nem hivatalosan “SMPS” néven ismert hangmotort használ, amelyet évtizedek óta számos hacker kutat. Napjainkban különböző eszközök léteznek az SMPS motort használó játékok (különösen a Sonic the Hedgehog játékok) zenéjének módosítására, és ezek közül sokan eljutottak a Steam Workshopba.
ROM bővítésEdit
Általánosságban elmondható, hogy egy ROM hacker általában nem tud tartalmat hozzáadni egy játékhoz, hanem csak a meglévő tartalmat változtatja meg. Ezt a korlátot a ROM-bővítéssel lehet áthidalni, melynek során a ROM-kép teljes mérete megnövekszik, így több tartalomnak, és ezáltal nagyobb játéknak ad helyet. Ennek nehézsége attól függően változik, hogy milyen rendszerre készült a játék. Például egy NES ROM bővítése nehéz vagy akár lehetetlen is lehet a játék által használt leképező miatt. Például, ha egy mapper 16 ROM-bankot engedélyez, és ezek mindegyike ki van használva, a ROM további bővítése lehetetlen anélkül, hogy a játékot valahogy átállítanánk egy másik mapperre, ami lehet könnyű vagy rendkívül nehéz. Ezzel szemben egy SNES játék bővítése (viszonylag) egyszerű. A megnövekedett hely kihasználásához a játék kódjának egyes részeit módosítani kell vagy újra kell írni (lásd fentebb az Assembly hackelést), hogy a játék tudja, hol keressen. A ROM-bővítés másik típusa, amely viszonylag egyszerű, a Game Boy Advance ROM-ok. Maguk a ROM-ok általában kicsik, de a rendelkezésre álló memóriaterület néha akár 17-szeresével is meghaladja azt.
Vélemény, hozzászólás?