public List<ObjectList> getObjectsCad(int levelNo)
{
LevelRec lr = ConfigScript.getLevelRec(levelNo);
int objCount = lr.objCount, addr = lr.objectsBeginAddr;
var objects = new List<ObjectRec>();
for (int i = 0; i < objCount; i++)
{
byte v = Globals.romdata[addr + i];
if (levelNo != 4)
{
byte sx, sy, x, y;
sx = Globals.romdata[addr - 4 * objCount + i];
x = Globals.romdata[addr - 3 * objCount + i];
sy = Globals.romdata[addr - 2 * objCount + i];
y = Globals.romdata[addr - objCount + i];
var obj = new ObjectRec(v, sx, sy, x, y);
objects.Add(obj);
}
else //C&D LEVEL D EXCEPTION, unaligned pointers
{
byte sx = Globals.romdata[addr - 4 * objCount + 1 + i];
byte x = Globals.romdata[addr - 3 * objCount + 1 + i];
byte sy = Globals.romdata[addr - 2 * objCount + 1 + i];
byte y = Globals.romdata[addr - objCount + i];
var obj = new ObjectRec(v, sx, sy, x, y);
objects.Add(obj);
}
}
return new List<ObjectList> { new ObjectList { objects = objects, name = "Objects" } };
}