9 static u8 *MIC_sharedmem;
10 static u32 MIC_sharedmem_size;
11 static u32 *MIC_sharedmem_offsetfield, MIC_sharedmem_offsetfield_location;
12 static Handle MIC_sharedmem_handle;
15 static u32 MIC_prev_endpos, MIC_cur_endpos;
21 MIC_sharedmem = (
u8*)sharedmem;
22 MIC_sharedmem_size = sharedmem_size;
23 MIC_sharedmem_offsetfield_location = MIC_sharedmem_size - 4;
24 MIC_sharedmem_offsetfield = (
u32*)&MIC_sharedmem[MIC_sharedmem_offsetfield_location];
78 MIC_sharedmem_offsetfield = NULL;
80 MIC_sharedmem_size = 0;
91 if(MIC_sharedmem_offsetfield==NULL)
return pos;
92 pos = *MIC_sharedmem_offsetfield;
93 if(pos > MIC_sharedmem_offsetfield_location)pos = MIC_sharedmem_offsetfield_location;
100 u32 pos = 0, bufpos = 0;
108 MIC_prev_endpos = MIC_cur_endpos;
110 pos = MIC_prev_endpos;
112 while(pos != MIC_cur_endpos)
114 if(pos >= MIC_sharedmem_offsetfield_location)pos = 0;
115 if(bufpos>=readsize)
break;
117 outbuf[bufpos] = MIC_sharedmem[pos];
130 cmdbuf[0] = 0x00010042;
145 cmdbuf[0] = 0x00020000;
157 cmdbuf[0] = 0x00030140;
160 cmdbuf[3] = sharedmem_baseoffset;
161 cmdbuf[4] = sharedmem_endoffset;
174 cmdbuf[0] = 0x00050000;
186 cmdbuf[0] = 0x00060000;
190 if(out)*out = cmdbuf[2];
206 cmdbuf[0] = 0x00070000;
210 if(handle)*handle = cmdbuf[2];
220 cmdbuf[0] = 0x00080040;
233 cmdbuf[0] = 0x00090000;
237 if(value)*value = cmdbuf[2];
247 cmdbuf[0] = 0x000A0040;
262 cmdbuf[0] = 0x000B0000;
266 if(value)*value = cmdbuf[2];
s32 svcClearEvent(Handle handle)
s32 svcCloseHandle(Handle handle)
s32 svcWaitSynchronization(Handle handle, s64 nanoseconds)
Result srvGetServiceHandle(Handle *out, const char *name)
Result MIC_UnmapSharedMem()
u32 MIC_GetSharedMemOffsetValue()
s32 svcUnmapMemoryBlock(Handle memblock, u32 addr)
u32 * getThreadCommandBuffer(void)
Result MIC_GetControl(u8 *value)
Result MIC_MapSharedMem(Handle handle, u32 size)
u32 MIC_ReadAudioData(u8 *outbuf, u32 readsize, u32 waitforevent)
Result MIC_Initialize(u32 *sharedmem, u32 sharedmem_size, u8 control, u8 recording, u8 unk0, u8 unk1, u8 unk2)
Result MIC_SetRecording(u8 value)
Result MIC_GetCNTBit15(u8 *out)
Result MIC_GetEventHandle(Handle *handle)
s32 svcSendSyncRequest(Handle session)
Result MIC_cmd3_Initialize(u8 unk0, u8 unk1, u32 sharedmem_baseoffset, u32 sharedmem_endoffset, u8 unk2)
Result MIC_SetControl(u8 value)
s32 svcCreateMemoryBlock(Handle *memblock, u32 addr, u32 size, MemPerm my_perm, MemPerm other_perm)
Result MIC_IsRecoding(u8 *value)