1 #ifndef VDPCMDENGINE_HH
2 #define VDPCMDENGINE_HH
16 class CommandController;
60 if (!currentCommand)
return;
61 currentCommand->
execute(time, *
this);
67 assert(this->time > time);
78 if (time >= statusChangeTime) {
97 if (!currentCommand) status &= 0x7F;
136 template<
typename Archive>
137 void serialize(Archive& ar,
unsigned version);
140 template <
template <
typename Mode>
class Command>
141 void createHEngines(
unsigned cmd);
142 void deleteHEngines(
unsigned cmd);
144 template <
template <
typename Mode,
typename LogOp>
class Command>
145 void createLEngines(
unsigned cmd,
VDPCmd* dummy);
146 void deleteLEngines(
unsigned cmd);
148 virtual void update(
const Setting& setting);
152 inline void nextAccessSlot(
int delta) {
155 inline AccessSlotCalculator getSlotCalculator()
const {
158 inline void nextAccessSlot(AccessSlotCalculator& calculator,
int delta) {
161 nextAccessSlot(delta);
165 time += calculator.getNext(delta);
167 assert(time == verify);
177 void reportVdpCommand();
185 RenderSettings& renderSettings;
189 const std::unique_ptr<BooleanSetting> cmdTraceSetting;
190 const std::unique_ptr<TclCallback> cmdInProgressCallback;
192 VDPCmd* commands[256][4];
193 VDPCmd* currentCommand;
225 unsigned SX, SY, DX, DY, NX, NY;
226 unsigned ASX, ADX, ANX;
250 const bool hasExtendedVRAM;
273 template<
typename,
typename>
friend struct PsetCmd;
274 template<
typename,
typename>
friend struct LineCmd;
275 template<
typename,
typename>
friend struct LmmvCmd;
276 template<
typename,
typename>
friend struct LmmmCmd;
277 template<
typename,
typename>
friend struct LmmcCmd;