Example #1
0
 public void PushDone()
 {
     Values[_indexReg].Set(_stopVal);
     WriteIndex.Set(_indexReg);
     _indexReg  = null;
     _isWriting = false;
     //Don't increment index, so this gets overwritten on next write
 }
Example #2
0
        public VWord this[IndexingRegister reg] {
            get {
                Temp[0].Set(_lo[reg]);
                Temp[1].Set(_hi[reg]);

                //TODO: fix these up: all Ref functions need versions that can accept VByte lists
                return(VWord.Ref(Temp[0], 2, Temp[0].Name));
            }
        }
Example #3
0
 public void PushStart(IndexingRegister indexReg)
 {
     _indexReg  = indexReg;
     _isWriting = true;
     if (_indexReg is RegisterX)
     {
         X.Set(WriteIndex);
     }
     else if (_indexReg is RegisterY)
     {
         Y.Set(WriteIndex);
     }
 }
Example #4
0
 public void PushOnce(IndexingRegister indexReg, U8 u8)
 {
     if (indexReg is RegisterX)
     {
         X.Set(WriteIndex);
     }
     else if (indexReg is RegisterY)
     {
         Y.Set(WriteIndex);
     }
     Values[indexReg].Set(u8);
     indexReg.Inc();
     Values[indexReg].Set(_stopVal);
     WriteIndex.Set(indexReg);
 }
Example #5
0
 public void Read(IndexingRegister indexReg, Action block)
 {
     if (_isReading || _isWriting)
     {
         throw new Exception("Queue is already reading or writing");
     }
     _isReading = true;
     _indexReg  = indexReg;
     if (indexReg is RegisterX)
     {
         X.Set(ReadIndex);
     }
     else if (indexReg is RegisterY)
     {
         Y.Set(ReadIndex);
     }
     block.Invoke();
     ReadIndex.Set(indexReg);
     _indexReg  = null;
     _isReading = false;
 }
Example #6
0
 public Gamepad this[IndexingRegister offset] => _gamepads[offset];
Example #7
0
 public void Unsafe_Pop(IndexingRegister indexReg) => indexReg.Inc();
Example #8
0
 public VByte Unsafe_Peek(IndexingRegister indexReg) => Values[indexReg];
Example #9
0
 public void GoTo(IndexingRegister reg) => GoTo_Indirect(this[reg]);