48 lines
780 B
C
48 lines
780 B
C
|
#include "zxconfig.h"
|
||
|
|
||
|
int my_getc(int fd){
|
||
|
unsigned char c;
|
||
|
if ( rb->read(fd, &c, 1) )
|
||
|
return c;
|
||
|
else
|
||
|
return EOF;
|
||
|
}
|
||
|
|
||
|
off_t my_ftell(int fd){
|
||
|
return rb->lseek(fd, 0, SEEK_CUR);
|
||
|
}
|
||
|
|
||
|
int my_putc(char c , int fd){
|
||
|
return rb->write(fd,&c,1);
|
||
|
}
|
||
|
|
||
|
void *my_malloc(size_t size)
|
||
|
{
|
||
|
static char *offset = NULL;
|
||
|
static int totalSize = 0;
|
||
|
char *ret;
|
||
|
|
||
|
int remainder = size % 4;
|
||
|
|
||
|
size = size + 4-remainder;
|
||
|
|
||
|
if (offset == NULL)
|
||
|
{
|
||
|
offset = rb->plugin_get_audio_buffer(&totalSize);
|
||
|
}
|
||
|
|
||
|
if (size + 4 > abs(totalSize) )
|
||
|
{
|
||
|
/* We've made our point. */
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
ret = offset + 4;
|
||
|
*((unsigned int *)offset) = size;
|
||
|
|
||
|
offset += size + 4;
|
||
|
totalSize -= size + 4;
|
||
|
return ret;
|
||
|
|
||
|
}
|