public static BlastCorpsLevel decodeLevel(byte[] levelData, byte[] displayListData) { BlastCorpsLevel level = new BlastCorpsLevel(); level.decodeHeader(levelData); // 0x00-0x1F level.saveVertices(levelData); // 0xC8-ammo level.decodeAmmoBoxes(levelData); // 0x20 level.decodeCollision24(levelData); // 0x24 level.decodeCommPoints(levelData); // 0x28 level.decodeAnimatedTextures(levelData);// 0x2C level.decodeTerrain(levelData); // 0x30 level.decodeRDUs(levelData); // 0x34 level.decodeTNTCrates(levelData); // 0x38 level.decodeSquareBlocks(levelData); // 0x3C level.decodeBounds40(levelData); // 0x40 level.decodeBounds44(levelData); // 0x44 level.decode48(levelData); // 0x48 TODO: decode these U32s level.decodeLevelBounds(levelData); // 0x4C level.decodeVehicles(levelData); // 0x50 level.decodeMissileCarrier(levelData); // 0x54 level.decode58(levelData); // 0x58 TODO level.decodeBuildings(levelData); // 0x5C level.decode60(levelData); // 0x60 TODO level.decode64(levelData); // 0x64 TODO level.decodeTrainPlatform(levelData); // 0x68 level.decodeCollision6C(levelData); // 0x6C level.decodeCollision70(levelData); // 0x70 level.decode74(levelData); // 0x74 TODO // 0x78-0x9C are located in the display list data level.copyLevelData = levelData; level.displayList = displayListData; return level; }