7. Pointers

Innan du börjar läsa detta bör du ha läst allt tidigare och skaffat dig lite erfarenhet. Detta är rätt komplicerat faktiskt. Detta sätt jag berättar nu är det vanligaste för NES rommar. SNES rommar fungerar på ungefär samma sätt.

Vad är pointers? Jo det är en länk till en adress. Jag har gjort en liten bild här som skall visa hur det fungerar:

Om man skall förklara samma sak med text blir det så här. Precis innan text blocken i en rom ligger det något som kallas för Pointer Table. I den ligger det en massa värden. Varje värde är 2 Byte stora. Det vill säga "0082" är den första pointern och "0982" är den andra. Alla dessa pointers ligger i en lång rad. Dessa pointers är ungefär som en hexadress i rommen. Sedan tänker spelet: "Nu är det dags för den tredje dialogen". Då tar den fram sin pointer table och kollar vart den tredje pointern pekar, och sen hoppar den dit och den valda texten syns på skärmen! Det är ganska svårt att förklara som du kanske märker. Nu skall jag visa vilken nytta man har av dem.

Den första dialogen i Final Fantasy 1 börjar på $28210. Om vi skall räkna ut vilket värde pointern till denna skall ha gör vi så här. Först tar vi bort alla siffror utom de fyra sista. Då får vi värden: 8210. Sen tar vi bort 10h från detta. Då får vi 8200. Sen gör vi så att vi byter plats på de två paren. Då får vi 0082. Glöm nu inte att alltid räkna hexadecimalt i när du räknar ut detta. HexWorkshop har en inbyggd hexadecimal miniräknare om du behöver hjälp.

Alltså blir uträkningen så här:

1. Ta bort alla siffror utom de fyra sista.
2. Ta bort 10h.
3. Byt plats på talen.

Några exempel:

28540 blir 3085. Först tar man bort allt utom 8540. Sen tar man bort 10h, 8530. Och sen byter man plats.

548D96 blir 868D. Först tar man bort allt utom 8D96. Sen tar man bort 10h, 8D86 och sen byter man plats!

Hur hittar man pointer tablen? Det är faktiskt inte så svårt. I nio fall av tio ligger pointer tablen precis innan blocket med text. Räkna helt enkelt ut de tre eller fyra första pointerna och sök sedan på dessa värden. Sen när du tror att du funnit din pointer table ändra helt enkelt på ett av värdena och starta spelet. Om den första dialogen är fel så har du funnit det! Hurra!

OBS! VIKTIGT!

En pointer är länkad till där texten börjar. Alltså inte till utan till tecknet efter!

Eftersom detta är rätt komplicerat går det utmärkt att maila mig och fråga om det är nåt som inte gick hem. Min email adress finns längst ner.

I vissa spel används inte ens pointers. I vissa fall går det helt enkelt bara att flytta och spelet fattar det ändå. Det är bara att prova sig fram.

Snes Pointers

Snes pointers fungerar i princip på samma sett som NES pointers. Den stora skillnaden är hur mycket man skall dra ifrån, eller lägga till. I nes spel drar man ifrån 10h för att detta är headern. Mikael Cederlof informerade mig att i Final Fantasy 6 är det 200h man tar bort. Detta är faktiskt ganska självklart eftersom headern i SNES spel är 200h. Men detta gäller dock inte i alla spel. Det är också olika beroende på om spelet är LoRom eller HiRom. Ibland lägger man till 4000h och ibland 8000h. För att ta reda på hur man skall göra, hitta först pointer tablen. Den ligger oftast innan dialog stycket. Titta därefter

XX 45 XX 45 XX 46 XX 46 XX 46 XX 46 XX 47 XX 47

etc. Där XX är helt slumpmässiga tal, medan siffrorna är sammanhängande på liknande vis. Detta kan vara allt mellan 00-FF. Sen gäller det att lista ut hur de fungerar. Men det är oftast inte speciellt svårt. Leta bara upp den första pointern och den första dialogen och börja jämföra. Lycka till!