// functions public void Disassemble(int offset) { byte temp = rom[offset++]; cloneAmount = (byte)(temp & 0x0F); engageType = (byte)((temp & 0x30) >> 4); temp = rom[offset++]; speedPlus = (byte)(temp & 0x07); // b2b3 = (temp & 0x08) == 0x08; b2b4 = (temp & 0x10) == 0x10; b2b5 = (temp & 0x20) == 0x20; b2b6 = (temp & 0x40) == 0x40; b2b7 = (temp & 0x80) == 0x80; // temp = rom[offset++]; b3b0 = (temp & 0x01) == 0x01; b3b1 = (temp & 0x02) == 0x02; b3b2 = (temp & 0x04) == 0x04; b3b3 = (temp & 0x08) == 0x08; b3b4 = (temp & 0x10) == 0x10; b3b5 = (temp & 0x20) == 0x20; b3b6 = (temp & 0x40) == 0x40; b3b7 = (temp & 0x80) == 0x80; // b4b0 = (rom[offset] & 0x01) == 0x01; b4b1 = (rom[offset] & 0x02) == 0x02; // npcID = (ushort)((Bits.GetShort(rom, offset++) & 0x0FFF) >> 2); // movement = (ushort)((Bits.GetShort(rom, offset++) & 0x3FF0) >> 4); // b7b6 = (rom[offset] & 0x40) == 0x40; b7b7 = (rom[offset++] & 0x80) == 0x80; // ushort tempShort = Bits.GetShort(rom, offset++); if (engageType == 2) { eventORpack = (ushort)(tempShort & 0xFF); } else { eventORpack = (ushort)(tempShort & 0xFFF); } // temp = rom[offset++]; if (engageType == 2) { afterBattle = (byte)((temp >> 1) & 0x07); } engageTrigger = Math.Min((byte)((temp & 0xF0) >> 4), (byte)12); // temp = rom[offset++]; if (engageType == 0) { propertyA = (byte)(temp & 0x07); // npc id+ propertyB = (byte)((temp & 0xE0) >> 5); // event id+ propertyC = (byte)((temp & 0x18) >> 3); } else if (engageType == 1) { propertyA = temp; // $70A7 } else if (engageType == 2) { propertyA = (byte)(temp & 0x0F); // movement+ propertyB = (byte)((temp & 0xF0) >> 4); // pack+ } // temp = rom[offset++]; x = (byte)(temp & 0x7F); xb7 = (temp & 0x80) == 0x80; temp = rom[offset++]; y = (byte)(temp & 0x7F); yb7 = (temp & 0x80) == 0x80; temp = rom[offset++]; z = (byte)(temp & 0x1F); f = (byte)((temp & 0xF0) >> 5); // for (int i = 0; i < cloneAmount; i++) { Clone tClone = new Clone(); tClone.Disassemble(offset, engageType); Clones.Add(tClone); offset += 4; } }