Förhoppningsvis har du nu fått pröva på att ändra lite text i ett spel (förutsatt att du gått igenom föregående kapitel). Men vad var det som hände egentligen? Varför var du tvungen att ladda en tablefil innan du började, och varför kunde du inte skriva hur mycket som helst?
Det och mycket annat ska vi ta upp i det här kapitlet, som dessutom tar upp den sista viktiga delen i textändring, nämligen att skapa tablefiler. Innan du läser vidare, bör du ha gått igenom följande kapitel:
Vad är då en "tablefil"? Innan vi svarar på det, är det först viktigt att ta reda på vad "text" i en rom verkligen är. Svaret är, att det är den inte. Texten i Dragon Warrior är i själva verket bara grafik, lagrad på en specifik plats, och visad när spelet åberopar den.
Låter det krångligt?
Tänk så här. Du har redan ändrat spelets alfabete, även om du inte använde det i förra textkapitlet. Då vet du, att varje bokstav i sig bara är grafik (dvs. grafik föreställande bokstäver, ifall man ska vara petig), och att varje bokstav ligger på sin egen tile á 8x8 pixlar.
För att visa dessa pixlar, har spelet (Dragon Warrior) tilldelat varje Tile i alfabetet sin egen hexdecimal. För att skriva text i spelet, fyller man därför i de hexdecimaler som stämmer överens med den bokstav man egentligen vill skriva.
Exempel:
Låt säga att du vill skriva order "middag" i Dragon Warrior. För att göra det, måste du veta vilka hexdecimaler i spelet som används för att visa "m", "i", "d", "a" och "g". Ifall du är intresserad, så är det dessa:
30=m
2C=i
27=d
24=a
2A=g
För att sedan skriva ordet, fyller du i hexdecimalerna [30][2C][27][27][24][2A], så visas de Tiles som hör ihop med de hexdecimaler du just skrev.
Under romhackandets tidiga år, var detta det enda sätt som folk kunde skriva text på. Översättare satt i timtal och pillrade ner sina meningar, en hexdecimal i taget. Detta var utan tvekan ett väldigt tidskrävande (såväl som tidsödande) arbete, fram till den dag då formatet .tbl blev en standard hos romhackare världen över.
Tablefiler
En tablefil fungerar som så, att den tilldelar hexdecimaler till specifika tangenter på ditt tangentbord. Med andra ord, kan du fylla i hexdecimaler bara genom att skriva som vanligt.
Alltså:
I exemplet ovan har spelet tilldelat bokstaven "m" (eller rättare sagt den grafiska Tile som föreställer "m") till hexdecimalen "30".
Det vi då gör, är att tilldela hexdecimalen "30" till tangentbordet, närmare bestämt tangenten "m". När vi sedan trycker på den tangenten, sätter programmet (Windhex) automatiskt in hexdecimalen "30" i spelet, vilket automatiskt visar bokstaven "m" i dialog-rutan.
Att skapa en tablefil från scratch kan vara lite krångligt, så vi börjar med att modifiera en fil som vi redan har, nämligen dw.tbl.
Det behövs inget särskilt program för att syssla med tablefiler, men rekommenderat är att du använder Windows Anteckningsblock eller Notepad.
Öppna dw.tbl i anteckningsblocket, genom att välja "Alla filer" och sedan tablefilen i fråga.
Öppna även en kopia av Dragon Warrior (din ÅÄÖ-version) i Windhex, men ladda inte din tablefil (dw.tbl).
Anledningen till att vi inte laddar tablefilen, är att det tydligare visar exakt vilken roll tablefilen egentligen spelar i översättningsprocessen. Därför, ska vi nu på nytt söka efter stycke som i förra kapitlet, men den här gången utan hjälp av tablefiler.
Tryck Ctrl+F i Windhex så kommer text-sökningsrutan upp. Skriv åter in ordet "Descendant", och tryck på "Find".
Som du säkert märker, så hittar inte Windhex längre det ordet. Inte på grund av att det inte finns där, utan eftersom Windhex inte längre vet vilka hexdecimaler som sammanfaller med "D", "e", "s", "c" etc.
Tryck Ctrl+H så kommer en annan ruta upp, nämligen Hex-sökningen.
De bokstäver vi söker efter har följande hexdecimaler i spelet:
27=D
0E=e
1C=s
0C=c
17=n
0D=d
0A=a
1D=t
I Hex-rutan skriver du därför in "270E1C0C0E170D0A171D", och trycker på "Find".
Om du gjort rätt, borde du nu tas till följande plats i spelet:
Titta alltså på spalten längst till vänster och kontrollera att du befinner dig på B140.
Ifall du undrar, så finns texten du sökte efter (Descendant) där markörer pekar. Titta på hexdecimalerna i den mittersta spalten, så ser du raden "270E1C0C0E170D0A171D". Se nu till att spalten "Edit > Hex / Text Edit Mode" inte är markerad.
Nu ska vi ändra den första bokstaven i ordet Descendant. Med markören på "27", skriver du "28" på tangentbordet. Siffran 28 kommer inte att synas förräns du skrivit hela talet.
Spara sedan din rom ("File > Save File"), och öppna den i en emulator. Spela fram till den första dialogen, så ser det ut så här:
Som du ser, ändrades "Descendant" till "Escendant" när vi bytte ut 27 mot 28. Det beror på att 27 visar "D" i spelet, medan 28 visar "E". Det är alltså via den här metoden som folk översatte hela spel förut.
För att demonstrera vad tablefilen gör ska du nu, utan att lämna den plats i Windhex där du hittade ordet, ladda tablefilen dw.tbl ("File > Open Table File > Table #1"). När du gjort det, dyker plötsligt bokstäverna upp i den högra spalten:

Som du kan se, läser Windhex av tablefilen och stoppar in de värden (alltså de tecken) som finns specificerade där. Tack vare detta, kan du nu titta på den högra spalten när du skriver, och stoppa in hexdecimalerna genom att skriva på tangentbordet i vanlig ordning.
Se till så att Text-redigeringen är ikryssad:
Ändra sedan tillbaks Escendant till Descendant igen (enbart genom att trycka på tangenten "D") och spara din rom.
Ändringar i Tablefilen
Ta fram anteckningsblocket där du öppnade filen dw.tbl. Om du öppnat rätt fil, borde det se ut så här:
0A=a
0B=b
0C=c
0D=d
0E=e
0F=f
10=g
11=h
12=i
13=j
14=k
15=l
16=m
17=n
18=o
19=p
1A=q
1B=r
1C=s
1D=t
1E=u
1F=v
20=w
21=x
22=y
23=z
24=A
25=B
26=C
27=D
28=E
29=F
2A=G
2B=H
2C=I
2D=J
2E=K
2F=L
30=M
31=N
32=O
33=P
34=Q
35=R
36=S
37=T
38=U
39=V
3A=W
3B=X
3C=Y
3D=Z
3F="
40='
44=:
47=.
48=,
49=-
4B=?
4C=!
4D=;
4E=)
4F=(
52=.'
5F=
Till vänster ser du hexdecimalerna, och till höger står det vilka tangenter de för tillfället finns inlagda på (förutsatt att du laddar just den här tablefilen i en Hexredigerare som Windhex). Vi ska nu ändra den här filen lite, eller närmare bestämt göra ett inlägg genom att fylla i ÅÄÖ också.
Innan vi fortsätter får du gärna öppna en kopia av Dragon Warrior i Windhex, ladda tablefilen och leta reda på lite text. Försök sedan att skriva Å; Ä; Ö; å; ä eller ö, så märker du ganska snart att det inte fungerar. Det beror på att dessa tangenter ännu inte fått en "egen" hexdecimal i tablefilen, och därför gör de heller ingenting när man trycker på dem.
För enkelhetens skull lägger vi bara in de stora bokstäverna. I nästa kapitel gör vi en tablefil från scratch, men här talar jag om hexdecimalerna på förhand:
Å har hexdecimalen "34", Ä har "3A" och Ö har "3D".
I din tablefil lägger du därför in dessa tre bokstäver på det här viset:
34=Å
3A=Ä
3D=Ö
Ifall du är osäker på hur/var, så kan du göra det efter det stora alfabetet i din tablefil. Det ser då ut så här:
...
38=U
39=V
3A=W
3B=X
3C=Y
3D=Z
34=Å
3A=Ä
3D=Ö
3F="
40='
44=:
47=.
...
Nu finns det bara en sak kvar att göra, nämligen att radera de gamla specifikationerna till dessa hexdecimaler. Minns du att du bytte ut QWZ mot ÅÄÖ? Eftersom man inte får skriva in en hexdecimal fler än en gång, måste du därför radera "34=Q", "3A=W" och "3D=Z" från tablefilen, eftersom dessa bokstäver liks inte längre finns med i spelet.
När du gjort det, är det fritt fram att skriva text som vanligt, fast med Å,. Ä och Ö den här gången (och utan Q, W och Z). Ifall du haft problem med exemplen hittils, kan du ändå gå vidare till nästa kapitel och göra en tablefil från början till slut.