-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCdControl.asm
102 lines (95 loc) · 2.62 KB
/
CdControl.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
int CdControl(command, param, result) {
backupValue = load(0x12371C)
for(int i = 0; i < 3; i++) {
store(0x12371C, 0)
if(command != 1 && load(0x123728) & 0x10 != 0)
0x000B1150(1, 0, 0, 0)
if(params != 0 && load(0x12344C + command * 4) != 0)
if(0x000B1150(2, 0, 0, 0) != 0)
continue
store(0x12371C, backupValue)
if(0x000B1150(command, param, result, 0) == 0)
return 1
}
store(0x12371C, backupValue)
return 0
}
0x000b0010 addiu r29,r29,0xffc8
0x000b0014 sw r17,0x0014(r29)
0x000b0018 addu r17,r5,r0
0x000b001c sw r18,0x0018(r29)
0x000b0020 addu r18,r6,r0
0x000b0024 sw r20,0x0020(r29)
0x000b0028 addu r20,r4,r0
0x000b002c sw r16,0x0010(r29)
0x000b0030 addiu r16,r0,0x0003
0x000b0034 sw r19,0x001c(r29)
0x000b0038 andi r19,r20,0x00ff
0x000b003c lui r3,0x8012
0x000b0040 addiu r3,r3,0x344c
0x000b0044 sw r21,0x0024(r29)
0x000b0048 lui r21,0x8012
0x000b004c lw r21,0x371c(r21)
0x000b0050 sll r2,r19,0x02
0x000b0054 sw r22,0x0028(r29)
0x000b0058 addu r22,r2,r3
0x000b005c sw r23,0x002c(r29)
0x000b0060 addu r23,r0,r0
0x000b0064 sw r30,0x0030(r29)
0x000b0068 addiu r30,r0,0xffff
0x000b006c sw r31,0x0034(r29)
0x000b0070 lui r1,0x8012
0x000b0074 sw r0,0x371c(r1)
0x000b0078 addiu r8,r0,0x0001
0x000b007c beq r19,r8,0x000b00ac
0x000b0080 nop
0x000b0084 lui r2,0x8012
0x000b0088 lbu r2,0x3728(r2)
0x000b008c nop
0x000b0090 andi r2,r2,0x0010
0x000b0094 beq r2,r0,0x000b00ac
0x000b0098 addiu r4,r0,0x0001
0x000b009c addu r5,r0,r0
0x000b00a0 addu r6,r0,r0
0x000b00a4 jal 0x000b1150
0x000b00a8 addu r7,r0,r0
0x000b00ac beq r17,r0,0x000b00dc
0x000b00b0 nop
0x000b00b4 lw r2,0x0000(r22)
0x000b00b8 nop
0x000b00bc beq r2,r0,0x000b00dc
0x000b00c0 addiu r4,r0,0x0002
0x000b00c4 addu r5,r17,r0
0x000b00c8 addu r6,r18,r0
0x000b00cc jal 0x000b1150
0x000b00d0 addu r7,r0,r0
0x000b00d4 bne r2,r0,0x000b0100
0x000b00d8 nop
0x000b00dc lui r1,0x8012
0x000b00e0 sw r21,0x371c(r1)
0x000b00e4 andi r4,r20,0x00ff
0x000b00e8 addu r5,r17,r0
0x000b00ec addu r6,r18,r0
0x000b00f0 jal 0x000b1150
0x000b00f4 addu r7,r0,r0
0x000b00f8 beq r2,r0,0x000b011c
0x000b00fc addiu r2,r23,0x0001
0x000b0100 addiu r16,r16,0xffff
0x000b0104 bne r16,r30,0x000b0070
0x000b0108 nop
0x000b010c lui r1,0x8012
0x000b0110 sw r21,0x371c(r1)
0x000b0114 addiu r23,r0,0xffff
0x000b0118 addiu r2,r23,0x0001
0x000b011c lw r31,0x0034(r29)
0x000b0120 lw r30,0x0030(r29)
0x000b0124 lw r23,0x002c(r29)
0x000b0128 lw r22,0x0028(r29)
0x000b012c lw r21,0x0024(r29)
0x000b0130 lw r20,0x0020(r29)
0x000b0134 lw r19,0x001c(r29)
0x000b0138 lw r18,0x0018(r29)
0x000b013c lw r17,0x0014(r29)
0x000b0140 lw r16,0x0010(r29)
0x000b0144 jr r31
0x000b0148 addiu r29,r29,0x0038