public int WriteWorld(World w, int levelAddress) { Rom[levelAddress++] = (byte)w.GraphicsBank; Rom[levelAddress++] = (byte)w.Palette; Rom[levelAddress++] = (byte)(ProjectController.MusicManager.MusicList[w.Music].Value); Rom[levelAddress++] = (byte)w.Length; Rom[levelAddress++] = (byte)w.Pointers.Count; foreach (var p in w.Pointers) { if (!levelIndexTable.ContainsKey(p.LevelGuid)) { Rom[levelAddress++] = (byte)0xFF; } else { Rom[levelAddress++] = levelIndexTable[p.LevelGuid]; } Rom[levelAddress++] = (byte)(((p.X & 0xF0) >> 4) | ((p.X & 0x0F) << 4)); Rom[levelAddress++] = (byte)((p.AltLevelEntrance ? 0x80 : 0x00) | (p.Y - 0x0F)); } byte[] levelData = w.GetCompressedData(); for (int i = 0; i < levelData.Length; i++) { Rom[levelAddress++] = levelData[i]; } Rom[levelAddress++] = (byte)0xFF; foreach (var s in from sprites in w.SpriteData orderby sprites.X select sprites) { Rom[levelAddress++] = (byte)s.InGameID; Rom[levelAddress++] = (byte)s.X; Rom[levelAddress++] = (byte)(s.Y - 0x0F); } Rom[levelAddress++] = (byte)0xFF; return(levelAddress); }
public int WriteWorld(World w, int levelAddress) { Rom[levelAddress++] = (byte)w.GraphicsBank; Rom[levelAddress++] = (byte)w.Palette; Rom[levelAddress++] = (byte)(ProjectController.MusicManager.MusicList[w.Music].Value); Rom[levelAddress++] = (byte)w.Length; Rom[levelAddress++] = (byte)w.Pointers.Count; foreach (var p in w.Pointers) { if (!levelIndexTable.ContainsKey(p.LevelGuid)) { Rom[levelAddress++] = (byte)0xFF; } else { Rom[levelAddress++] = levelIndexTable[p.LevelGuid]; } Rom[levelAddress++] = (byte)(((p.X & 0xF0) >> 4) | ((p.X & 0x0F) << 4)); Rom[levelAddress++] = (byte)((p.AltLevelEntrance ? 0x80 : 0x00) | (p.Y - 0x0F)); } byte[] levelData = w.GetCompressedData(); for (int i = 0; i < levelData.Length; i++) { Rom[levelAddress++] = levelData[i]; } Rom[levelAddress++] = (byte)0xFF; foreach (var s in from sprites in w.SpriteData orderby sprites.X select sprites) { Rom[levelAddress++] = (byte)s.InGameID; Rom[levelAddress++] = (byte)s.X; Rom[levelAddress++] = (byte)(s.Y - 0x0F); } Rom[levelAddress++] = (byte)0xFF; return levelAddress; }