1 #include "conf.h" 2 3 //int *video_quality = &conf.video_quality; 4 //int *video_mode = &conf.video_mode; 5 6 7 /*---------------------------------------------------------------------- 8 set_quality() 9 -----------------------------------------------------------------------*/ 10 // TODO - check this 11 void set_quality (int *x) // -17 highest; +12 lowest 12 { 13 if (conf.video_mode) 14 *x = 12 - ((conf.video_quality-1) * (12+17) / (99-1)); 15 } 16 17 18 /*---------------------------------------------------------------------- 19 change_video_tables() 20 -----------------------------------------------------------------------*/ 21 void change_video_tables(__attribute__ ((unused))int a, __attribute__ ((unused))int b) {} 22 23 24 /*---------------------------------------------------------------------- 25 movie_record_task() 26 -----------------------------------------------------------------------*/ 27 void __attribute__((naked,noinline)) movie_record_task() 28 { 29 //FF969BC8 30 asm volatile ( 31 32 " STMFD SP!, {R2-R8,LR} \n" 33 " LDR R8, =0x2710 \n" 34 " LDR R4, =0x6B68 \n" 35 " MOV R7, #1 \n" 36 //" ADR R6, nullsub_277 \n" 37 " LDR R6, =0xFF9698B8 \n" 38 " MOV R5, #0 \n" 39 "loc_FF969BE0: \n" 40 " LDR R0, [R4,#0x24] \n" 41 " MOV R2, #0 \n" 42 " ADD R1, SP, #0x4 \n" 43 " BL sub_FF839B8C \n" 44 " LDR R0, [R4,#0x2C] \n" 45 " CMP R0, #0 \n" 46 " LDRNE R0, [R4,#0xC] \n" 47 " CMPNE R0, #2 \n" 48 " LDRNE R0, [R4,#0x44] \n" 49 " CMPNE R0, #6 \n" 50 " BNE loc_FF969CF8 \n" 51 " LDR R0, [SP,#0x4] \n" 52 " LDR R1, [R0] \n" 53 " SUB R1, R1, #2 \n" 54 " CMP R1, #0xA \n" 55 " ADDLS PC, PC, R1,LSL#2 \n" 56 " B loc_FF969CF8 \n" 57 "loc_FF969C24: \n" 58 " B loc_FF969CAC \n" 59 "loc_FF969C28: \n" 60 " B loc_FF969CCC \n" 61 "loc_FF969C2C: \n" 62 " B loc_FF969CDC \n" 63 "loc_FF969C30: \n" 64 " B loc_FF969CE4 \n" 65 "loc_FF969C34: \n" 66 " B loc_FF969CB4 \n" 67 "loc_FF969C38: \n" 68 " B loc_FF969CEC \n" 69 "loc_FF969C3C: \n" 70 " B loc_FF969CBC \n" 71 "loc_FF969C40: \n" 72 " B loc_FF969CF8 \n" 73 "loc_FF969C44: \n" 74 " B loc_FF969CF4 \n" 75 "loc_FF969C48: \n" 76 " B loc_FF969C7C \n" 77 "loc_FF969C4C: \n" 78 " B loc_FF969C50 \n" 79 "loc_FF969C50: \n" 80 // jumptable FF969C1C entry 10 81 " STR R5, [R4,#0x40] \n" 82 " STR R5, [R4,#0x30] \n" 83 " STR R5, [R4,#0x34] \n" 84 " STRH R5, [R4,#6] \n" 85 " STR R6, [R4,#0xB4] \n" 86 " LDR R0, [R4,#0xC] \n" 87 " ADD R0, R0, #1 \n" 88 " STR R0, [R4,#0xC] \n" 89 " MOV R0, #6 \n" 90 " STR R0, [R4,#0x44] \n" 91 " B loc_FF969C98 \n" 92 "loc_FF969C7C: \n" 93 // jumptable FF969C1C entry 9 94 " STR R5, [R4,#0x40] \n" 95 " STR R5, [R4,#0x30] \n" 96 " STR R6, [R4,#0xB4] \n" 97 " LDR R0, [R4,#0xC] \n" 98 " ADD R0, R0, #1 \n" 99 " STR R0, [R4,#0xC] \n" 100 " STR R7, [R4,#0x44] \n" 101 "loc_FF969C98: \n" 102 " LDR R2, =0xFF968AD0 \n" 103 " LDR R1, =0xAC9B0 \n" 104 " LDR R0, =0xFF968BCC \n" 105 " BL sub_FF851604 \n" 106 " B loc_FF969CF8 \n" 107 "loc_FF969CAC: \n" 108 // jumptable FF969C1C entry 0 109 " BL sub_FF9699E0 \n" 110 " B loc_FF969CF8 \n" 111 "loc_FF969CB4: \n" 112 // jumptable FF969C1C entry 4 113 " BL sub_FF969320 \n" 114 //" BL sub_FF969320_my \n" // patched ---------> 115 116 " LDR R0, =0x6BEC \n" // Added (6BF0 - 4) 117 " BL set_quality \n" // Added -----------> 118 119 " B loc_FF969CF8 \n" 120 "loc_FF969CBC: \n" 121 // jumptable FF969C1C entry 6 122 " LDR R1, [R0,#0x18] \n" 123 " LDR R0, [R0,#4] \n" 124 " BL sub_FFAA9A74 \n" 125 " B loc_FF969CF8 \n" 126 "loc_FF969CCC: \n" 127 // jumptable FF969C1C entry 1 128 " LDR R0, [R4,#0x44] \n" 129 " CMP R0, #5 \n" 130 " STRNE R7, [R4,#0x34] \n" 131 " B loc_FF969CF8 \n" 132 "loc_FF969CDC: \n" 133 // jumptable FF969C1C entry 2 134 " BL sub_FF968F68 \n" 135 " B loc_FF969CF8 \n" 136 "loc_FF969CE4: \n" 137 // jumptable FF969C1C entry 3 138 " BL sub_FF968C18 \n" 139 " B loc_FF969CF8 \n" 140 "loc_FF969CEC: \n" 141 // jumptable FF969C1C entry 5 142 " BL sub_FF968A5C \n" 143 " B loc_FF969CF8 \n" 144 "loc_FF969CF4: \n" 145 // jumptable FF969C1C entry 8 146 " BL sub_FF96A128 \n" 147 "loc_FF969CF8: \n" 148 // jumptable FF969C1C default entry 149 // jumptable FF969C1C entry 7 150 " LDR R1, [SP,#0x4] \n" 151 " MOV R3, #0x5F0 \n" 152 " STR R5, [R1] \n" 153 " STR R3, [SP] \n" 154 " LDR R0, [R4,#0x28] \n" 155 " LDR R3, =0xFF9688C0 \n" // "MovieRecorder.c" 156 " MOV R2, R8 \n" 157 " BL sub_FF83A4E0 \n" 158 " B loc_FF969BE0 \n" 159 160 ); 161 } 162 163 // void __attribute__((naked,noinline)) sub_FF969320_my() 164 // { 165 // asm volatile ( 166 167 // " STMFD SP!, {R4-R11,LR} \n" 168 // " SUB SP, SP, #0x64 \n" 169 // " MOV R8, #0 \n" 170 // " LDR R6, =0x6B68 \n" 171 // " MOV R4, R0 \n" 172 // " STR R8, [SP,#0x54] \n" 173 // " STR R8, [SP,#0x4C] \n" 174 // " LDR R0, [R6,#0x44] \n" 175 // " MOV R11, #4 \n" 176 // " CMP R0, #3 \n" 177 // " STREQ R11, [R6,#0x44] \n" 178 // " LDR R0, [R6,#0xB4] \n" 179 // " MOV R9, #0 \n" 180 // " MOV R7, #0 \n" 181 // " MOV R5, #1 \n" 182 // " BLX R0 \n" 183 // " LDR R0, [R6,#0x44] \n" 184 // " CMP R0, #6 \n" 185 // " BEQ loc_FF969380 \n" 186 // " LDR R1, [R6,#0xC] \n" 187 // " CMP R1, #2 \n" 188 // " BNE loc_FF9693A0 \n" 189 // " CMP R0, #5 \n" 190 // " BEQ loc_FF969418 \n" 191 // "loc_FF969380: \n" 192 // " LDR R1, =0x7F2 \n" 193 // " MOV R7, #1 \n" 194 // //" ADR R0, aMovierecorder_ // "MovieRecorder.c" \n" 195 // " LDR R0, =0xFF9688C0 \n" 196 // " BL _DebugAssert \n" 197 // " LDR R0, [R6,#0x44] \n" 198 // " CMP R0, #4 \n" 199 // " MOVNE R5, #0 \n" 200 // " B loc_FF9693A8 \n" 201 // "loc_FF9693A0: \n" 202 // " CMP R0, #4 \n" 203 // " BNE loc_FF969418 \n" 204 // "loc_FF9693A8: \n" 205 // " LDRH R0, [R6,#6] \n" 206 // " CMP R0, #1 \n" 207 // " LDREQ R1, =0x809 \n" 208 // " LDREQ R0, =0xFF9688C0 \n" // "MovieRecorder.c" 209 // " BLEQ _DebugAssert \n" 210 // " LDRH R0, [R6,#6] \n" 211 // " CMP R0, #3 \n" 212 // " BNE loc_FF9693DC \n" 213 // " LDR R0, [R6,#0x6C] \n" 214 // " LDR R1, [R6,#0xB8] \n" 215 // " BL sub_FFB4BCC8 \n" 216 // " CMP R1, #0 \n" 217 // " MOVNE R5, #0 \n" 218 // "loc_FF9693DC: \n" 219 // " LDR R0, [R6,#0x44] \n" 220 // " CMP R0, #6 \n" 221 // " CMPNE R0, #1 \n" 222 // " CMPNE R0, #3 \n" 223 // " BNE loc_FF969420 \n" 224 // " CMP R7, #1 \n" 225 // " CMPEQ R5, #0 \n" 226 // " BNE loc_FF969420 \n" 227 // " LDR R0, [R6,#0x18] \n" 228 // " MOV R1, #0x3E8 \n" 229 // " BL sub_FF839FA8 \n" // eventproc_export_TakeSemaphore 230 // " CMP R0, #9 \n" 231 // " BNE loc_FF969840 \n" 232 // " MOV R0, #0x90000 \n" 233 // " BL sub_FF89428C \n" // eventproc_export_HardwareDefect 234 // "loc_FF969418: \n" 235 // " ADD SP, SP, #0x64 \n" 236 // " LDMFD SP!, {R4-R11,PC} \n" 237 // "loc_FF969420: \n" 238 // " CMP R5, #1 \n" 239 // " MOV R10, #1 \n" 240 // " BNE loc_FF969448 \n" 241 // " ADD R3, SP, #0x4C \n" 242 // " ADD R2, SP, #0x50 \n" 243 // " ADD R1, SP, #0x54 \n" 244 // " ADD R0, SP, #0x58 \n" 245 // " BL sub_FFAA9B34 \n" 246 // " MOVS R9, R0 \n" 247 // " BNE loc_FF969464 \n" 248 // "loc_FF969448: \n" 249 // " LDR R0, [R6,#0x34] \n" 250 // " CMP R0, #1 \n" 251 // " BNE loc_FF9695C0 \n" 252 // " LDR R0, [R6,#0x6C] \n" 253 // " LDR R1, [R6,#0x48] \n" 254 // " CMP R0, R1 \n" 255 // " BCC loc_FF9695C0 \n" 256 // "loc_FF969464: \n" 257 // " CMP R9, #0x80000001 \n" 258 // " STREQ R11, [R6,#0x70] \n" 259 // " BEQ loc_FF96949C \n" 260 // " CMP R9, #0x80000003 \n" 261 // " STREQ R10, [R6,#0x70] \n" 262 // " BEQ loc_FF96949C \n" 263 // " CMP R9, #0x80000005 \n" 264 // " MOVEQ R0, #2 \n" 265 // " BEQ loc_FF969498 \n" 266 // " CMP R9, #0x80000007 \n" 267 // " STRNE R8, [R6,#0x70] \n" 268 // " BNE loc_FF96949C \n" 269 // " MOV R0, #3 \n" 270 // "loc_FF969498: \n" 271 // " STR R0, [R6,#0x70] \n" 272 // "loc_FF96949C: \n" 273 // " LDR R0, [R6,#0xC] \n" 274 // " CMP R0, #2 \n" 275 // " BNE loc_FF969504 \n" 276 // " MOV R1, #0 \n" 277 // //" ADR R0, sub_FF969314 \n" 278 // " LDR R0, =0xFF969314 \n" 279 // " BL sub_FFA66B38 \n" 280 // " LDR R2, [R6,#0x64] \n" 281 // " ADD R3, SP, #0x5C \n" 282 // " STRD R2, [SP,#0x28] \n" 283 // " MOV R2, #0x18 \n" 284 // " ADD R1, SP, #0x34 \n" 285 // " ADD R0, SP, #0x10 \n" 286 // " BL sub_FFB4A07C \n" 287 // " LDR R1, [R6,#0x84] \n" 288 // " LDR R2, [R6,#0x88] \n" 289 // " MOV R3, #0xFFFFFFFE \n" 290 // " ADD R0, SP, #0x60 \n" 291 // " STMEA SP, {R0-R3} \n" 292 // " LDR R0, =0xAC9F8 \n" 293 // " MOV R3, #0 \n" 294 // " MOV R2, #0 \n" 295 // " MOV R1, #0x40 \n" 296 // " BL sub_FFA66A90 \n" 297 // " B loc_FF969558 \n" 298 // "loc_FF9694FC: \n" 299 // " MOV R1, #1 \n" 300 // " B loc_FF9697CC \n" 301 // "loc_FF969504: \n" 302 // " BL sub_FF96A1D4 \n" 303 // " LDR R2, [R6,#0x64] \n" 304 // " ADD R3, SP, #0x5C \n" 305 // " MOV R1, #0xFFFFFFFE \n" 306 // " MOV R0, #0 \n" 307 // " ADD R5, SP, #0x1C \n" 308 // " STMIA R5, {R0-R3} \n" 309 // " LDR R3, [R4,#0x1C] \n" 310 // " LDR R1, [R6,#0x84] \n" 311 // " LDR R2, [R6,#0x88] \n" 312 // " ADD R4, SP, #0xC \n" 313 // " ADD R0, SP, #0x60 \n" 314 // " STMIA R4, {R0-R3} \n" 315 // " MOV R3, #0 \n" 316 // " MOV R1, #0x40 \n" 317 // " MOV R2, #0 \n" 318 // " STMEA SP, {R1-R3} \n" 319 // " LDR R3, =0xAC9F8 \n" 320 // " MOV R1, #0 \n" 321 // " MOV R0, #0 \n" 322 // " BL sub_FFA65900 \n" 323 // "loc_FF969558: \n" 324 // " LDR R0, [R6,#0x18] \n" 325 // " LDR R1, [R6,#0x60] \n" 326 // " BL sub_FF839FA8 \n" // eventproc_export_TakeSemaphore 327 // " CMP R0, #9 \n" 328 // " BEQ loc_FF9694FC \n" 329 // " LDR R0, [SP,#0x5C] \n" 330 // " CMP R0, #0 \n" 331 // " BEQ loc_FF969580 \n" 332 // "loc_FF969578: \n" 333 // " MOV R1, #1 \n" 334 // " B loc_FF9697E4 \n" 335 // "loc_FF969580: \n" 336 // " LDR R0, [R6,#0xC] \n" 337 // " MOV R4, #5 \n" 338 // " CMP R0, #2 \n" 339 // " MOV R0, #1 \n" 340 // " BNE loc_FF9695AC \n" 341 // " BL sub_FFA66AF8 \n" 342 // " BL sub_FFA66B20 \n" 343 // " STR R4, [R6,#0x44] \n" 344 // " BL sub_FF96A1D4 \n" 345 // " STR R10, [R6,#0x44] \n" 346 // " B loc_FF9695B8 \n" 347 // "loc_FF9695AC: \n" 348 // " BL sub_FFA659B4 \n" 349 // " BL sub_FFA65A14 \n" 350 // " STR R4, [R6,#0x44] \n" 351 // "loc_FF9695B8: \n" 352 // " STR R8, [R6,#0x34] \n" 353 // " B loc_FF969418 \n" 354 // "loc_FF9695C0: \n" 355 // " CMP R5, #1 \n" 356 // " BNE loc_FF969840 \n" 357 // " STR R10, [R6,#0x38] \n" 358 // " LDR R0, [R6,#0x6C] \n" 359 // " LDR R11, [R4,#0xC] \n" 360 // " CMP R0, #0 \n" 361 // " LDRNE R9, [SP,#0x58] \n" 362 // " LDRNE R10, [SP,#0x54] \n" 363 // " BNE loc_FF969708 \n" 364 // " LDR R0, [R6,#0xC] \n" 365 // " CMP R0, #2 \n" 366 // " BNE loc_FF969664 \n" 367 // " MOV R1, #0 \n" 368 // //" ADR R0, sub_FF969314 \n" 369 // " LDR R0, =0xFF969314 \n" 370 // " BL sub_FFA66B38 \n" 371 // " LDR R2, [R6,#0x64] \n" 372 // " ADD R3, SP, #0x5C \n" 373 // " STRD R2, [SP,#0x28] \n" 374 // " MOV R2, #0x18 \n" 375 // " ADD R1, SP, #0x34 \n" 376 // " ADD R0, SP, #0x10 \n" 377 // " BL sub_FFB4A07C \n" 378 // " LDR R1, [R6,#0x84] \n" 379 // " LDR R2, [R6,#0x88] \n" 380 // " MOV R3, #0xFFFFFFFF \n" 381 // " ADD R0, SP, #0x60 \n" 382 // " STMEA SP, {R0-R3} \n" 383 // " LDR R0, [SP,#0x58] \n" 384 // " LDR R1, [SP,#0x54] \n" 385 // " LDR R2, [SP,#0x50] \n" 386 // " LDR R3, [SP,#0x4C] \n" 387 // " BL sub_FFA66A90 \n" 388 // " LDR R0, [R6,#0x18] \n" 389 // " LDR R1, [R6,#0x60] \n" 390 // " BL sub_FF839FA8 \n" // eventproc_export_TakeSemaphore 391 // " CMP R0, #9 \n" 392 // " BEQ loc_FF9694FC \n" 393 // " MOV R1, #0 \n" 394 // //" ADR R0, sub_FF969308 \n" 395 // " LDR R0, =0xFF969314 \n" 396 // " BL sub_FFA66B38 \n" 397 // " B loc_FF9696CC \n" 398 // "loc_FF969664: \n" 399 // " LDR R0, [R4,#0x20] \n" 400 // " LDR R2, [R6,#0x64] \n" 401 // " ADD R3, SP, #0x5C \n" 402 // " MOV R1, #0xFFFFFFFF \n" 403 // " ADD R9, SP, #0x1C \n" 404 // " STMIA R9, {R0-R3} \n" 405 // " LDR R3, [R4,#0x1C] \n" 406 // " LDR R1, [R6,#0x84] \n" 407 // " LDR R2, [R6,#0x88] \n" 408 // " ADD R0, SP, #0x60 \n" 409 // " ADD R9, SP, #0xC \n" 410 // " STMIA R9, {R0-R3} \n" 411 // " LDR R1, [SP,#0x50] \n" 412 // " LDR R2, [SP,#0x54] \n" 413 // " LDR R3, [SP,#0x4C] \n" 414 // " STMFA SP, {R1,R3} \n" 415 // " STR R2, [SP] \n" 416 // " LDMIB R4, {R0,R1} \n" 417 // " LDR R3, [SP,#0x58] \n" 418 // " MOV R2, R11 \n" 419 // " BL sub_FFA65900 \n" 420 // " LDR R0, [R6,#0x18] \n" 421 // " LDR R1, [R6,#0x60] \n" 422 // " BL sub_FF839FA8 \n" // eventproc_export_TakeSemaphore 423 // " CMP R0, #9 \n" 424 // " BEQ loc_FF9694FC \n" 425 // "loc_FF9696CC: \n" 426 // " LDR R0, [SP,#0x5C] \n" 427 // " CMP R0, #0 \n" 428 // " BNE loc_FF969578 \n" 429 // " LDR R0, [R6,#0xC] \n" 430 // " CMP R0, #2 \n" 431 // " MOV R0, #1 \n" 432 // " BNE loc_FF9696F0 \n" 433 // " BL sub_FFA66AF8 \n" 434 // " B loc_FF9696F4 \n" 435 // "loc_FF9696F0: \n" 436 // " BL sub_FFA659B4 \n" 437 // "loc_FF9696F4: \n" 438 // " LDR R0, [SP,#0x60] \n" 439 // " LDR R1, [SP,#0x58] \n" 440 // " ADD R9, R1, R0 \n" 441 // " LDR R1, [SP,#0x54] \n" 442 // " SUB R10, R1, R0 \n" 443 // "loc_FF969708: \n" 444 // " LDR R0, [R6,#0xC] \n" 445 // " LDR R2, [R6,#0x64] \n" 446 // " CMP R0, #2 \n" 447 // " ADD R3, SP, #0x5C \n" 448 // " BNE loc_FF96975C \n" 449 // " STRD R2, [SP,#0x28] \n" 450 // " MOV R2, #0x18 \n" 451 // " ADD R1, SP, #0x34 \n" 452 // " ADD R0, SP, #0x10 \n" 453 // " BL sub_FFB4A07C \n" 454 // " LDR R1, [R6,#0x84] \n" 455 // " LDR R2, [R6,#0x88] \n" 456 // " LDR R3, [R6,#0x68] \n" 457 // " ADD R0, SP, #0x60 \n" 458 // " STMEA SP, {R0-R3} \n" 459 // " LDR R2, [SP,#0x50] \n" 460 // " LDR R3, [SP,#0x4C] \n" 461 // " MOV R1, R10 \n" 462 // " MOV R0, R9 \n" 463 // " BL sub_FFA66A90 \n" 464 // " B loc_FF9697B4 \n" 465 // "loc_FF96975C: \n" 466 // " LDR R1, [R6,#0x68] \n" 467 // " LDR R0, [R4,#0x20] \n" 468 // " STR R1, [SP,#0x20] \n" 469 // " STR R0, [SP,#0x1C] \n" 470 // " STR R2, [SP,#0x24] \n" 471 // " STR R3, [SP,#0x28] \n" 472 // " LDR R3, [R4,#0x1C] \n" 473 // " LDR R1, [R6,#0x84] \n" 474 // " LDR R2, [R6,#0x88] \n" 475 // " ADD R0, SP, #0x60 \n" 476 // " STR R2, [SP,#0x14] \n" 477 // " LDR R2, [SP,#0x50] \n" 478 // " STR R1, [SP,#0x10] \n" 479 // " STR R3, [SP,#0x18] \n" 480 // " LDR R3, [SP,#0x4C] \n" 481 // " STR R0, [SP,#0xC] \n" 482 // " STMFA SP, {R2,R3} \n" 483 // " STR R10, [SP] \n" 484 // " LDMIB R4, {R0,R1} \n" 485 // " MOV R3, R9 \n" 486 // " MOV R2, R11 \n" 487 // " BL sub_FFA65900 \n" 488 // "loc_FF9697B4: \n" 489 // " LDR R0, [R6,#0x18] \n" 490 // " LDR R1, [R6,#0x60] \n" 491 // " BL sub_FF839FA8 \n" // eventproc_export_TakeSemaphore 492 // " CMP R0, #9 \n" 493 // " BNE loc_FF9697D4 \n" 494 // " MOV R1, #0 \n" 495 // "loc_FF9697CC: \n" 496 // " MOV R0, #0x90000 \n" 497 // " B loc_FF9697E8 \n" 498 // "loc_FF9697D4: \n" 499 // " LDR R0, [SP,#0x5C] \n" 500 // " CMP R0, #0 \n" 501 // " BEQ loc_FF9697F0 \n" 502 // " MOV R1, #0 \n" 503 // "loc_FF9697E4: \n" 504 // " MOV R0, #0xA0000 \n" 505 // "loc_FF9697E8: \n" 506 // " BL sub_FF9692A8 \n" 507 // " B loc_FF969418 \n" 508 // "loc_FF9697F0: \n" 509 // " LDR R0, [R6,#0xC] \n" 510 // " CMP R0, #2 \n" 511 // " MOV R0, #0 \n" 512 // " BNE loc_FF969808 \n" 513 // " BL sub_FFA66AF8 \n" 514 // " B loc_FF96980C \n" 515 // "loc_FF969808: \n" 516 // " BL sub_FFA659B4 \n" 517 // "loc_FF96980C: \n" 518 // " LDR R0, [SP,#0x58] \n" 519 // " LDR R1, [SP,#0x60] \n" 520 // " BL sub_FFAA9D6C \n" 521 // " LDR R0, [R6,#0x68] \n" 522 523 // " LDR R3, =0x6BF0 \n" // 6BF0 524 // " ADD R1, R0, #1 \n" 525 // " STR R1, [R6,#0x68] \n" 526 // " STR R3, [SP] \n" 527 // " LDR R0, [R6,#0x64] \n" 528 // " SUB R3, R3, #4 \n" // 4 529 // " AND R2, R0, #0xFF \n" 530 // " LDR R0, [SP,#0x60] \n" 531 // " BL sub_FFAA78BC \n" 532 533 // " LDR R0, =0x6BEC \n" // Added (6BF0 - 4) 534 // " BL set_quality \n" // Added -----------> 535 536 // "loc_FF969840: \n" 537 // " CMP R5, #1 \n" 538 // " LDRNEH R0, [R6,#6] \n" 539 // " CMPNE R0, #3 \n" 540 // " BNE loc_FF969418 \n" 541 // " LDR R0, [R6,#0x6C] \n" 542 // " ADD R0, R0, #1 \n" 543 // " STR R0, [R6,#0x6C] \n" 544 // " LDRH R1, [R6,#6] \n" 545 // " CMP R1, #3 \n" 546 // " LDRNE R1, [R6,#0x54] \n" 547 // " LDREQ R1, =0x3E9 \n" 548 // " MUL R0, R1, R0 \n" 549 // " LDREQ R1, =0x1770 \n" 550 // " LDRNE R1, [R6,#0x50] \n" 551 // " BL sub_FFB4BCC8 \n" 552 // " MOV R4, R0 \n" 553 // " BL sub_FFAAA0E8 \n" 554 // " LDR R0, [R6,#0x8C] \n" 555 // " CMP R0, R4 \n" 556 // " BNE loc_FF96989C \n" 557 // " LDR R0, [R6,#0x3C] \n" 558 // " CMP R0, #1 \n" 559 // " BNE loc_FF9698B0 \n" 560 // "loc_FF96989C: \n" 561 // " LDR R1, [R6,#0x98] \n" 562 // " MOV R0, R4 \n" 563 // " BLX R1 \n" 564 // " STR R4, [R6,#0x8C] \n" 565 // " STR R8, [R6,#0x3C] \n" 566 // "loc_FF9698B0: \n" 567 // " STR R8, [R6,#0x38] \n" 568 // " B loc_FF969418 \n" 569 570 // ); 571 // }