public void getMapArea(int index, int group, int season, Program.GameTypes game) { //CC2D - map group //CC30 - map index //CD24 - map area //FF8D - area | 0x80, and later that & 0x7f - compression type? //FF8B - area int indexBase = 0x10000 + (game == Program.GameTypes.Ages ? 0x0F9C : 0x0C84); //4:6d7a - start of procedure gb.BufferLocation = 0x10000 + (game == Program.GameTypes.Ages ? 0x12D4 : 0x133C) + (group * 2); //6da1 gb.BufferLocation = 0x10000 + gb.ReadByte() + ((gb.ReadByte() - 0x40) * 0x100) + index; byte a = gb.ReadByte(); byte area = (byte)(a & 0x7F); gb.BufferLocation = indexBase + area * 8; if (game == Program.GameTypes.Seasons) { if (gb.ReadByte() == 0xFF) { gb.BufferLocation = 0x10000 + gb.ReadByte() + ((gb.ReadByte() - 0x40) * 0x100); gb.BufferLocation += season * 8; } else { gb.BufferLocation--; } } AreaLoader.Area ar = new AreaLoader.Area(); ar = areaLoader.loadArea(gb.BufferLocation, area, game); room.area = ar; }
private void nArea_ValueChanged(object sender, EventArgs e) { int indexBase = 0x10000 + (game == Program.GameTypes.Ages ? 0x0F9C : 0x0C84); if (gb.ReadByte(indexBase) == 0xFF) { indexBase = 0x10000 + gb.ReadByte() + ((gb.ReadByte() - 0x40) * 0x100); } AreaLoader.Area a = areaLoader.loadArea(indexBase + (int)nArea.Value * 8, (int)nArea.Value, game); nDungeon.Value = (byte)(a.flags1 & 0xF); int flag = a.flags2; checkBox1.Checked = (flag & 1) != 0; checkBox2.Checked = (flag & 2) != 0; checkBox3.Checked = (flag & 4) != 0; checkBox4.Checked = (flag & 8) != 0; checkBox5.Checked = (flag & 16) != 0; checkBox7.Checked = (flag & 32) != 0; checkBox8.Checked = (flag & 64) != 0; checkBox9.Checked = (flag & 128) != 0; }