mirror of https://github.com/bsnes-emu/bsnes.git
31 lines
825 B
C++
31 lines
825 B
C++
auto V30MZ::repeat() -> uint8 {
|
|
for(auto prefix : prefixes) {
|
|
if(prefix == RepeatWhileZero) return prefix;
|
|
if(prefix == RepeatWhileNotZero) return prefix;
|
|
}
|
|
return {};
|
|
}
|
|
|
|
auto V30MZ::segment(uint16 segment) -> uint16 {
|
|
for(auto prefix : prefixes) {
|
|
if(prefix == SegmentOverrideES) return r.es;
|
|
if(prefix == SegmentOverrideCS) return r.cs;
|
|
if(prefix == SegmentOverrideSS) return r.ss;
|
|
if(prefix == SegmentOverrideDS) return r.ds;
|
|
}
|
|
return segment;
|
|
}
|
|
|
|
auto V30MZ::getAcc(Size size) -> uint32 {
|
|
if(size == Byte) return r.al;
|
|
if(size == Word) return r.ax;
|
|
if(size == Long) return r.dx << 16 | r.ax;
|
|
unreachable;
|
|
}
|
|
|
|
auto V30MZ::setAcc(Size size, uint32 data) -> void {
|
|
if(size == Byte) r.al = data;
|
|
if(size == Word) r.ax = data;
|
|
if(size == Long) r.ax = data, r.dx = data >> 16;
|
|
}
|