PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_sfr.c
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
11#include "libspu2_internal.h"
12
13void SpuStopFreeRun(void)
14{
15 u16 *v1;
16 s16 *v2;
17 u16 *v3;
18 u16 *v4;
19 int v15;
20 int i;
21 int j;
22 int k;
23
24 v1 = (u16 *)0xBF900000;
25 v2 = (s16 *)0xBF900400;
26 v3 = (u16 *)0xBF9001C0;
27 v4 = (u16 *)0xBF9005C0;
28 *((vu16 *)0xBF9001A8) = 0;
29 *((vu16 *)0xBF9001AA) = 10240;
30 // Unofficial: Fixed out of bounds dummy array access by replacing with constant setting
31 for ( v15 = 0; v15 < 16; v15 += 1 )
32 {
33 *((vu16 *)0xBF9001AC) = 1799u;
34 }
35 *((vu16 *)0xBF90019A) = (*((vu16 *)0xBF90019A) & ~0x30) | 0x10;
36 while ( (*((vu16 *)0xBF900344) & 0x400) != 0 )
37 ;
38 *((vu16 *)0xBF90019A) &= ~0x30;
39 for ( i = 0; i < 24; i += 1 )
40 {
41 s16 *v6;
42 u16 *v7;
43 u16 *v13;
44 u16 *v14;
45
46 v6 = v2 + (i * 8);
47 v7 = v1 + (i * 8);
48 v13 = v4 + (i * 6);
49 v14 = v3 + (i * 6);
50 v6[0] = 0;
51 v7[0] = v6[0];
52 v6[1] = 0;
53 v7[1] = v6[1];
54 v6[2] = 0x3FFF;
55 v7[2] = v6[2];
56 v6[3] = 0;
57 v7[3] = v6[3];
58 v6[4] = 0;
59 v7[4] = v6[4];
60 v13[0] = 0;
61 v14[0] = v13[0];
62 v13[1] = 10240;
63 v14[1] = v13[1];
64 }
65 *((vu16 *)0xBF9005A0) = -1;
66 *((vu16 *)0xBF9001A0) = -1;
67 *((vu16 *)0xBF9005A2) = 255;
68 *((vu16 *)0xBF9001A2) = 255;
69 for ( j = 0; j < 3124; j += 1 )
70 {
71 __asm__ __volatile__("" : "+g"(j) : :);
72 }
73 *((vu16 *)0xBF9005A4) = -1;
74 *((vu16 *)0xBF9001A4) = -1;
75 *((vu16 *)0xBF9005A6) = 255;
76 *((vu16 *)0xBF9001A6) = 255;
77 for ( k = 0; k < 3124; k += 1 )
78 {
79 __asm__ __volatile__("" : "+g"(k) : :);
80 }
81 *((vu16 *)0xBF900342) = 0;
82 *((vu16 *)0xBF900340) = 0;
83}