Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int sceMpegBaseCscVme(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceInt32 width, SceMpegYCrCbBuffer *pYCrCbBuffer)
- {
- uint uVar1;
- int ret;
- uint uVar2;
- uint uVar3;
- uint width1;
- int in_k1;
- uVar1 = in_k1 << 0xb;
- if (-1 < (int)(((uint)&pYCrCbBuffer->iFrameHeight | (uint)pYCrCbBuffer) & uVar1)) {
- ret = pYCrCbBuffer->iFrameBufferWidth16;
- uVar3 = pYCrCbBuffer->iFrameBufferHeight16 * ret * 0x80;
- uVar2 = uVar3 >> 2;
- width1 = width;
- if (width == 0) {
- width1 = DAT_000006e8;
- }
- if (width1 < (uint)(ret << 4)) {
- return -0x7ffffe02;
- }
- width1 = width1 * ret * 4;
- if ((((((-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer + uVar3) |
- (uint)pYCrCbBuffer->pYBuffer | uVar3))) &&
- (-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer2 + uVar3) |
- (uint)pYCrCbBuffer->pYBuffer2 | uVar3)))) &&
- (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer + uVar2 | (uint)pYCrCbBuffer->pCrBuffer) &
- uVar1))) &&
- ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer + uVar2 | (uint)pYCrCbBuffer->pCbBuffer) &
- uVar1) &&
- (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCrBuffer2) &
- uVar1))))) &&
- ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCbBuffer2) &
- uVar1) &&
- (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer + width1) | (uint)pRGBbuffer | width1))))))
- && ((pRGBbuffer2 == (ScePVoid)0x0 ||
- (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer2 + width1) | (uint)pRGBbuffer2 | width1))
- )))) {
- ret = trigger_dmacplus_memcpy4((int)DAT_000006e6,width,0);
- if (ret == 0) {
- ret = trigger_dmacplus_memcpy3(pRGBbuffer,pRGBbuffer2,pYCrCbBuffer);
- }
- sceKernelUnlockMutex(g_SceMpegBaseCSC_mutex,1);
- return ret;
- }
- }
- return -0x7fffffdd;
- }
- void trigger_dmacplus_memcpy4(int param_1,int param_2,int param_3)
- {
- uint ret;
- if (param_2 == 0) {
- param_2 = DAT_000006e8;
- }
- if (param_3 == 0) {
- param_3 = 0x6d0;
- }
- sceKernelLockMutex(g_SceMpegBaseCSC_mutex,1,0);
- while (ret = sceDmacplus_driver_0xB269EAC9_memcpy4(param_1,param_2,param_3), ret == 0x80000021)
- {
- sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync(0, 0);
- }
- return;
- }
- }
- int trigger_dmacplus_memcpy3(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceMpegYCrCbBuffer *pYCrCbBuffer)
- {
- int iVar1;
- int iVar2;
- uint ret;
- iVar1 = sceKernelPollEventFlag(g_SceMpegBaseCSC_evflag,3,1,0);
- iVar2 = -0x7fffffff;
- if (-1 < iVar1) {
- do {
- ret = sceDmacplus_driver_0x9C492B9B(pRGBbuffer, pRGBbuffer2, pYCrCbBuffer);
- if ((ret != 0) && (ret != 0x80000021)) {
- return ret;
- }
- iVar2 = sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync();
- } while (ret != 0);
- }
- return iVar2;
- }
- uint sceDmacplus_driver_0xB269EAC9(int param_1,int width,ushort *param_3)
- {
- undefined4 tmp;
- uint ret;
- tmp = sceKernelCpuSuspendIntr();
- if ((g_dmac_status & 2) == 0) {
- DAT_000012f4 = ((uint)param_3[2] & 0x3ff) << 0x14 | ((uint)param_3[1] & 0x3ff) << 10 |
- (uint)*param_3 & 0x3ff;
- DAT_000012f8 = ((uint)param_3[5] & 0x3ff) << 0x14 | ((uint)param_3[4] & 0x3ff) << 10 |
- (uint)param_3[3] & 0x3ff;
- DAT_000012fc = ((uint)param_3[8] & 0x3ff) << 0x14 | ((uint)param_3[7] & 0x3ff) << 10 |
- (uint)param_3[6] & 0x3ff;
- DAT_00001300 = ((uint)param_3[10] & 1) << 8 | (uint)*(byte *)(param_3 + 9);
- DAT_00001304 = width;
- DAT_00001308 = param_1;
- _DAT_bc800150 = DAT_000012f4;
- _DAT_bc800154 = DAT_000012f8;
- _DAT_bc800158 = DAT_000012fc;
- _DAT_bc80015c = DAT_00001300;
- sceKernelCpuResumeIntr(tmp);
- ret = 0;
- }
- else {
- sceKernelCpuResumeIntr(tmp);
- ret = 0x80000021;
- }
- return ret;
- }
- uint sceDmacplus_driver_0x9C492B9B(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceMpegYCrCbBuffer *pYCrCbBuffer)
- {
- uint uVar1;
- undefined4 uVar2;
- ushort uVar3;
- int iVar4;
- uint in_k1;
- uVar1 = 0x80000103;
- if (pRGBbuffer != (ScePVoid)0x0) {
- uVar2 = sceKernelCpuSuspendIntr();
- uVar3 = 0x1a;
- if ((pYCrCbBuffer->iFrameBufferWidth16 & 7U | DAT_00001308) == 0) {
- uVar3 = 10;
- }
- iVar4 = (in_k1 >> 0x1f) << 0x1e;
- if ((g_dmac_status & uVar3) == 0) {
- if (pRGBbuffer2 == (ScePVoid)0x0) {
- _DAT_bc80014c = DAT_00001304 << 8 | DAT_00001308 << 1;
- }
- else {
- _DAT_bc80014c = DAT_00001304 << 8 | DAT_00001308 << 1 | 1;
- }
- _DAT_bc800140 =
- (pYCrCbBuffer->iFrameBufferHeight16 & 0x3fU) << 0x10 |
- (pYCrCbBuffer->iFrameBufferWidth16 & 0x3fU) << 8 |
- (pYCrCbBuffer->iUnknown & 1U) << 2 | (pYCrCbBuffer->iUnknown2 & 1U) << 1 | 1;
- _DAT_bc800160 = 0xd;
- g_dmac_status = g_dmac_status | 0x8002;
- _DAT_bc800120 = iVar4;
- _DAT_bc800128 = iVar4;
- _DAT_bc800130 = iVar4;
- _DAT_bc800134 = iVar4;
- _DAT_bc800138 = iVar4;
- _DAT_bc80013c = iVar4;
- _DAT_bc800144 = iVar4;
- _DAT_bc800148 = iVar4;
- sceKernelClearEventFlag(g_SceDmacplusAvc_evflag,0xfffffffc);
- sceKernelCpuResumeIntrWithSync(uVar2);
- uVar1 = 0;
- }
- else {
- sceKernelCpuResumeIntr(uVar2);
- uVar1 = 0x80000021;
- }
- }
- return uVar1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement