diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-10-20 04:28:53 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-10-20 04:28:53 +0300 |
commit | eb45a7913d83fe2a3dc03033230950e78fb9755d (patch) | |
tree | d7318e79b08404f293fb99bb22e0ed202e07d890 /utils/dumpmiles | |
parent | e95cde9fea4f9daf3e19492021b8a153acae0404 (diff) | |
download | libADLMIDI-eb45a7913d83fe2a3dc03033230950e78fb9755d.tar.gz libADLMIDI-eb45a7913d83fe2a3dc03033230950e78fb9755d.tar.bz2 libADLMIDI-eb45a7913d83fe2a3dc03033230950e78fb9755d.zip |
Added CMake support
Diffstat (limited to 'utils/dumpmiles')
-rw-r--r-- | utils/dumpmiles/dumpmiles.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/utils/dumpmiles/dumpmiles.cpp b/utils/dumpmiles/dumpmiles.cpp new file mode 100644 index 0000000..832da93 --- /dev/null +++ b/utils/dumpmiles/dumpmiles.cpp @@ -0,0 +1,52 @@ +//#ifdef __MINGW32__ +//typedef struct vswprintf {} swprintf; +//#endif +#include <cstdio> +#include <vector> + +static void LoadMiles(const char* fn) +{ + FILE* fp = fopen(fn, "rb"); + if(!fp) + { + std::fprintf(stderr, "ERROR: Can't open %s file!", fn); + return; + } + + std::fseek(fp, 0, SEEK_END); + std::vector<unsigned char> data(ftell(fp)); + std::rewind(fp); + size_t got = std::fread(&data[0], 1, data.size(), fp); + std::fclose(fp); + + if(got == 0) + { + std::fprintf(stderr, "ERROR: Can't read %s file!", fn); + return; + } + + for(unsigned a=0; a<500; ++a) + { + unsigned gmnumber = data[a*6+0]; + unsigned gmnumber2 = data[a*6+1]; + unsigned offset = *(unsigned*)&data[a*6+2]; + + if(gmnumber == 0xFF) break; + int gmno = gmnumber2==0x7F ? gmnumber+0x80 : gmnumber; + unsigned length = data[offset] + data[offset+1]*256; + signed char notenum = data[offset+2]; + + std::printf("%02X %02X ", gmnumber,gmnumber2); //, offset); + for(unsigned b=0; b<length; ++b) + { + if(b > 3 && (b-3)%11 == 0) printf("\n "); + std::printf("%02X ", data[offset+b]); + } + std::printf("\n"); + } +} + +int main(int argc, const char* const* argv) +{ + LoadMiles(argv[1]); +} |