Example #1
0
        private void UpdateJAL(byte[] file, uint jalCmd, int position)
        {
            uint jalImmediate = ASM.GetJalImmediate(jalCmd);
            uint fullAddress  = jalImmediate + 0x80000000;

            // Convert to new address.
            uint offset     = (uint)(fullAddress - _BASERAM);
            uint newAddress = (uint)(_baseRam + RomFile.CurrentFileOffset + offset);

            uint newJal = ASM.BuildNewJalCommand(newAddress);

            byte[] JalArray = BitConverter.GetBytes(newJal);

            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(JalArray);
            }

            if ((jalImmediate >= (_BASERAM - 0x80000000)) && (jalImmediate <= (_upperRAM - 0x80000000)))
            {
                file[position]     = JalArray[0];
                file[position + 1] = JalArray[1];
                file[position + 2] = JalArray[2];
                file[position + 3] = JalArray[3];
            }
        }