Exemplo n.º 1
0
        /// <summary>
        /// Bind a macro index to a position for the MME.
        /// </summary>
        /// <param name="state">Current GPU state</param>
        /// <param name="argument">Method call argument</param>
        public void BindMacro(GpuState state, int argument)
        {
            int macroBindingIndex = state.Get <int>(MethodOffset.MacroBindingIndex);

            _context.Fifo.BindMacro(macroBindingIndex++, argument);

            state.Write((int)MethodOffset.MacroBindingIndex, macroBindingIndex);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Send macro code/data to the MME.
        /// </summary>
        /// <param name="state">Current GPU state</param>
        /// <param name="argument">Method call argument</param>
        public void SendMacroCodeData(GpuState state, int argument)
        {
            int macroUploadAddress = state.Get <int>(MethodOffset.MacroUploadAddress);

            _context.Fifo.SendMacroCodeData(macroUploadAddress++, argument);

            state.Write((int)MethodOffset.MacroUploadAddress, macroUploadAddress);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Performs a GPU method call.
        /// </summary>
        /// <param name="state">Current GPU state</param>
        /// <param name="shadowState">Shadow GPU state</param>
        /// <param name="value">Call argument</param>
        private void Send(GpuState state, GpuState shadowState, int value)
        {
            // TODO: Figure out what TrackWithFilter does, compared to Track.
            if (_shadowCtrl == ShadowRamControl.Track ||
                _shadowCtrl == ShadowRamControl.TrackWithFilter)
            {
                shadowState.Write(_methAddr, value);
            }
            else if (_shadowCtrl == ShadowRamControl.Replay)
            {
                value = shadowState.Read(_methAddr);
            }

            MethodParams meth = new MethodParams(_methAddr, value);

            state.CallMethod(meth);

            _methAddr += _methIncr;
        }
Exemplo n.º 4
0
 private void FirmwareCall4(GpuState state, int argument)
 {
     state.Write(0xd00, 1);
 }