diff --git a/extern/emu2413/emu2413.c b/extern/emu2413/emu2413.c index a19c2a177..dc2aa9c21 100644 --- a/extern/emu2413/emu2413.c +++ b/extern/emu2413/emu2413.c @@ -1233,7 +1233,11 @@ void OPLL_writeReg(OPLL *opll, uint32_t reg, uint8_t data) { reg -= 9; } - opll->reg[reg] = (uint8_t)data; + // is the compiler stupid or what? + // -Wstringop-overflow seems to be the buggiest thing known to humanity... + if (reg<0x40) { + opll->reg[reg] = (uint8_t)data; + } switch (reg) { case 0x00: diff --git a/extern/emu2413/emu2413.h b/extern/emu2413/emu2413.h index 9e60590a0..7c10058e5 100644 --- a/extern/emu2413/emu2413.h +++ b/extern/emu2413/emu2413.h @@ -96,7 +96,7 @@ typedef struct __OPLL { double out_step; double out_time; - uint8_t reg[0x40]; + uint8_t reg[64]; uint8_t test_flag; uint32_t slot_key_status; uint8_t rhythm_mode;