public void DrawTile(IOperand tile) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opTile); _liveQueue.Push(tile); }); }
public void SetU16(Core.Address addr) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opAddr); _liveQueue.Push(addr.Hi); _liveQueue.Push(addr.Lo); }); }
public void Write(Core.Address addr) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opPalettes); _liveQueue.Push(addr.Lo); _liveQueue.Push(addr.Hi); }); }
public void Write(Core.Address ramStart, U8 len) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opExecuteRom); _liveQueue.Push(ramStart.Lo); _liveQueue.Push(ramStart.Hi); _liveQueue.Push(len); }); }
public void Draw(params IOperand[] tile) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opTileArray); _liveQueue.Push((U8)tile.Length); for (var i = 0; i < tile.Length; i++) //using tile.length here so individual values can be pushed after this call { _liveQueue.Push(tile[i]); } }); //TODO: drawing tiles in a sequence can be done with a write() inline func, adding one at a time after //setting length already when the length is already known. If it isn't known, maybe a length-val-offset could be stored, //then the length tallied up during writes, then a done() inline func called that writes the length at the right offset o_O }
public void For(U8 frames) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opPause); _liveQueue.Push(frames); }); }
public void Call(Action action) { var offsetAddr = LabelFor(action).Offset(-1); _liveQueue.Write(Y, () => { _liveQueue.Push(_opCallSub); _liveQueue.Push(offsetAddr.Lo()); _liveQueue.Push(offsetAddr.Hi()); }); }
public void Draw(params U8[] tile) { _liveQueue.Write(Y, () => { _liveQueue.Push(_opTilesRLE); for (var i = 0; i < tile.Length; i++) //using tile.length here so individual values can be pushed after this call { _liveQueue.Push(tile[i]); } _liveQueue.Push(VRamQueue.Op.NOP); }); }