mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- Added support for Eternity's ATAG chunk (mixed-type arrays). Requires a structure aware compiler (not ACC).
SVN r3989 (trunk)
This commit is contained in:
parent
deff47ea18
commit
86291fcd96
1 changed files with 29 additions and 1 deletions
|
@ -1242,6 +1242,34 @@ FBehavior::FBehavior (int lumpnum, FileReader * fr, int len)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [BL] Newer version of ASTR for structure aware compilers although we only have one array per chunk
|
||||||
|
chunk = (DWORD *)FindChunk (MAKE_ID('A','T','A','G'));
|
||||||
|
while (chunk != NULL)
|
||||||
|
{
|
||||||
|
const BYTE* chunkData = (const BYTE*)(chunk + 2);
|
||||||
|
// First byte is version, it should be 0
|
||||||
|
if(*chunkData++ == 0)
|
||||||
|
{
|
||||||
|
int arraynum = MapVarStore[LittleLong(*(const DWORD*)(chunkData))];
|
||||||
|
chunkData += 4;
|
||||||
|
if ((unsigned)arraynum < (unsigned)NumArrays)
|
||||||
|
{
|
||||||
|
SDWORD *elems = ArrayStore[arraynum].Elements;
|
||||||
|
// Ending zeros may be left out.
|
||||||
|
for (int j = MIN(chunk[1]-5, ArrayStore[arraynum].ArraySize); j > 0; --j, ++elems, ++chunkData)
|
||||||
|
{
|
||||||
|
// For ATAG, a value of 0 = Integer, 1 = String, 2 = FunctionPtr
|
||||||
|
// Our implementation uses the same tags for both String and FunctionPtr
|
||||||
|
if(*chunkData)
|
||||||
|
*elems |= LibraryID;
|
||||||
|
}
|
||||||
|
i += 4+ArrayStore[arraynum].ArraySize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
chunk = (DWORD *)NextChunk ((BYTE *)chunk);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load required libraries.
|
// Load required libraries.
|
||||||
|
@ -5381,7 +5409,7 @@ scriptwait:
|
||||||
if (activationline != NULL)
|
if (activationline != NULL)
|
||||||
{
|
{
|
||||||
activationline->special = 0;
|
activationline->special = 0;
|
||||||
DPrintf("Cleared line special on line %d\n", activationline - lines);
|
DPrintf("Cleared line special on line %d\n", (int)(activationline - lines));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue