Jo. Also. GLOBAL hat 2 Funktionen.
1. Neue Variable:
Das erste Mal, wenn der Compiler auf GLOBAL XXX oder GLBOAL XXX=YYY stößt, macht er eine globale Variable mit dem Namen XXX und weist ihr noch vor Programmbeginn den Wert 0 oder YYY zu.
In Deinem Fall "X_NUMFACES(0)", wobei die 3D Engine noch gar nicht geladen ist.
2. Globale Unterscheidung
Wenn es 2 Variablen gibt, die gleich heissen, kann man mit dem Keyword GLOBAL dafür sorgen, dass der Compiler die globale verwendet. In Deinem Beispiel müsste man dazu schreiben:
GLOBAL Numfaces // Macht eine globale mit Wert 0
GLOBAL Numfaces = X_NUMFACES(0) // weist an dieser Stelle den Wert zu
Da es keine andere Variable mit dem Namen Numfaces gibt, solltest Du's so machen:
GLOBAL Numfaces // Compiler, mecker nicht rum - ich weiß, dass es die gibt
Numfaces = X_NUMFACES(0) // nimmt immer die globale, weil's keine lokale gibt!!