private bool CompileWorlds() { World w = new World(); int bank, address; foreach (WorldInfo wi in from world in ProjectController.WorldManager.Worlds orderby world.Ordinal select world) { if (w.Load(wi)) { worldIndexTable.Add(wi.WorldGuid, (byte)wi.Ordinal); bank = (byte)(levelDataPointer / 0x2000); address = (levelDataPointer - 0x10 - (bank * 0x2000) + 0xA000); Rom.ProtectionMode = RomWriteProtection.WorldPointers; Rom[0x22010 + ((wi.Ordinal) * 4)] = (byte)bank; Rom[0x22011 + ((wi.Ordinal) * 4)] = (byte)(address & 0x00FF); Rom[0x22012 + ((wi.Ordinal) * 4)] = (byte)((address & 0xFF00) >> 8); Rom.ProtectionMode = RomWriteProtection.LevelData; levelDataPointer = WriteWorld(w, levelDataPointer); Rom.ProtectionMode = RomWriteProtection.AnyData; Rom[0x15610 + wi.Ordinal] = (byte)(w.Length << 4); if (levelDataPointer >= 0xFC000) { return(false); } } } return(true); }
private bool CompileWorlds() { World w = new World(); int bank, address; foreach (WorldInfo wi in from world in ProjectController.WorldManager.Worlds orderby world.Ordinal select world) { if (w.Load(wi)) { worldIndexTable.Add(wi.WorldGuid, (byte)wi.Ordinal); bank = (byte)(levelDataPointer / 0x2000); address = (levelDataPointer - 0x10 - (bank * 0x2000) + 0xA000); Rom.ProtectionMode = RomWriteProtection.WorldPointers; Rom[0x22010 + ((wi.Ordinal) * 4)] = (byte)bank; Rom[0x22011 + ((wi.Ordinal) * 4)] = (byte)(address & 0x00FF); Rom[0x22012 + ((wi.Ordinal) * 4)] = (byte)((address & 0xFF00) >> 8); Rom.ProtectionMode = RomWriteProtection.LevelData; levelDataPointer = WriteWorld(w, levelDataPointer); Rom.ProtectionMode = RomWriteProtection.AnyData; Rom[0x15610 + wi.Ordinal] = (byte)(w.Length << 4); if (levelDataPointer >= 0xFC000) return false; } } return true; }
public static void EditWorld(WorldInfo wi) { if (editorTable.ContainsKey(wi.WorldGuid)) { editorTable[wi.WorldGuid].Activate(); return; } World w = new World(); if (!w.Load(wi)) { w.New(wi); } WorldEditor we = new WorldEditor(); we.MdiParent = MainWindow; we.EditWorld(w); we.FormClosed += new FormClosedEventHandler(le_FormClosed); we.Activated += new EventHandler(le_Activated); ActiveEditor = we; editorTable.Add(wi.WorldGuid, we); MainWindow.HideProjectview(); }