From 535fffdc46b6e603867688185728ee61d62bfbf7 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 13 Apr 2019 21:35:29 -0230 Subject: [PATCH] More conversions from 'enum' to 'enum class' and 'constexpr'. --- src/common/PKeyboardHandler.cxx | 12 +- src/common/StateManager.hxx | 4 - src/common/tv_filters/AtariNTSC.hxx | 9 +- src/common/tv_filters/NTSCFilter.cxx | 40 +- src/common/tv_filters/NTSCFilter.hxx | 14 +- src/debugger/DiStella.cxx | 608 +++++++++++++-------------- src/debugger/DiStella.hxx | 40 +- src/emucore/TIASurface.cxx | 2 +- src/gui/StellaSettingsDialog.cxx | 10 +- src/gui/VideoDialog.cxx | 30 +- 10 files changed, 381 insertions(+), 388 deletions(-) diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index efb7b8d67..a687862bd 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -415,27 +415,27 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool break; case KBDK_1: // Alt-1 turns off NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_OFF); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::OFF); break; case KBDK_2: // Alt-2 turns on 'rgb' NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_RGB); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::RGB); break; case KBDK_3: // Alt-3 turns on 'svideo' NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_SVIDEO); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::SVIDEO); break; case KBDK_4: // Alt-4 turns on 'composite' NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_COMPOSITE); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::COMPOSITE); break; case KBDK_5: // Alt-5 turns on 'bad' NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_BAD); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::BAD); break; case KBDK_6: // Alt-6 turns on 'custom' NTSC filtering - myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::PRESET_CUSTOM); + myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::CUSTOM); break; case KBDK_7: // Alt-7 changes scanline intensity for NTSC filtering diff --git a/src/common/StateManager.hxx b/src/common/StateManager.hxx index b351ecd57..570216746 100644 --- a/src/common/StateManager.hxx +++ b/src/common/StateManager.hxx @@ -152,10 +152,6 @@ class StateManager RewindManager& rewindManager() const { return *myRewindManager; } private: - enum { - kVersion = 001 - }; - // The parent OSystem object OSystem& myOSystem; diff --git a/src/common/tv_filters/AtariNTSC.hxx b/src/common/tv_filters/AtariNTSC.hxx index 15248eafe..bf5afd7d8 100644 --- a/src/common/tv_filters/AtariNTSC.hxx +++ b/src/common/tv_filters/AtariNTSC.hxx @@ -48,10 +48,7 @@ class AtariNTSC { public: - enum { - palette_size = 256, - entry_size = 2 * 14, - }; + static constexpr uInt32 palette_size = 256, entry_size = 2 * 14; // By default, threading is turned off AtariNTSC() { enableThreading(false); } @@ -132,7 +129,7 @@ class AtariNTSC uInt32 getRGBPhosphor(const uInt32 c, const uInt32 cp) const; private: - enum { + static constexpr Int32 PIXEL_in_chunk = 2, // number of input pixels read per chunk PIXEL_out_chunk = 7, // number of output pixels generated per chunk NTSC_black = 0, // palette index for black @@ -155,7 +152,7 @@ class AtariNTSC std_decoder_hue = 0, ext_decoder_hue = std_decoder_hue + 15 - }; + ; #define artifacts_mid 1.5f #define artifacts_max 2.5f diff --git a/src/common/tv_filters/NTSCFilter.cxx b/src/common/tv_filters/NTSCFilter.cxx index cb5341a83..ead46a947 100644 --- a/src/common/tv_filters/NTSCFilter.cxx +++ b/src/common/tv_filters/NTSCFilter.cxx @@ -26,7 +26,7 @@ constexpr uInt32 scaleTo100(double x) { return uInt32(50*(x+1.0)); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NTSCFilter::NTSCFilter() : mySetup(AtariNTSC::TV_Composite), - myPreset(PRESET_OFF), + myPreset(Preset::OFF), myCurrentAdjustable(0) { } @@ -38,23 +38,23 @@ string NTSCFilter::setPreset(Preset preset) string msg = "disabled"; switch(myPreset) { - case PRESET_COMPOSITE: + case Preset::COMPOSITE: mySetup = AtariNTSC::TV_Composite; msg = "COMPOSITE"; break; - case PRESET_SVIDEO: + case Preset::SVIDEO: mySetup = AtariNTSC::TV_SVideo; msg = "S-VIDEO"; break; - case PRESET_RGB: + case Preset::RGB: mySetup = AtariNTSC::TV_RGB; msg = "RGB"; break; - case PRESET_BAD: + case Preset::BAD: mySetup = AtariNTSC::TV_Bad; msg = "BAD ADJUST"; break; - case PRESET_CUSTOM: + case Preset::CUSTOM: mySetup = myCustomSetup; msg = "CUSTOM"; break; @@ -70,11 +70,11 @@ string NTSCFilter::getPreset() const { switch(myPreset) { - case PRESET_COMPOSITE: return "COMPOSITE"; - case PRESET_SVIDEO: return "S-VIDEO"; - case PRESET_RGB: return "RGB"; - case PRESET_BAD: return "BAD ADJUST"; - case PRESET_CUSTOM: return "CUSTOM"; + case Preset::COMPOSITE: return "COMPOSITE"; + case Preset::SVIDEO: return "S-VIDEO"; + case Preset::RGB: return "RGB"; + case Preset::BAD: return "BAD ADJUST"; + case Preset::CUSTOM: return "CUSTOM"; default: return "Disabled"; } } @@ -82,7 +82,7 @@ string NTSCFilter::getPreset() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string NTSCFilter::setNextAdjustable() { - if(myPreset != PRESET_CUSTOM) + if(myPreset != Preset::CUSTOM) return "'Custom' TV mode not selected"; myCurrentAdjustable = (myCurrentAdjustable + 1) % 10; @@ -96,7 +96,7 @@ string NTSCFilter::setNextAdjustable() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string NTSCFilter::setPreviousAdjustable() { - if(myPreset != PRESET_CUSTOM) + if(myPreset != Preset::CUSTOM) return "'Custom' TV mode not selected"; if(myCurrentAdjustable == 0) myCurrentAdjustable = 9; @@ -111,7 +111,7 @@ string NTSCFilter::setPreviousAdjustable() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string NTSCFilter::increaseAdjustable() { - if(myPreset != PRESET_CUSTOM) + if(myPreset != Preset::CUSTOM) return "'Custom' TV mode not selected"; uInt32 newval = scaleTo100(*ourCustomAdjustables[myCurrentAdjustable].value); @@ -129,7 +129,7 @@ string NTSCFilter::increaseAdjustable() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string NTSCFilter::decreaseAdjustable() { - if(myPreset != PRESET_CUSTOM) + if(myPreset != Preset::CUSTOM) return "'Custom' TV mode not selected"; uInt32 newval = scaleTo100(*ourCustomAdjustables[myCurrentAdjustable].value); @@ -182,15 +182,15 @@ void NTSCFilter::getAdjustables(Adjustable& adjustable, Preset preset) const { switch(preset) { - case PRESET_COMPOSITE: + case Preset::COMPOSITE: convertToAdjustable(adjustable, AtariNTSC::TV_Composite); break; - case PRESET_SVIDEO: + case Preset::SVIDEO: convertToAdjustable(adjustable, AtariNTSC::TV_SVideo); break; - case PRESET_RGB: + case Preset::RGB: convertToAdjustable(adjustable, AtariNTSC::TV_RGB); break; - case PRESET_BAD: + case Preset::BAD: convertToAdjustable(adjustable, AtariNTSC::TV_Bad); break; - case PRESET_CUSTOM: + case Preset::CUSTOM: convertToAdjustable(adjustable, myCustomSetup); break; default: break; diff --git a/src/common/tv_filters/NTSCFilter.hxx b/src/common/tv_filters/NTSCFilter.hxx index 954a7d183..a08ff8a28 100644 --- a/src/common/tv_filters/NTSCFilter.hxx +++ b/src/common/tv_filters/NTSCFilter.hxx @@ -38,13 +38,13 @@ class NTSCFilter public: // Set one of the available preset adjustments (Composite, S-Video, RGB, etc) - enum Preset { - PRESET_OFF, - PRESET_COMPOSITE, - PRESET_SVIDEO, - PRESET_RGB, - PRESET_BAD, - PRESET_CUSTOM + enum class Preset { + OFF, + COMPOSITE, + SVIDEO, + RGB, + BAD, + CUSTOM }; /* Normally used in conjunction with custom mode, contains all diff --git a/src/debugger/DiStella.cxx b/src/debugger/DiStella.cxx index f068d515b..8a331a5df 100644 --- a/src/debugger/DiStella.cxx +++ b/src/debugger/DiStella.cxx @@ -230,12 +230,12 @@ FIX_LAST: // Add operand(s) for PC values outside the app data range if (myPC >= myAppData.end) { switch (addrMode) { - case ABSOLUTE: - case ABSOLUTE_X: - case ABSOLUTE_Y: - case INDIRECT_X: - case INDIRECT_Y: - case ABS_INDIRECT: + case AddressingMode::ABSOLUTE: + case AddressingMode::ABSOLUTE_X: + case AddressingMode::ABSOLUTE_Y: + case AddressingMode::INDIRECT_X: + case AddressingMode::INDIRECT_Y: + case AddressingMode::ABS_INDIRECT: { if (pass == 3) { /* Line information is already printed; append .byte since last @@ -263,11 +263,11 @@ FIX_LAST: return; } - case ZERO_PAGE: - case IMMEDIATE: - case ZERO_PAGE_X: - case ZERO_PAGE_Y: - case RELATIVE: + case AddressingMode::ZERO_PAGE: + case AddressingMode::IMMEDIATE: + case AddressingMode::ZERO_PAGE_X: + case AddressingMode::ZERO_PAGE_Y: + case AddressingMode::RELATIVE: { if (pass == 3) { /* Line information is already printed, but we can remove the @@ -291,14 +291,14 @@ FIX_LAST: ad = d1 = 0; // not WSYNC by default! /* Version 2.1 added the extensions to mnemonics */ switch (addrMode) { - case ACCUMULATOR: + case AddressingMode::ACCUMULATOR: { if (pass == 3 && mySettings.aFlag) nextLine << " A"; break; } - case ABSOLUTE: + case AddressingMode::ABSOLUTE: { ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; labelFound = mark(ad, CartDebug::REFERENCED); @@ -328,7 +328,7 @@ FIX_LAST: break; } - case ZERO_PAGE: + case AddressingMode::ZERO_PAGE: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); @@ -340,7 +340,7 @@ FIX_LAST: break; } - case IMMEDIATE: + case AddressingMode::IMMEDIATE: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { @@ -350,7 +350,7 @@ FIX_LAST: break; } - case ABSOLUTE_X: + case AddressingMode::ABSOLUTE_X: { ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; labelFound = mark(ad, CartDebug::REFERENCED); @@ -389,7 +389,7 @@ FIX_LAST: break; } - case ABSOLUTE_Y: + case AddressingMode::ABSOLUTE_Y: { ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; labelFound = mark(ad, CartDebug::REFERENCED); @@ -428,7 +428,7 @@ FIX_LAST: break; } - case INDIRECT_X: + case AddressingMode::INDIRECT_X: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { @@ -441,7 +441,7 @@ FIX_LAST: break; } - case INDIRECT_Y: + case AddressingMode::INDIRECT_Y: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { @@ -454,7 +454,7 @@ FIX_LAST: break; } - case ZERO_PAGE_X: + case AddressingMode::ZERO_PAGE_X: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); @@ -467,7 +467,7 @@ FIX_LAST: break; } - case ZERO_PAGE_Y: + case AddressingMode::ZERO_PAGE_Y: { d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); @@ -480,7 +480,7 @@ FIX_LAST: break; } - case RELATIVE: + case AddressingMode::RELATIVE: { // SA - 04-06-2010: there seemed to be a bug in distella, // where wraparound occurred on a 32-bit int, and subsequent @@ -501,7 +501,7 @@ FIX_LAST: break; } - case ABS_INDIRECT: + case AddressingMode::ABS_INDIRECT: { ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; labelFound = mark(ad, CartDebug::REFERENCED); @@ -542,10 +542,10 @@ FIX_LAST: // A complete line of disassembly (text, cycle count, and bytes) myDisasmBuf << nextLine.str() << "'" << ";" << std::dec << int(ourLookup[opcode].cycles) - << (addrMode == RELATIVE ? (ad & 0xf00) != ((myPC + myOffset) & 0xf00) ? "/3!" : "/3 " : " "); + << (addrMode == AddressingMode::RELATIVE ? (ad & 0xf00) != ((myPC + myOffset) & 0xf00) ? "/3!" : "/3 " : " "); if ((opcode == 0x40 || opcode == 0x60 || opcode == 0x4c || opcode == 0x00 // code block end || checkBit(myPC, CartDebug::REFERENCED) // referenced address - || (ourLookup[opcode].rw_mode == WRITE && d1 == WSYNC)) // strobe WSYNC + || (ourLookup[opcode].rw_mode == RWMode::WRITE && d1 == WSYNC)) // strobe WSYNC && cycles > 0) { // output cycles for previous code block myDisasmBuf << "'= " << std::setw(3) << std::setfill(' ') << std::dec << cycles; @@ -701,20 +701,20 @@ void DiStella::disasmFromAddress(uInt32 distart) // Add operand(s) for PC values outside the app data range if (myPC >= myAppData.end) { switch (addrMode) { - case ABSOLUTE: - case ABSOLUTE_X: - case ABSOLUTE_Y: - case INDIRECT_X: - case INDIRECT_Y: - case ABS_INDIRECT: + case AddressingMode::ABSOLUTE: + case AddressingMode::ABSOLUTE_X: + case AddressingMode::ABSOLUTE_Y: + case AddressingMode::INDIRECT_X: + case AddressingMode::INDIRECT_Y: + case AddressingMode::ABS_INDIRECT: myPCEnd = myAppData.end + myOffset; return; - case ZERO_PAGE: - case IMMEDIATE: - case ZERO_PAGE_X: - case ZERO_PAGE_Y: - case RELATIVE: + case AddressingMode::ZERO_PAGE: + case AddressingMode::IMMEDIATE: + case AddressingMode::ZERO_PAGE_X: + case AddressingMode::ZERO_PAGE_Y: + case AddressingMode::RELATIVE: if (myPC > myAppData.end) { ++myPC; myPCEnd = myAppData.end + myOffset; @@ -729,11 +729,11 @@ void DiStella::disasmFromAddress(uInt32 distart) // Add operand(s) switch (addrMode) { - case ABSOLUTE: + case AddressingMode::ABSOLUTE: ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; mark(ad, CartDebug::REFERENCED); // handle JMP/JSR - if (ourLookup[opcode].source == M_ADDR) { + if (ourLookup[opcode].source == AccessMode::ADDR) { // do NOT use flags set by debugger, else known CODE will not analyzed statically. if (!checkBit(ad & myAppData.end, CartDebug::CODE, false)) { if (ad > 0xfff) @@ -744,44 +744,44 @@ void DiStella::disasmFromAddress(uInt32 distart) mark(ad, CartDebug::DATA); break; - case ZERO_PAGE: + case AddressingMode::ZERO_PAGE: d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; - case IMMEDIATE: + case AddressingMode::IMMEDIATE: ++myPC; break; - case ABSOLUTE_X: + case AddressingMode::ABSOLUTE_X: ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; mark(ad, CartDebug::REFERENCED); break; - case ABSOLUTE_Y: + case AddressingMode::ABSOLUTE_Y: ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; mark(ad, CartDebug::REFERENCED); break; - case INDIRECT_X: + case AddressingMode::INDIRECT_X: ++myPC; break; - case INDIRECT_Y: + case AddressingMode::INDIRECT_Y: ++myPC; break; - case ZERO_PAGE_X: + case AddressingMode::ZERO_PAGE_X: d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; - case ZERO_PAGE_Y: + case AddressingMode::ZERO_PAGE_Y: d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; - case RELATIVE: + case AddressingMode::RELATIVE: // SA - 04-06-2010: there seemed to be a bug in distella, // where wraparound occurred on a 32-bit int, and subsequent // indexing into the labels array caused a crash @@ -795,7 +795,7 @@ void DiStella::disasmFromAddress(uInt32 distart) } break; - case ABS_INDIRECT: + case AddressingMode::ABS_INDIRECT: ad = Debugger::debugger().dpeek(myPC + myOffset); myPC += 2; mark(ad, CartDebug::REFERENCED); break; @@ -1134,327 +1134,327 @@ DiStella::Settings DiStella::settings = { const DiStella::Instruction_tag DiStella::ourLookup[256] = { /**** Positive ****/ - /* 00 */{"brk", IMPLIED, M_NONE, NONE, 7, 1}, /* Pseudo Absolute */ - /* 01 */{"ora", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect,X) */ - /* 02 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 03 */{"SLO", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* 00 */{"brk", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 7, 1}, /* Pseudo Absolute */ + /* 01 */{"ora", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect,X) */ + /* 02 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 03 */{"SLO", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* 04 */{"NOP", ZERO_PAGE, M_NONE, NONE, 3, 2}, - /* 05 */{"ora", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* 06 */{"asl", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* 07 */{"SLO", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* 04 */{"NOP", AddressingMode::ZERO_PAGE, AccessMode::NONE, RWMode::NONE, 3, 2}, + /* 05 */{"ora", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* 06 */{"asl", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* 07 */{"SLO", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* 08 */{"php", IMPLIED, M_SR, NONE, 3, 1}, - /* 09 */{"ora", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* 0a */{"asl", ACCUMULATOR, M_AC, WRITE, 2, 1}, /* Accumulator */ - /* 0b */{"ANC", IMMEDIATE, M_ACIM, READ, 2, 2}, + /* 08 */{"php", AddressingMode::IMPLIED, AccessMode::SR, RWMode::NONE, 3, 1}, + /* 09 */{"ora", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* 0a */{"asl", AddressingMode::ACCUMULATOR, AccessMode::AC, RWMode::WRITE, 2, 1}, /* Accumulator */ + /* 0b */{"ANC", AddressingMode::IMMEDIATE, AccessMode::ACIM, RWMode::READ, 2, 2}, - /* 0c */{"NOP", ABSOLUTE, M_NONE, NONE, 4, 3}, - /* 0d */{"ora", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* 0e */{"asl", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* 0f */{"SLO", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* 0c */{"NOP", AddressingMode::ABSOLUTE, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* 0d */{"ora", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* 0e */{"asl", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* 0f */{"SLO", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* 10 */{"bpl", RELATIVE, M_REL, READ, 2, 2}, - /* 11 */{"ora", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* 12 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 13 */{"SLO", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* 10 */{"bpl", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* 11 */{"ora", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* 12 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 13 */{"SLO", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* 14 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* 15 */{"ora", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* 16 */{"asl", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* 17 */{"SLO", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* 14 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* 15 */{"ora", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* 16 */{"asl", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* 17 */{"SLO", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* 18 */{"clc", IMPLIED, M_NONE, NONE, 2, 1}, - /* 19 */{"ora", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* 1a */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* 1b */{"SLO", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* 18 */{"clc", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 19 */{"ora", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* 1a */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 1b */{"SLO", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* 1c */{"NOP", ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* 1d */{"ora", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* 1e */{"asl", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* 1f */{"SLO", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, + /* 1c */{"NOP", AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* 1d */{"ora", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* 1e */{"asl", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* 1f */{"SLO", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, - /* 20 */{"jsr", ABSOLUTE, M_ADDR, READ, 6, 3}, - /* 21 */{"and", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect ,X) */ - /* 22 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 23 */{"RLA", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* 20 */{"jsr", AddressingMode::ABSOLUTE, AccessMode::ADDR, RWMode::READ, 6, 3}, + /* 21 */{"and", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect ,X) */ + /* 22 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 23 */{"RLA", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* 24 */{"bit", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* 25 */{"and", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* 26 */{"rol", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* 27 */{"RLA", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* 24 */{"bit", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* 25 */{"and", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* 26 */{"rol", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* 27 */{"RLA", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* 28 */{"plp", IMPLIED, M_NONE, NONE, 4, 1}, - /* 29 */{"and", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* 2a */{"rol", ACCUMULATOR, M_AC, WRITE, 2, 1}, /* Accumulator */ - /* 2b */{"ANC", IMMEDIATE, M_ACIM, READ, 2, 2}, + /* 28 */{"plp", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 4, 1}, + /* 29 */{"and", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* 2a */{"rol", AddressingMode::ACCUMULATOR, AccessMode::AC, RWMode::WRITE, 2, 1}, /* Accumulator */ + /* 2b */{"ANC", AddressingMode::IMMEDIATE, AccessMode::ACIM, RWMode::READ, 2, 2}, - /* 2c */{"bit", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* 2d */{"and", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* 2e */{"rol", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* 2f */{"RLA", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* 2c */{"bit", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* 2d */{"and", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* 2e */{"rol", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* 2f */{"RLA", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* 30 */{"bmi", RELATIVE, M_REL, READ, 2, 2}, - /* 31 */{"and", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* 32 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 33 */{"RLA", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* 30 */{"bmi", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* 31 */{"and", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* 32 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 33 */{"RLA", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* 34 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* 35 */{"and", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* 36 */{"rol", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* 37 */{"RLA", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* 34 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* 35 */{"and", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* 36 */{"rol", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* 37 */{"RLA", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* 38 */{"sec", IMPLIED, M_NONE, NONE, 2, 1}, - /* 39 */{"and", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* 3a */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* 3b */{"RLA", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* 38 */{"sec", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 39 */{"and", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* 3a */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 3b */{"RLA", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* 3c */{"NOP", ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* 3d */{"and", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* 3e */{"rol", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* 3f */{"RLA", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, + /* 3c */{"NOP", AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* 3d */{"and", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* 3e */{"rol", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* 3f */{"RLA", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, - /* 40 */{"rti", IMPLIED, M_NONE, NONE, 6, 1}, - /* 41 */{"eor", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect,X) */ - /* 42 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 43 */{"SRE", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* 40 */{"rti", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 6, 1}, + /* 41 */{"eor", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect,X) */ + /* 42 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 43 */{"SRE", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* 44 */{"NOP", ZERO_PAGE, M_NONE, NONE, 3, 2}, - /* 45 */{"eor", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* 46 */{"lsr", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* 47 */{"SRE", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* 44 */{"NOP", AddressingMode::ZERO_PAGE, AccessMode::NONE, RWMode::NONE, 3, 2}, + /* 45 */{"eor", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* 46 */{"lsr", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* 47 */{"SRE", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* 48 */{"pha", IMPLIED, M_AC, NONE, 3, 1}, - /* 49 */{"eor", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* 4a */{"lsr", ACCUMULATOR, M_AC, WRITE, 2, 1}, /* Accumulator */ - /* 4b */{"ASR", IMMEDIATE, M_ACIM, READ, 2, 2}, /* (AC & IMM) >>1 */ + /* 48 */{"pha", AddressingMode::IMPLIED, AccessMode::AC, RWMode::NONE, 3, 1}, + /* 49 */{"eor", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* 4a */{"lsr", AddressingMode::ACCUMULATOR, AccessMode::AC, RWMode::WRITE, 2, 1}, /* Accumulator */ + /* 4b */{"ASR", AddressingMode::IMMEDIATE, AccessMode::ACIM, RWMode::READ, 2, 2}, /* (AC & IMM) >>1 */ - /* 4c */{"jmp", ABSOLUTE, M_ADDR, READ, 3, 3}, /* Absolute */ - /* 4d */{"eor", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* 4e */{"lsr", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* 4f */{"SRE", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* 4c */{"jmp", AddressingMode::ABSOLUTE, AccessMode::ADDR, RWMode::READ, 3, 3}, /* Absolute */ + /* 4d */{"eor", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* 4e */{"lsr", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* 4f */{"SRE", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* 50 */{"bvc", RELATIVE, M_REL, READ, 2, 2}, - /* 51 */{"eor", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* 52 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 53 */{"SRE", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* 50 */{"bvc", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* 51 */{"eor", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* 52 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 53 */{"SRE", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* 54 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* 55 */{"eor", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* 56 */{"lsr", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* 57 */{"SRE", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* 54 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* 55 */{"eor", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* 56 */{"lsr", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* 57 */{"SRE", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* 58 */{"cli", IMPLIED, M_NONE, NONE, 2, 1}, - /* 59 */{"eor", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* 5a */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* 5b */{"SRE", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* 58 */{"cli", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 59 */{"eor", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* 5a */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 5b */{"SRE", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* 5c */{"NOP", ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* 5d */{"eor", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* 5e */{"lsr", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* 5f */{"SRE", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, + /* 5c */{"NOP", AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* 5d */{"eor", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* 5e */{"lsr", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* 5f */{"SRE", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, - /* 60 */{"rts", IMPLIED, M_NONE, NONE, 6, 1}, - /* 61 */{"adc", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect,X) */ - /* 62 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* 63 */{"RRA", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* 60 */{"rts", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 6, 1}, + /* 61 */{"adc", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect,X) */ + /* 62 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* 63 */{"RRA", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* 64 */{"NOP", ZERO_PAGE, M_NONE, NONE, 3, 2}, - /* 65 */{"adc", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* 66 */{"ror", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* 67 */{"RRA", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* 64 */{"NOP", AddressingMode::ZERO_PAGE, AccessMode::NONE, RWMode::NONE, 3, 2}, + /* 65 */{"adc", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* 66 */{"ror", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* 67 */{"RRA", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* 68 */{"pla", IMPLIED, M_NONE, NONE, 4, 1}, - /* 69 */{"adc", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* 6a */{"ror", ACCUMULATOR, M_AC, WRITE, 2, 1}, /* Accumulator */ - /* 6b */{"ARR", IMMEDIATE, M_ACIM, READ, 2, 2}, /* ARR isn't typo */ + /* 68 */{"pla", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 4, 1}, + /* 69 */{"adc", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* 6a */{"ror", AddressingMode::ACCUMULATOR, AccessMode::AC, RWMode::WRITE, 2, 1}, /* Accumulator */ + /* 6b */{"ARR", AddressingMode::IMMEDIATE, AccessMode::ACIM, RWMode::READ, 2, 2}, /* ARR isn't typo */ - /* 6c */{"jmp", ABS_INDIRECT,M_AIND, READ, 5, 3}, /* Indirect */ - /* 6d */{"adc", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* 6e */{"ror", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* 6f */{"RRA", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* 6c */{"jmp", AddressingMode::ABS_INDIRECT,AccessMode::AIND, RWMode::READ, 5, 3}, /* Indirect */ + /* 6d */{"adc", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* 6e */{"ror", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* 6f */{"RRA", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* 70 */{"bvs", RELATIVE, M_REL, READ, 2, 2}, - /* 71 */{"adc", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* 72 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT relative? */ - /* 73 */{"RRA", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* 70 */{"bvs", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* 71 */{"adc", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* 72 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT relative? */ + /* 73 */{"RRA", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* 74 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* 75 */{"adc", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* 76 */{"ror", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* 77 */{"RRA", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* 74 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* 75 */{"adc", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* 76 */{"ror", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* 77 */{"RRA", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* 78 */{"sei", IMPLIED, M_NONE, NONE, 2, 1}, - /* 79 */{"adc", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* 7a */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* 7b */{"RRA", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* 78 */{"sei", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 79 */{"adc", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* 7a */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* 7b */{"RRA", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* 7c */{"NOP", ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* 7d */{"adc", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* 7e */{"ror", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* 7f */{"RRA", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, + /* 7c */{"NOP", AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* 7d */{"adc", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* 7e */{"ror", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* 7f */{"RRA", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /**** Negative ****/ - /* 80 */{"NOP", IMMEDIATE, M_NONE, NONE, 2, 2}, - /* 81 */{"sta", INDIRECT_X, M_AC, WRITE, 6, 2}, /* (Indirect,X) */ - /* 82 */{"NOP", IMMEDIATE, M_NONE, NONE, 2, 2}, - /* 83 */{"SAX", INDIRECT_X, M_ANXR, WRITE, 6, 2}, + /* 80 */{"NOP", AddressingMode::IMMEDIATE, AccessMode::NONE, RWMode::NONE, 2, 2}, + /* 81 */{"sta", AddressingMode::INDIRECT_X, AccessMode::AC, RWMode::WRITE, 6, 2}, /* (Indirect,X) */ + /* 82 */{"NOP", AddressingMode::IMMEDIATE, AccessMode::NONE, RWMode::NONE, 2, 2}, + /* 83 */{"SAX", AddressingMode::INDIRECT_X, AccessMode::ANXR, RWMode::WRITE, 6, 2}, - /* 84 */{"sty", ZERO_PAGE, M_YR, WRITE, 3, 2}, /* Zeropage */ - /* 85 */{"sta", ZERO_PAGE, M_AC, WRITE, 3, 2}, /* Zeropage */ - /* 86 */{"stx", ZERO_PAGE, M_XR, WRITE, 3, 2}, /* Zeropage */ - /* 87 */{"SAX", ZERO_PAGE, M_ANXR, WRITE, 3, 2}, + /* 84 */{"sty", AddressingMode::ZERO_PAGE, AccessMode::YR, RWMode::WRITE, 3, 2}, /* Zeropage */ + /* 85 */{"sta", AddressingMode::ZERO_PAGE, AccessMode::AC, RWMode::WRITE, 3, 2}, /* Zeropage */ + /* 86 */{"stx", AddressingMode::ZERO_PAGE, AccessMode::XR, RWMode::WRITE, 3, 2}, /* Zeropage */ + /* 87 */{"SAX", AddressingMode::ZERO_PAGE, AccessMode::ANXR, RWMode::WRITE, 3, 2}, - /* 88 */{"dey", IMPLIED, M_YR, NONE, 2, 1}, - /* 89 */{"NOP", IMMEDIATE, M_NONE, NONE, 2, 2}, - /* 8a */{"txa", IMPLIED, M_XR, NONE, 2, 1}, + /* 88 */{"dey", AddressingMode::IMPLIED, AccessMode::YR, RWMode::NONE, 2, 1}, + /* 89 */{"NOP", AddressingMode::IMMEDIATE, AccessMode::NONE, RWMode::NONE, 2, 2}, + /* 8a */{"txa", AddressingMode::IMPLIED, AccessMode::XR, RWMode::NONE, 2, 1}, /**** very abnormal: usually AC = AC | #$EE & XR & #$oper ****/ - /* 8b */{"ANE", IMMEDIATE, M_AXIM, READ, 2, 2}, + /* 8b */{"ANE", AddressingMode::IMMEDIATE, AccessMode::AXIM, RWMode::READ, 2, 2}, - /* 8c */{"sty", ABSOLUTE, M_YR, WRITE, 4, 3}, /* Absolute */ - /* 8d */{"sta", ABSOLUTE, M_AC, WRITE, 4, 3}, /* Absolute */ - /* 8e */{"stx", ABSOLUTE, M_XR, WRITE, 4, 3}, /* Absolute */ - /* 8f */{"SAX", ABSOLUTE, M_ANXR, WRITE, 4, 3}, + /* 8c */{"sty", AddressingMode::ABSOLUTE, AccessMode::YR, RWMode::WRITE, 4, 3}, /* Absolute */ + /* 8d */{"sta", AddressingMode::ABSOLUTE, AccessMode::AC, RWMode::WRITE, 4, 3}, /* Absolute */ + /* 8e */{"stx", AddressingMode::ABSOLUTE, AccessMode::XR, RWMode::WRITE, 4, 3}, /* Absolute */ + /* 8f */{"SAX", AddressingMode::ABSOLUTE, AccessMode::ANXR, RWMode::WRITE, 4, 3}, - /* 90 */{"bcc", RELATIVE, M_REL, READ, 2, 2}, - /* 91 */{"sta", INDIRECT_Y, M_AC, WRITE, 6, 2}, /* (Indirect),Y */ - /* 92 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT relative? */ - /* 93 */{"SHA", INDIRECT_Y, M_ANXR, WRITE, 6, 2}, + /* 90 */{"bcc", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* 91 */{"sta", AddressingMode::INDIRECT_Y, AccessMode::AC, RWMode::WRITE, 6, 2}, /* (Indirect),Y */ + /* 92 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT relative? */ + /* 93 */{"SHA", AddressingMode::INDIRECT_Y, AccessMode::ANXR, RWMode::WRITE, 6, 2}, - /* 94 */{"sty", ZERO_PAGE_X, M_YR, WRITE, 4, 2}, /* Zeropage,X */ - /* 95 */{"sta", ZERO_PAGE_X, M_AC, WRITE, 4, 2}, /* Zeropage,X */ - /* 96 */{"stx", ZERO_PAGE_Y, M_XR, WRITE, 4, 2}, /* Zeropage,Y */ - /* 97 */{"SAX", ZERO_PAGE_Y, M_ANXR, WRITE, 4, 2}, + /* 94 */{"sty", AddressingMode::ZERO_PAGE_X, AccessMode::YR, RWMode::WRITE, 4, 2}, /* Zeropage,X */ + /* 95 */{"sta", AddressingMode::ZERO_PAGE_X, AccessMode::AC, RWMode::WRITE, 4, 2}, /* Zeropage,X */ + /* 96 */{"stx", AddressingMode::ZERO_PAGE_Y, AccessMode::XR, RWMode::WRITE, 4, 2}, /* Zeropage,Y */ + /* 97 */{"SAX", AddressingMode::ZERO_PAGE_Y, AccessMode::ANXR, RWMode::WRITE, 4, 2}, - /* 98 */{"tya", IMPLIED, M_YR, NONE, 2, 1}, - /* 99 */{"sta", ABSOLUTE_Y, M_AC, WRITE, 5, 3}, /* Absolute,Y */ - /* 9a */{"txs", IMPLIED, M_XR, NONE, 2, 1}, + /* 98 */{"tya", AddressingMode::IMPLIED, AccessMode::YR, RWMode::NONE, 2, 1}, + /* 99 */{"sta", AddressingMode::ABSOLUTE_Y, AccessMode::AC, RWMode::WRITE, 5, 3}, /* Absolute,Y */ + /* 9a */{"txs", AddressingMode::IMPLIED, AccessMode::XR, RWMode::NONE, 2, 1}, /*** This is very mysterious command ... */ - /* 9b */{"SHS", ABSOLUTE_Y, M_ANXR, WRITE, 5, 3}, + /* 9b */{"SHS", AddressingMode::ABSOLUTE_Y, AccessMode::ANXR, RWMode::WRITE, 5, 3}, - /* 9c */{"SHY", ABSOLUTE_X, M_YR, WRITE, 5, 3}, - /* 9d */{"sta", ABSOLUTE_X, M_AC, WRITE, 5, 3}, /* Absolute,X */ - /* 9e */{"SHX", ABSOLUTE_Y, M_XR , WRITE, 5, 3}, - /* 9f */{"SHA", ABSOLUTE_Y, M_ANXR, WRITE, 5, 3}, + /* 9c */{"SHY", AddressingMode::ABSOLUTE_X, AccessMode::YR, RWMode::WRITE, 5, 3}, + /* 9d */{"sta", AddressingMode::ABSOLUTE_X, AccessMode::AC, RWMode::WRITE, 5, 3}, /* Absolute,X */ + /* 9e */{"SHX", AddressingMode::ABSOLUTE_Y, AccessMode::XR , RWMode::WRITE, 5, 3}, + /* 9f */{"SHA", AddressingMode::ABSOLUTE_Y, AccessMode::ANXR, RWMode::WRITE, 5, 3}, - /* a0 */{"ldy", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* a1 */{"lda", INDIRECT_X, M_INDX, READ, 6, 2}, /* (indirect,X) */ - /* a2 */{"ldx", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* a3 */{"LAX", INDIRECT_X, M_INDX, READ, 6, 2}, /* (indirect,X) */ + /* a0 */{"ldy", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* a1 */{"lda", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (indirect,X) */ + /* a2 */{"ldx", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* a3 */{"LAX", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (indirect,X) */ - /* a4 */{"ldy", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* a5 */{"lda", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* a6 */{"ldx", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* a7 */{"LAX", ZERO_PAGE, M_ZERO, READ, 3, 2}, + /* a4 */{"ldy", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* a5 */{"lda", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* a6 */{"ldx", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* a7 */{"LAX", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, - /* a8 */{"tay", IMPLIED, M_AC, NONE, 2, 1}, - /* a9 */{"lda", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* aa */{"tax", IMPLIED, M_AC, NONE, 2, 1}, - /* ab */{"LXA", IMMEDIATE, M_ACIM, READ, 2, 2}, /* LXA isn't a typo */ + /* a8 */{"tay", AddressingMode::IMPLIED, AccessMode::AC, RWMode::NONE, 2, 1}, + /* a9 */{"lda", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* aa */{"tax", AddressingMode::IMPLIED, AccessMode::AC, RWMode::NONE, 2, 1}, + /* ab */{"LXA", AddressingMode::IMMEDIATE, AccessMode::ACIM, RWMode::READ, 2, 2}, /* LXA isn't a typo */ - /* ac */{"ldy", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* ad */{"lda", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* ae */{"ldx", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* af */{"LAX", ABSOLUTE, M_ABS, READ, 4, 3}, + /* ac */{"ldy", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* ad */{"lda", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* ae */{"ldx", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* af */{"LAX", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, - /* b0 */{"bcs", RELATIVE, M_REL, READ, 2, 2}, - /* b1 */{"lda", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (indirect),Y */ - /* b2 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* b3 */{"LAX", INDIRECT_Y, M_INDY, READ, 5, 2}, + /* b0 */{"bcs", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* b1 */{"lda", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (indirect),Y */ + /* b2 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* b3 */{"LAX", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, - /* b4 */{"ldy", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* b5 */{"lda", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* b6 */{"ldx", ZERO_PAGE_Y, M_ZERY, READ, 4, 2}, /* Zeropage,Y */ - /* b7 */{"LAX", ZERO_PAGE_Y, M_ZERY, READ, 4, 2}, + /* b4 */{"ldy", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* b5 */{"lda", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* b6 */{"ldx", AddressingMode::ZERO_PAGE_Y, AccessMode::ZERY, RWMode::READ, 4, 2}, /* Zeropage,Y */ + /* b7 */{"LAX", AddressingMode::ZERO_PAGE_Y, AccessMode::ZERY, RWMode::READ, 4, 2}, - /* b8 */{"clv", IMPLIED, M_NONE, NONE, 2, 1}, - /* b9 */{"lda", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* ba */{"tsx", IMPLIED, M_SP, NONE, 2, 1}, - /* bb */{"LAS", ABSOLUTE_Y, M_SABY, READ, 4, 3}, + /* b8 */{"clv", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* b9 */{"lda", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* ba */{"tsx", AddressingMode::IMPLIED, AccessMode::SP, RWMode::NONE, 2, 1}, + /* bb */{"LAS", AddressingMode::ABSOLUTE_Y, AccessMode::SABY, RWMode::READ, 4, 3}, - /* bc */{"ldy", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* bd */{"lda", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* be */{"ldx", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* bf */{"LAX", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, + /* bc */{"ldy", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* bd */{"lda", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* be */{"ldx", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* bf */{"LAX", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, - /* c0 */{"cpy", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* c1 */{"cmp", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect,X) */ - /* c2 */{"NOP", IMMEDIATE, M_NONE, NONE, 2, 2}, /* occasional TILT */ - /* c3 */{"DCP", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* c0 */{"cpy", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* c1 */{"cmp", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect,X) */ + /* c2 */{"NOP", AddressingMode::IMMEDIATE, AccessMode::NONE, RWMode::NONE, 2, 2}, /* occasional TILT */ + /* c3 */{"DCP", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* c4 */{"cpy", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* c5 */{"cmp", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* c6 */{"dec", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* c7 */{"DCP", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* c4 */{"cpy", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* c5 */{"cmp", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* c6 */{"dec", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* c7 */{"DCP", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* c8 */{"iny", IMPLIED, M_YR, NONE, 2, 1}, - /* c9 */{"cmp", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* ca */{"dex", IMPLIED, M_XR, NONE, 2, 1}, - /* cb */{"SBX", IMMEDIATE, M_IMM, READ, 2, 2}, + /* c8 */{"iny", AddressingMode::IMPLIED, AccessMode::YR, RWMode::NONE, 2, 1}, + /* c9 */{"cmp", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* ca */{"dex", AddressingMode::IMPLIED, AccessMode::XR, RWMode::NONE, 2, 1}, + /* cb */{"SBX", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, - /* cc */{"cpy", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* cd */{"cmp", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* ce */{"dec", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* cf */{"DCP", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* cc */{"cpy", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* cd */{"cmp", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* ce */{"dec", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* cf */{"DCP", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* d0 */{"bne", RELATIVE, M_REL, READ, 2, 2}, - /* d1 */{"cmp", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* d2 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* d3 */{"DCP", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* d0 */{"bne", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* d1 */{"cmp", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* d2 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* d3 */{"DCP", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* d4 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* d5 */{"cmp", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* d6 */{"dec", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* d7 */{"DCP", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* d4 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* d5 */{"cmp", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* d6 */{"dec", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* d7 */{"DCP", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* d8 */{"cld", IMPLIED, M_NONE, NONE, 2, 1}, - /* d9 */{"cmp", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* da */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* db */{"DCP", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* d8 */{"cld", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* d9 */{"cmp", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* da */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* db */{"DCP", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* dc */{"NOP", ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* dd */{"cmp", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* de */{"dec", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* df */{"DCP", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, + /* dc */{"NOP", AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* dd */{"cmp", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* de */{"dec", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* df */{"DCP", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, - /* e0 */{"cpx", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* e1 */{"sbc", INDIRECT_X, M_INDX, READ, 6, 2}, /* (Indirect,X) */ - /* e2 */{"NOP", IMMEDIATE, M_NONE, NONE, 2, 2}, - /* e3 */{"ISB", INDIRECT_X, M_INDX, WRITE, 8, 2}, + /* e0 */{"cpx", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* e1 */{"sbc", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::READ, 6, 2}, /* (Indirect,X) */ + /* e2 */{"NOP", AddressingMode::IMMEDIATE, AccessMode::NONE, RWMode::NONE, 2, 2}, + /* e3 */{"ISB", AddressingMode::INDIRECT_X, AccessMode::INDX, RWMode::WRITE, 8, 2}, - /* e4 */{"cpx", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* e5 */{"sbc", ZERO_PAGE, M_ZERO, READ, 3, 2}, /* Zeropage */ - /* e6 */{"inc", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, /* Zeropage */ - /* e7 */{"ISB", ZERO_PAGE, M_ZERO, WRITE, 5, 2}, + /* e4 */{"cpx", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* e5 */{"sbc", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::READ, 3, 2}, /* Zeropage */ + /* e6 */{"inc", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, /* Zeropage */ + /* e7 */{"ISB", AddressingMode::ZERO_PAGE, AccessMode::ZERO, RWMode::WRITE, 5, 2}, - /* e8 */{"inx", IMPLIED, M_XR, NONE, 2, 1}, - /* e9 */{"sbc", IMMEDIATE, M_IMM, READ, 2, 2}, /* Immediate */ - /* ea */{"nop", IMPLIED, M_NONE, NONE, 2, 1}, - /* eb */{"SBC", IMMEDIATE, M_IMM, READ, 2, 2}, /* same as e9 */ + /* e8 */{"inx", AddressingMode::IMPLIED, AccessMode::XR, RWMode::NONE, 2, 1}, + /* e9 */{"sbc", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* Immediate */ + /* ea */{"nop", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* eb */{"SBC", AddressingMode::IMMEDIATE, AccessMode::IMM, RWMode::READ, 2, 2}, /* same as e9 */ - /* ec */{"cpx", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* ed */{"sbc", ABSOLUTE, M_ABS, READ, 4, 3}, /* Absolute */ - /* ee */{"inc", ABSOLUTE, M_ABS, WRITE, 6, 3}, /* Absolute */ - /* ef */{"ISB", ABSOLUTE, M_ABS, WRITE, 6, 3}, + /* ec */{"cpx", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* ed */{"sbc", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::READ, 4, 3}, /* Absolute */ + /* ee */{"inc", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, /* Absolute */ + /* ef */{"ISB", AddressingMode::ABSOLUTE, AccessMode::ABS, RWMode::WRITE, 6, 3}, - /* f0 */{"beq", RELATIVE, M_REL, READ, 2, 2}, - /* f1 */{"sbc", INDIRECT_Y, M_INDY, READ, 5, 2}, /* (Indirect),Y */ - /* f2 */{".JAM",IMPLIED, M_NONE, NONE, 0, 1}, /* TILT */ - /* f3 */{"ISB", INDIRECT_Y, M_INDY, WRITE, 8, 2}, + /* f0 */{"beq", AddressingMode::RELATIVE, AccessMode::REL, RWMode::READ, 2, 2}, + /* f1 */{"sbc", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::READ, 5, 2}, /* (Indirect),Y */ + /* f2 */{".JAM",AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 0, 1}, /* TILT */ + /* f3 */{"ISB", AddressingMode::INDIRECT_Y, AccessMode::INDY, RWMode::WRITE, 8, 2}, - /* f4 */{"NOP", ZERO_PAGE_X, M_NONE, NONE, 4, 2}, - /* f5 */{"sbc", ZERO_PAGE_X, M_ZERX, READ, 4, 2}, /* Zeropage,X */ - /* f6 */{"inc", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, /* Zeropage,X */ - /* f7 */{"ISB", ZERO_PAGE_X, M_ZERX, WRITE, 6, 2}, + /* f4 */{"NOP", AddressingMode::ZERO_PAGE_X, AccessMode::NONE, RWMode::NONE, 4, 2}, + /* f5 */{"sbc", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::READ, 4, 2}, /* Zeropage,X */ + /* f6 */{"inc", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, /* Zeropage,X */ + /* f7 */{"ISB", AddressingMode::ZERO_PAGE_X, AccessMode::ZERX, RWMode::WRITE, 6, 2}, - /* f8 */{"sed", IMPLIED, M_NONE, NONE, 2, 1}, - /* f9 */{"sbc", ABSOLUTE_Y, M_ABSY, READ, 4, 3}, /* Absolute,Y */ - /* fa */{"NOP", IMPLIED, M_NONE, NONE, 2, 1}, - /* fb */{"ISB", ABSOLUTE_Y, M_ABSY, WRITE, 7, 3}, + /* f8 */{"sed", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* f9 */{"sbc", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::READ, 4, 3}, /* Absolute,Y */ + /* fa */{"NOP", AddressingMode::IMPLIED, AccessMode::NONE, RWMode::NONE, 2, 1}, + /* fb */{"ISB", AddressingMode::ABSOLUTE_Y, AccessMode::ABSY, RWMode::WRITE, 7, 3}, - /* fc */{"NOP" ,ABSOLUTE_X, M_NONE, NONE, 4, 3}, - /* fd */{"sbc", ABSOLUTE_X, M_ABSX, READ, 4, 3}, /* Absolute,X */ - /* fe */{"inc", ABSOLUTE_X, M_ABSX, WRITE, 7, 3}, /* Absolute,X */ - /* ff */{"ISB", ABSOLUTE_X, M_ABSX, WRITE, 7, 3} + /* fc */{"NOP" ,AddressingMode::ABSOLUTE_X, AccessMode::NONE, RWMode::NONE, 4, 3}, + /* fd */{"sbc", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::READ, 4, 3}, /* Absolute,X */ + /* fe */{"inc", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3}, /* Absolute,X */ + /* ff */{"ISB", AddressingMode::ABSOLUTE_X, AccessMode::ABSX, RWMode::WRITE, 7, 3} }; diff --git a/src/debugger/DiStella.hxx b/src/debugger/DiStella.hxx index eca34740e..87017ec5b 100644 --- a/src/debugger/DiStella.hxx +++ b/src/debugger/DiStella.hxx @@ -101,10 +101,10 @@ class DiStella } inline void labelA12Low(stringstream& buf, uInt8 op, uInt16 addr, int labfound) { - myDbg.getLabel(buf, addr, ourLookup[op].rw_mode == READ, 2); + myDbg.getLabel(buf, addr, ourLookup[op].rw_mode == RWMode::READ, 2); if (labfound == 2) { - if(ourLookup[op].rw_mode == READ) + if(ourLookup[op].rw_mode == RWMode::READ) myReserved.TIARead[addr & 0x0F] = true; else myReserved.TIAWrite[addr & 0x3F] = true; @@ -141,7 +141,7 @@ class DiStella /** Enumeration of the 6502 addressing modes */ - enum AddressingMode + enum class AddressingMode : uInt8 { IMPLIED, ACCUMULATOR, IMMEDIATE, ZERO_PAGE, ZERO_PAGE_X, ZERO_PAGE_Y, @@ -153,31 +153,31 @@ class DiStella /** Enumeration of the 6502 access modes */ - enum AccessMode + enum class AccessMode : uInt8 { - M_NONE, M_AC, M_XR, M_YR, M_SP, M_SR, M_PC, M_IMM, M_ZERO, M_ZERX, M_ZERY, - M_ABS, M_ABSX, M_ABSY, M_AIND, M_INDX, M_INDY, M_REL, M_FC, M_FD, M_FI, - M_FV, M_ADDR, M_, + NONE, AC, XR, YR, SP, SR, PC, IMM, ZERO, ZERX, ZERY, + ABS, ABSX, ABSY, AIND, INDX, INDY, REL, FC, FD, FI, + FV, ADDR, - M_ACIM, /* Source: AC & IMMED (bus collision) */ - M_ANXR, /* Source: AC & XR (bus collision) */ - M_AXIM, /* Source: (AC | #EE) & XR & IMMED (bus collision) */ - M_ACNC, /* Dest: M_AC and Carry = Negative */ - M_ACXR, /* Dest: M_AC, M_XR */ + ACIM, /* Source: AC & IMMED (bus collision) */ + ANXR, /* Source: AC & XR (bus collision) */ + AXIM, /* Source: (AC | #EE) & XR & IMMED (bus collision) */ + ACNC, /* Dest: AC and Carry = Negative */ + ACXR, /* Dest: AC, XR */ - M_SABY, /* Source: (ABS_Y & SP) (bus collision) */ - M_ACXS, /* Dest: M_AC, M_XR, M_SP */ - M_STH0, /* Dest: Store (src & Addr_Hi+1) to (Addr +0x100) */ - M_STH1, - M_STH2, - M_STH3 + SABY, /* Source: (ABS_Y & SP) (bus collision) */ + ACXS, /* Dest: AC, XR, SP */ + STH0, /* Dest: Store (src & Addr_Hi+1) to (Addr +0x100) */ + STH1, + STH2, + STH3 }; /** Enumeration of the 6502 read/write mode (if the opcode is reading or writing its operand) */ - enum ReadWriteMode + enum class RWMode : uInt8 { READ, WRITE, NONE }; @@ -186,7 +186,7 @@ class DiStella const char* const mnemonic; AddressingMode addr_mode; AccessMode source; - ReadWriteMode rw_mode; + RWMode rw_mode; uInt8 cycles; uInt8 bytes; }; diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index 90df40e6a..75eab630f 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -164,7 +164,7 @@ uInt32 TIASurface::mapIndexedPixel(uInt8 indexedColor, uInt8 shift) void TIASurface::setNTSC(NTSCFilter::Preset preset, bool show) { ostringstream buf; - if(preset == NTSCFilter::PRESET_OFF) + if(preset == NTSCFilter::Preset::OFF) { enableNTSC(false); buf << "TV filtering disabled"; diff --git a/src/gui/StellaSettingsDialog.cxx b/src/gui/StellaSettingsDialog.cxx index 1330b380f..2b854f54e 100644 --- a/src/gui/StellaSettingsDialog.cxx +++ b/src/gui/StellaSettingsDialog.cxx @@ -100,11 +100,11 @@ void StellaSettingsDialog::addVideoOptions(WidgetArray& wid, int& xpos, int& ypo // TV Mode items.clear(); - VarList::push_back(items, "Disabled", NTSCFilter::PRESET_OFF); - VarList::push_back(items, "RGB", NTSCFilter::PRESET_RGB); - VarList::push_back(items, "S-Video", NTSCFilter::PRESET_SVIDEO); - VarList::push_back(items, "Composite", NTSCFilter::PRESET_COMPOSITE); - VarList::push_back(items, "Bad adjust", NTSCFilter::PRESET_BAD); + VarList::push_back(items, "Disabled", static_cast(NTSCFilter::Preset::OFF)); + VarList::push_back(items, "RGB", static_cast(NTSCFilter::Preset::RGB)); + VarList::push_back(items, "S-Video", static_cast(NTSCFilter::Preset::SVIDEO)); + VarList::push_back(items, "Composite", static_cast(NTSCFilter::Preset::COMPOSITE)); + VarList::push_back(items, "Bad adjust", static_cast(NTSCFilter::Preset::BAD)); int lwidth = font.getStringWidth("TV mode "); int pwidth = font.getStringWidth("Bad adjust"); diff --git a/src/gui/VideoDialog.cxx b/src/gui/VideoDialog.cxx index 4b089e6d7..78511f068 100644 --- a/src/gui/VideoDialog.cxx +++ b/src/gui/VideoDialog.cxx @@ -228,12 +228,12 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent, // TV Mode items.clear(); - VarList::push_back(items, "Disabled", NTSCFilter::PRESET_OFF); - VarList::push_back(items, "RGB", NTSCFilter::PRESET_RGB); - VarList::push_back(items, "S-Video", NTSCFilter::PRESET_SVIDEO); - VarList::push_back(items, "Composite", NTSCFilter::PRESET_COMPOSITE); - VarList::push_back(items, "Bad adjust", NTSCFilter::PRESET_BAD); - VarList::push_back(items, "Custom", NTSCFilter::PRESET_CUSTOM); + VarList::push_back(items, "Disabled", static_cast(NTSCFilter::Preset::OFF)); + VarList::push_back(items, "RGB", static_cast(NTSCFilter::Preset::RGB)); + VarList::push_back(items, "S-Video", static_cast(NTSCFilter::Preset::SVIDEO)); + VarList::push_back(items, "Composite", static_cast(NTSCFilter::Preset::COMPOSITE)); + VarList::push_back(items, "Bad adjust", static_cast(NTSCFilter::Preset::BAD)); + VarList::push_back(items, "Custom", static_cast(NTSCFilter::Preset::CUSTOM)); lwidth = font.getStringWidth("TV Mode "); pwidth = font.getStringWidth("Bad adjust"); myTVMode = @@ -385,7 +385,7 @@ void VideoDialog::loadConfig() handleTVModeChange(NTSCFilter::Preset(preset)); // TV Custom adjustables - loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); + loadTVAdjustables(NTSCFilter::Preset::CUSTOM); // TV phosphor mode myTVPhosphor->setState(instance().settings().getString("tv.phosphor") == "always"); @@ -522,9 +522,9 @@ void VideoDialog::setDefaults() myTVScanIntense->setValue(25); // Make sure that mutually-exclusive items are not enabled at the same time - handleTVModeChange(NTSCFilter::PRESET_OFF); + handleTVModeChange(NTSCFilter::Preset::OFF); handlePhosphorChange(); - loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); + loadTVAdjustables(NTSCFilter::Preset::CUSTOM); break; } } @@ -533,7 +533,7 @@ void VideoDialog::setDefaults() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void VideoDialog::handleTVModeChange(NTSCFilter::Preset preset) { - bool enable = preset == NTSCFilter::PRESET_CUSTOM; + bool enable = preset == NTSCFilter::Preset::CUSTOM; myTVSharp->setEnabled(enable); myTVHue->setEnabled(enable); @@ -599,15 +599,15 @@ void VideoDialog::handleCommand(CommandSender* sender, int cmd, handleTVModeChange(NTSCFilter::Preset(myTVMode->getSelectedTag().toInt())); break; - case kCloneCompositeCmd: loadTVAdjustables(NTSCFilter::PRESET_COMPOSITE); + case kCloneCompositeCmd: loadTVAdjustables(NTSCFilter::Preset::COMPOSITE); break; - case kCloneSvideoCmd: loadTVAdjustables(NTSCFilter::PRESET_SVIDEO); + case kCloneSvideoCmd: loadTVAdjustables(NTSCFilter::Preset::SVIDEO); break; - case kCloneRGBCmd: loadTVAdjustables(NTSCFilter::PRESET_RGB); + case kCloneRGBCmd: loadTVAdjustables(NTSCFilter::Preset::RGB); break; - case kCloneBadCmd: loadTVAdjustables(NTSCFilter::PRESET_BAD); + case kCloneBadCmd: loadTVAdjustables(NTSCFilter::Preset::BAD); break; - case kCloneCustomCmd: loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); + case kCloneCustomCmd: loadTVAdjustables(NTSCFilter::Preset::CUSTOM); break; case kScanlinesChanged: