SHOW:
|
|
- or go back to the newest paste.
1 | int sceMpegBaseCscVme(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceInt32 width, SceMpegYCrCbBuffer *pYCrCbBuffer) | |
2 | { | |
3 | uint uVar1; | |
4 | int ret; | |
5 | uint uVar2; | |
6 | uint uVar3; | |
7 | uint width1; | |
8 | int in_k1; | |
9 | ||
10 | uVar1 = in_k1 << 0xb; | |
11 | if (-1 < (int)(((uint)&pYCrCbBuffer->iFrameHeight | (uint)pYCrCbBuffer) & uVar1)) { | |
12 | ret = pYCrCbBuffer->iFrameBufferWidth16; | |
13 | uVar3 = pYCrCbBuffer->iFrameBufferHeight16 * ret * 0x80; | |
14 | uVar2 = uVar3 >> 2; | |
15 | width1 = width; | |
16 | if (width == 0) { | |
17 | width1 = DAT_000006e8; | |
18 | } | |
19 | if (width1 < (uint)(ret << 4)) { | |
20 | return -0x7ffffe02; | |
21 | } | |
22 | width1 = width1 * ret * 4; | |
23 | if ((((((-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer + uVar3) | | |
24 | (uint)pYCrCbBuffer->pYBuffer | uVar3))) && | |
25 | (-1 < (int)(uVar1 & ((uint)((int)pYCrCbBuffer->pYBuffer2 + uVar3) | | |
26 | (uint)pYCrCbBuffer->pYBuffer2 | uVar3)))) && | |
27 | (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer + uVar2 | (uint)pYCrCbBuffer->pCrBuffer) & | |
28 | uVar1))) && | |
29 | ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer + uVar2 | (uint)pYCrCbBuffer->pCbBuffer) & | |
30 | uVar1) && | |
31 | (-1 < (int)(((int)pYCrCbBuffer->pCrBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCrBuffer2) & | |
32 | uVar1))))) && | |
33 | ((-1 < (int)(((int)pYCrCbBuffer->pCbBuffer2 + uVar2 | (uint)pYCrCbBuffer->pCbBuffer2) & | |
34 | uVar1) && | |
35 | (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer + width1) | (uint)pRGBbuffer | width1)))))) | |
36 | && ((pRGBbuffer2 == (ScePVoid)0x0 || | |
37 | (-1 < (int)(uVar1 & ((uint)((int)pRGBbuffer2 + width1) | (uint)pRGBbuffer2 | width1)) | |
38 | )))) { | |
39 | ret = trigger_dmacplus_memcpy4((int)DAT_000006e6,width,0); | |
40 | if (ret == 0) { | |
41 | ret = trigger_dmacplus_memcpy3(pRGBbuffer,pRGBbuffer2,pYCrCbBuffer); | |
42 | } | |
43 | sceKernelUnlockMutex(g_SceMpegBaseCSC_mutex,1); | |
44 | return ret; | |
45 | } | |
46 | } | |
47 | return -0x7fffffdd; | |
48 | } | |
49 | ||
50 | void trigger_dmacplus_memcpy4(int param_1,int param_2,int param_3) | |
51 | { | |
52 | uint ret; | |
53 | ||
54 | if (param_2 == 0) { | |
55 | param_2 = DAT_000006e8; | |
56 | } | |
57 | if (param_3 == 0) { | |
58 | param_3 = 0x6d0; | |
59 | } | |
60 | sceKernelLockMutex(g_SceMpegBaseCSC_mutex,1,0); | |
61 | while (ret = sceDmacplus_driver_0xB269EAC9_memcpy4(param_1,param_2,param_3), ret == 0x80000021) | |
62 | { | |
63 | sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync(0, 0); | |
64 | - | sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync(); |
64 | + | |
65 | return; | |
66 | } | |
67 | } | |
68 | ||
69 | ||
70 | int trigger_dmacplus_memcpy3(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceMpegYCrCbBuffer *pYCrCbBuffer) | |
71 | { | |
72 | int iVar1; | |
73 | int iVar2; | |
74 | uint ret; | |
75 | ||
76 | iVar1 = sceKernelPollEventFlag(g_SceMpegBaseCSC_evflag,3,1,0); | |
77 | iVar2 = -0x7fffffff; | |
78 | if (-1 < iVar1) { | |
79 | do { | |
80 | ret = sceDmacplus_driver_0x9C492B9B(pRGBbuffer, pRGBbuffer2, pYCrCbBuffer); | |
81 | if ((ret != 0) && (ret != 0x80000021)) { | |
82 | return ret; | |
83 | } | |
84 | iVar2 = sceDmacplus_driver_0xBF0DB45E_sceDmacplusAvcSync(); | |
85 | } while (ret != 0); | |
86 | } | |
87 | return iVar2; | |
88 | } | |
89 | ||
90 | uint sceDmacplus_driver_0xB269EAC9(int param_1,int width,ushort *param_3) | |
91 | { | |
92 | undefined4 tmp; | |
93 | uint ret; | |
94 | ||
95 | tmp = sceKernelCpuSuspendIntr(); | |
96 | if ((g_dmac_status & 2) == 0) { | |
97 | DAT_000012f4 = ((uint)param_3[2] & 0x3ff) << 0x14 | ((uint)param_3[1] & 0x3ff) << 10 | | |
98 | (uint)*param_3 & 0x3ff; | |
99 | DAT_000012f8 = ((uint)param_3[5] & 0x3ff) << 0x14 | ((uint)param_3[4] & 0x3ff) << 10 | | |
100 | (uint)param_3[3] & 0x3ff; | |
101 | DAT_000012fc = ((uint)param_3[8] & 0x3ff) << 0x14 | ((uint)param_3[7] & 0x3ff) << 10 | | |
102 | (uint)param_3[6] & 0x3ff; | |
103 | DAT_00001300 = ((uint)param_3[10] & 1) << 8 | (uint)*(byte *)(param_3 + 9); | |
104 | DAT_00001304 = width; | |
105 | DAT_00001308 = param_1; | |
106 | _DAT_bc800150 = DAT_000012f4; | |
107 | _DAT_bc800154 = DAT_000012f8; | |
108 | _DAT_bc800158 = DAT_000012fc; | |
109 | _DAT_bc80015c = DAT_00001300; | |
110 | sceKernelCpuResumeIntr(tmp); | |
111 | ret = 0; | |
112 | } | |
113 | else { | |
114 | sceKernelCpuResumeIntr(tmp); | |
115 | ret = 0x80000021; | |
116 | } | |
117 | return ret; | |
118 | } | |
119 | ||
120 | uint sceDmacplus_driver_0x9C492B9B(ScePVoid pRGBbuffer, ScePVoid pRGBbuffer2, SceMpegYCrCbBuffer *pYCrCbBuffer) | |
121 | { | |
122 | uint uVar1; | |
123 | undefined4 uVar2; | |
124 | ushort uVar3; | |
125 | int iVar4; | |
126 | uint in_k1; | |
127 | ||
128 | uVar1 = 0x80000103; | |
129 | if (pRGBbuffer != (ScePVoid)0x0) { | |
130 | uVar2 = sceKernelCpuSuspendIntr(); | |
131 | uVar3 = 0x1a; | |
132 | if ((pYCrCbBuffer->iFrameBufferWidth16 & 7U | DAT_00001308) == 0) { | |
133 | uVar3 = 10; | |
134 | } | |
135 | iVar4 = (in_k1 >> 0x1f) << 0x1e; | |
136 | if ((g_dmac_status & uVar3) == 0) { | |
137 | if (pRGBbuffer2 == (ScePVoid)0x0) { | |
138 | _DAT_bc80014c = DAT_00001304 << 8 | DAT_00001308 << 1; | |
139 | } | |
140 | else { | |
141 | _DAT_bc80014c = DAT_00001304 << 8 | DAT_00001308 << 1 | 1; | |
142 | } | |
143 | _DAT_bc800140 = | |
144 | (pYCrCbBuffer->iFrameBufferHeight16 & 0x3fU) << 0x10 | | |
145 | (pYCrCbBuffer->iFrameBufferWidth16 & 0x3fU) << 8 | | |
146 | (pYCrCbBuffer->iUnknown & 1U) << 2 | (pYCrCbBuffer->iUnknown2 & 1U) << 1 | 1; | |
147 | _DAT_bc800160 = 0xd; | |
148 | g_dmac_status = g_dmac_status | 0x8002; | |
149 | _DAT_bc800120 = iVar4; | |
150 | _DAT_bc800128 = iVar4; | |
151 | _DAT_bc800130 = iVar4; | |
152 | _DAT_bc800134 = iVar4; | |
153 | _DAT_bc800138 = iVar4; | |
154 | _DAT_bc80013c = iVar4; | |
155 | _DAT_bc800144 = iVar4; | |
156 | _DAT_bc800148 = iVar4; | |
157 | sceKernelClearEventFlag(g_SceDmacplusAvc_evflag,0xfffffffc); | |
158 | sceKernelCpuResumeIntrWithSync(uVar2); | |
159 | uVar1 = 0; | |
160 | } | |
161 | else { | |
162 | sceKernelCpuResumeIntr(uVar2); | |
163 | uVar1 = 0x80000021; | |
164 | } | |
165 | } | |
166 | return uVar1; | |
167 | } | |
168 | ||
169 | ||
170 | ||
171 | ||
172 |