diff --git a/extern/jaffarCommon b/extern/jaffarCommon index e7fd15b..a536b50 160000 --- a/extern/jaffarCommon +++ b/extern/jaffarCommon @@ -1 +1 @@ -Subproject commit e7fd15b6e3ffed9bd718c0bfc0b0a6247e5dfe76 +Subproject commit a536b508da2b3915aaee52702e8d90c082f02652 diff --git a/source/quickerNES/core/core.hpp b/source/quickerNES/core/core.hpp index 18c68bc..afc13fb 100644 --- a/source/quickerNES/core/core.hpp +++ b/source/quickerNES/core/core.hpp @@ -105,10 +105,10 @@ class Core : private Cpu // APU and Joypad enum controllerType_t { - none_t, - joypad_t, - arkanoidNES_t, - arkanoidFamicom_t, + none_t = 0, + joypad_t = 1, + arkanoidNES_t = 2, + arkanoidFamicom_t = 3, }; Core() : ppu(this) diff --git a/source/quickerNES/core/cpu.cpp b/source/quickerNES/core/cpu.cpp index 3a3f20e..171f9da 100644 --- a/source/quickerNES/core/cpu.cpp +++ b/source/quickerNES/core/cpu.cpp @@ -475,6 +475,7 @@ uint8_t clock_table[256] = { 7 // F }; + // This optimization is only possible with the GNU compiler -- MSVC does not allow function alignment #ifdef __GNUC__ __attribute__((optimize("align-functions=1024"))) @@ -1479,7 +1480,7 @@ end: CALC_STATUS(temp); r.status = temp; } - + this->clock_count = clock_count; r.pc = pc; r.sp = GET_SP(); diff --git a/source/quickerNES/core/cpu.hpp b/source/quickerNES/core/cpu.hpp index 7466395..826eb8c 100644 --- a/source/quickerNES/core/cpu.hpp +++ b/source/quickerNES/core/cpu.hpp @@ -83,7 +83,12 @@ class Cpu result_badop // unimplemented/illegal instruction }; + // This optimization is only possible with the GNU compiler -- MSVC does not allow function alignment +#if defined(__GNUC__) || defined(__clang__) + result_t run(nes_time_t end_time) __attribute__((aligned(1024))); +#else result_t run(nes_time_t end_time); +#endif nes_time_t time() const { return clock_count; }