31 #define IOP_MEM 0xbc000000
32 char* songbuffer_addr;
43 if (read) memcpy(buf, (
void *)((u8 *)addr +
IOP_MEM), size);
else memcpy((
void *)((u8 *)addr +
IOP_MEM), buf, size);
48 static int AHX_BindRpc_Impl(
void)
51 memset(&cd0, 0,
sizeof(cd0));
53 if (cd0.server)
return 0;
59 if (sceSifBindRpc( &cd0, AHX_IRX, 0) < 0)
return -1;
60 if (cd0.server != 0)
break;
67 #define AHX_BINDRPC() \
70 ret = AHX_BindRpc_Impl(); \
79 sceSifCallRpc(&cd0,AHX_INIT,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
81 songbuffer_addr = (
char*)sbuff[1];
90 sceSifCallRpc(&cd0,AHX_PLAY,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
98 sceSifCallRpc(&cd0,AHX_PAUSE,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
106 sbuff[0] = (unsigned)songNo;
107 sceSifCallRpc(&cd0,AHX_PAUSE,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
115 sbuff[0] = (unsigned)volumePercentage;
116 sceSifCallRpc(&cd0,AHX_QUIT,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
124 sbuff[0] = (unsigned)boostValue;
125 sceSifCallRpc(&cd0,AHX_SETBOOST,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
133 sceSifCallRpc(&cd0,AHX_OVERSAMPLING,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
141 sceSifCallRpc(&cd0,AHX_QUIT,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
153 sbuff[0] = (unsigned)songsize;
156 sceSifCallRpc(&cd0,AHX_LOADSONG,0,(
void*)(&sbuff[0]),64,(
void*)(&sbuff[0]),64,NULL,NULL);
159 return (
int)sbuff[1];
167 fd = open(filename, O_RDONLY);
170 printf(
"ERROR LOADING SONG\n");
173 fdSize = lseek(fd, 0, SEEK_END);
174 lseek(fd, 0, SEEK_SET);
175 buffer = malloc(fdSize);
178 printf(
"ERROR ALLOCATING SONG MEMORY SONG\n");
181 read(fd, buffer, fdSize);