Exemplo n.º 1
0
        private void UpdateItemLinkedList()
        {
            int dist = itemData.DataMoveDist;

            var pointerToData = Expander.pointers.ItemData.AsPRom(level); // Offset of program pointer to first item
            var itemPointer   = new pCpu(newRomData, pointerToData);      // Address of first item
            var dataOffset    = itemPointer.AsPRom(level);                // Offset of first item

            bool done = false;

            while (!done)
            {
                var  OffsetOfpNext = dataOffset + 1;
                pCpu pNext         = new pCpu(newRomData, OffsetOfpNext);

                done |= pNext.Value == 0xFFFF;
                if (!done)
                {
                    // Update pointer to next item to where item data will be moved to
                    pCpu updatedPNext = pNext + dist;
                    updatedPNext.Write(newRomData, OffsetOfpNext);
                    // Update dataOffset to point to next item
                    dataOffset = pNext.AsPRom(level);
                }
            }
        }
Exemplo n.º 2
0
        private void UpdatePointers(int moveIndex)
        {
            var move = moveQueue[moveIndex];

            // Update pointers
            int offsetDiff = move.pDest - move.pSource;

            for (int iPointer = 0; iPointer < move.ptableCount; iPointer++)
            {
                var pointerOffset = move.pPTable + 2 * iPointer;
                var pointerValue  = new pCpu(newRomData, (int)pointerOffset);
                pointerValue += offsetDiff;
                pointerValue.Write(newRomData, pointerOffset);
            }
        }
Exemplo n.º 3
0
        void enhanced_SetPtr(int bankOffset, pCpu location, pCpu value)
        {
            int offset = bankOffset + (location.Value & 0x3FFF);

            value.Write(enhancedRomData, offset);
        }