mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(phase-29): §84 family fully harvested — 123/123 members, 0 failed (+29,280 ins, +27,840 distinct)
The derived-offset recompute swept the whole func_8013D53C family: 119 banked / 0 failed on top of the 4 earlier; func_8013D53C is now stubbed in ZERO overlays. R22 clean-fleet 140/140 BYTE-IDENTICAL; tools-health OK; dedup 1886/0; 0 NON_MATCHING (G4). RECIPE (and it is NOT the return-axis recipe — sampling caught this): §84 derived-offset -> per-member literal recompute AND the gate_stage ladder. With the recompute alone the sample was 0/8; through the ladder it was 3/3, then 119/119. Had I reused the return-axis recipe (plain harvest_verify, which banked 272/272 there) I would have swept 123 members to zero banks and mis-concluded the fix was wrong. Probe-before-scale. METRIC FINDING worth carrying: this harvest moved instr +29,280 AND distinct-code +27,840, while the return-axis harvest moved instr +26,928 and distinct-code +0. §84-class members are byte-VARIANTS so each is a new unique function; propagation-class members were already counted once via their shared exemplar. => §84-class work moves the RE-COMPLETENESS number; propagation moves only the DISPLAY one. Session fleet: 80.6 -> 81.0% instr · 68.2 -> 68.8% distinct-code · 89.18 -> 89.30% fn-count.
This commit is contained in:
+128
-128
@@ -4,16 +4,16 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 315742 / 353719 = 89.26% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 10616431 / 13141652 = 80.8% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3846656 / 5634875 = 68.3% (64912/87459 unique fns; the DISTINCT-RE number)
|
||||
FLEET fn-count byte-ident: 315864 / 353719 = 89.30% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 10645711 / 13141652 = 81.0% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 3874496 / 5634875 = 68.8% (65028/87459 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 436 / 60201 = 0.7% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-06-14; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 10615995 / 13081451 = 81.2%)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 10645275 / 13081451 = 81.4%)
|
||||
|
||||
FLEET REAL substantive : 313887 (of which dedup-shared 239530 via 1886 groups / 239604 instances)
|
||||
FLEET REAL substantive : 314009 (of which dedup-shared 239530 via 1886 groups / 239604 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET NON_MATCHING : 7 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 37970
|
||||
FLEET INCLUDE_ASM stubs : 37848
|
||||
FLEET matchable : 353719
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
@@ -21,140 +21,140 @@ FLEET matchable : 353719
|
||||
| main | 54 | 2 | 959 | 1055 | 2096 | 50.3% |
|
||||
| resident | 129 | 0 | 0 | 131 | 145 | 90.3% |
|
||||
| ov_SC01_000 | 2253 | 1742 | 0 | 2253 | 2403 | 93.8% |
|
||||
| ov_SC01_001 | 2255 | 1743 | 0 | 2257 | 2466 | 91.5% |
|
||||
| ov_SC01_004 | 2244 | 1734 | 0 | 2245 | 2414 | 93.0% |
|
||||
| ov_SC01_005 | 2274 | 1757 | 0 | 2274 | 2503 | 90.9% |
|
||||
| ov_SC01_006 | 2274 | 1757 | 0 | 2274 | 2503 | 90.9% |
|
||||
| ov_SC01_008 | 2244 | 1734 | 0 | 2246 | 2426 | 92.6% |
|
||||
| ov_SC01_009 | 2270 | 1735 | 0 | 2271 | 2507 | 90.6% |
|
||||
| ov_SC01_074 | 2248 | 1735 | 0 | 2250 | 2425 | 92.8% |
|
||||
| ov_SC01_001 | 2256 | 1743 | 0 | 2258 | 2466 | 91.6% |
|
||||
| ov_SC01_004 | 2245 | 1734 | 0 | 2246 | 2414 | 93.0% |
|
||||
| ov_SC01_005 | 2275 | 1757 | 0 | 2275 | 2503 | 90.9% |
|
||||
| ov_SC01_006 | 2275 | 1757 | 0 | 2275 | 2503 | 90.9% |
|
||||
| ov_SC01_008 | 2245 | 1734 | 0 | 2247 | 2426 | 92.6% |
|
||||
| ov_SC01_009 | 2271 | 1735 | 0 | 2272 | 2507 | 90.6% |
|
||||
| ov_SC01_074 | 2249 | 1735 | 0 | 2251 | 2425 | 92.8% |
|
||||
| ov_SC01_077 | 2430 | 1702 | 0 | 2432 | 2585 | 94.1% |
|
||||
| ov_SC01_080 | 2286 | 1738 | 0 | 2286 | 2512 | 91.0% |
|
||||
| ov_SC01_084 | 2293 | 1738 | 0 | 2298 | 2579 | 89.1% |
|
||||
| ov_SC02_000 | 2346 | 1773 | 0 | 2346 | 2683 | 87.4% |
|
||||
| ov_SC02_003 | 2346 | 1773 | 0 | 2346 | 2683 | 87.4% |
|
||||
| ov_SC02_004 | 2252 | 1738 | 0 | 2252 | 2401 | 93.8% |
|
||||
| ov_SC02_005 | 2360 | 1734 | 0 | 2370 | 2927 | 81.0% |
|
||||
| ov_SC02_011 | 2372 | 1741 | 0 | 2383 | 2893 | 82.4% |
|
||||
| ov_SC02_015 | 2253 | 1740 | 0 | 2253 | 2414 | 93.3% |
|
||||
| ov_SC02_016 | 2287 | 1740 | 0 | 2290 | 2545 | 90.0% |
|
||||
| ov_SC02_017 | 2330 | 1740 | 0 | 2338 | 2732 | 85.6% |
|
||||
| ov_SC02_021 | 2259 | 1740 | 0 | 2259 | 2437 | 92.7% |
|
||||
| ov_SC02_026 | 2275 | 1738 | 0 | 2281 | 2572 | 88.7% |
|
||||
| ov_SC02_027 | 2298 | 1738 | 0 | 2307 | 2692 | 85.7% |
|
||||
| ov_SC02_028 | 2300 | 1738 | 0 | 2310 | 2701 | 85.5% |
|
||||
| ov_SC02_031 | 2286 | 1739 | 0 | 2291 | 2562 | 89.4% |
|
||||
| ov_SC02_035 | 2261 | 1738 | 0 | 2264 | 2520 | 89.8% |
|
||||
| ov_SC02_039 | 2245 | 1738 | 0 | 2245 | 2416 | 92.9% |
|
||||
| ov_SC02_041 | 2283 | 1738 | 0 | 2286 | 2561 | 89.3% |
|
||||
| ov_SC01_080 | 2287 | 1738 | 0 | 2287 | 2512 | 91.0% |
|
||||
| ov_SC01_084 | 2294 | 1738 | 0 | 2299 | 2579 | 89.1% |
|
||||
| ov_SC02_000 | 2347 | 1773 | 0 | 2347 | 2683 | 87.5% |
|
||||
| ov_SC02_003 | 2347 | 1773 | 0 | 2347 | 2683 | 87.5% |
|
||||
| ov_SC02_004 | 2253 | 1738 | 0 | 2253 | 2401 | 93.8% |
|
||||
| ov_SC02_005 | 2361 | 1734 | 0 | 2371 | 2927 | 81.0% |
|
||||
| ov_SC02_011 | 2373 | 1741 | 0 | 2384 | 2893 | 82.4% |
|
||||
| ov_SC02_015 | 2254 | 1740 | 0 | 2254 | 2414 | 93.4% |
|
||||
| ov_SC02_016 | 2288 | 1740 | 0 | 2291 | 2545 | 90.0% |
|
||||
| ov_SC02_017 | 2331 | 1740 | 0 | 2339 | 2732 | 85.6% |
|
||||
| ov_SC02_021 | 2260 | 1740 | 0 | 2260 | 2437 | 92.7% |
|
||||
| ov_SC02_026 | 2276 | 1738 | 0 | 2282 | 2572 | 88.7% |
|
||||
| ov_SC02_027 | 2299 | 1738 | 0 | 2308 | 2692 | 85.7% |
|
||||
| ov_SC02_028 | 2301 | 1738 | 0 | 2311 | 2701 | 85.6% |
|
||||
| ov_SC02_031 | 2287 | 1739 | 0 | 2292 | 2562 | 89.5% |
|
||||
| ov_SC02_035 | 2262 | 1738 | 0 | 2265 | 2520 | 89.9% |
|
||||
| ov_SC02_039 | 2246 | 1738 | 0 | 2246 | 2416 | 93.0% |
|
||||
| ov_SC02_041 | 2284 | 1738 | 0 | 2287 | 2561 | 89.3% |
|
||||
| ov_SC03_001 | 2381 | 1739 | 0 | 2398 | 2869 | 83.6% |
|
||||
| ov_SC03_002 | 2307 | 1743 | 0 | 2322 | 2631 | 88.3% |
|
||||
| ov_SC03_003 | 2255 | 1738 | 0 | 2256 | 2423 | 93.1% |
|
||||
| ov_SC03_006 | 2321 | 1744 | 0 | 2330 | 2767 | 84.2% |
|
||||
| ov_SC03_007 | 2300 | 1738 | 0 | 2304 | 2623 | 87.8% |
|
||||
| ov_SC03_010 | 2263 | 1738 | 0 | 2263 | 2471 | 91.6% |
|
||||
| ov_SC03_011 | 2269 | 1738 | 0 | 2275 | 2527 | 90.0% |
|
||||
| ov_SC03_012 | 2247 | 1738 | 0 | 2248 | 2406 | 93.4% |
|
||||
| ov_SC03_013 | 2268 | 1738 | 0 | 2268 | 2493 | 91.0% |
|
||||
| ov_SC03_014 | 2326 | 1763 | 0 | 2326 | 2685 | 86.6% |
|
||||
| ov_SC03_015 | 2326 | 1763 | 0 | 2326 | 2685 | 86.6% |
|
||||
| ov_SC03_023 | 2254 | 1738 | 0 | 2255 | 2435 | 92.6% |
|
||||
| ov_SC03_024 | 2314 | 1743 | 0 | 2321 | 2641 | 87.9% |
|
||||
| ov_SC03_028 | 2294 | 1738 | 0 | 2298 | 2664 | 86.3% |
|
||||
| ov_SC03_029 | 2295 | 1740 | 0 | 2305 | 2644 | 87.2% |
|
||||
| ov_SC03_030 | 2268 | 1743 | 0 | 2270 | 2495 | 91.0% |
|
||||
| ov_SC03_031 | 2265 | 1738 | 0 | 2268 | 2514 | 90.2% |
|
||||
| ov_SC03_089 | 2282 | 1738 | 0 | 2289 | 2581 | 88.7% |
|
||||
| ov_SC03_090 | 2283 | 1738 | 0 | 2291 | 2625 | 87.3% |
|
||||
| ov_SC03_091 | 2286 | 1738 | 0 | 2294 | 2640 | 86.9% |
|
||||
| ov_SC03_092 | 2296 | 1738 | 0 | 2308 | 2587 | 89.2% |
|
||||
| ov_SC03_093 | 2272 | 1738 | 0 | 2276 | 2563 | 88.8% |
|
||||
| ov_SC03_094 | 2267 | 1738 | 0 | 2273 | 2577 | 88.2% |
|
||||
| ov_SC03_095 | 2257 | 1738 | 0 | 2260 | 2474 | 91.4% |
|
||||
| ov_SC03_096 | 2257 | 1738 | 0 | 2260 | 2465 | 91.7% |
|
||||
| ov_SC03_097 | 2287 | 1738 | 0 | 2294 | 2603 | 88.1% |
|
||||
| ov_SC03_098 | 2265 | 1738 | 0 | 2268 | 2541 | 89.3% |
|
||||
| ov_SC03_099 | 2258 | 1738 | 0 | 2261 | 2504 | 90.3% |
|
||||
| ov_SC03_100 | 2268 | 1738 | 0 | 2272 | 2539 | 89.5% |
|
||||
| ov_SC03_101 | 2268 | 1738 | 0 | 2272 | 2528 | 89.9% |
|
||||
| ov_SC03_102 | 2261 | 1738 | 0 | 2264 | 2492 | 90.9% |
|
||||
| ov_SC03_103 | 2263 | 1740 | 0 | 2266 | 2510 | 90.3% |
|
||||
| ov_SC03_104 | 2290 | 1738 | 0 | 2297 | 2616 | 87.8% |
|
||||
| ov_SC03_003 | 2256 | 1738 | 0 | 2257 | 2423 | 93.1% |
|
||||
| ov_SC03_006 | 2322 | 1744 | 0 | 2331 | 2767 | 84.2% |
|
||||
| ov_SC03_007 | 2301 | 1738 | 0 | 2305 | 2623 | 87.9% |
|
||||
| ov_SC03_010 | 2264 | 1738 | 0 | 2264 | 2471 | 91.6% |
|
||||
| ov_SC03_011 | 2270 | 1738 | 0 | 2276 | 2527 | 90.1% |
|
||||
| ov_SC03_012 | 2248 | 1738 | 0 | 2249 | 2406 | 93.5% |
|
||||
| ov_SC03_013 | 2269 | 1738 | 0 | 2269 | 2493 | 91.0% |
|
||||
| ov_SC03_014 | 2327 | 1763 | 0 | 2327 | 2685 | 86.7% |
|
||||
| ov_SC03_015 | 2327 | 1763 | 0 | 2327 | 2685 | 86.7% |
|
||||
| ov_SC03_023 | 2255 | 1738 | 0 | 2256 | 2435 | 92.6% |
|
||||
| ov_SC03_024 | 2315 | 1743 | 0 | 2322 | 2641 | 87.9% |
|
||||
| ov_SC03_028 | 2295 | 1738 | 0 | 2299 | 2664 | 86.3% |
|
||||
| ov_SC03_029 | 2296 | 1740 | 0 | 2306 | 2644 | 87.2% |
|
||||
| ov_SC03_030 | 2269 | 1743 | 0 | 2271 | 2495 | 91.0% |
|
||||
| ov_SC03_031 | 2266 | 1738 | 0 | 2269 | 2514 | 90.3% |
|
||||
| ov_SC03_089 | 2283 | 1738 | 0 | 2290 | 2581 | 88.7% |
|
||||
| ov_SC03_090 | 2284 | 1738 | 0 | 2292 | 2625 | 87.3% |
|
||||
| ov_SC03_091 | 2287 | 1738 | 0 | 2295 | 2640 | 86.9% |
|
||||
| ov_SC03_092 | 2297 | 1738 | 0 | 2309 | 2587 | 89.3% |
|
||||
| ov_SC03_093 | 2273 | 1738 | 0 | 2277 | 2563 | 88.8% |
|
||||
| ov_SC03_094 | 2268 | 1738 | 0 | 2274 | 2577 | 88.2% |
|
||||
| ov_SC03_095 | 2258 | 1738 | 0 | 2261 | 2474 | 91.4% |
|
||||
| ov_SC03_096 | 2258 | 1738 | 0 | 2261 | 2465 | 91.7% |
|
||||
| ov_SC03_097 | 2288 | 1738 | 0 | 2295 | 2603 | 88.2% |
|
||||
| ov_SC03_098 | 2266 | 1738 | 0 | 2269 | 2541 | 89.3% |
|
||||
| ov_SC03_099 | 2259 | 1738 | 0 | 2262 | 2504 | 90.3% |
|
||||
| ov_SC03_100 | 2269 | 1738 | 0 | 2273 | 2539 | 89.5% |
|
||||
| ov_SC03_101 | 2269 | 1738 | 0 | 2273 | 2528 | 89.9% |
|
||||
| ov_SC03_102 | 2262 | 1738 | 0 | 2265 | 2492 | 90.9% |
|
||||
| ov_SC03_103 | 2264 | 1740 | 0 | 2267 | 2510 | 90.3% |
|
||||
| ov_SC03_104 | 2291 | 1738 | 0 | 2298 | 2616 | 87.8% |
|
||||
| ov_SC03_105 | 2282 | 1738 | 0 | 2289 | 2597 | 88.1% |
|
||||
| ov_SC03_108 | 2249 | 1738 | 0 | 2249 | 2443 | 92.1% |
|
||||
| ov_SC03_109 | 2252 | 1738 | 0 | 2254 | 2424 | 93.0% |
|
||||
| ov_SC03_110 | 2256 | 1738 | 0 | 2256 | 2468 | 91.4% |
|
||||
| ov_SC03_111 | 2267 | 1738 | 0 | 2270 | 2510 | 90.4% |
|
||||
| ov_SC03_112 | 2261 | 1740 | 0 | 2263 | 2526 | 89.6% |
|
||||
| ov_SC03_113 | 2254 | 1740 | 0 | 2257 | 2468 | 91.5% |
|
||||
| ov_SC03_114 | 2244 | 1738 | 0 | 2246 | 2415 | 93.0% |
|
||||
| ov_SC03_115 | 2261 | 1738 | 0 | 2263 | 2472 | 91.5% |
|
||||
| ov_SC03_116 | 2252 | 1738 | 0 | 2255 | 2438 | 92.5% |
|
||||
| ov_SC03_117 | 2279 | 1738 | 0 | 2285 | 2557 | 89.4% |
|
||||
| ov_SC03_118 | 2325 | 1762 | 0 | 2326 | 2685 | 86.6% |
|
||||
| ov_SC03_119 | 2324 | 1762 | 0 | 2325 | 2685 | 86.6% |
|
||||
| ov_SC03_121 | 2259 | 1738 | 0 | 2262 | 2459 | 92.0% |
|
||||
| ov_SC03_108 | 2250 | 1738 | 0 | 2250 | 2443 | 92.1% |
|
||||
| ov_SC03_109 | 2253 | 1738 | 0 | 2255 | 2424 | 93.0% |
|
||||
| ov_SC03_110 | 2257 | 1738 | 0 | 2257 | 2468 | 91.5% |
|
||||
| ov_SC03_111 | 2268 | 1738 | 0 | 2271 | 2510 | 90.5% |
|
||||
| ov_SC03_112 | 2262 | 1740 | 0 | 2264 | 2526 | 89.6% |
|
||||
| ov_SC03_113 | 2255 | 1740 | 0 | 2258 | 2468 | 91.5% |
|
||||
| ov_SC03_114 | 2245 | 1738 | 0 | 2247 | 2415 | 93.0% |
|
||||
| ov_SC03_115 | 2262 | 1738 | 0 | 2264 | 2472 | 91.6% |
|
||||
| ov_SC03_116 | 2253 | 1738 | 0 | 2256 | 2438 | 92.5% |
|
||||
| ov_SC03_117 | 2280 | 1738 | 0 | 2286 | 2557 | 89.4% |
|
||||
| ov_SC03_118 | 2326 | 1762 | 0 | 2327 | 2685 | 86.7% |
|
||||
| ov_SC03_119 | 2325 | 1762 | 0 | 2326 | 2685 | 86.6% |
|
||||
| ov_SC03_121 | 2260 | 1738 | 0 | 2263 | 2459 | 92.0% |
|
||||
| ov_SC03_124 | 2338 | 1734 | 0 | 2358 | 2741 | 86.0% |
|
||||
| ov_SC03_125 | 2294 | 1738 | 0 | 2306 | 2588 | 89.1% |
|
||||
| ov_SC03_126 | 2256 | 1740 | 0 | 2256 | 2423 | 93.1% |
|
||||
| ov_SC04_000 | 2272 | 1742 | 0 | 2281 | 2546 | 89.6% |
|
||||
| ov_SC04_002 | 2291 | 1738 | 0 | 2295 | 2636 | 87.1% |
|
||||
| ov_SC04_003 | 2267 | 1738 | 0 | 2271 | 2502 | 90.8% |
|
||||
| ov_SC04_004 | 2276 | 1738 | 0 | 2278 | 2558 | 89.1% |
|
||||
| ov_SC04_005 | 2286 | 1738 | 0 | 2292 | 2612 | 87.7% |
|
||||
| ov_SC04_006 | 2256 | 1738 | 0 | 2258 | 2454 | 92.0% |
|
||||
| ov_SC04_007 | 2280 | 1738 | 0 | 2284 | 2569 | 88.9% |
|
||||
| ov_SC04_008 | 2248 | 1738 | 0 | 2248 | 2415 | 93.1% |
|
||||
| ov_SC04_009 | 2263 | 1738 | 0 | 2266 | 2441 | 92.8% |
|
||||
| ov_SC04_010 | 2253 | 1738 | 0 | 2254 | 2419 | 93.2% |
|
||||
| ov_SC04_011 | 2311 | 1738 | 0 | 2317 | 2803 | 82.7% |
|
||||
| ov_SC04_012 | 2250 | 1738 | 0 | 2251 | 2420 | 93.0% |
|
||||
| ov_SC03_126 | 2257 | 1740 | 0 | 2257 | 2423 | 93.1% |
|
||||
| ov_SC04_000 | 2273 | 1742 | 0 | 2282 | 2546 | 89.6% |
|
||||
| ov_SC04_002 | 2292 | 1738 | 0 | 2296 | 2636 | 87.1% |
|
||||
| ov_SC04_003 | 2268 | 1738 | 0 | 2272 | 2502 | 90.8% |
|
||||
| ov_SC04_004 | 2277 | 1738 | 0 | 2279 | 2558 | 89.1% |
|
||||
| ov_SC04_005 | 2287 | 1738 | 0 | 2293 | 2612 | 87.8% |
|
||||
| ov_SC04_006 | 2257 | 1738 | 0 | 2259 | 2454 | 92.1% |
|
||||
| ov_SC04_007 | 2281 | 1738 | 0 | 2285 | 2569 | 88.9% |
|
||||
| ov_SC04_008 | 2249 | 1738 | 0 | 2249 | 2415 | 93.1% |
|
||||
| ov_SC04_009 | 2264 | 1738 | 0 | 2267 | 2441 | 92.9% |
|
||||
| ov_SC04_010 | 2254 | 1738 | 0 | 2255 | 2419 | 93.2% |
|
||||
| ov_SC04_011 | 2312 | 1738 | 0 | 2318 | 2803 | 82.7% |
|
||||
| ov_SC04_012 | 2251 | 1738 | 0 | 2252 | 2420 | 93.1% |
|
||||
| ov_SC04_015 | 2316 | 1739 | 0 | 2327 | 2611 | 89.1% |
|
||||
| ov_SC04_016 | 2253 | 1738 | 0 | 2255 | 2440 | 92.4% |
|
||||
| ov_SC04_016 | 2254 | 1738 | 0 | 2256 | 2440 | 92.5% |
|
||||
| ov_SC04_018 | 2364 | 1773 | 0 | 2364 | 2857 | 82.7% |
|
||||
| ov_SC04_019 | 2370 | 1773 | 0 | 2370 | 2857 | 83.0% |
|
||||
| ov_SC04_020 | 2281 | 1738 | 0 | 2293 | 2567 | 89.3% |
|
||||
| ov_SC04_021 | 2257 | 1740 | 0 | 2257 | 2423 | 93.1% |
|
||||
| ov_SC05_000 | 2254 | 1742 | 0 | 2257 | 2422 | 93.2% |
|
||||
| ov_SC05_001 | 2276 | 1738 | 0 | 2281 | 2574 | 88.6% |
|
||||
| ov_SC05_002 | 2259 | 1738 | 0 | 2262 | 2442 | 92.6% |
|
||||
| ov_SC05_003 | 2256 | 1738 | 0 | 2257 | 2481 | 91.0% |
|
||||
| ov_SC05_004 | 2252 | 1738 | 0 | 2254 | 2464 | 91.5% |
|
||||
| ov_SC05_005 | 2257 | 1738 | 0 | 2258 | 2491 | 90.6% |
|
||||
| ov_SC05_006 | 2250 | 1738 | 0 | 2250 | 2430 | 92.6% |
|
||||
| ov_SC05_007 | 2260 | 1738 | 0 | 2265 | 2482 | 91.3% |
|
||||
| ov_SC05_008 | 2277 | 1738 | 0 | 2279 | 2543 | 89.6% |
|
||||
| ov_SC05_009 | 2256 | 1738 | 0 | 2260 | 2438 | 92.7% |
|
||||
| ov_SC05_010 | 2283 | 1738 | 0 | 2287 | 2588 | 88.4% |
|
||||
| ov_SC05_011 | 2252 | 1738 | 0 | 2253 | 2409 | 93.5% |
|
||||
| ov_SC04_021 | 2258 | 1740 | 0 | 2258 | 2423 | 93.2% |
|
||||
| ov_SC05_000 | 2255 | 1742 | 0 | 2258 | 2422 | 93.2% |
|
||||
| ov_SC05_001 | 2277 | 1738 | 0 | 2282 | 2574 | 88.7% |
|
||||
| ov_SC05_002 | 2260 | 1738 | 0 | 2263 | 2442 | 92.7% |
|
||||
| ov_SC05_003 | 2257 | 1738 | 0 | 2258 | 2481 | 91.0% |
|
||||
| ov_SC05_004 | 2253 | 1738 | 0 | 2255 | 2464 | 91.5% |
|
||||
| ov_SC05_005 | 2258 | 1738 | 0 | 2259 | 2491 | 90.7% |
|
||||
| ov_SC05_006 | 2251 | 1738 | 0 | 2251 | 2430 | 92.6% |
|
||||
| ov_SC05_007 | 2261 | 1738 | 0 | 2266 | 2482 | 91.3% |
|
||||
| ov_SC05_008 | 2278 | 1738 | 0 | 2280 | 2543 | 89.7% |
|
||||
| ov_SC05_009 | 2257 | 1738 | 0 | 2261 | 2438 | 92.7% |
|
||||
| ov_SC05_010 | 2284 | 1738 | 0 | 2288 | 2588 | 88.4% |
|
||||
| ov_SC05_011 | 2253 | 1738 | 0 | 2254 | 2409 | 93.6% |
|
||||
| ov_SC05_017 | 2360 | 1735 | 0 | 2371 | 2842 | 83.4% |
|
||||
| ov_SC05_018 | 2307 | 1738 | 0 | 2320 | 2673 | 86.8% |
|
||||
| ov_SC05_019 | 2257 | 1740 | 0 | 2257 | 2423 | 93.1% |
|
||||
| ov_SC06_000 | 2321 | 1747 | 0 | 2324 | 2691 | 86.4% |
|
||||
| ov_SC06_006 | 2273 | 1738 | 0 | 2274 | 2511 | 90.6% |
|
||||
| ov_SC06_008 | 2292 | 1740 | 0 | 2298 | 2542 | 90.4% |
|
||||
| ov_SC06_010 | 2273 | 1738 | 0 | 2278 | 2517 | 90.5% |
|
||||
| ov_SC05_019 | 2258 | 1740 | 0 | 2258 | 2423 | 93.2% |
|
||||
| ov_SC06_000 | 2322 | 1747 | 0 | 2325 | 2691 | 86.4% |
|
||||
| ov_SC06_006 | 2274 | 1738 | 0 | 2275 | 2511 | 90.6% |
|
||||
| ov_SC06_008 | 2293 | 1740 | 0 | 2299 | 2542 | 90.4% |
|
||||
| ov_SC06_010 | 2274 | 1738 | 0 | 2279 | 2517 | 90.5% |
|
||||
| ov_SC06_011 | 2262 | 1738 | 0 | 2266 | 2468 | 91.8% |
|
||||
| ov_SC06_013 | 2255 | 1738 | 0 | 2256 | 2425 | 93.0% |
|
||||
| ov_SC06_014 | 2261 | 1738 | 0 | 2263 | 2453 | 92.3% |
|
||||
| ov_SC06_015 | 2258 | 1738 | 0 | 2258 | 2421 | 93.3% |
|
||||
| ov_SC06_016 | 2276 | 1738 | 0 | 2278 | 2549 | 89.4% |
|
||||
| ov_SC06_018 | 2288 | 1740 | 0 | 2295 | 2665 | 86.1% |
|
||||
| ov_SC06_020 | 2265 | 1740 | 0 | 2266 | 2518 | 90.0% |
|
||||
| ov_SC06_022 | 2284 | 1738 | 0 | 2292 | 2642 | 86.8% |
|
||||
| ov_SC06_024 | 2294 | 1738 | 0 | 2300 | 2667 | 86.2% |
|
||||
| ov_SC06_025 | 2278 | 1738 | 0 | 2283 | 2572 | 88.8% |
|
||||
| ov_SC06_027 | 2243 | 1738 | 0 | 2244 | 2408 | 93.2% |
|
||||
| ov_SC06_029 | 2304 | 1738 | 0 | 2316 | 2662 | 87.0% |
|
||||
| ov_SC06_030 | 2257 | 1738 | 0 | 2257 | 2456 | 91.9% |
|
||||
| ov_SC06_032 | 2279 | 1739 | 0 | 2286 | 2658 | 86.0% |
|
||||
| ov_SC06_033 | 2281 | 1739 | 0 | 2288 | 2631 | 87.0% |
|
||||
| ov_SC06_013 | 2256 | 1738 | 0 | 2257 | 2425 | 93.1% |
|
||||
| ov_SC06_014 | 2262 | 1738 | 0 | 2264 | 2453 | 92.3% |
|
||||
| ov_SC06_015 | 2259 | 1738 | 0 | 2259 | 2421 | 93.3% |
|
||||
| ov_SC06_016 | 2277 | 1738 | 0 | 2279 | 2549 | 89.4% |
|
||||
| ov_SC06_018 | 2289 | 1740 | 0 | 2296 | 2665 | 86.2% |
|
||||
| ov_SC06_020 | 2266 | 1740 | 0 | 2267 | 2518 | 90.0% |
|
||||
| ov_SC06_022 | 2285 | 1738 | 0 | 2293 | 2642 | 86.8% |
|
||||
| ov_SC06_024 | 2295 | 1738 | 0 | 2301 | 2667 | 86.3% |
|
||||
| ov_SC06_025 | 2279 | 1738 | 0 | 2284 | 2572 | 88.8% |
|
||||
| ov_SC06_027 | 2244 | 1738 | 0 | 2245 | 2408 | 93.2% |
|
||||
| ov_SC06_029 | 2305 | 1738 | 0 | 2317 | 2662 | 87.0% |
|
||||
| ov_SC06_030 | 2258 | 1738 | 0 | 2258 | 2456 | 91.9% |
|
||||
| ov_SC06_032 | 2280 | 1739 | 0 | 2287 | 2658 | 86.0% |
|
||||
| ov_SC06_033 | 2282 | 1739 | 0 | 2289 | 2631 | 87.0% |
|
||||
| ov_SC07_000 | 2273 | 1742 | 0 | 2275 | 2521 | 90.2% |
|
||||
| ov_SC07_001 | 2256 | 1738 | 0 | 2258 | 2454 | 92.0% |
|
||||
| ov_SC07_002 | 2284 | 1738 | 0 | 2288 | 2579 | 88.7% |
|
||||
| ov_SC07_006 | 2051 | 1555 | 0 | 2131 | 2455 | 86.8% |
|
||||
| ov_SC07_001 | 2257 | 1738 | 0 | 2259 | 2454 | 92.1% |
|
||||
| ov_SC07_002 | 2285 | 1738 | 0 | 2289 | 2579 | 88.8% |
|
||||
| ov_SC07_006 | 2052 | 1555 | 0 | 2132 | 2455 | 86.8% |
|
||||
| ov_SC07_007 | 2045 | 1586 | 0 | 2129 | 2613 | 81.5% |
|
||||
| ov_SC07_008 | 2241 | 1738 | 0 | 2241 | 2386 | 93.9% |
|
||||
| ov_SC07_009 | 2250 | 1738 | 0 | 2252 | 2430 | 92.7% |
|
||||
| ov_SC07_010 | 2076 | 1608 | 0 | 2159 | 2524 | 85.5% |
|
||||
| ov_SC07_011 | 2044 | 1585 | 0 | 2124 | 2449 | 86.7% |
|
||||
| ov_SC07_008 | 2242 | 1738 | 0 | 2242 | 2386 | 94.0% |
|
||||
| ov_SC07_009 | 2251 | 1738 | 0 | 2253 | 2430 | 92.7% |
|
||||
| ov_SC07_010 | 2077 | 1608 | 0 | 2160 | 2524 | 85.6% |
|
||||
| ov_SC07_011 | 2045 | 1585 | 0 | 2125 | 2449 | 86.8% |
|
||||
|
||||
@@ -1891,7 +1891,7 @@ extern u8 D_801840EC[];
|
||||
extern u8 D_8018416C[];
|
||||
extern u8 D_80184044[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1936,7 +1936,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801EC788;
|
||||
extern s32 D_801EC770;
|
||||
|
||||
|
||||
extern u8 D_801F3152;
|
||||
extern u8 D_801F31C6;
|
||||
extern u8 D_801F307A;
|
||||
extern u8 D_801F3134;
|
||||
extern u8 D_801F3058;
|
||||
extern u8 D_801F3079;
|
||||
|
||||
|
||||
extern s32 D_801F3138;
|
||||
extern s32 D_801EC784;
|
||||
extern s32 D_801EC780;
|
||||
extern s32 D_801EC768;
|
||||
extern s32 D_801EC774;
|
||||
extern s32 D_801EC778;
|
||||
|
||||
extern void *D_801EC758;
|
||||
extern s32 D_801EC790;
|
||||
extern void *D_801EC760;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80184188[];
|
||||
extern Rec12 D_801841C0[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801F3110;
|
||||
extern s32 D_801EC77C;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_801841C4[];
|
||||
extern u8 D_801841C8[];
|
||||
extern unsigned char D_801F3070;
|
||||
extern s16 *D_801EC764;
|
||||
extern s32 D_801EC794;
|
||||
extern s32 D_801EC798;
|
||||
extern s32 D_801EC79C;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801EC788 & 1)) {
|
||||
D_801EC770 = 1;
|
||||
} else {
|
||||
D_801EC770 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_801841C0)[D_801EC770 * 12];
|
||||
D_801F3152 = b0;
|
||||
D_801F31C6 = b0;
|
||||
b1 = D_801841C4[D_801EC770 * 12];
|
||||
D_801F307A = b1;
|
||||
D_801F3134 = b1;
|
||||
b2 = D_801841C8[D_801EC770 * 12];
|
||||
D_801F3058 = b2;
|
||||
D_801F3079 = b2;
|
||||
|
||||
(*(S9 *)&D_801F3070) = ((S9 *)D_80184188)[D_801EC770];
|
||||
(*(S9 *)&D_801F3110) = *(S9 *)(&D_801F3058 + 0x18); /* same addr as (*(S9 *)&D_801F3070); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801F3138 = 1;
|
||||
D_801EC784 = -1;
|
||||
D_801EC780 = 0;
|
||||
D_801EC77C = -1;
|
||||
D_801EC768 = 0;
|
||||
D_801EC774 = 0;
|
||||
D_801EC778 = 0;
|
||||
|
||||
if ((D_801EC788 & 2) && (D_801EC770 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801EC758)[18];
|
||||
t9v = (*(s32 * *)&D_801EC758)[19];
|
||||
t8v = (*(s32 * *)&D_801EC758)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801EC770 * 12 + (s32) (*(s32 * *)&D_801EC758)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801EC764) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801EC790 != 0) {
|
||||
s32 *p = (s32 *)(D_801EC770 * 12 + (s32) (*(s32 * *)&D_801EC760));
|
||||
D_801EC794 = p[0];
|
||||
D_801EC798 = p[1];
|
||||
D_801EC79C = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183FF0[];
|
||||
extern u8 D_801840EC[];
|
||||
extern u8 D_8018416C[];
|
||||
extern u8 D_80184044[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183FF0[];
|
||||
extern u8 D_801840EC[];
|
||||
extern u8 D_8018416C[];
|
||||
extern u8 D_80184044[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183FF0[];
|
||||
extern u8 D_801840EC[];
|
||||
extern u8 D_8018416C[];
|
||||
extern u8 D_80184044[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1900,7 +1900,7 @@ extern u8 D_8017FAB0[];
|
||||
extern u8 D_8017FB30[];
|
||||
extern u8 D_8017FA08[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1945,7 +1945,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_8018EEF0;
|
||||
extern s32 D_8018EED8;
|
||||
|
||||
|
||||
extern u8 D_8019035A;
|
||||
extern u8 D_801903CE;
|
||||
extern u8 D_80190282;
|
||||
extern u8 D_8019033C;
|
||||
extern u8 D_80190260;
|
||||
extern u8 D_80190281;
|
||||
|
||||
|
||||
extern s32 D_80190340;
|
||||
extern s32 D_8018EEEC;
|
||||
extern s32 D_8018EEE8;
|
||||
extern s32 D_8018EED0;
|
||||
extern s32 D_8018EEDC;
|
||||
extern s32 D_8018EEE0;
|
||||
|
||||
extern void *D_8018EEC0;
|
||||
extern s32 D_8018EEF8;
|
||||
extern void *D_8018EEC8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8017FB4C[];
|
||||
extern Rec12 D_8017FB84[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_80190318;
|
||||
extern s32 D_8018EEE4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8017FB88[];
|
||||
extern u8 D_8017FB8C[];
|
||||
extern unsigned char D_80190278;
|
||||
extern s16 *D_8018EECC;
|
||||
extern s32 D_8018EEFC;
|
||||
extern s32 D_8018EF00;
|
||||
extern s32 D_8018EF04;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_8018EEF0 & 1)) {
|
||||
D_8018EED8 = 1;
|
||||
} else {
|
||||
D_8018EED8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8017FB84)[D_8018EED8 * 12];
|
||||
D_8019035A = b0;
|
||||
D_801903CE = b0;
|
||||
b1 = D_8017FB88[D_8018EED8 * 12];
|
||||
D_80190282 = b1;
|
||||
D_8019033C = b1;
|
||||
b2 = D_8017FB8C[D_8018EED8 * 12];
|
||||
D_80190260 = b2;
|
||||
D_80190281 = b2;
|
||||
|
||||
(*(S9 *)&D_80190278) = ((S9 *)D_8017FB4C)[D_8018EED8];
|
||||
(*(S9 *)&D_80190318) = *(S9 *)(&D_80190260 + 0x18); /* same addr as (*(S9 *)&D_80190278); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_80190340 = 1;
|
||||
D_8018EEEC = -1;
|
||||
D_8018EEE8 = 0;
|
||||
D_8018EEE4 = -1;
|
||||
D_8018EED0 = 0;
|
||||
D_8018EEDC = 0;
|
||||
D_8018EEE0 = 0;
|
||||
|
||||
if ((D_8018EEF0 & 2) && (D_8018EED8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_8018EEC0)[18];
|
||||
t9v = (*(s32 * *)&D_8018EEC0)[19];
|
||||
t8v = (*(s32 * *)&D_8018EEC0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_8018EED8 * 12 + (s32) (*(s32 * *)&D_8018EEC0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_8018EECC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_8018EEF8 != 0) {
|
||||
s32 *p = (s32 *)(D_8018EED8 * 12 + (s32) (*(s32 * *)&D_8018EEC8));
|
||||
D_8018EEFC = p[0];
|
||||
D_8018EF00 = p[1];
|
||||
D_8018EF04 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017F9B4[];
|
||||
extern u8 D_8017FAB0[];
|
||||
extern u8 D_8017FB30[];
|
||||
extern u8 D_8017FA08[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017F9B4[];
|
||||
extern u8 D_8017FAB0[];
|
||||
extern u8 D_8017FB30[];
|
||||
extern u8 D_8017FA08[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017F9B4[];
|
||||
extern u8 D_8017FAB0[];
|
||||
extern u8 D_8017FB30[];
|
||||
extern u8 D_8017FA08[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1892,7 +1892,7 @@ extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1937,7 +1937,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801CC650;
|
||||
extern s32 D_801CC638;
|
||||
|
||||
|
||||
extern u8 D_801CDFBA;
|
||||
extern u8 D_801CE060;
|
||||
extern u8 D_801CDEE2;
|
||||
extern u8 D_801CDF9C;
|
||||
extern u8 D_801CDEC0;
|
||||
extern u8 D_801CDEE1;
|
||||
|
||||
|
||||
extern s32 D_801CDFA0;
|
||||
extern s32 D_801CC64C;
|
||||
extern s32 D_801CC648;
|
||||
extern s32 D_801CC630;
|
||||
extern s32 D_801CC63C;
|
||||
extern s32 D_801CC640;
|
||||
|
||||
extern void *D_801CC620;
|
||||
extern s32 D_801CC658;
|
||||
extern void *D_801CC628;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80182CE0[];
|
||||
extern Rec12 D_80182D18[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801CDF78;
|
||||
extern s32 D_801CC644;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80182D1C[];
|
||||
extern u8 D_80182D20[];
|
||||
extern unsigned char D_801CDED8;
|
||||
extern s16 *D_801CC62C;
|
||||
extern s32 D_801CC65C;
|
||||
extern s32 D_801CC660;
|
||||
extern s32 D_801CC664;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801CC650 & 1)) {
|
||||
D_801CC638 = 1;
|
||||
} else {
|
||||
D_801CC638 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80182D18)[D_801CC638 * 12];
|
||||
D_801CDFBA = b0;
|
||||
D_801CE060 = b0;
|
||||
b1 = D_80182D1C[D_801CC638 * 12];
|
||||
D_801CDEE2 = b1;
|
||||
D_801CDF9C = b1;
|
||||
b2 = D_80182D20[D_801CC638 * 12];
|
||||
D_801CDEC0 = b2;
|
||||
D_801CDEE1 = b2;
|
||||
|
||||
(*(S9 *)&D_801CDED8) = ((S9 *)D_80182CE0)[D_801CC638];
|
||||
(*(S9 *)&D_801CDF78) = *(S9 *)(&D_801CDEC0 + 0x18); /* same addr as (*(S9 *)&D_801CDED8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801CDFA0 = 1;
|
||||
D_801CC64C = -1;
|
||||
D_801CC648 = 0;
|
||||
D_801CC644 = -1;
|
||||
D_801CC630 = 0;
|
||||
D_801CC63C = 0;
|
||||
D_801CC640 = 0;
|
||||
|
||||
if ((D_801CC650 & 2) && (D_801CC638 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801CC620)[18];
|
||||
t9v = (*(s32 * *)&D_801CC620)[19];
|
||||
t8v = (*(s32 * *)&D_801CC620)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801CC638 * 12 + (s32) (*(s32 * *)&D_801CC620)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801CC62C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801CC658 != 0) {
|
||||
s32 *p = (s32 *)(D_801CC638 * 12 + (s32) (*(s32 * *)&D_801CC628));
|
||||
D_801CC65C = p[0];
|
||||
D_801CC660 = p[1];
|
||||
D_801CC664 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1892,7 +1892,7 @@ extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1937,7 +1937,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801CC650;
|
||||
extern s32 D_801CC638;
|
||||
|
||||
|
||||
extern u8 D_801CDFBA;
|
||||
extern u8 D_801CE060;
|
||||
extern u8 D_801CDEE2;
|
||||
extern u8 D_801CDF9C;
|
||||
extern u8 D_801CDEC0;
|
||||
extern u8 D_801CDEE1;
|
||||
|
||||
|
||||
extern s32 D_801CDFA0;
|
||||
extern s32 D_801CC64C;
|
||||
extern s32 D_801CC648;
|
||||
extern s32 D_801CC630;
|
||||
extern s32 D_801CC63C;
|
||||
extern s32 D_801CC640;
|
||||
|
||||
extern void *D_801CC620;
|
||||
extern s32 D_801CC658;
|
||||
extern void *D_801CC628;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80182CE0[];
|
||||
extern Rec12 D_80182D18[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801CDF78;
|
||||
extern s32 D_801CC644;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80182D1C[];
|
||||
extern u8 D_80182D20[];
|
||||
extern unsigned char D_801CDED8;
|
||||
extern s16 *D_801CC62C;
|
||||
extern s32 D_801CC65C;
|
||||
extern s32 D_801CC660;
|
||||
extern s32 D_801CC664;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801CC650 & 1)) {
|
||||
D_801CC638 = 1;
|
||||
} else {
|
||||
D_801CC638 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80182D18)[D_801CC638 * 12];
|
||||
D_801CDFBA = b0;
|
||||
D_801CE060 = b0;
|
||||
b1 = D_80182D1C[D_801CC638 * 12];
|
||||
D_801CDEE2 = b1;
|
||||
D_801CDF9C = b1;
|
||||
b2 = D_80182D20[D_801CC638 * 12];
|
||||
D_801CDEC0 = b2;
|
||||
D_801CDEE1 = b2;
|
||||
|
||||
(*(S9 *)&D_801CDED8) = ((S9 *)D_80182CE0)[D_801CC638];
|
||||
(*(S9 *)&D_801CDF78) = *(S9 *)(&D_801CDEC0 + 0x18); /* same addr as (*(S9 *)&D_801CDED8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801CDFA0 = 1;
|
||||
D_801CC64C = -1;
|
||||
D_801CC648 = 0;
|
||||
D_801CC644 = -1;
|
||||
D_801CC630 = 0;
|
||||
D_801CC63C = 0;
|
||||
D_801CC640 = 0;
|
||||
|
||||
if ((D_801CC650 & 2) && (D_801CC638 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801CC620)[18];
|
||||
t9v = (*(s32 * *)&D_801CC620)[19];
|
||||
t8v = (*(s32 * *)&D_801CC620)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801CC638 * 12 + (s32) (*(s32 * *)&D_801CC620)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801CC62C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801CC658 != 0) {
|
||||
s32 *p = (s32 *)(D_801CC638 * 12 + (s32) (*(s32 * *)&D_801CC628));
|
||||
D_801CC65C = p[0];
|
||||
D_801CC660 = p[1];
|
||||
D_801CC664 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80182B48[];
|
||||
extern u8 D_80182C44[];
|
||||
extern u8 D_80182CC4[];
|
||||
extern u8 D_80182B9C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1900,7 +1900,7 @@ extern u8 D_80180024[];
|
||||
extern u8 D_801800A4[];
|
||||
extern u8 D_8017FF7C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1945,7 +1945,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801A2100;
|
||||
extern s32 D_801A20E8;
|
||||
|
||||
|
||||
extern u8 D_801A356A;
|
||||
extern u8 D_801A35DE;
|
||||
extern u8 D_801A3492;
|
||||
extern u8 D_801A354C;
|
||||
extern u8 D_801A3470;
|
||||
extern u8 D_801A3491;
|
||||
|
||||
|
||||
extern s32 D_801A3550;
|
||||
extern s32 D_801A20FC;
|
||||
extern s32 D_801A20F8;
|
||||
extern s32 D_801A20E0;
|
||||
extern s32 D_801A20EC;
|
||||
extern s32 D_801A20F0;
|
||||
|
||||
extern void *D_801A20D0;
|
||||
extern s32 D_801A2108;
|
||||
extern void *D_801A20D8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_801800C0[];
|
||||
extern Rec12 D_801800F8[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801A3528;
|
||||
extern s32 D_801A20F4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_801800FC[];
|
||||
extern u8 D_80180100[];
|
||||
extern unsigned char D_801A3488;
|
||||
extern s16 *D_801A20DC;
|
||||
extern s32 D_801A210C;
|
||||
extern s32 D_801A2110;
|
||||
extern s32 D_801A2114;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801A2100 & 1)) {
|
||||
D_801A20E8 = 1;
|
||||
} else {
|
||||
D_801A20E8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_801800F8)[D_801A20E8 * 12];
|
||||
D_801A356A = b0;
|
||||
D_801A35DE = b0;
|
||||
b1 = D_801800FC[D_801A20E8 * 12];
|
||||
D_801A3492 = b1;
|
||||
D_801A354C = b1;
|
||||
b2 = D_80180100[D_801A20E8 * 12];
|
||||
D_801A3470 = b2;
|
||||
D_801A3491 = b2;
|
||||
|
||||
(*(S9 *)&D_801A3488) = ((S9 *)D_801800C0)[D_801A20E8];
|
||||
(*(S9 *)&D_801A3528) = *(S9 *)(&D_801A3470 + 0x18); /* same addr as (*(S9 *)&D_801A3488); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801A3550 = 1;
|
||||
D_801A20FC = -1;
|
||||
D_801A20F8 = 0;
|
||||
D_801A20F4 = -1;
|
||||
D_801A20E0 = 0;
|
||||
D_801A20EC = 0;
|
||||
D_801A20F0 = 0;
|
||||
|
||||
if ((D_801A2100 & 2) && (D_801A20E8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801A20D0)[18];
|
||||
t9v = (*(s32 * *)&D_801A20D0)[19];
|
||||
t8v = (*(s32 * *)&D_801A20D0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801A20E8 * 12 + (s32) (*(s32 * *)&D_801A20D0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801A20DC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801A2108 != 0) {
|
||||
s32 *p = (s32 *)(D_801A20E8 * 12 + (s32) (*(s32 * *)&D_801A20D8));
|
||||
D_801A210C = p[0];
|
||||
D_801A2110 = p[1];
|
||||
D_801A2114 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017FF28[];
|
||||
extern u8 D_80180024[];
|
||||
extern u8 D_801800A4[];
|
||||
extern u8 D_8017FF7C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017FF28[];
|
||||
extern u8 D_80180024[];
|
||||
extern u8 D_801800A4[];
|
||||
extern u8 D_8017FF7C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8017FF28[];
|
||||
extern u8 D_80180024[];
|
||||
extern u8 D_801800A4[];
|
||||
extern u8 D_8017FF7C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1900,7 +1900,7 @@ extern u8 D_8018320C[];
|
||||
extern u8 D_8018328C[];
|
||||
extern u8 D_80183164[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1945,7 +1945,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801F1F60;
|
||||
extern s32 D_801F1F48;
|
||||
|
||||
|
||||
extern u8 D_801F33EA;
|
||||
extern u8 D_801F345E;
|
||||
extern u8 D_801F3312;
|
||||
extern u8 D_801F33CC;
|
||||
extern u8 D_801F32F0;
|
||||
extern u8 D_801F3311;
|
||||
|
||||
|
||||
extern s32 D_801F33D0;
|
||||
extern s32 D_801F1F5C;
|
||||
extern s32 D_801F1F58;
|
||||
extern s32 D_801F1F40;
|
||||
extern s32 D_801F1F4C;
|
||||
extern s32 D_801F1F50;
|
||||
|
||||
extern void *D_801F1F30;
|
||||
extern s32 D_801F1F68;
|
||||
extern void *D_801F1F38;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_801832A8[];
|
||||
extern Rec12 D_801832E0[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801F33A8;
|
||||
extern s32 D_801F1F54;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_801832E4[];
|
||||
extern u8 D_801832E8[];
|
||||
extern unsigned char D_801F3308;
|
||||
extern s16 *D_801F1F3C;
|
||||
extern s32 D_801F1F6C;
|
||||
extern s32 D_801F1F70;
|
||||
extern s32 D_801F1F74;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801F1F60 & 1)) {
|
||||
D_801F1F48 = 1;
|
||||
} else {
|
||||
D_801F1F48 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_801832E0)[D_801F1F48 * 12];
|
||||
D_801F33EA = b0;
|
||||
D_801F345E = b0;
|
||||
b1 = D_801832E4[D_801F1F48 * 12];
|
||||
D_801F3312 = b1;
|
||||
D_801F33CC = b1;
|
||||
b2 = D_801832E8[D_801F1F48 * 12];
|
||||
D_801F32F0 = b2;
|
||||
D_801F3311 = b2;
|
||||
|
||||
(*(S9 *)&D_801F3308) = ((S9 *)D_801832A8)[D_801F1F48];
|
||||
(*(S9 *)&D_801F33A8) = *(S9 *)(&D_801F32F0 + 0x18); /* same addr as (*(S9 *)&D_801F3308); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801F33D0 = 1;
|
||||
D_801F1F5C = -1;
|
||||
D_801F1F58 = 0;
|
||||
D_801F1F54 = -1;
|
||||
D_801F1F40 = 0;
|
||||
D_801F1F4C = 0;
|
||||
D_801F1F50 = 0;
|
||||
|
||||
if ((D_801F1F60 & 2) && (D_801F1F48 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801F1F30)[18];
|
||||
t9v = (*(s32 * *)&D_801F1F30)[19];
|
||||
t8v = (*(s32 * *)&D_801F1F30)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801F1F48 * 12 + (s32) (*(s32 * *)&D_801F1F30)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801F1F3C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801F1F68 != 0) {
|
||||
s32 *p = (s32 *)(D_801F1F48 * 12 + (s32) (*(s32 * *)&D_801F1F38));
|
||||
D_801F1F6C = p[0];
|
||||
D_801F1F70 = p[1];
|
||||
D_801F1F74 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183110[];
|
||||
extern u8 D_8018320C[];
|
||||
extern u8 D_8018328C[];
|
||||
extern u8 D_80183164[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183110[];
|
||||
extern u8 D_8018320C[];
|
||||
extern u8 D_8018328C[];
|
||||
extern u8 D_80183164[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_80183110[];
|
||||
extern u8 D_8018320C[];
|
||||
extern u8 D_8018328C[];
|
||||
extern u8 D_80183164[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8017EE8C[];
|
||||
extern u8 D_8017EF0C[];
|
||||
extern u8 D_8017EDE4[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_8019A9E0;
|
||||
extern s32 D_8019A9C8;
|
||||
|
||||
|
||||
extern u8 D_8019BCFA;
|
||||
extern u8 D_8019BD6E;
|
||||
extern u8 D_8019BC22;
|
||||
extern u8 D_8019BCDC;
|
||||
extern u8 D_8019BC00;
|
||||
extern u8 D_8019BC21;
|
||||
|
||||
|
||||
extern s32 D_8019BCE0;
|
||||
extern s32 D_8019A9DC;
|
||||
extern s32 D_8019A9D8;
|
||||
extern s32 D_8019A9C0;
|
||||
extern s32 D_8019A9CC;
|
||||
extern s32 D_8019A9D0;
|
||||
|
||||
extern void *D_8019A9B0;
|
||||
extern s32 D_8019A9E8;
|
||||
extern void *D_8019A9B8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8017EF28[];
|
||||
extern Rec12 D_8017EF60[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_8019BCB8;
|
||||
extern s32 D_8019A9D4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8017EF64[];
|
||||
extern u8 D_8017EF68[];
|
||||
extern unsigned char D_8019BC18;
|
||||
extern s16 *D_8019A9BC;
|
||||
extern s32 D_8019A9EC;
|
||||
extern s32 D_8019A9F0;
|
||||
extern s32 D_8019A9F4;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_8019A9E0 & 1)) {
|
||||
D_8019A9C8 = 1;
|
||||
} else {
|
||||
D_8019A9C8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8017EF60)[D_8019A9C8 * 12];
|
||||
D_8019BCFA = b0;
|
||||
D_8019BD6E = b0;
|
||||
b1 = D_8017EF64[D_8019A9C8 * 12];
|
||||
D_8019BC22 = b1;
|
||||
D_8019BCDC = b1;
|
||||
b2 = D_8017EF68[D_8019A9C8 * 12];
|
||||
D_8019BC00 = b2;
|
||||
D_8019BC21 = b2;
|
||||
|
||||
(*(S9 *)&D_8019BC18) = ((S9 *)D_8017EF28)[D_8019A9C8];
|
||||
(*(S9 *)&D_8019BCB8) = *(S9 *)(&D_8019BC00 + 0x18); /* same addr as (*(S9 *)&D_8019BC18); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_8019BCE0 = 1;
|
||||
D_8019A9DC = -1;
|
||||
D_8019A9D8 = 0;
|
||||
D_8019A9D4 = -1;
|
||||
D_8019A9C0 = 0;
|
||||
D_8019A9CC = 0;
|
||||
D_8019A9D0 = 0;
|
||||
|
||||
if ((D_8019A9E0 & 2) && (D_8019A9C8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_8019A9B0)[18];
|
||||
t9v = (*(s32 * *)&D_8019A9B0)[19];
|
||||
t8v = (*(s32 * *)&D_8019A9B0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_8019A9C8 * 12 + (s32) (*(s32 * *)&D_8019A9B0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_8019A9BC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_8019A9E8 != 0) {
|
||||
s32 *p = (s32 *)(D_8019A9C8 * 12 + (s32) (*(s32 * *)&D_8019A9B8));
|
||||
D_8019A9EC = p[0];
|
||||
D_8019A9F0 = p[1];
|
||||
D_8019A9F4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017ED90[];
|
||||
extern u8 D_8017EE8C[];
|
||||
extern u8 D_8017EF0C[];
|
||||
extern u8 D_8017EDE4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017ED90[];
|
||||
extern u8 D_8017EE8C[];
|
||||
extern u8 D_8017EF0C[];
|
||||
extern u8 D_8017EDE4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017ED90[];
|
||||
extern u8 D_8017EE8C[];
|
||||
extern u8 D_8017EF0C[];
|
||||
extern u8 D_8017EDE4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_80183DEC[];
|
||||
extern u8 D_80183E6C[];
|
||||
extern u8 D_80183D44[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801C4810;
|
||||
extern s32 D_801C47F8;
|
||||
|
||||
|
||||
extern u8 D_801C7EDE;
|
||||
extern u8 D_801C7F4E;
|
||||
extern u8 D_801C7E00;
|
||||
extern u8 D_801C7EBC;
|
||||
extern u8 D_801C75D8;
|
||||
extern u8 D_801C75F9;
|
||||
|
||||
|
||||
extern s32 D_801C7EC4;
|
||||
extern s32 D_801C480C;
|
||||
extern s32 D_801C4808;
|
||||
extern s32 D_801C47F0;
|
||||
extern s32 D_801C47FC;
|
||||
extern s32 D_801C4800;
|
||||
|
||||
extern void *D_801C47E0;
|
||||
extern s32 D_801C4818;
|
||||
extern void *D_801C47E8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80183E88[];
|
||||
extern Rec12 D_80183EC0[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801C7E98;
|
||||
extern s32 D_801C4804;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80183EC4[];
|
||||
extern u8 D_80183EC8[];
|
||||
extern unsigned char D_801C75F0;
|
||||
extern s16 *D_801C47EC;
|
||||
extern s32 D_801C481C;
|
||||
extern s32 D_801C4820;
|
||||
extern s32 D_801C4824;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801C4810 & 1)) {
|
||||
D_801C47F8 = 1;
|
||||
} else {
|
||||
D_801C47F8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80183EC0)[D_801C47F8 * 12];
|
||||
D_801C7EDE = b0;
|
||||
D_801C7F4E = b0;
|
||||
b1 = D_80183EC4[D_801C47F8 * 12];
|
||||
D_801C7E00 = b1;
|
||||
D_801C7EBC = b1;
|
||||
b2 = D_80183EC8[D_801C47F8 * 12];
|
||||
D_801C75D8 = b2;
|
||||
D_801C75F9 = b2;
|
||||
|
||||
(*(S9 *)&D_801C75F0) = ((S9 *)D_80183E88)[D_801C47F8];
|
||||
(*(S9 *)&D_801C7E98) = *(S9 *)(&D_801C75D8 + 0x18); /* same addr as (*(S9 *)&D_801C75F0); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801C7EC4 = 1;
|
||||
D_801C480C = -1;
|
||||
D_801C4808 = 0;
|
||||
D_801C4804 = -1;
|
||||
D_801C47F0 = 0;
|
||||
D_801C47FC = 0;
|
||||
D_801C4800 = 0;
|
||||
|
||||
if ((D_801C4810 & 2) && (D_801C47F8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801C47E0)[18];
|
||||
t9v = (*(s32 * *)&D_801C47E0)[19];
|
||||
t8v = (*(s32 * *)&D_801C47E0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801C47F8 * 12 + (s32) (*(s32 * *)&D_801C47E0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801C47EC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801C4818 != 0) {
|
||||
s32 *p = (s32 *)(D_801C47F8 * 12 + (s32) (*(s32 * *)&D_801C47E8));
|
||||
D_801C481C = p[0];
|
||||
D_801C4820 = p[1];
|
||||
D_801C4824 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80183CF0[];
|
||||
extern u8 D_80183DEC[];
|
||||
extern u8 D_80183E6C[];
|
||||
extern u8 D_80183D44[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80183CF0[];
|
||||
extern u8 D_80183DEC[];
|
||||
extern u8 D_80183E6C[];
|
||||
extern u8 D_80183D44[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80183CF0[];
|
||||
extern u8 D_80183DEC[];
|
||||
extern u8 D_80183E6C[];
|
||||
extern u8 D_80183D44[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_801870E0[];
|
||||
extern u8 D_80187160[];
|
||||
extern u8 D_80187038[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801C62B8;
|
||||
extern s32 D_801C62A0;
|
||||
|
||||
|
||||
extern u8 D_801C7ABA;
|
||||
extern u8 D_801C7BF6;
|
||||
extern u8 D_801C7762;
|
||||
extern u8 D_801C781C;
|
||||
extern u8 D_801C7730;
|
||||
extern u8 D_801C7761;
|
||||
|
||||
|
||||
extern s32 D_801C7820;
|
||||
extern s32 D_801C62B4;
|
||||
extern s32 D_801C62B0;
|
||||
extern s32 D_801C6298;
|
||||
extern s32 D_801C62A4;
|
||||
extern s32 D_801C62A8;
|
||||
|
||||
extern void *D_801C6288;
|
||||
extern s32 D_801C62C0;
|
||||
extern void *D_801C6290;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018717C[];
|
||||
extern Rec12 D_801871B4[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801C77F8;
|
||||
extern s32 D_801C62AC;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_801871B8[];
|
||||
extern u8 D_801871BC[];
|
||||
extern unsigned char D_801C7758;
|
||||
extern s16 *D_801C6294;
|
||||
extern s32 D_801C62C4;
|
||||
extern s32 D_801C62C8;
|
||||
extern s32 D_801C62CC;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801C62B8 & 1)) {
|
||||
D_801C62A0 = 1;
|
||||
} else {
|
||||
D_801C62A0 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_801871B4)[D_801C62A0 * 12];
|
||||
D_801C7ABA = b0;
|
||||
D_801C7BF6 = b0;
|
||||
b1 = D_801871B8[D_801C62A0 * 12];
|
||||
D_801C7762 = b1;
|
||||
D_801C781C = b1;
|
||||
b2 = D_801871BC[D_801C62A0 * 12];
|
||||
D_801C7730 = b2;
|
||||
D_801C7761 = b2;
|
||||
|
||||
(*(S9 *)&D_801C7758) = ((S9 *)D_8018717C)[D_801C62A0];
|
||||
(*(S9 *)&D_801C77F8) = *(S9 *)(&D_801C7730 + 0x28); /* same addr as (*(S9 *)&D_801C7758); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801C7820 = 1;
|
||||
D_801C62B4 = -1;
|
||||
D_801C62B0 = 0;
|
||||
D_801C62AC = -1;
|
||||
D_801C6298 = 0;
|
||||
D_801C62A4 = 0;
|
||||
D_801C62A8 = 0;
|
||||
|
||||
if ((D_801C62B8 & 2) && (D_801C62A0 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801C6288)[18];
|
||||
t9v = (*(s32 * *)&D_801C6288)[19];
|
||||
t8v = (*(s32 * *)&D_801C6288)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801C62A0 * 12 + (s32) (*(s32 * *)&D_801C6288)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801C6294) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801C62C0 != 0) {
|
||||
s32 *p = (s32 *)(D_801C62A0 * 12 + (s32) (*(s32 * *)&D_801C6290));
|
||||
D_801C62C4 = p[0];
|
||||
D_801C62C8 = p[1];
|
||||
D_801C62CC = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80186FE4[];
|
||||
extern u8 D_801870E0[];
|
||||
extern u8 D_80187160[];
|
||||
extern u8 D_80187038[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80186FE4[];
|
||||
extern u8 D_801870E0[];
|
||||
extern u8 D_80187160[];
|
||||
extern u8 D_80187038[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80186FE4[];
|
||||
extern u8 D_801870E0[];
|
||||
extern u8 D_80187160[];
|
||||
extern u8 D_80187038[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1892,7 +1892,7 @@ extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1937,7 +1937,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801E6DE8;
|
||||
extern s32 D_801E6DD0;
|
||||
|
||||
|
||||
extern u8 D_801E87BE;
|
||||
extern u8 D_801E8866;
|
||||
extern u8 D_801E8692;
|
||||
extern u8 D_801E876C;
|
||||
extern u8 D_801E8670;
|
||||
extern u8 D_801E8691;
|
||||
|
||||
|
||||
extern s32 D_801E8774;
|
||||
extern s32 D_801E6DE4;
|
||||
extern s32 D_801E6DE0;
|
||||
extern s32 D_801E6DC8;
|
||||
extern s32 D_801E6DD4;
|
||||
extern s32 D_801E6DD8;
|
||||
|
||||
extern void *D_801E6DB8;
|
||||
extern s32 D_801E6DF0;
|
||||
extern void *D_801E6DC0;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018B52C[];
|
||||
extern Rec12 D_8018B564[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801E8740;
|
||||
extern s32 D_801E6DDC;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8018B568[];
|
||||
extern u8 D_8018B56C[];
|
||||
extern unsigned char D_801E8688;
|
||||
extern s16 *D_801E6DC4;
|
||||
extern s32 D_801E6DF4;
|
||||
extern s32 D_801E6DF8;
|
||||
extern s32 D_801E6DFC;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801E6DE8 & 1)) {
|
||||
D_801E6DD0 = 1;
|
||||
} else {
|
||||
D_801E6DD0 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8018B564)[D_801E6DD0 * 12];
|
||||
D_801E87BE = b0;
|
||||
D_801E8866 = b0;
|
||||
b1 = D_8018B568[D_801E6DD0 * 12];
|
||||
D_801E8692 = b1;
|
||||
D_801E876C = b1;
|
||||
b2 = D_8018B56C[D_801E6DD0 * 12];
|
||||
D_801E8670 = b2;
|
||||
D_801E8691 = b2;
|
||||
|
||||
(*(S9 *)&D_801E8688) = ((S9 *)D_8018B52C)[D_801E6DD0];
|
||||
(*(S9 *)&D_801E8740) = *(S9 *)(&D_801E8670 + 0x18); /* same addr as (*(S9 *)&D_801E8688); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801E8774 = 1;
|
||||
D_801E6DE4 = -1;
|
||||
D_801E6DE0 = 0;
|
||||
D_801E6DDC = -1;
|
||||
D_801E6DC8 = 0;
|
||||
D_801E6DD4 = 0;
|
||||
D_801E6DD8 = 0;
|
||||
|
||||
if ((D_801E6DE8 & 2) && (D_801E6DD0 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801E6DB8)[18];
|
||||
t9v = (*(s32 * *)&D_801E6DB8)[19];
|
||||
t8v = (*(s32 * *)&D_801E6DB8)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DB8)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801E6DC4) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801E6DF0 != 0) {
|
||||
s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DC0));
|
||||
D_801E6DF4 = p[0];
|
||||
D_801E6DF8 = p[1];
|
||||
D_801E6DFC = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1892,7 +1892,7 @@ extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1937,7 +1937,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801E6DE8;
|
||||
extern s32 D_801E6DD0;
|
||||
|
||||
|
||||
extern u8 D_801E87BE;
|
||||
extern u8 D_801E8866;
|
||||
extern u8 D_801E8692;
|
||||
extern u8 D_801E876C;
|
||||
extern u8 D_801E8670;
|
||||
extern u8 D_801E8691;
|
||||
|
||||
|
||||
extern s32 D_801E8774;
|
||||
extern s32 D_801E6DE4;
|
||||
extern s32 D_801E6DE0;
|
||||
extern s32 D_801E6DC8;
|
||||
extern s32 D_801E6DD4;
|
||||
extern s32 D_801E6DD8;
|
||||
|
||||
extern void *D_801E6DB8;
|
||||
extern s32 D_801E6DF0;
|
||||
extern void *D_801E6DC0;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018B52C[];
|
||||
extern Rec12 D_8018B564[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801E8740;
|
||||
extern s32 D_801E6DDC;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8018B568[];
|
||||
extern u8 D_8018B56C[];
|
||||
extern unsigned char D_801E8688;
|
||||
extern s16 *D_801E6DC4;
|
||||
extern s32 D_801E6DF4;
|
||||
extern s32 D_801E6DF8;
|
||||
extern s32 D_801E6DFC;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801E6DE8 & 1)) {
|
||||
D_801E6DD0 = 1;
|
||||
} else {
|
||||
D_801E6DD0 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8018B564)[D_801E6DD0 * 12];
|
||||
D_801E87BE = b0;
|
||||
D_801E8866 = b0;
|
||||
b1 = D_8018B568[D_801E6DD0 * 12];
|
||||
D_801E8692 = b1;
|
||||
D_801E876C = b1;
|
||||
b2 = D_8018B56C[D_801E6DD0 * 12];
|
||||
D_801E8670 = b2;
|
||||
D_801E8691 = b2;
|
||||
|
||||
(*(S9 *)&D_801E8688) = ((S9 *)D_8018B52C)[D_801E6DD0];
|
||||
(*(S9 *)&D_801E8740) = *(S9 *)(&D_801E8670 + 0x18); /* same addr as (*(S9 *)&D_801E8688); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801E8774 = 1;
|
||||
D_801E6DE4 = -1;
|
||||
D_801E6DE0 = 0;
|
||||
D_801E6DDC = -1;
|
||||
D_801E6DC8 = 0;
|
||||
D_801E6DD4 = 0;
|
||||
D_801E6DD8 = 0;
|
||||
|
||||
if ((D_801E6DE8 & 2) && (D_801E6DD0 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801E6DB8)[18];
|
||||
t9v = (*(s32 * *)&D_801E6DB8)[19];
|
||||
t8v = (*(s32 * *)&D_801E6DB8)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DB8)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801E6DC4) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801E6DF0 != 0) {
|
||||
s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DC0));
|
||||
D_801E6DF4 = p[0];
|
||||
D_801E6DF8 = p[1];
|
||||
D_801E6DFC = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -818,7 +818,7 @@ extern u8 D_8018B394[];
|
||||
extern u8 D_8018B490[];
|
||||
extern u8 D_8018B510[];
|
||||
extern u8 D_8018B3E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8017E570[];
|
||||
extern u8 D_8017E5F0[];
|
||||
extern u8 D_8017E4C8[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_80195038;
|
||||
extern s32 D_80195020;
|
||||
|
||||
|
||||
extern u8 D_80196352;
|
||||
extern u8 D_801963C6;
|
||||
extern u8 D_8019627A;
|
||||
extern u8 D_80196334;
|
||||
extern u8 D_80196258;
|
||||
extern u8 D_80196279;
|
||||
|
||||
|
||||
extern s32 D_80196338;
|
||||
extern s32 D_80195034;
|
||||
extern s32 D_80195030;
|
||||
extern s32 D_80195018;
|
||||
extern s32 D_80195024;
|
||||
extern s32 D_80195028;
|
||||
|
||||
extern void *D_80195008;
|
||||
extern s32 D_80195040;
|
||||
extern void *D_80195010;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8017E60C[];
|
||||
extern Rec12 D_8017E644[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_80196310;
|
||||
extern s32 D_8019502C;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8017E648[];
|
||||
extern u8 D_8017E64C[];
|
||||
extern unsigned char D_80196270;
|
||||
extern s16 *D_80195014;
|
||||
extern s32 D_80195044;
|
||||
extern s32 D_80195048;
|
||||
extern s32 D_8019504C;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_80195038 & 1)) {
|
||||
D_80195020 = 1;
|
||||
} else {
|
||||
D_80195020 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8017E644)[D_80195020 * 12];
|
||||
D_80196352 = b0;
|
||||
D_801963C6 = b0;
|
||||
b1 = D_8017E648[D_80195020 * 12];
|
||||
D_8019627A = b1;
|
||||
D_80196334 = b1;
|
||||
b2 = D_8017E64C[D_80195020 * 12];
|
||||
D_80196258 = b2;
|
||||
D_80196279 = b2;
|
||||
|
||||
(*(S9 *)&D_80196270) = ((S9 *)D_8017E60C)[D_80195020];
|
||||
(*(S9 *)&D_80196310) = *(S9 *)(&D_80196258 + 0x18); /* same addr as (*(S9 *)&D_80196270); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_80196338 = 1;
|
||||
D_80195034 = -1;
|
||||
D_80195030 = 0;
|
||||
D_8019502C = -1;
|
||||
D_80195018 = 0;
|
||||
D_80195024 = 0;
|
||||
D_80195028 = 0;
|
||||
|
||||
if ((D_80195038 & 2) && (D_80195020 == 4)) {
|
||||
s0v = (*(s32 * *)&D_80195008)[18];
|
||||
t9v = (*(s32 * *)&D_80195008)[19];
|
||||
t8v = (*(s32 * *)&D_80195008)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_80195020 * 12 + (s32) (*(s32 * *)&D_80195008)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_80195014) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_80195040 != 0) {
|
||||
s32 *p = (s32 *)(D_80195020 * 12 + (s32) (*(s32 * *)&D_80195010));
|
||||
D_80195044 = p[0];
|
||||
D_80195048 = p[1];
|
||||
D_8019504C = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E474[];
|
||||
extern u8 D_8017E570[];
|
||||
extern u8 D_8017E5F0[];
|
||||
extern u8 D_8017E4C8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E474[];
|
||||
extern u8 D_8017E570[];
|
||||
extern u8 D_8017E5F0[];
|
||||
extern u8 D_8017E4C8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E474[];
|
||||
extern u8 D_8017E570[];
|
||||
extern u8 D_8017E5F0[];
|
||||
extern u8 D_8017E4C8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_80191174[];
|
||||
extern u8 D_801911F4[];
|
||||
extern u8 D_801910CC[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801E30B0;
|
||||
extern s32 D_801E3098;
|
||||
|
||||
|
||||
extern u8 D_801E4BDA;
|
||||
extern u8 D_801E4C58;
|
||||
extern u8 D_801E4B00;
|
||||
extern u8 D_801E4BBE;
|
||||
extern u8 D_801E4A40;
|
||||
extern u8 D_801E4A99;
|
||||
|
||||
|
||||
extern s32 D_801E4BC0;
|
||||
extern s32 D_801E30AC;
|
||||
extern s32 D_801E30A8;
|
||||
extern s32 D_801E3090;
|
||||
extern s32 D_801E309C;
|
||||
extern s32 D_801E30A0;
|
||||
|
||||
extern void *D_801E3080;
|
||||
extern s32 D_801E30B8;
|
||||
extern void *D_801E3088;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80191210[];
|
||||
extern Rec12 D_80191248[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801E4B98;
|
||||
extern s32 D_801E30A4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8019124C[];
|
||||
extern u8 D_80191250[];
|
||||
extern unsigned char D_801E4A90;
|
||||
extern s16 *D_801E308C;
|
||||
extern s32 D_801E30BC;
|
||||
extern s32 D_801E30C0;
|
||||
extern s32 D_801E30C4;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801E30B0 & 1)) {
|
||||
D_801E3098 = 1;
|
||||
} else {
|
||||
D_801E3098 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80191248)[D_801E3098 * 12];
|
||||
D_801E4BDA = b0;
|
||||
D_801E4C58 = b0;
|
||||
b1 = D_8019124C[D_801E3098 * 12];
|
||||
D_801E4B00 = b1;
|
||||
D_801E4BBE = b1;
|
||||
b2 = D_80191250[D_801E3098 * 12];
|
||||
D_801E4A40 = b2;
|
||||
D_801E4A99 = b2;
|
||||
|
||||
(*(S9 *)&D_801E4A90) = ((S9 *)D_80191210)[D_801E3098];
|
||||
(*(S9 *)&D_801E4B98) = *(S9 *)(&D_801E4A40 + 0x50); /* same addr as (*(S9 *)&D_801E4A90); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801E4BC0 = 1;
|
||||
D_801E30AC = -1;
|
||||
D_801E30A8 = 0;
|
||||
D_801E30A4 = -1;
|
||||
D_801E3090 = 0;
|
||||
D_801E309C = 0;
|
||||
D_801E30A0 = 0;
|
||||
|
||||
if ((D_801E30B0 & 2) && (D_801E3098 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801E3080)[18];
|
||||
t9v = (*(s32 * *)&D_801E3080)[19];
|
||||
t8v = (*(s32 * *)&D_801E3080)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801E3098 * 12 + (s32) (*(s32 * *)&D_801E3080)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801E308C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801E30B8 != 0) {
|
||||
s32 *p = (s32 *)(D_801E3098 * 12 + (s32) (*(s32 * *)&D_801E3088));
|
||||
D_801E30BC = p[0];
|
||||
D_801E30C0 = p[1];
|
||||
D_801E30C4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80191078[];
|
||||
extern u8 D_80191174[];
|
||||
extern u8 D_801911F4[];
|
||||
extern u8 D_801910CC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80191078[];
|
||||
extern u8 D_80191174[];
|
||||
extern u8 D_801911F4[];
|
||||
extern u8 D_801910CC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80191078[];
|
||||
extern u8 D_80191174[];
|
||||
extern u8 D_801911F4[];
|
||||
extern u8 D_801910CC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_801915C4[];
|
||||
extern u8 D_80191644[];
|
||||
extern u8 D_8019151C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801E9F90;
|
||||
extern s32 D_801E9F78;
|
||||
|
||||
|
||||
extern u8 D_801EBA0A;
|
||||
extern u8 D_801EBA7E;
|
||||
extern u8 D_801EB932;
|
||||
extern u8 D_801EB9EC;
|
||||
extern u8 D_801EB910;
|
||||
extern u8 D_801EB931;
|
||||
|
||||
|
||||
extern s32 D_801EB9F0;
|
||||
extern s32 D_801E9F8C;
|
||||
extern s32 D_801E9F88;
|
||||
extern s32 D_801E9F70;
|
||||
extern s32 D_801E9F7C;
|
||||
extern s32 D_801E9F80;
|
||||
|
||||
extern void *D_801E9F60;
|
||||
extern s32 D_801E9F98;
|
||||
extern void *D_801E9F68;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80191660[];
|
||||
extern Rec12 D_80191698[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801EB9C8;
|
||||
extern s32 D_801E9F84;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8019169C[];
|
||||
extern u8 D_801916A0[];
|
||||
extern unsigned char D_801EB928;
|
||||
extern s16 *D_801E9F6C;
|
||||
extern s32 D_801E9F9C;
|
||||
extern s32 D_801E9FA0;
|
||||
extern s32 D_801E9FA4;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801E9F90 & 1)) {
|
||||
D_801E9F78 = 1;
|
||||
} else {
|
||||
D_801E9F78 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80191698)[D_801E9F78 * 12];
|
||||
D_801EBA0A = b0;
|
||||
D_801EBA7E = b0;
|
||||
b1 = D_8019169C[D_801E9F78 * 12];
|
||||
D_801EB932 = b1;
|
||||
D_801EB9EC = b1;
|
||||
b2 = D_801916A0[D_801E9F78 * 12];
|
||||
D_801EB910 = b2;
|
||||
D_801EB931 = b2;
|
||||
|
||||
(*(S9 *)&D_801EB928) = ((S9 *)D_80191660)[D_801E9F78];
|
||||
(*(S9 *)&D_801EB9C8) = *(S9 *)(&D_801EB910 + 0x18); /* same addr as (*(S9 *)&D_801EB928); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801EB9F0 = 1;
|
||||
D_801E9F8C = -1;
|
||||
D_801E9F88 = 0;
|
||||
D_801E9F84 = -1;
|
||||
D_801E9F70 = 0;
|
||||
D_801E9F7C = 0;
|
||||
D_801E9F80 = 0;
|
||||
|
||||
if ((D_801E9F90 & 2) && (D_801E9F78 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801E9F60)[18];
|
||||
t9v = (*(s32 * *)&D_801E9F60)[19];
|
||||
t8v = (*(s32 * *)&D_801E9F60)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801E9F78 * 12 + (s32) (*(s32 * *)&D_801E9F60)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801E9F6C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801E9F98 != 0) {
|
||||
s32 *p = (s32 *)(D_801E9F78 * 12 + (s32) (*(s32 * *)&D_801E9F68));
|
||||
D_801E9F9C = p[0];
|
||||
D_801E9FA0 = p[1];
|
||||
D_801E9FA4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801914C8[];
|
||||
extern u8 D_801915C4[];
|
||||
extern u8 D_80191644[];
|
||||
extern u8 D_8019151C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801914C8[];
|
||||
extern u8 D_801915C4[];
|
||||
extern u8 D_80191644[];
|
||||
extern u8 D_8019151C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801914C8[];
|
||||
extern u8 D_801915C4[];
|
||||
extern u8 D_80191644[];
|
||||
extern u8 D_8019151C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8017EAD8[];
|
||||
extern u8 D_8017EB58[];
|
||||
extern u8 D_8017EA30[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_8018F110;
|
||||
extern s32 D_8018F0F8;
|
||||
|
||||
|
||||
extern u8 D_8019062A;
|
||||
extern u8 D_8019069E;
|
||||
extern u8 D_80190552;
|
||||
extern u8 D_8019060C;
|
||||
extern u8 D_80190530;
|
||||
extern u8 D_80190551;
|
||||
|
||||
|
||||
extern s32 D_80190610;
|
||||
extern s32 D_8018F10C;
|
||||
extern s32 D_8018F108;
|
||||
extern s32 D_8018F0F0;
|
||||
extern s32 D_8018F0FC;
|
||||
extern s32 D_8018F100;
|
||||
|
||||
extern void *D_8018F0E0;
|
||||
extern s32 D_8018F118;
|
||||
extern void *D_8018F0E8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8017EB74[];
|
||||
extern Rec12 D_8017EBAC[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801905E8;
|
||||
extern s32 D_8018F104;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8017EBB0[];
|
||||
extern u8 D_8017EBB4[];
|
||||
extern unsigned char D_80190548;
|
||||
extern s16 *D_8018F0EC;
|
||||
extern s32 D_8018F11C;
|
||||
extern s32 D_8018F120;
|
||||
extern s32 D_8018F124;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_8018F110 & 1)) {
|
||||
D_8018F0F8 = 1;
|
||||
} else {
|
||||
D_8018F0F8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8017EBAC)[D_8018F0F8 * 12];
|
||||
D_8019062A = b0;
|
||||
D_8019069E = b0;
|
||||
b1 = D_8017EBB0[D_8018F0F8 * 12];
|
||||
D_80190552 = b1;
|
||||
D_8019060C = b1;
|
||||
b2 = D_8017EBB4[D_8018F0F8 * 12];
|
||||
D_80190530 = b2;
|
||||
D_80190551 = b2;
|
||||
|
||||
(*(S9 *)&D_80190548) = ((S9 *)D_8017EB74)[D_8018F0F8];
|
||||
(*(S9 *)&D_801905E8) = *(S9 *)(&D_80190530 + 0x18); /* same addr as (*(S9 *)&D_80190548); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_80190610 = 1;
|
||||
D_8018F10C = -1;
|
||||
D_8018F108 = 0;
|
||||
D_8018F104 = -1;
|
||||
D_8018F0F0 = 0;
|
||||
D_8018F0FC = 0;
|
||||
D_8018F100 = 0;
|
||||
|
||||
if ((D_8018F110 & 2) && (D_8018F0F8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_8018F0E0)[18];
|
||||
t9v = (*(s32 * *)&D_8018F0E0)[19];
|
||||
t8v = (*(s32 * *)&D_8018F0E0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_8018F0F8 * 12 + (s32) (*(s32 * *)&D_8018F0E0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_8018F0EC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_8018F118 != 0) {
|
||||
s32 *p = (s32 *)(D_8018F0F8 * 12 + (s32) (*(s32 * *)&D_8018F0E8));
|
||||
D_8018F11C = p[0];
|
||||
D_8018F120 = p[1];
|
||||
D_8018F124 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E9DC[];
|
||||
extern u8 D_8017EAD8[];
|
||||
extern u8 D_8017EB58[];
|
||||
extern u8 D_8017EA30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E9DC[];
|
||||
extern u8 D_8017EAD8[];
|
||||
extern u8 D_8017EB58[];
|
||||
extern u8 D_8017EA30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8017E9DC[];
|
||||
extern u8 D_8017EAD8[];
|
||||
extern u8 D_8017EB58[];
|
||||
extern u8 D_8017EA30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_80184D10[];
|
||||
extern u8 D_80184D90[];
|
||||
extern u8 D_80184C68[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801B2D28;
|
||||
extern s32 D_801B2D10;
|
||||
|
||||
|
||||
extern u8 D_801B4A62;
|
||||
extern u8 D_801B4AD6;
|
||||
extern u8 D_801B498A;
|
||||
extern u8 D_801B4A44;
|
||||
extern u8 D_801B4968;
|
||||
extern u8 D_801B4989;
|
||||
|
||||
|
||||
extern s32 D_801B4A48;
|
||||
extern s32 D_801B2D24;
|
||||
extern s32 D_801B2D20;
|
||||
extern s32 D_801B2D08;
|
||||
extern s32 D_801B2D14;
|
||||
extern s32 D_801B2D18;
|
||||
|
||||
extern void *D_801B2CF8;
|
||||
extern s32 D_801B2D30;
|
||||
extern void *D_801B2D00;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80184DAC[];
|
||||
extern Rec12 D_80184DE4[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801B4A20;
|
||||
extern s32 D_801B2D1C;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80184DE8[];
|
||||
extern u8 D_80184DEC[];
|
||||
extern unsigned char D_801B4980;
|
||||
extern s16 *D_801B2D04;
|
||||
extern s32 D_801B2D34;
|
||||
extern s32 D_801B2D38;
|
||||
extern s32 D_801B2D3C;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801B2D28 & 1)) {
|
||||
D_801B2D10 = 1;
|
||||
} else {
|
||||
D_801B2D10 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80184DE4)[D_801B2D10 * 12];
|
||||
D_801B4A62 = b0;
|
||||
D_801B4AD6 = b0;
|
||||
b1 = D_80184DE8[D_801B2D10 * 12];
|
||||
D_801B498A = b1;
|
||||
D_801B4A44 = b1;
|
||||
b2 = D_80184DEC[D_801B2D10 * 12];
|
||||
D_801B4968 = b2;
|
||||
D_801B4989 = b2;
|
||||
|
||||
(*(S9 *)&D_801B4980) = ((S9 *)D_80184DAC)[D_801B2D10];
|
||||
(*(S9 *)&D_801B4A20) = *(S9 *)(&D_801B4968 + 0x18); /* same addr as (*(S9 *)&D_801B4980); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801B4A48 = 1;
|
||||
D_801B2D24 = -1;
|
||||
D_801B2D20 = 0;
|
||||
D_801B2D1C = -1;
|
||||
D_801B2D08 = 0;
|
||||
D_801B2D14 = 0;
|
||||
D_801B2D18 = 0;
|
||||
|
||||
if ((D_801B2D28 & 2) && (D_801B2D10 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801B2CF8)[18];
|
||||
t9v = (*(s32 * *)&D_801B2CF8)[19];
|
||||
t8v = (*(s32 * *)&D_801B2CF8)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801B2D10 * 12 + (s32) (*(s32 * *)&D_801B2CF8)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801B2D04) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801B2D30 != 0) {
|
||||
s32 *p = (s32 *)(D_801B2D10 * 12 + (s32) (*(s32 * *)&D_801B2D00));
|
||||
D_801B2D34 = p[0];
|
||||
D_801B2D38 = p[1];
|
||||
D_801B2D3C = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C14[];
|
||||
extern u8 D_80184D10[];
|
||||
extern u8 D_80184D90[];
|
||||
extern u8 D_80184C68[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C14[];
|
||||
extern u8 D_80184D10[];
|
||||
extern u8 D_80184D90[];
|
||||
extern u8 D_80184C68[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C14[];
|
||||
extern u8 D_80184D10[];
|
||||
extern u8 D_80184D90[];
|
||||
extern u8 D_80184C68[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8018AD68[];
|
||||
extern u8 D_8018ADE8[];
|
||||
extern u8 D_8018ACC0[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801EE550;
|
||||
extern s32 D_801EE538;
|
||||
|
||||
|
||||
extern u8 D_801EFCC2;
|
||||
extern u8 D_801EFD36;
|
||||
extern u8 D_801EFBEA;
|
||||
extern u8 D_801EFCA4;
|
||||
extern u8 D_801EFBC8;
|
||||
extern u8 D_801EFBE9;
|
||||
|
||||
|
||||
extern s32 D_801EFCA8;
|
||||
extern s32 D_801EE54C;
|
||||
extern s32 D_801EE548;
|
||||
extern s32 D_801EE530;
|
||||
extern s32 D_801EE53C;
|
||||
extern s32 D_801EE540;
|
||||
|
||||
extern void *D_801EE520;
|
||||
extern s32 D_801EE558;
|
||||
extern void *D_801EE528;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018AE04[];
|
||||
extern Rec12 D_8018AE3C[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801EFC80;
|
||||
extern s32 D_801EE544;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8018AE40[];
|
||||
extern u8 D_8018AE44[];
|
||||
extern unsigned char D_801EFBE0;
|
||||
extern s16 *D_801EE52C;
|
||||
extern s32 D_801EE55C;
|
||||
extern s32 D_801EE560;
|
||||
extern s32 D_801EE564;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801EE550 & 1)) {
|
||||
D_801EE538 = 1;
|
||||
} else {
|
||||
D_801EE538 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8018AE3C)[D_801EE538 * 12];
|
||||
D_801EFCC2 = b0;
|
||||
D_801EFD36 = b0;
|
||||
b1 = D_8018AE40[D_801EE538 * 12];
|
||||
D_801EFBEA = b1;
|
||||
D_801EFCA4 = b1;
|
||||
b2 = D_8018AE44[D_801EE538 * 12];
|
||||
D_801EFBC8 = b2;
|
||||
D_801EFBE9 = b2;
|
||||
|
||||
(*(S9 *)&D_801EFBE0) = ((S9 *)D_8018AE04)[D_801EE538];
|
||||
(*(S9 *)&D_801EFC80) = *(S9 *)(&D_801EFBC8 + 0x18); /* same addr as (*(S9 *)&D_801EFBE0); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801EFCA8 = 1;
|
||||
D_801EE54C = -1;
|
||||
D_801EE548 = 0;
|
||||
D_801EE544 = -1;
|
||||
D_801EE530 = 0;
|
||||
D_801EE53C = 0;
|
||||
D_801EE540 = 0;
|
||||
|
||||
if ((D_801EE550 & 2) && (D_801EE538 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801EE520)[18];
|
||||
t9v = (*(s32 * *)&D_801EE520)[19];
|
||||
t8v = (*(s32 * *)&D_801EE520)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801EE538 * 12 + (s32) (*(s32 * *)&D_801EE520)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801EE52C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801EE558 != 0) {
|
||||
s32 *p = (s32 *)(D_801EE538 * 12 + (s32) (*(s32 * *)&D_801EE528));
|
||||
D_801EE55C = p[0];
|
||||
D_801EE560 = p[1];
|
||||
D_801EE564 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018AC6C[];
|
||||
extern u8 D_8018AD68[];
|
||||
extern u8 D_8018ADE8[];
|
||||
extern u8 D_8018ACC0[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018AC6C[];
|
||||
extern u8 D_8018AD68[];
|
||||
extern u8 D_8018ADE8[];
|
||||
extern u8 D_8018ACC0[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018AC6C[];
|
||||
extern u8 D_8018AD68[];
|
||||
extern u8 D_8018ADE8[];
|
||||
extern u8 D_8018ACC0[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8018035C[];
|
||||
extern u8 D_801803DC[];
|
||||
extern u8 D_801802B4[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_80191AC0;
|
||||
extern s32 D_80191AA8;
|
||||
|
||||
|
||||
extern u8 D_8019382A;
|
||||
extern u8 D_8019389E;
|
||||
extern u8 D_80193752;
|
||||
extern u8 D_8019380C;
|
||||
extern u8 D_80193730;
|
||||
extern u8 D_80193751;
|
||||
|
||||
|
||||
extern s32 D_80193810;
|
||||
extern s32 D_80191ABC;
|
||||
extern s32 D_80191AB8;
|
||||
extern s32 D_80191AA0;
|
||||
extern s32 D_80191AAC;
|
||||
extern s32 D_80191AB0;
|
||||
|
||||
extern void *D_80191A90;
|
||||
extern s32 D_80191AC8;
|
||||
extern void *D_80191A98;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_801803F8[];
|
||||
extern Rec12 D_80180430[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801937E8;
|
||||
extern s32 D_80191AB4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80180434[];
|
||||
extern u8 D_80180438[];
|
||||
extern unsigned char D_80193748;
|
||||
extern s16 *D_80191A9C;
|
||||
extern s32 D_80191ACC;
|
||||
extern s32 D_80191AD0;
|
||||
extern s32 D_80191AD4;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_80191AC0 & 1)) {
|
||||
D_80191AA8 = 1;
|
||||
} else {
|
||||
D_80191AA8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80180430)[D_80191AA8 * 12];
|
||||
D_8019382A = b0;
|
||||
D_8019389E = b0;
|
||||
b1 = D_80180434[D_80191AA8 * 12];
|
||||
D_80193752 = b1;
|
||||
D_8019380C = b1;
|
||||
b2 = D_80180438[D_80191AA8 * 12];
|
||||
D_80193730 = b2;
|
||||
D_80193751 = b2;
|
||||
|
||||
(*(S9 *)&D_80193748) = ((S9 *)D_801803F8)[D_80191AA8];
|
||||
(*(S9 *)&D_801937E8) = *(S9 *)(&D_80193730 + 0x18); /* same addr as (*(S9 *)&D_80193748); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_80193810 = 1;
|
||||
D_80191ABC = -1;
|
||||
D_80191AB8 = 0;
|
||||
D_80191AB4 = -1;
|
||||
D_80191AA0 = 0;
|
||||
D_80191AAC = 0;
|
||||
D_80191AB0 = 0;
|
||||
|
||||
if ((D_80191AC0 & 2) && (D_80191AA8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_80191A90)[18];
|
||||
t9v = (*(s32 * *)&D_80191A90)[19];
|
||||
t8v = (*(s32 * *)&D_80191A90)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_80191AA8 * 12 + (s32) (*(s32 * *)&D_80191A90)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_80191A9C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_80191AC8 != 0) {
|
||||
s32 *p = (s32 *)(D_80191AA8 * 12 + (s32) (*(s32 * *)&D_80191A98));
|
||||
D_80191ACC = p[0];
|
||||
D_80191AD0 = p[1];
|
||||
D_80191AD4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80180260[];
|
||||
extern u8 D_8018035C[];
|
||||
extern u8 D_801803DC[];
|
||||
extern u8 D_801802B4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80180260[];
|
||||
extern u8 D_8018035C[];
|
||||
extern u8 D_801803DC[];
|
||||
extern u8 D_801802B4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80180260[];
|
||||
extern u8 D_8018035C[];
|
||||
extern u8 D_801803DC[];
|
||||
extern u8 D_801802B4[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_801869B0[];
|
||||
extern u8 D_80186A30[];
|
||||
extern u8 D_80186908[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801CEF00;
|
||||
extern s32 D_801CEEE8;
|
||||
|
||||
|
||||
extern u8 D_801D024A;
|
||||
extern u8 D_801D02BE;
|
||||
extern u8 D_801D0172;
|
||||
extern u8 D_801D022C;
|
||||
extern u8 D_801D0150;
|
||||
extern u8 D_801D0171;
|
||||
|
||||
|
||||
extern s32 D_801D0230;
|
||||
extern s32 D_801CEEFC;
|
||||
extern s32 D_801CEEF8;
|
||||
extern s32 D_801CEEE0;
|
||||
extern s32 D_801CEEEC;
|
||||
extern s32 D_801CEEF0;
|
||||
|
||||
extern void *D_801CEED0;
|
||||
extern s32 D_801CEF08;
|
||||
extern void *D_801CEED8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80186A4C[];
|
||||
extern Rec12 D_80186A84[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801D0208;
|
||||
extern s32 D_801CEEF4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80186A88[];
|
||||
extern u8 D_80186A8C[];
|
||||
extern unsigned char D_801D0168;
|
||||
extern s16 *D_801CEEDC;
|
||||
extern s32 D_801CEF0C;
|
||||
extern s32 D_801CEF10;
|
||||
extern s32 D_801CEF14;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801CEF00 & 1)) {
|
||||
D_801CEEE8 = 1;
|
||||
} else {
|
||||
D_801CEEE8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80186A84)[D_801CEEE8 * 12];
|
||||
D_801D024A = b0;
|
||||
D_801D02BE = b0;
|
||||
b1 = D_80186A88[D_801CEEE8 * 12];
|
||||
D_801D0172 = b1;
|
||||
D_801D022C = b1;
|
||||
b2 = D_80186A8C[D_801CEEE8 * 12];
|
||||
D_801D0150 = b2;
|
||||
D_801D0171 = b2;
|
||||
|
||||
(*(S9 *)&D_801D0168) = ((S9 *)D_80186A4C)[D_801CEEE8];
|
||||
(*(S9 *)&D_801D0208) = *(S9 *)(&D_801D0150 + 0x18); /* same addr as (*(S9 *)&D_801D0168); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801D0230 = 1;
|
||||
D_801CEEFC = -1;
|
||||
D_801CEEF8 = 0;
|
||||
D_801CEEF4 = -1;
|
||||
D_801CEEE0 = 0;
|
||||
D_801CEEEC = 0;
|
||||
D_801CEEF0 = 0;
|
||||
|
||||
if ((D_801CEF00 & 2) && (D_801CEEE8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801CEED0)[18];
|
||||
t9v = (*(s32 * *)&D_801CEED0)[19];
|
||||
t8v = (*(s32 * *)&D_801CEED0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801CEEE8 * 12 + (s32) (*(s32 * *)&D_801CEED0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801CEEDC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801CEF08 != 0) {
|
||||
s32 *p = (s32 *)(D_801CEEE8 * 12 + (s32) (*(s32 * *)&D_801CEED8));
|
||||
D_801CEF0C = p[0];
|
||||
D_801CEF10 = p[1];
|
||||
D_801CEF14 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801868B4[];
|
||||
extern u8 D_801869B0[];
|
||||
extern u8 D_80186A30[];
|
||||
extern u8 D_80186908[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801868B4[];
|
||||
extern u8 D_801869B0[];
|
||||
extern u8 D_80186A30[];
|
||||
extern u8 D_80186908[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_801868B4[];
|
||||
extern u8 D_801869B0[];
|
||||
extern u8 D_80186A30[];
|
||||
extern u8 D_80186908[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8018BAD4[];
|
||||
extern u8 D_8018BB54[];
|
||||
extern u8 D_8018BA2C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801D8C70;
|
||||
extern s32 D_801D8C58;
|
||||
|
||||
|
||||
extern u8 D_801DA9CA;
|
||||
extern u8 D_801DAA3E;
|
||||
extern u8 D_801DA8F2;
|
||||
extern u8 D_801DA9AC;
|
||||
extern u8 D_801DA8D0;
|
||||
extern u8 D_801DA8F1;
|
||||
|
||||
|
||||
extern s32 D_801DA9B0;
|
||||
extern s32 D_801D8C6C;
|
||||
extern s32 D_801D8C68;
|
||||
extern s32 D_801D8C50;
|
||||
extern s32 D_801D8C5C;
|
||||
extern s32 D_801D8C60;
|
||||
|
||||
extern void *D_801D8C40;
|
||||
extern s32 D_801D8C78;
|
||||
extern void *D_801D8C48;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018BB70[];
|
||||
extern Rec12 D_8018BBA8[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801DA988;
|
||||
extern s32 D_801D8C64;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8018BBAC[];
|
||||
extern u8 D_8018BBB0[];
|
||||
extern unsigned char D_801DA8E8;
|
||||
extern s16 *D_801D8C4C;
|
||||
extern s32 D_801D8C7C;
|
||||
extern s32 D_801D8C80;
|
||||
extern s32 D_801D8C84;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801D8C70 & 1)) {
|
||||
D_801D8C58 = 1;
|
||||
} else {
|
||||
D_801D8C58 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8018BBA8)[D_801D8C58 * 12];
|
||||
D_801DA9CA = b0;
|
||||
D_801DAA3E = b0;
|
||||
b1 = D_8018BBAC[D_801D8C58 * 12];
|
||||
D_801DA8F2 = b1;
|
||||
D_801DA9AC = b1;
|
||||
b2 = D_8018BBB0[D_801D8C58 * 12];
|
||||
D_801DA8D0 = b2;
|
||||
D_801DA8F1 = b2;
|
||||
|
||||
(*(S9 *)&D_801DA8E8) = ((S9 *)D_8018BB70)[D_801D8C58];
|
||||
(*(S9 *)&D_801DA988) = *(S9 *)(&D_801DA8D0 + 0x18); /* same addr as (*(S9 *)&D_801DA8E8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801DA9B0 = 1;
|
||||
D_801D8C6C = -1;
|
||||
D_801D8C68 = 0;
|
||||
D_801D8C64 = -1;
|
||||
D_801D8C50 = 0;
|
||||
D_801D8C5C = 0;
|
||||
D_801D8C60 = 0;
|
||||
|
||||
if ((D_801D8C70 & 2) && (D_801D8C58 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801D8C40)[18];
|
||||
t9v = (*(s32 * *)&D_801D8C40)[19];
|
||||
t8v = (*(s32 * *)&D_801D8C40)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801D8C58 * 12 + (s32) (*(s32 * *)&D_801D8C40)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801D8C4C) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801D8C78 != 0) {
|
||||
s32 *p = (s32 *)(D_801D8C58 * 12 + (s32) (*(s32 * *)&D_801D8C48));
|
||||
D_801D8C7C = p[0];
|
||||
D_801D8C80 = p[1];
|
||||
D_801D8C84 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018B9D8[];
|
||||
extern u8 D_8018BAD4[];
|
||||
extern u8 D_8018BB54[];
|
||||
extern u8 D_8018BA2C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018B9D8[];
|
||||
extern u8 D_8018BAD4[];
|
||||
extern u8 D_8018BB54[];
|
||||
extern u8 D_8018BA2C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018B9D8[];
|
||||
extern u8 D_8018BAD4[];
|
||||
extern u8 D_8018BB54[];
|
||||
extern u8 D_8018BA2C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_8018BCD8[];
|
||||
extern u8 D_8018BD58[];
|
||||
extern u8 D_8018BC30[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801D1C10;
|
||||
extern s32 D_801D1BF8;
|
||||
|
||||
|
||||
extern u8 D_801D35CA;
|
||||
extern u8 D_801D363E;
|
||||
extern u8 D_801D34F2;
|
||||
extern u8 D_801D35AC;
|
||||
extern u8 D_801D34D0;
|
||||
extern u8 D_801D34F1;
|
||||
|
||||
|
||||
extern s32 D_801D35B0;
|
||||
extern s32 D_801D1C0C;
|
||||
extern s32 D_801D1C08;
|
||||
extern s32 D_801D1BF0;
|
||||
extern s32 D_801D1BFC;
|
||||
extern s32 D_801D1C00;
|
||||
|
||||
extern void *D_801D1BE0;
|
||||
extern s32 D_801D1C18;
|
||||
extern void *D_801D1BE8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8018BD74[];
|
||||
extern Rec12 D_8018BDAC[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801D3588;
|
||||
extern s32 D_801D1C04;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8018BDB0[];
|
||||
extern u8 D_8018BDB4[];
|
||||
extern unsigned char D_801D34E8;
|
||||
extern s16 *D_801D1BEC;
|
||||
extern s32 D_801D1C1C;
|
||||
extern s32 D_801D1C20;
|
||||
extern s32 D_801D1C24;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801D1C10 & 1)) {
|
||||
D_801D1BF8 = 1;
|
||||
} else {
|
||||
D_801D1BF8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8018BDAC)[D_801D1BF8 * 12];
|
||||
D_801D35CA = b0;
|
||||
D_801D363E = b0;
|
||||
b1 = D_8018BDB0[D_801D1BF8 * 12];
|
||||
D_801D34F2 = b1;
|
||||
D_801D35AC = b1;
|
||||
b2 = D_8018BDB4[D_801D1BF8 * 12];
|
||||
D_801D34D0 = b2;
|
||||
D_801D34F1 = b2;
|
||||
|
||||
(*(S9 *)&D_801D34E8) = ((S9 *)D_8018BD74)[D_801D1BF8];
|
||||
(*(S9 *)&D_801D3588) = *(S9 *)(&D_801D34D0 + 0x18); /* same addr as (*(S9 *)&D_801D34E8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801D35B0 = 1;
|
||||
D_801D1C0C = -1;
|
||||
D_801D1C08 = 0;
|
||||
D_801D1C04 = -1;
|
||||
D_801D1BF0 = 0;
|
||||
D_801D1BFC = 0;
|
||||
D_801D1C00 = 0;
|
||||
|
||||
if ((D_801D1C10 & 2) && (D_801D1BF8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801D1BE0)[18];
|
||||
t9v = (*(s32 * *)&D_801D1BE0)[19];
|
||||
t8v = (*(s32 * *)&D_801D1BE0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801D1BF8 * 12 + (s32) (*(s32 * *)&D_801D1BE0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801D1BEC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801D1C18 != 0) {
|
||||
s32 *p = (s32 *)(D_801D1BF8 * 12 + (s32) (*(s32 * *)&D_801D1BE8));
|
||||
D_801D1C1C = p[0];
|
||||
D_801D1C20 = p[1];
|
||||
D_801D1C24 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018BBDC[];
|
||||
extern u8 D_8018BCD8[];
|
||||
extern u8 D_8018BD58[];
|
||||
extern u8 D_8018BC30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018BBDC[];
|
||||
extern u8 D_8018BCD8[];
|
||||
extern u8 D_8018BD58[];
|
||||
extern u8 D_8018BC30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_8018BBDC[];
|
||||
extern u8 D_8018BCD8[];
|
||||
extern u8 D_8018BD58[];
|
||||
extern u8 D_8018BC30[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_80185504[];
|
||||
extern u8 D_80185584[];
|
||||
extern u8 D_8018545C[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801B6388;
|
||||
extern s32 D_801B6370;
|
||||
|
||||
|
||||
extern u8 D_801B7A9A;
|
||||
extern u8 D_801B7B0E;
|
||||
extern u8 D_801B79C2;
|
||||
extern u8 D_801B7A7C;
|
||||
extern u8 D_801B79A0;
|
||||
extern u8 D_801B79C1;
|
||||
|
||||
|
||||
extern s32 D_801B7A80;
|
||||
extern s32 D_801B6384;
|
||||
extern s32 D_801B6380;
|
||||
extern s32 D_801B6368;
|
||||
extern s32 D_801B6374;
|
||||
extern s32 D_801B6378;
|
||||
|
||||
extern void *D_801B6358;
|
||||
extern s32 D_801B6390;
|
||||
extern void *D_801B6360;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_801855A0[];
|
||||
extern Rec12 D_801855D8[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801B7A58;
|
||||
extern s32 D_801B637C;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_801855DC[];
|
||||
extern u8 D_801855E0[];
|
||||
extern unsigned char D_801B79B8;
|
||||
extern s16 *D_801B6364;
|
||||
extern s32 D_801B6394;
|
||||
extern s32 D_801B6398;
|
||||
extern s32 D_801B639C;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801B6388 & 1)) {
|
||||
D_801B6370 = 1;
|
||||
} else {
|
||||
D_801B6370 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_801855D8)[D_801B6370 * 12];
|
||||
D_801B7A9A = b0;
|
||||
D_801B7B0E = b0;
|
||||
b1 = D_801855DC[D_801B6370 * 12];
|
||||
D_801B79C2 = b1;
|
||||
D_801B7A7C = b1;
|
||||
b2 = D_801855E0[D_801B6370 * 12];
|
||||
D_801B79A0 = b2;
|
||||
D_801B79C1 = b2;
|
||||
|
||||
(*(S9 *)&D_801B79B8) = ((S9 *)D_801855A0)[D_801B6370];
|
||||
(*(S9 *)&D_801B7A58) = *(S9 *)(&D_801B79A0 + 0x18); /* same addr as (*(S9 *)&D_801B79B8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801B7A80 = 1;
|
||||
D_801B6384 = -1;
|
||||
D_801B6380 = 0;
|
||||
D_801B637C = -1;
|
||||
D_801B6368 = 0;
|
||||
D_801B6374 = 0;
|
||||
D_801B6378 = 0;
|
||||
|
||||
if ((D_801B6388 & 2) && (D_801B6370 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801B6358)[18];
|
||||
t9v = (*(s32 * *)&D_801B6358)[19];
|
||||
t8v = (*(s32 * *)&D_801B6358)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801B6370 * 12 + (s32) (*(s32 * *)&D_801B6358)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801B6364) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801B6390 != 0) {
|
||||
s32 *p = (s32 *)(D_801B6370 * 12 + (s32) (*(s32 * *)&D_801B6360));
|
||||
D_801B6394 = p[0];
|
||||
D_801B6398 = p[1];
|
||||
D_801B639C = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80185408[];
|
||||
extern u8 D_80185504[];
|
||||
extern u8 D_80185584[];
|
||||
extern u8 D_8018545C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80185408[];
|
||||
extern u8 D_80185504[];
|
||||
extern u8 D_80185584[];
|
||||
extern u8 D_8018545C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80185408[];
|
||||
extern u8 D_80185504[];
|
||||
extern u8 D_80185584[];
|
||||
extern u8 D_8018545C[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1901,7 +1901,7 @@ extern u8 D_80184D64[];
|
||||
extern u8 D_80184DE4[];
|
||||
extern u8 D_80184CBC[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1946,7 +1946,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801BD6B8;
|
||||
extern s32 D_801BD6A0;
|
||||
|
||||
|
||||
extern u8 D_801BE9D2;
|
||||
extern u8 D_801BEA46;
|
||||
extern u8 D_801BE8FA;
|
||||
extern u8 D_801BE9B4;
|
||||
extern u8 D_801BE8D8;
|
||||
extern u8 D_801BE8F9;
|
||||
|
||||
|
||||
extern s32 D_801BE9B8;
|
||||
extern s32 D_801BD6B4;
|
||||
extern s32 D_801BD6B0;
|
||||
extern s32 D_801BD698;
|
||||
extern s32 D_801BD6A4;
|
||||
extern s32 D_801BD6A8;
|
||||
|
||||
extern void *D_801BD688;
|
||||
extern s32 D_801BD6C0;
|
||||
extern void *D_801BD690;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_80184E00[];
|
||||
extern Rec12 D_80184E38[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801BE990;
|
||||
extern s32 D_801BD6AC;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80184E3C[];
|
||||
extern u8 D_80184E40[];
|
||||
extern unsigned char D_801BE8F0;
|
||||
extern s16 *D_801BD694;
|
||||
extern s32 D_801BD6C4;
|
||||
extern s32 D_801BD6C8;
|
||||
extern s32 D_801BD6CC;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801BD6B8 & 1)) {
|
||||
D_801BD6A0 = 1;
|
||||
} else {
|
||||
D_801BD6A0 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80184E38)[D_801BD6A0 * 12];
|
||||
D_801BE9D2 = b0;
|
||||
D_801BEA46 = b0;
|
||||
b1 = D_80184E3C[D_801BD6A0 * 12];
|
||||
D_801BE8FA = b1;
|
||||
D_801BE9B4 = b1;
|
||||
b2 = D_80184E40[D_801BD6A0 * 12];
|
||||
D_801BE8D8 = b2;
|
||||
D_801BE8F9 = b2;
|
||||
|
||||
(*(S9 *)&D_801BE8F0) = ((S9 *)D_80184E00)[D_801BD6A0];
|
||||
(*(S9 *)&D_801BE990) = *(S9 *)(&D_801BE8D8 + 0x18); /* same addr as (*(S9 *)&D_801BE8F0); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801BE9B8 = 1;
|
||||
D_801BD6B4 = -1;
|
||||
D_801BD6B0 = 0;
|
||||
D_801BD6AC = -1;
|
||||
D_801BD698 = 0;
|
||||
D_801BD6A4 = 0;
|
||||
D_801BD6A8 = 0;
|
||||
|
||||
if ((D_801BD6B8 & 2) && (D_801BD6A0 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801BD688)[18];
|
||||
t9v = (*(s32 * *)&D_801BD688)[19];
|
||||
t8v = (*(s32 * *)&D_801BD688)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801BD6A0 * 12 + (s32) (*(s32 * *)&D_801BD688)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801BD694) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801BD6C0 != 0) {
|
||||
s32 *p = (s32 *)(D_801BD6A0 * 12 + (s32) (*(s32 * *)&D_801BD690));
|
||||
D_801BD6C4 = p[0];
|
||||
D_801BD6C8 = p[1];
|
||||
D_801BD6CC = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C68[];
|
||||
extern u8 D_80184D64[];
|
||||
extern u8 D_80184DE4[];
|
||||
extern u8 D_80184CBC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C68[];
|
||||
extern u8 D_80184D64[];
|
||||
extern u8 D_80184DE4[];
|
||||
extern u8 D_80184CBC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -819,7 +819,7 @@ extern u8 D_80184C68[];
|
||||
extern u8 D_80184D64[];
|
||||
extern u8 D_80184DE4[];
|
||||
extern u8 D_80184CBC[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1897,7 +1897,7 @@ extern u8 D_8017F990[];
|
||||
extern u8 D_8017FA10[];
|
||||
extern u8 D_8017F8E8[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1942,7 +1942,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_8019FA68;
|
||||
extern s32 D_8019FA50;
|
||||
|
||||
|
||||
extern u8 D_801A0D8A;
|
||||
extern u8 D_801A0DFE;
|
||||
extern u8 D_801A0CB2;
|
||||
extern u8 D_801A0D6C;
|
||||
extern u8 D_801A0C90;
|
||||
extern u8 D_801A0CB1;
|
||||
|
||||
|
||||
extern s32 D_801A0D70;
|
||||
extern s32 D_8019FA64;
|
||||
extern s32 D_8019FA60;
|
||||
extern s32 D_8019FA48;
|
||||
extern s32 D_8019FA54;
|
||||
extern s32 D_8019FA58;
|
||||
|
||||
extern void *D_8019FA38;
|
||||
extern s32 D_8019FA70;
|
||||
extern void *D_8019FA40;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_8017FA2C[];
|
||||
extern Rec12 D_8017FA64[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801A0D48;
|
||||
extern s32 D_8019FA5C;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_8017FA68[];
|
||||
extern u8 D_8017FA6C[];
|
||||
extern unsigned char D_801A0CA8;
|
||||
extern s16 *D_8019FA44;
|
||||
extern s32 D_8019FA74;
|
||||
extern s32 D_8019FA78;
|
||||
extern s32 D_8019FA7C;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_8019FA68 & 1)) {
|
||||
D_8019FA50 = 1;
|
||||
} else {
|
||||
D_8019FA50 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_8017FA64)[D_8019FA50 * 12];
|
||||
D_801A0D8A = b0;
|
||||
D_801A0DFE = b0;
|
||||
b1 = D_8017FA68[D_8019FA50 * 12];
|
||||
D_801A0CB2 = b1;
|
||||
D_801A0D6C = b1;
|
||||
b2 = D_8017FA6C[D_8019FA50 * 12];
|
||||
D_801A0C90 = b2;
|
||||
D_801A0CB1 = b2;
|
||||
|
||||
(*(S9 *)&D_801A0CA8) = ((S9 *)D_8017FA2C)[D_8019FA50];
|
||||
(*(S9 *)&D_801A0D48) = *(S9 *)(&D_801A0C90 + 0x18); /* same addr as (*(S9 *)&D_801A0CA8); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801A0D70 = 1;
|
||||
D_8019FA64 = -1;
|
||||
D_8019FA60 = 0;
|
||||
D_8019FA5C = -1;
|
||||
D_8019FA48 = 0;
|
||||
D_8019FA54 = 0;
|
||||
D_8019FA58 = 0;
|
||||
|
||||
if ((D_8019FA68 & 2) && (D_8019FA50 == 4)) {
|
||||
s0v = (*(s32 * *)&D_8019FA38)[18];
|
||||
t9v = (*(s32 * *)&D_8019FA38)[19];
|
||||
t8v = (*(s32 * *)&D_8019FA38)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_8019FA50 * 12 + (s32) (*(s32 * *)&D_8019FA38)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_8019FA44) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_8019FA70 != 0) {
|
||||
s32 *p = (s32 *)(D_8019FA50 * 12 + (s32) (*(s32 * *)&D_8019FA40));
|
||||
D_8019FA74 = p[0];
|
||||
D_8019FA78 = p[1];
|
||||
D_8019FA7C = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -816,7 +816,7 @@ extern u8 D_8017F894[];
|
||||
extern u8 D_8017F990[];
|
||||
extern u8 D_8017FA10[];
|
||||
extern u8 D_8017F8E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -816,7 +816,7 @@ extern u8 D_8017F894[];
|
||||
extern u8 D_8017F990[];
|
||||
extern u8 D_8017FA10[];
|
||||
extern u8 D_8017F8E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -816,7 +816,7 @@ extern u8 D_8017F894[];
|
||||
extern u8 D_8017F990[];
|
||||
extern u8 D_8017FA10[];
|
||||
extern u8 D_8017F8E8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -1897,7 +1897,7 @@ extern u8 D_80185660[];
|
||||
extern u8 D_801856E0[];
|
||||
extern u8 D_801855B8[];
|
||||
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
@@ -1942,7 +1942,138 @@ void func_8013D3D4(int param_1, int param_2)
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_801380E0", func_8013D53C);
|
||||
|
||||
/* 9-byte, align-1 -> unaligned block copy */
|
||||
|
||||
|
||||
extern s32 D_801B7DE0;
|
||||
extern s32 D_801B7DC8;
|
||||
|
||||
|
||||
extern u8 D_801B9662;
|
||||
extern u8 D_801B96D6;
|
||||
extern u8 D_801B958A;
|
||||
extern u8 D_801B9644;
|
||||
extern u8 D_801B9568;
|
||||
extern u8 D_801B9589;
|
||||
|
||||
|
||||
extern s32 D_801B9648;
|
||||
extern s32 D_801B7DDC;
|
||||
extern s32 D_801B7DD8;
|
||||
extern s32 D_801B7DC0;
|
||||
extern s32 D_801B7DCC;
|
||||
extern s32 D_801B7DD0;
|
||||
|
||||
extern void *D_801B7DB0;
|
||||
extern s32 D_801B7DE8;
|
||||
extern void *D_801B7DB8;
|
||||
|
||||
void func_8013D53C(void *arg0v) {
|
||||
|
||||
extern Rec9 D_801856FC[];
|
||||
extern Rec12 D_80185734[];
|
||||
extern u8 D_80078EAF;
|
||||
extern u8 D_801B9620;
|
||||
extern s32 D_801B7DD4;
|
||||
Cmd_8013D53C *arg0 = arg0v;
|
||||
|
||||
extern u8 D_80185738[];
|
||||
extern u8 D_8018573C[];
|
||||
extern unsigned char D_801B9580;
|
||||
extern s16 *D_801B7DBC;
|
||||
extern s32 D_801B7DEC;
|
||||
extern s32 D_801B7DF0;
|
||||
extern s32 D_801B7DF4;
|
||||
s32 s0v;
|
||||
s32 t9v;
|
||||
s32 t8v;
|
||||
u8 b0, b1, b2;
|
||||
u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */
|
||||
|
||||
if (!(D_801B7DE0 & 1)) {
|
||||
D_801B7DC8 = 1;
|
||||
} else {
|
||||
D_801B7DC8 = D_80078EAF;
|
||||
}
|
||||
|
||||
b0 = ((u8 *)D_80185734)[D_801B7DC8 * 12];
|
||||
D_801B9662 = b0;
|
||||
D_801B96D6 = b0;
|
||||
b1 = D_80185738[D_801B7DC8 * 12];
|
||||
D_801B958A = b1;
|
||||
D_801B9644 = b1;
|
||||
b2 = D_8018573C[D_801B7DC8 * 12];
|
||||
D_801B9568 = b2;
|
||||
D_801B9589 = b2;
|
||||
|
||||
(*(S9 *)&D_801B9580) = ((S9 *)D_801856FC)[D_801B7DC8];
|
||||
(*(S9 *)&D_801B9620) = *(S9 *)(&D_801B9568 + 0x18); /* same addr as (*(S9 *)&D_801B9580); distinct sym defeats cse, keeps %hi/%lo */
|
||||
|
||||
D_801B9648 = 1;
|
||||
D_801B7DDC = -1;
|
||||
D_801B7DD8 = 0;
|
||||
D_801B7DD4 = -1;
|
||||
D_801B7DC0 = 0;
|
||||
D_801B7DCC = 0;
|
||||
D_801B7DD0 = 0;
|
||||
|
||||
if ((D_801B7DE0 & 2) && (D_801B7DC8 == 4)) {
|
||||
s0v = (*(s32 * *)&D_801B7DB0)[18];
|
||||
t9v = (*(s32 * *)&D_801B7DB0)[19];
|
||||
t8v = (*(s32 * *)&D_801B7DB0)[20];
|
||||
} else {
|
||||
s32 *p = (s32 *)(D_801B7DC8 * 12 + (s32) (*(s32 * *)&D_801B7DB0)); /* block-local: local-alloc ties sum into mul chain */
|
||||
s0v = p[0];
|
||||
t9v = p[1];
|
||||
t8v = p[2];
|
||||
}
|
||||
|
||||
(*(Cmd_8013D53C * *)&D_801B7DBC) = arg0;
|
||||
if (arg0 != 0) {
|
||||
if (D_801B7DE8 != 0) {
|
||||
s32 *p = (s32 *)(D_801B7DC8 * 12 + (s32) (*(s32 * *)&D_801B7DB8));
|
||||
D_801B7DEC = p[0];
|
||||
D_801B7DF0 = p[1];
|
||||
D_801B7DF4 = p[2];
|
||||
} else {
|
||||
while ((arg0->cmd & 0xFFFF) != 0xFF) {
|
||||
if ((arg0->cmd & 0xFFFF) == 9) {
|
||||
s32 n;
|
||||
s32 i;
|
||||
u16 *src;
|
||||
u16 *dst;
|
||||
n = arg0->w * arg0->h;
|
||||
i = 0;
|
||||
src = arg0->data;
|
||||
__asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */
|
||||
dst = src + n;
|
||||
if (n > 0) {
|
||||
do {
|
||||
u16 px;
|
||||
s32 r, g, b, out;
|
||||
__asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */
|
||||
px = *src;
|
||||
r = ((px & 0x1F) * s0v) / 2560;
|
||||
g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;
|
||||
b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;
|
||||
out = r | g | b | (px & 0x8000);
|
||||
if (out == 0 && px != 0) {
|
||||
out = 0x8000;
|
||||
}
|
||||
*dst = out;
|
||||
dst++;
|
||||
i++;
|
||||
src++;
|
||||
} while (i < n);
|
||||
}
|
||||
}
|
||||
arg0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -816,7 +816,7 @@ extern u8 D_80185564[];
|
||||
extern u8 D_80185660[];
|
||||
extern u8 D_801856E0[];
|
||||
extern u8 D_801855B8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
@@ -816,7 +816,7 @@ extern u8 D_80185564[];
|
||||
extern u8 D_80185660[];
|
||||
extern u8 D_801856E0[];
|
||||
extern u8 D_801855B8[];
|
||||
extern void func_8013D53C(void);
|
||||
extern void func_8013D53C();
|
||||
extern void func_8013DD68(void);
|
||||
extern void func_8013D8FC(void);
|
||||
extern void func_8013CF68(void);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user