public Maps.GetLabelsResult GetLabels(BankID bankId, ushort address) { BankID mapped; return(SourceMaps.GetLabelsAt(bankId, address) ?? SourceMaps.GetLabelsAt(bankId.All, address) ?? SourceMaps.GetLabelsAt(BankID.Unpaged(), address) ?? SourceMaps.GetLabelsAt(mapped = Memory.GetMappedBank(address), address) ?? SourceMaps.GetLabelsAt(mapped.All, address)); }
public AddressDetails GetAddressDetails(BankID bankId, ushort address, ushort maxLabelDistance = 0x800) { // get address details of address by checking three levels: // specified bank + specified address // 'all' bank + specified address // bank currently paged in to specified address's slot + specified address _tempAddressDetails.Clear(); _tempAddressDetails.Add(SourceMaps.GetAddressDetails(bankId, address, maxLabelDistance)); if (bankId.Part != BankID.PartEnum.All) { _tempAddressDetails.Add(SourceMaps.GetAddressDetails(bankId.All, address, maxLabelDistance)); } if (bankId != BankID.Unpaged()) { _tempAddressDetails.Add(SourceMaps.GetAddressDetails(BankID.Unpaged(), address, maxLabelDistance)); } var curBank = Memory.GetMappedBank(address); if (bankId != curBank) { _tempAddressDetails.Add(SourceMaps.GetAddressDetails(curBank, address, maxLabelDistance)); } // now merge the details so move any Source and Label info present to the first entry for (var i = 1; i < _tempAddressDetails.Count; i++) { // shuffle up source info if (_tempAddressDetails[0].Source == null && _tempAddressDetails[i].Source != null) { _tempAddressDetails[0].Source = _tempAddressDetails[0].Source ?? _tempAddressDetails[i].Source; } // shuffle up labels & associated info if (_tempAddressDetails[0].Labels == null && _tempAddressDetails[i].Labels != null) { _tempAddressDetails[0].Labels = _tempAddressDetails[i].Labels; _tempAddressDetails[0].LabelledAddress = _tempAddressDetails[i].LabelledAddress; _tempAddressDetails[0].LabelledSource = _tempAddressDetails[i].LabelledSource; } } return(_tempAddressDetails[0]); }