From c011f08e4487935d7a523009b380963c508a2c9f Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 6 Jun 2019 21:36:08 +0300 Subject: Pack database structures to reduce binary size --- src/adlmidi_db.h | 82 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/src/adlmidi_db.h b/src/adlmidi_db.h index 7294c6d..eb6ba87 100644 --- a/src/adlmidi_db.h +++ b/src/adlmidi_db.h @@ -2,46 +2,54 @@ #include #include +#ifndef _MSC_VER +#define ATTRIB_PACKED __attribute__((__packed__)) +#else +#define ATTRIB_PACKED +#endif + extern const size_t g_embeddedBanksCount; -struct BanksDump +namespace BanksDump +{ + +struct BankEntry +{ + uint16_t bankSetup; + uint16_t banksMelodicCount; + uint16_t banksPercussionCount; + const char *title; + uint16_t banksOffsetMelodic; + uint16_t banksOffsetPercussive; +} ATTRIB_PACKED; + +struct MidiBank { - struct BankEntry - { - uint16_t bankSetup; - uint16_t banksMelodicCount; - uint16_t banksPercussionCount; - const char *title; - uint16_t banksOffsetMelodic; - uint16_t banksOffsetPercussive; - }; - - struct MidiBank - { - uint8_t msb; - uint8_t lsb; - int16_t insts[128]; - }; - - struct InstrumentEntry - { - int16_t noteOffset1; - int16_t noteOffset2; - int8_t midiVelocityOffset; - uint8_t percussionKeyNumber; - uint8_t instFlags; - int8_t secondVoiceDetune; - uint16_t fbConn; - uint16_t delay_on_ms; - uint16_t delay_off_ms; - int16_t ops[4]; - }; - - struct Operator - { - uint32_t d_E862; - uint8_t d_40; - }; + uint8_t msb; + uint8_t lsb; + int16_t insts[128]; +} ATTRIB_PACKED; + +struct InstrumentEntry +{ + int16_t noteOffset1; + int16_t noteOffset2; + int8_t midiVelocityOffset; + uint8_t percussionKeyNumber; + uint8_t instFlags; + int8_t secondVoiceDetune; + uint16_t fbConn; + uint16_t delay_on_ms; + uint16_t delay_off_ms; + int16_t ops[4]; +} ATTRIB_PACKED; + +struct Operator +{ + uint32_t d_E862; + uint8_t d_40; +} ATTRIB_PACKED; + }; extern const BanksDump::BankEntry g_embeddedBanks[]; -- cgit v1.2.3