summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/sid.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/apps/codecs/sid.c b/apps/codecs/sid.c
index 46c4a54..291b9ca 100644
--- a/apps/codecs/sid.c
+++ b/apps/codecs/sid.c
@@ -66,6 +66,7 @@
CODEC_HEADER
#define CHUNK_SIZE (1024*2)
+#define SID_BUFFER_SIZE 0x10000
/* This codec supports SID Files:
*
@@ -73,9 +74,6 @@ CODEC_HEADER
static int32_t samples[CHUNK_SIZE] IBSS_ATTR; /* The sample buffer */
-/* Static buffer for the plain SID-File */
-static unsigned char sidfile[0x10000];
-
void sidPoke(int reg, unsigned char val) ICODE_ATTR;
#define FLAG_N 128
@@ -1225,6 +1223,7 @@ enum codec_status codec_run(void)
unsigned int filesize;
unsigned short load_addr, init_addr, play_addr;
unsigned char subSongsMax, subSong, song_speed;
+ unsigned char *sidfile = NULL;
intptr_t param;
if (codec_init()) {
@@ -1236,7 +1235,7 @@ enum codec_status codec_run(void)
/* Load SID file the read_filebuf callback will return the full requested
* size if at all possible, so there is no need to loop */
ci->seek_buffer(0);
- filesize = ci->read_filebuf(sidfile, sizeof(sidfile));
+ sidfile = ci->request_buffer(&filesize, SID_BUFFER_SIZE);
if (filesize == 0) {
return CODEC_ERROR;