ROM-hakkerointi
On 28 joulukuun, 2021 by adminMonien eri ohjelmoijien tai ohjelmointiryhmien luomana ROM-tiedot voivat olla hyvin moninaisia.
Hex-editointiEditointi
Hex-editori on yksi ROM-hakkerin repertuaarin keskeisimmistä työkaluista. Hex-editoreita käytetään yleensä tekstin muokkaamiseen ja muiden sellaisten tietojen muokkaamiseen, joiden rakenne tunnetaan (esimerkiksi esineiden ominaisuudet), sekä Assembly-hakkerointiin.
Tekstin muokkaaminen on yksi hakkeroinnin perusmuodoista. Monet pelit eivät tallenna tekstiään ASCII-muodossa, ja tämän vuoksi on kehitetty joitakin erikoistuneita heksanmuotoisia editoreja, joille voidaan kertoa, mitkä tavuarvot vastaavat mitäkin aakkosten kirjainta (kirjaimia), jotta tekstin muokkaaminen olisi helpompaa; tiedostoa, joka määrittelee nämä tavu=kirjain-suhteet, kutsutaan ”taulukkotiedostoksi”. Toiset pelit käyttävät yksinkertaisia tekstin pakkaustekniikoita (kuten tavuparikoodausta, jota kutsutaan myös dual tile encodingiksi tai DTE:ksi, jossa tietyt kahden tai useamman kirjaimen yhdistelmät koodataan yhdeksi tavuksi), joiden muokkaamista voi helpottaa sopivasti varusteltu heksaeditori.
Heksaeditori on ensisijainen työkalu esimerkiksi hahmojen/esineiden ominaisuuksien muokkaamiseen, jos tämän datan rakenne ja sijainti on tiedossa eikä pelille ole olemassa pelikohtaista editoria, jolla näitä tietoja voisi muokata. Jotkut pelottomat hakkerit suorittavat myös tasojen muokkausta heksaeditorilla, mutta tämä on erittäin vaikeaa (paitsi peleissä, joiden tasojen tallennusmuoto muistuttaa läheisesti sitä, miten se esitetään heksaeditorissa).
Grafiikan muokkausMuokkaus
Toinen hakkeroinnin perustaito on grafiikkahakkerointi, joka tarkoittaa pelin ympäristöjen, hahmojen, fonttien tai muiden vastaavien asioiden ulkoasun muuttamista. Grafiikkadatan muoto vaihtelee konsolista toiseen, mutta useimmat varhaisimmat (NES, Super NES, Game Boy jne.) tallentavat grafiikan laattoina, jotka ovat 8×8-pikselin datayksiköitä, jotka järjestetään ruudulle halutun lopputuloksen aikaansaamiseksi. Näiden laattojen muokkaaminen on mahdollista myös hex-editorilla, mutta yleensä se tehdään laattaeditorilla (kuten Tile Layer tai Tile Molester), joka pystyy näyttämään ROM-tiedot graafisesti sekä etsimään ja muokkaamaan laattoja.
Grafiikkahakkeroinnit voivat vaihdella yksinkertaisista muokkauksista (kuten Luigille annettavasta golfmailasta tai myöhemmän sukupolven Pokemoneja varten tehdyistä pikselipainotteisista spriiteistä) hahmojen ”siirtämiseen” yhdestä pelistä toiseen, täysimittaisiin temaattisiin muutoksiin (yleensä palettien muutoksiin, ks. jäljempänä).
Hienostuneempi grafiikan hakkerointi sisältää muutakin kuin pelkkien laattojen ja värien muuttamisen, vaan myös tavan, jolla laatat on järjestetty tai laattaryhmät on luotu, mikä antaa enemmän joustavuutta ja kontrollia lopulliseen ulkoasuun. Tämä onnistuu heksamuunnoksella tai erikoistuneella työkalulla (joko tiettyä peliä tai tiettyä järjestelmää varten). Hyvä esimerkki grafiikkahakkeroinnista on keskeneräinen Pokémon Torzach, hakkerointi, jolla yritettiin lisätä peliin kokonaan uusi sukupolvi Pokémoneja ja laattoja. Hakkerointi on sittemmin lopetettu, mutta se toimii silti hyvänä esimerkkinä siitä, mitä käytettävissä olevilla työkaluilla voidaan saavuttaa.
Paletin muokkausEdit
Toinen yleinen hakkeroinnin muoto on palettihakkerointi, jossa väriarvoja muokataan muuttaakseen värit, jotka pelaaja näkee pelissä (tämä kulkee usein käsi kädessä grafiikkahakkeroinnin kanssa); Palettiarvot tallennetaan yleensä Hex-formaatissa. Tämä on melko helppoa NES-peleissä, joiden grafiikassa käytetään ennalta määriteltyjä värejä, joiden joukosta peli valitsee; palettihakkerointi tarkoittaa tässä tapauksessa sitä, että muutetaan, mitkä näistä väreistä valitaan. Asia on hieman monimutkaisempi Super NES -peleissä ja muiden järjestelmien peleissä, jotka tallentavat absoluuttisia RGB-väriarvoja. Palettieditorit ovat yleensä yksinkertaisia, ja ne ovat usein yhdessä tasoeditorien tai pelikohtaisten grafiikkaeditorien kanssa.
Tasojen muokkausMuokkaus
Tasojen muokkaus on yksi suosituimmista ROM-hakkeroinnin muodoista, ja se tarkoittaa pelin tasojen tai karttojen muokkaamista tai uudelleensuunnittelua. Tämä tehdään lähes yksinomaan erityisesti tiettyä peliä varten räätälöidyllä editorilla (jota kutsutaan tasoeditoriksi). Tasojen muokkaamisella voidaan tehdä pelistä haastavampi, muuttaa pelin juonen kulkua tai vain antaa jotain uutta vanhaan peliin. Yhdistettynä laajaan grafiikan hakkerointiin peli voi saada hyvin erilaisen ulkoasun ja tunnelman.
Datan muokkausMuokkaus
Monien hakkerointien (erityisesti roolipelivideopelien) keskeinen osa on datan, kuten hahmojen, esineiden ja vihollisten ominaisuuksien, muokkaaminen. Tämä tehdään yleensä joko ”käsin” (hex-editorilla), jos tietojen sijainti ja rakenne tunnetaan, tai pelikohtaisella editorilla, jossa on tämä toiminto. Tämän avulla hakkeri voi muuttaa aseiden toimintaa, vihollisten voimaa tai toimintaa jne. Näin voidaan tehdä pelistä helpompi tai vaikeampi tai luoda uusia skenaarioita, joita pelaaja joutuu kohtaamaan.
Assembly-hakkerointiMuokkaus
Tehokkain ja luultavasti vaikein hakkerointitekniikka on pelin varsinaisen koodin muokkaaminen, jota kutsutaan ASM-hakkeroinniksi (”ASM” tarkoittaa ”assemblyä”, mikä viittaa varhaisten videopelien ohjelmointikielen tyyppiin). ASM-hakkerointiin ei ole olemassa tiettyä mallia, koska koodi vaihtelee suuresti pelikohtaisesti, mutta useimmat taitavat ASM-hakkerit käyttävät joko emulaattoria, jossa on sisäänrakennettu debuggeri tai jäljitin, tai ajavat ROM-muistitiedoston disassemblerin läpi, analysoivat sitten koodin ja muokkaavat sitä hex-editorilla tai assemblerilla tarpeidensa mukaan. Vaikka ASM-hakkerointi on melko haastavaa verrattuna edellä lueteltuihin suhteellisen yksinkertaisiin menetelmiin, kaikki on mahdollista ASM-hakkeroinnin avulla (tietenkin pelialustan laitteiston/ohjelmiston asettamissa rajoissa), aina vihollisen tekoälyn muuttamisesta grafiikan tuottamistavan muuttamiseen. (Mahdollisuuksia rajoittaa tietysti edelleen hakkerin kyky ymmärtää ja muokata olemassa olevaa koodia.)
Jos kehittäjät käyttivät typisoitua kieltä, hakkeri voi ehkä kääntää oman pelikoodinsa samalla kielellä, jos hänellä on käytössään asianmukainen kääntäjä. Yksi tällainen esimerkki olisi C:n käyttäminen Nintendo 64:n pelien hakkerointiin, koska MIPS-GCC osaa kääntää koodia Nintendo 64:lle.
MusiikkihakkerointiEdit
Musiikkihakkeroinnit ovat suhteellisen harvinaisia, koska pelit tallentavat musiikkidataa monin eri tavoin (ja näin ollen tämän datan paikallistaminen ja muokkaaminen on vaikeaa) ja uuden musiikin säveltäminen (tai musiikin porttaaminen jostain toisesta pelistä) on vaikeaa. Koska musiikin krakkaaminen on hyvin harvinaista, moniin hakkerointeihin ei ole lisätty mitään siirrettyä tai sävellettyä musiikkia. SapTapper-ohjelmaa voidaan kuitenkin käyttää Game Boy Advance -musiikkidatan hakkerointiin, sillä monet Game Boy Advance -pelit käyttävät M4A-moottoria (jota kutsutaan myös nimellä ”Sappy Driver”) musiikkiin. Erilaisia muita apuohjelmia luotiin työskentelemään moottorin kanssa, kuten Sappy 2006.
Toinen esimerkki saman moottorin käyttämisestä eri peleissä on Nintendo 64:ssä, jossa useimmat pelit käyttävät samaa formaattia; tosin ne käyttävät eri äänipankkeja. N64 Midi Tool -niminen apuohjelma luotiin muokkaamaan sekvenssejä, joita suurin osa Nintendo 64:n peleistä käyttää, vaikkakaan se ei kata N64:n ensimmäisen osapuolen pelejä, jotka käyttävät hieman erilaista moottoria, kuten Super Mario 64. Useat Mega Drive -pelit käyttävät epävirallisesti ”SMPS” -nimellä tunnettua äänimoottoria, jota monet hakkerit ovat tutkineet vuosikymmeniä. Nykyään on olemassa erilaisia työkaluja SMPS-moottoria käyttävien pelien (erityisesti Sonic the Hedgehog -pelien) musiikin muuttamiseen, ja monet niistä ovat päässeet Steam Workshopiin.
ROM-laajennusMuokkaus
Yleisesti ottaen ROM-hakkeri ei voi normaalisti lisätä peliin sisältöä, vaan ainoastaan muuttaa olemassa olevaa sisältöä. Tämä rajoitus voidaan ylittää ROM-laajennuksella, jolloin ROM-kuvan kokonaiskokoa kasvatetaan, jolloin tilaa on enemmän sisällölle ja sitä kautta suuremmalle pelille. Tämän vaikeus vaihtelee sen mukaan, mille järjestelmälle peli on tehty. Esimerkiksi NES:n ROM-muistin laajentaminen voi olla vaikeaa tai jopa mahdotonta pelin käyttämän mapperin vuoksi. Jos kartoittaja sallii esimerkiksi 16 ROM-pankkia ja kaikki ne ovat käytössä, ROMin laajentaminen on mahdotonta ilman, että peli muunnetaan jotenkin toiseen kartoittajaan, mikä voi olla helppoa tai erittäin vaikeaa. Toisaalta SNES-pelin laajentaminen on (suhteellisen) suoraviivaista. Lisätyn tilan hyödyntämiseksi osia pelikoodista on muutettava tai kirjoitettava uudelleen (ks. Assembly-hakkerointi edellä), jotta peli tietää, mistä etsiä. Toinen melko helppo ROM-laajennustyyppi on Game Boy Advance ROM. Itse ROMit ovat yleensä pieniä, mutta käytettävissä oleva muistitila ylittää sen joskus jopa 17-kertaisesti.
Vastaa