Index
aus RHWiki, der freien Romhacking-Enzyklopädie
Ein Index (pl. Indizes) ist eine Zahl, die eine Positionsangabe innerhalb gewisser Normen darstellt. Ein Offset kann grob als ein Index innerhalb einer Datei angesehen werden, denn Offsets sind Positionsangaben zu jedem Byte innerhalb einer Datei.
Meist werden Indizes jedoch für Listen oder Arrays verwendet.
Listen zeichnen sich dadurch aus, dass ein Index in einer gegebenen Liste einen Eintrag näher bestmmt. Wenn man z.B. eine Liste L1 = {00, 02, 04, 06, 08, 09} hat mit dem Startindex 00, so wäre Index 03 zum Beispiel der Bezug zu "06" aus der Liste.
Der Startindex einer Liste muss jedoch nicht zwangsweise bei 00 liegen und die Einträge müssen auch nicht zwangsweise nur ein Byte groß sein. In vielen Roms werden Listen insbesondere als Ersatz für komplexe Rechenfunktionen, wie zum Beispiel Rechnen mit negativen Zahlen, benutzt. Eine Liste L2 = {0555, 0755, 0980, 0B93, 0DBC, 0EA3} kann zum Beispiel bei Index -03 (bzw. 0xFD als zweierkomplementäres Signed Byte) starten. Somit verschieben sich alle Einträge, was nützlich sein kann um Platz zu sparen.
| Index | L1 | Index | L2 | |
| 00 | 00 | -03 | 0555 | |
| 01 | 02 | -02 | 0755 | |
| 02 | 04 | -01 | 0980 | |
| 03 | 06 | ±00 | 0B93 | |
| 04 | 08 | +01 | 0DBC | |
| 05 | 09 | +02 | 0EA3 |
Solche Listen oder auch Arrays lassen sich als Strukturen in Roms finden.
Listen finden in Roms oft Verwendung, wenn viele Strukturen mit gleichen Eigenschaften anderen Dingen (wie z.B. Maps oder Events) zugewiesen werden sollen.
So können zum Beispiel alle Texte eines Spiels in einer oder mehreren Bänken stehen. Alle Pointer zu diesen Texten können irgendwo anders liegen. Jetzt kann es sein, dass Events, die Text darstellen müssen anstatt eines Pointers auf den Text (oder ggf. den Pointer aus der Pointertabelle) stattdessen lieber einen Index aus der Tabelle nehmen. Das geschieht vor allem aus Platzgründen, da Addressierung über mehrere Bänke hinaus insbesondere bei älteren Systemen bedeutend mehr Platz kosten würde.
Dieses Prinzip wird in vielen Spielen angewandt, z.B. werden in "Shin Megami Tensei: Devil Children (http://www.star-trans.net/?sub=wip&winfo=dcjp)" alle Texte das gesamte Spiel hindurch durch zwei Zahlen definiert und dann intern auf die jeweilige Rombank und den jeweiligen Text daraus umgerechnet.

