diff options
| author | reduz | 2015-12-29 16:06:45 -0300 |
|---|---|---|
| committer | reduz | 2015-12-29 16:06:45 -0300 |
| commit | 875bff2c4e95e63c0eeca9d3fbe28bae79095a64 (patch) | |
| tree | 547836e141ed43e0cd1538aa5a71dbdd0fb2a04d /drivers/chibi/cp_loader_mod.cpp | |
| parent | 101fe4b845c9f831498461c4d3dae050f8c159fc (diff) | |
| download | godot-875bff2c4e95e63c0eeca9d3fbe28bae79095a64.tar.gz godot-875bff2c4e95e63c0eeca9d3fbe28bae79095a64.tar.zst godot-875bff2c4e95e63c0eeca9d3fbe28bae79095a64.zip | |
-fix loading of samples in mod, s3m and xm. Fixes #2553
Diffstat (limited to 'drivers/chibi/cp_loader_mod.cpp')
| -rw-r--r-- | drivers/chibi/cp_loader_mod.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/chibi/cp_loader_mod.cpp b/drivers/chibi/cp_loader_mod.cpp index 98174ff9b..6340a6f5e 100644 --- a/drivers/chibi/cp_loader_mod.cpp +++ b/drivers/chibi/cp_loader_mod.cpp @@ -446,18 +446,19 @@ CPLoader::Error CPLoader_MOD::load_song(const char *p_file,CPSong *p_song,bool p if (sid.is_null()) { continue; //empty sample, not stored? } - + sm->lock_data(sid); + uint8_t *dataptr = (uint8_t*)sm->get_data(sid); + int len=sm->get_size(sid); for (int s=0;s<len;s++) { uint8_t d=file->get_byte(); //d-=128; //convert to signed int8_t*ds=(int8_t*)&d; - int16_t d16=*ds; - d16<<=8; - sm->set_data( sid, s, d16 ); + dataptr[s]=*ds; } + sm->unlock_data(sid); } file->close(); |
