mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-28 14:59:48 -04:00
phase-36: S104 banks — the R23(case-label)/R34/R35/R36 pass: 915 classes in 1,757 s, MATCH 16 (bank line above); d20's minimum-lever func_80180324 (8 → 2 marked dead branches) PARKED for Drew — an invented always-false condition is not covered by ruling (a)
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
void func_80180324(void *ent, void *spr, u32 *q, u32 *ot)
|
||||
{
|
||||
extern u8 *D_800A5E60;
|
||||
|
||||
Ft4_801833F0 *poly;
|
||||
Drm_801833F0 *dm;
|
||||
s32 vtx;
|
||||
u32 flags;
|
||||
s32 tp, abr, code, shift;
|
||||
u16 x;
|
||||
u32 y;
|
||||
s32 tpage, clut, cy;
|
||||
s32 su, sv, uu, vv;
|
||||
s32 e; /* the sprite's far texel edge, u then v: read only by the dead arms */
|
||||
u16 fl;
|
||||
s32 i; /* also the second loop's counter (one variable: $t3 in both loops) */
|
||||
u32 b;
|
||||
|
||||
poly = (Ft4_801833F0 *)D_800A5E60;
|
||||
fl = *(u16 *)((s32)ent + 0x1E) & 0x8000;
|
||||
flags = *(u32 *)((s32)ent + 4);
|
||||
tp = (flags >> 24) & 3;
|
||||
shift = 2 - tp;
|
||||
x = *(u16 *)((s32)ent + 0x28) + (*(s16 *)((s32)spr + 4) >> shift);
|
||||
y = *(u16 *)((s32)ent + 0x2A) + *(u16 *)((s32)spr + 6);
|
||||
vtx = *(s32 *)((s32)ent + 0x20);
|
||||
D_800A5E60 += 0xF0;
|
||||
if (flags & 0x40000000) {
|
||||
code = 0x2E;
|
||||
abr = (flags >> 28) & 3;
|
||||
} else {
|
||||
code = 0x2C;
|
||||
abr = 1;
|
||||
}
|
||||
tpage = (tp << 7) | (abr << 5) | ((y & 0x100) >> 4) | ((x & 0x3C0) >> 6) |
|
||||
((y & 0x200) << 2);
|
||||
b = *(u8 *)((s32)ent + 0x27);
|
||||
cy = (b + 0x100) << 6;
|
||||
if (b < 0xE0) {
|
||||
clut = cy | 0x16;
|
||||
} else {
|
||||
clut = cy | 0x10;
|
||||
}
|
||||
{
|
||||
s32 t = ((x - ((tpage & 0xF) << 6)) << shift) +
|
||||
(*(u16 *)((s32)spr + 4) & ((1 << shift) - 1));
|
||||
e = t + *(u8 *)((s32)spr + 2) - 1;
|
||||
su = t;
|
||||
if (tpage & 0x200) su = e; // !FAKE: dead-branch su (u edge) — combine folds the always-false tpage bit via nonzero_bits (combine.c:8716/6803) into an unconditional jump (combine.c:2353), jump2 deletes the arm after flow (toplev.c:3142), leaving `t + spr[2] - 1` dead as in the target (P36 S104 d20 minimum-lever)
|
||||
}
|
||||
y &= 0xFFFF;
|
||||
if (tpage & 0x10) {
|
||||
y -= 0x100;
|
||||
sv = y;
|
||||
} else {
|
||||
sv = y;
|
||||
}
|
||||
e = sv + *(u8 *)((s32)spr + 3) - 1;
|
||||
if (tpage & 0x200) su = e; // !FAKE: dead-branch su (v edge) — same mechanism; keeps `sv + spr[3] - 1` (P36 S104 d20 minimum-lever)
|
||||
i = 1;
|
||||
uu = su;
|
||||
vv = sv;
|
||||
for (; i < 13; i += 2, poly++) {
|
||||
s32 k = (i - 1) * 4;
|
||||
poly->tag.len = 9;
|
||||
poly->code = code;
|
||||
poly->tpage = tpage;
|
||||
poly->u2 = su;
|
||||
poly->v2 = sv;
|
||||
poly->u0 = SR3_801833F0(vtx + k + 0x10) + uu;
|
||||
poly->v0 = SR3_801833F0(vtx + k + 0x12) + vv;
|
||||
poly->u1 = SR3_801833F0(vtx + i * 4 + 0x10) + uu;
|
||||
poly->v1 = SR3_801833F0(vtx + i * 4 + 0x12) + vv;
|
||||
/* k2 is recorded as a giv HERE, AFTER the u1/v1 mem giv - see (1). */
|
||||
{
|
||||
s32 k2 = (i + 1) * 4;
|
||||
poly->u3 = SR3_801833F0(vtx + k2 + 0x10) + uu;
|
||||
poly->v3 = SR3_801833F0(vtx + k2 + 0x12) + vv;
|
||||
}
|
||||
poly->clut = clut;
|
||||
poly->r0 = *(u8 *)((s32)ent + 0x24);
|
||||
poly->g0 = *(u8 *)((s32)ent + 0x25);
|
||||
poly->b0 = *(u8 *)((s32)ent + 0x26);
|
||||
poly->x0 = ((u16 *)q)[i * 2];
|
||||
poly->y0 = ((u16 *)q)[i * 2 + 1];
|
||||
poly->x1 = ((u16 *)q)[i * 2 + 2];
|
||||
poly->y1 = ((u16 *)q)[i * 2 + 3];
|
||||
poly->x2 = ((u16 *)q)[0];
|
||||
poly->y2 = ((u16 *)q)[1];
|
||||
poly->x3 = ((u16 *)q)[i * 2 + 4];
|
||||
poly->y3 = ((u16 *)q)[i * 2 + 5];
|
||||
if (fl != 0) {
|
||||
ADDPRIM_801833F0(&ot[*(s32 *)((s32)q + 0x34 + (i >> 1) * 4)], poly);
|
||||
} else {
|
||||
ADDPRIM_801833F0(ot, poly);
|
||||
}
|
||||
}
|
||||
poly[-1].x3 = ((u16 *)q)[2];
|
||||
poly[-1].y3 = ((u16 *)q)[3];
|
||||
poly[-1].u3 = su + SR3_801833F0(vtx + 0x10);
|
||||
poly[-1].v3 = sv + SR3_801833F0(vtx + 0x12);
|
||||
|
||||
if (flags & 0x40000000) {
|
||||
dm = (Drm_801833F0 *)poly;
|
||||
if (fl != 0) {
|
||||
i = 0;
|
||||
D_800A5E60 += 0x30;
|
||||
do {
|
||||
i++;
|
||||
dm->tag.len = 1;
|
||||
dm->code0 = (abr << 5) | 0xE100000A;
|
||||
ADDPRIM_801833F0(&ot[*(volatile s32 *)((s32)q + 0x34)], dm);
|
||||
q = (u32 *)((s32)q + 4);
|
||||
dm++;
|
||||
} while (i < 6);
|
||||
} else {
|
||||
dm->code0 = (abr << 5) | 0xE100000A;
|
||||
D_800A5E60 += 8;
|
||||
dm->tag.len = 1;
|
||||
ADDPRIM_801833F0(ot, dm);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
# func_80180324 (ov_SC04_007) — agent d20, P36 T7 S104
|
||||
|
||||
**Result: `--try` score 0 (328/328), on this function AND all ten other members of its family (table:
|
||||
`scratch/copies/TABLE.md`).** No register pin, no `asm` of any kind, no `volatile` added (the loop-2
|
||||
`*(volatile s32 *)` cast was already in body_free.c and is still needed: without it 7, see (e)).
|
||||
|
||||
**It is NOT a lever-free close, and I do not claim one.** The body keeps two `if (tpage & 0x200) su = e;`
|
||||
statements. `tpage` never has bit 9 set, so each test is always false: an invented identically-zero
|
||||
condition, which step 6 refuses. Both are marked `// !FAKE: dead-branch` as the step-9 minimum-lever body.
|
||||
Lever count 8 → 2 (tree: 1 `$0` pin + 6 asm keepalives + the pre-existing volatile cast; now: 2
|
||||
C-level dead branches + the same volatile cast; 0 pins, 0 asm).
|
||||
Drew's ruling needed: is a C-level dead branch that reproduces a real late-dead branch in the original an
|
||||
acceptable marked lever, or should it go back to asm keepalives?
|
||||
|
||||
## (a) The residual
|
||||
The lever-free text is 10 instructions short (318 vs 328):
|
||||
- the target computes `t + spr[2] - 1` and `sv + spr[3] - 1` (lbu/addu/addiu each, the second with its
|
||||
load-delay nop) and never reads either;
|
||||
- it keeps `move s3,a0` (su := t) in the lbu delay slot, and the chain reads `a0` (t), not `s3`;
|
||||
- it keeps the sv if/else as `beqz; j; addiu s2,a1,-256 | move s2,a1`, where the free text gets
|
||||
if-converted;
|
||||
- in the loop, the counter `i` / the 0xFFFFFF mask / the vtx+4 giv are permuted over t3/t4/t5, and
|
||||
sv/uu/vv/0xFF000000 are permuted over a1/s0/s1/s2.
|
||||
|
||||
## (b) Mechanism: passes and decisions (every claim here tested on bytes unless it says otherwise)
|
||||
1. **Dead code survives only if its consumer disappears AFTER flow.** flow's final pass deletes dead sets
|
||||
(`flow.c:1478-1490`), and nothing re-runs flow later. combine (after flow) folds a test on a pseudo whose
|
||||
`nonzero_bits` (`combine.c:6803`, `simplify_comparison` `:8716`) prove it constant. That turns the
|
||||
conditional jump into `(set (pc) (label_ref))` (`combine.c:2353`; seen in `.combine`: jump_insn 164).
|
||||
jump2 (`toplev.c:3142`, after sched2) then deletes the unreachable arm. The chain that fed only that arm
|
||||
stays as dead code, byte-exact. Micro-reproduced (`scratch/micro/t3.c`) and on the real function.
|
||||
This REFUTES the family exemplar's note 1 (ov_SC02_028 `func_801833F0` header, "gcc-2.7.2 deletes any
|
||||
pure-C spelling").
|
||||
2. **The copy must follow the chain's read of t in sched1's order, in the same block.** If the copy comes
|
||||
first and t does not die in it, local-alloc's `optimize_reg_copy_1` (`local-alloc.c:700`) rewrites the
|
||||
chain to read su. Every separate-temp variant read `s3`/`s2`. The copy is placed last only if it wins
|
||||
sched1's tie:
|
||||
- `adjust_priority` boosts a "birthing" insn (`sched.c:2469`, `:2539`: dest set once and live after).
|
||||
With a fresh `ue`, the chain's final addiu is birthing and wins, and the copy lands above it.
|
||||
- Declaring ONE variable `e` for both edges (two live sets) un-boosts it. The tie then goes to
|
||||
`INSN_LUID` (`sched.c:2428`), so the copy, textually later, is scheduled last.
|
||||
- t then dies in the copy. `combine_regs` refuses to tie it to the global su (`local-alloc.c:1774`), so
|
||||
`move s3,a0` survives. sched2 moves it into the lbu delay slot.
|
||||
3. **sv if/else kept as j+else.** jump.c's `if (...) x = a; else x = b` → `x = b; if (...) x = a` rewrite
|
||||
(`jump.c:699`) needs a ONE-insn then-arm (`jump.c:748-749`). Writing the then-arm as
|
||||
`y -= 0x100; sv = y;` gives two insns in every pre-flow jump pass. cse's `(set REG0 REG1)` swap
|
||||
(`cse.c:7440`) plus flow then fold it back to one `addiu s2,a1,-256`.
|
||||
4. **Loop permutation t3/t4/t5.** `allocno_compare` (`global.c:587-600`) ranks by `floor_log2(refs)·refs/live`.
|
||||
`i` (9/114 → 2368) ranked below the hoisted 0xFFFFFF (13/111 → 3513). Using `i` as the second loop's
|
||||
counter too (the target has i and m in the SAME `$t3`, so they are one variable) gives 16/152 → 4210.
|
||||
i is then allocated first and takes t3. This also puts vtx (8/184 → 1304) back below the k2 giv
|
||||
(1320.8), so the tree's vtx keepalive becomes unnecessary.
|
||||
5. **a1/s0/s1/s2 permutation.** A v dead arm written as `sv = e` gives sv 8 refs → 1764, so sv takes a1
|
||||
before vv. Writing the v arm into `su` instead gives sv 7/135 → 1037. That drops sv below vv (1250),
|
||||
uu (1238.9) and the 0xFF000000 constant (1238.5), which is the target's order: vv=a1, uu=s0, const=s1,
|
||||
sv=s2, su=s3.
|
||||
|
||||
## (c) The moves (from body_free.c, 43)
|
||||
- one `s32 e` holds both edge values: `e = t + w - 1; su = t; if (C) su = e;` and, after the tpage
|
||||
if/else, `e = sv + h - 1; if (C) su = e;` (C = `tpage & 0x200`, always false). 43 → 32.
|
||||
- loop 2's counter `m` replaced by `i` (declaration of `m` deleted). 32 → 18.
|
||||
- the v dead arm writes `su`, not `sv`. 18 → 1.
|
||||
- then-arm `y -= 0x100; sv = y;` (else `sv = y;`, the `(u16)` cast gone). 1 → 0.
|
||||
- conditions that also give 0: any pair drawn from {`tp & 4`, `tpage & 0x200`, `tpage & 0x400`,
|
||||
`tpage & 0x1000`} (13 of 256 pairs scored 0; `scratch/c2search.py`).
|
||||
|
||||
## (d) Generator proposals
|
||||
- **G-a (natural, broad):** when a tree has `x = y + zr` (a `$0`-pin copy) in an else-arm whose then-arm is
|
||||
`x = y OP K`, rewrite the then-arm as `y OP= K; x = y;` and the else as `x = y`. The two-insn arm blocks
|
||||
jump.c:748's if-conversion; cse.c:7440 and flow fold it back to one insn.
|
||||
- **G-b (natural):** when a tree keeps `asm("" :: "r"(i))` density reads on a loop counter, and a LATER
|
||||
loop's counter lands in the same hard register in the target, merge the two counters into one variable
|
||||
(refs and live length add; global.c:595).
|
||||
- **G-c (lever-to-lever, marked):** when a tree keeps `asm("" :: "r"(expr))` for a value the target
|
||||
computes and never reads, replace it with `if (<test combine proves false>) X = expr;`. X is a variable
|
||||
set on the live path and live afterwards; enumerate X, and enumerate the test over bits a live pseudo
|
||||
provably lacks. Same lever count, but it moves the lever from asm to C and lets the other levers go.
|
||||
|
||||
## (e) What did not work (byte evidence)
|
||||
- A fresh `ue`/`ve` per edge: the chain reads s3 (optimize_reg_copy_1), 60-87.
|
||||
- `su = C ? e : t` with C always true (`if (!C) su = t; else su = e;`): combine leaves
|
||||
`move v0,zero; bnez v0`, 60.
|
||||
- The same test on `fl` twice: cse shares the and-result and combine cannot fold both jumps (`move v1,zero`).
|
||||
Tests on `fl` also add refs to fl and change which pseudos spill.
|
||||
- The v arm writing `sv`/`vv`/`uu`/`y`, or a su/sv swap: 29-38.
|
||||
- `i = 1` before the dead branch with the branch holding the copies: a loop-entry test appears
|
||||
(slti/beqz), 96-141.
|
||||
- sv else-arm `(u16)y`, `(u32)(u16)y`, `y & 0xFFFF`: blocks the if-conversion but leaves
|
||||
`andi s2,a1,0xffff`, 1. combine only simplifies inside a LOG_LINK pair, and the else block has one insn.
|
||||
A fresh masked `yy` reshuffles the whole allocation (109-126). Ternary / `y -= ((c) ? 0x100 : 0)`: 29.
|
||||
Inverted test, `== 0` test or switch: the arms swap, 3.
|
||||
- Dropping the loop-2 volatile, or spelling that read as `((s32 *)q)[13]` + `q++`, a struct field, a local
|
||||
`z` pointer, `ot + …`, or indexing by the counter: 5-7. loop.c eliminates the q biv.
|
||||
|
||||
## (f) Where the method fell short
|
||||
- Neither the method nor the cookbook explains how a dead value can survive, and the exemplar header said
|
||||
it cannot. The "DEAD CODE IS REAL" keepalive is a reproducible pass sequence (flow → combine fold →
|
||||
jump2), testable in a 10-line micro. A `.combine` grep for `(set (pc) (label_ref` would have shown it.
|
||||
- The allocation table misled until I matched pseudo numbers to variables by hand (declaration order).
|
||||
The tool should print variable names.
|
||||
- `pkill -f` killed my own shell once (the memory note is right). The coordinator's regen fleet was running
|
||||
(40 `--try` processes), so compiles took ~2 s each.
|
||||
|
||||
## (g) Structs
|
||||
Struct typing does not plausibly change what keeps the two dead-branch levers. They exist because the
|
||||
target contains unread arithmetic, and only a consumer removed after flow (or an asm use) produces that.
|
||||
Tested: a UV pair as a local struct goes to the stack (stores kept); as a union it vanishes but leaves an
|
||||
orphan 48-byte frame (`scratch/micro/t4.c`). Neither is the target shape.
|
||||
|
||||
For the pre-existing loop-2 volatile, a body-local `struct { u32 a[13]; s32 z; } *` field read scores 7,
|
||||
the same as the plain read: loop.c's biv elimination does not look at MEM_IN_STRUCT_P, so a struct is not
|
||||
the missing piece there either.
|
||||
|
||||
The one struct question left open: the original likely had real flip/UV-edge code (a sprite RECT struct
|
||||
or flag field) whose test the compiler could prove false. Finding that field in the entity or sprite
|
||||
layout would turn the invented `tpage & 0x200` into the original's test.
|
||||
+185
-185
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"head": "97e5d721b",
|
||||
"head": "2e05e1238",
|
||||
"stamp": "15956e4a96c4",
|
||||
"generated": "2026-09-10 23:47",
|
||||
"generated": "2026-09-10 23:48",
|
||||
"aliases": [
|
||||
"main",
|
||||
"ov_SC03_014",
|
||||
@@ -21,207 +21,207 @@
|
||||
"main": {
|
||||
"objects": 85,
|
||||
"identical": 85,
|
||||
"seconds": 10.692999999999998,
|
||||
"mean_s": 0.126
|
||||
"seconds": 9.173999999999998,
|
||||
"mean_s": 0.108
|
||||
},
|
||||
"ov_SC03_014": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 7.435,
|
||||
"mean_s": 0.232
|
||||
"seconds": 6.347,
|
||||
"mean_s": 0.198
|
||||
},
|
||||
"ov_SC03_015": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 6.612000000000001,
|
||||
"mean_s": 0.207
|
||||
"seconds": 6.3530000000000015,
|
||||
"mean_s": 0.199
|
||||
},
|
||||
"ov_SC04_011": {
|
||||
"objects": 28,
|
||||
"identical": 28,
|
||||
"seconds": 6.183000000000002,
|
||||
"mean_s": 0.221
|
||||
"seconds": 5.93,
|
||||
"mean_s": 0.212
|
||||
}
|
||||
},
|
||||
"per_object_seconds": {
|
||||
"build/src/800.o": 1.092,
|
||||
"build/src/800_b.o": 0.105,
|
||||
"build/src/800_b_2.o": 0.443,
|
||||
"build/src/800_b_o0a.o": 0.139,
|
||||
"build/src/800_c.o": 0.284,
|
||||
"build/src/800b2.o": 0.139,
|
||||
"build/src/apicard1.o": 0.104,
|
||||
"build/src/apicard2.o": 0.153,
|
||||
"build/src/apicard3.o": 0.102,
|
||||
"build/src/apicard4.o": 0.106,
|
||||
"build/src/apicard5.o": 0.103,
|
||||
"build/src/apicard6.o": 0.121,
|
||||
"build/src/apicard7.o": 0.078,
|
||||
"build/src/boot.o": 0.129,
|
||||
"build/src/gap.o": 0.086,
|
||||
"build/src/libapi1.o": 0.103,
|
||||
"build/src/libapi2.o": 0.159,
|
||||
"build/src/800.o": 0.572,
|
||||
"build/src/800_b.o": 0.111,
|
||||
"build/src/800_b_2.o": 0.294,
|
||||
"build/src/800_b_o0a.o": 0.179,
|
||||
"build/src/800_c.o": 0.209,
|
||||
"build/src/800b2.o": 0.144,
|
||||
"build/src/apicard1.o": 0.107,
|
||||
"build/src/apicard2.o": 0.167,
|
||||
"build/src/apicard3.o": 0.088,
|
||||
"build/src/apicard4.o": 0.2,
|
||||
"build/src/apicard5.o": 0.172,
|
||||
"build/src/apicard6.o": 0.085,
|
||||
"build/src/apicard7.o": 0.1,
|
||||
"build/src/boot.o": 0.125,
|
||||
"build/src/gap.o": 0.066,
|
||||
"build/src/libapi1.o": 0.201,
|
||||
"build/src/libapi2.o": 0.084,
|
||||
"build/src/libc2_1.o": 0.101,
|
||||
"build/src/libc2_2.o": 0.117,
|
||||
"build/src/libcd1.o": 0.15,
|
||||
"build/src/libcd2.o": 0.123,
|
||||
"build/src/libetc.o": 0.079,
|
||||
"build/src/libgpu.o": 0.084,
|
||||
"build/src/libgpu2.o": 0.125,
|
||||
"build/src/libgs1.o": 0.124,
|
||||
"build/src/libgs2.o": 0.082,
|
||||
"build/src/libgs3.o": 0.116,
|
||||
"build/src/libgs4.o": 0.1,
|
||||
"build/src/libgs5.o": 0.085,
|
||||
"build/src/libgs6.o": 0.094,
|
||||
"build/src/libgs7.o": 0.088,
|
||||
"build/src/libgs8.o": 0.113,
|
||||
"build/src/libgte1.o": 0.108,
|
||||
"build/src/libgte10.o": 0.068,
|
||||
"build/src/libgte11.o": 0.111,
|
||||
"build/src/libgte12.o": 0.108,
|
||||
"build/src/libgte13.o": 0.101,
|
||||
"build/src/libgte14.o": 0.085,
|
||||
"build/src/libgte15.o": 0.086,
|
||||
"build/src/libgte16.o": 0.102,
|
||||
"build/src/libgte17.o": 0.085,
|
||||
"build/src/libgte18.o": 0.154,
|
||||
"build/src/libgte19.o": 0.087,
|
||||
"build/src/libgte2.o": 0.079,
|
||||
"build/src/libgte20.o": 0.112,
|
||||
"build/src/libgte21.o": 0.124,
|
||||
"build/src/libgte22.o": 0.091,
|
||||
"build/src/libgte23.o": 0.077,
|
||||
"build/src/libgte24.o": 0.108,
|
||||
"build/src/libgte25.o": 0.095,
|
||||
"build/src/libgte26.o": 0.1,
|
||||
"build/src/libgte27.o": 0.133,
|
||||
"build/src/libgte28.o": 0.115,
|
||||
"build/src/libgte29.o": 0.123,
|
||||
"build/src/libgte3.o": 0.073,
|
||||
"build/src/libgte30.o": 0.124,
|
||||
"build/src/libgte4.o": 0.095,
|
||||
"build/src/libgte5.o": 0.133,
|
||||
"build/src/libgte6.o": 0.102,
|
||||
"build/src/libgte7.o": 0.132,
|
||||
"build/src/libgte8.o": 0.083,
|
||||
"build/src/libgte9.o": 0.148,
|
||||
"build/src/libmcrd1.o": 0.109,
|
||||
"build/src/libmcrd2.o": 0.122,
|
||||
"build/src/libpad1.o": 0.078,
|
||||
"build/src/libpad2.o": 0.121,
|
||||
"build/src/sgap.o": 0.097,
|
||||
"build/src/sgap_2.o": 0.084,
|
||||
"build/src/sgap_3.o": 0.116,
|
||||
"build/src/sgap_4.o": 0.124,
|
||||
"build/src/sgap_5.o": 0.137,
|
||||
"build/src/sgap_6.o": 0.085,
|
||||
"build/src/sgap_8.o": 0.18,
|
||||
"build/src/snd1.o": 0.095,
|
||||
"build/src/snd10.o": 0.105,
|
||||
"build/src/snd11.o": 0.09,
|
||||
"build/src/snd12.o": 0.099,
|
||||
"build/src/snd2.o": 0.116,
|
||||
"build/src/snd3.o": 0.117,
|
||||
"build/src/snd4.o": 0.113,
|
||||
"build/src/snd5.o": 0.117,
|
||||
"build/src/snd6.o": 0.128,
|
||||
"build/src/snd7.o": 0.099,
|
||||
"build/src/snd8.o": 0.077,
|
||||
"build/src/snd9.o": 0.115,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.2,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.731,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.486,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.119,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.091,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.318,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.234,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.182,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.113,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.15,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.219,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.143,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.327,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.167,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.139,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.118,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.155,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.674,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.338,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.14,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.327,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.114,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.128,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.114,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.372,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.316,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.159,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.391,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.115,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.112,
|
||||
"build/src/libc2_2.o": 0.084,
|
||||
"build/src/libcd1.o": 0.084,
|
||||
"build/src/libcd2.o": 0.069,
|
||||
"build/src/libetc.o": 0.073,
|
||||
"build/src/libgpu.o": 0.064,
|
||||
"build/src/libgpu2.o": 0.046,
|
||||
"build/src/libgs1.o": 0.043,
|
||||
"build/src/libgs2.o": 0.034,
|
||||
"build/src/libgs3.o": 0.063,
|
||||
"build/src/libgs4.o": 0.07,
|
||||
"build/src/libgs5.o": 0.053,
|
||||
"build/src/libgs6.o": 0.093,
|
||||
"build/src/libgs7.o": 0.063,
|
||||
"build/src/libgs8.o": 0.066,
|
||||
"build/src/libgte1.o": 0.08,
|
||||
"build/src/libgte10.o": 0.082,
|
||||
"build/src/libgte11.o": 0.076,
|
||||
"build/src/libgte12.o": 0.089,
|
||||
"build/src/libgte13.o": 0.086,
|
||||
"build/src/libgte14.o": 0.098,
|
||||
"build/src/libgte15.o": 0.091,
|
||||
"build/src/libgte16.o": 0.075,
|
||||
"build/src/libgte17.o": 0.093,
|
||||
"build/src/libgte18.o": 0.126,
|
||||
"build/src/libgte19.o": 0.115,
|
||||
"build/src/libgte2.o": 0.11,
|
||||
"build/src/libgte20.o": 0.105,
|
||||
"build/src/libgte21.o": 0.084,
|
||||
"build/src/libgte22.o": 0.098,
|
||||
"build/src/libgte23.o": 0.094,
|
||||
"build/src/libgte24.o": 0.103,
|
||||
"build/src/libgte25.o": 0.093,
|
||||
"build/src/libgte26.o": 0.084,
|
||||
"build/src/libgte27.o": 0.099,
|
||||
"build/src/libgte28.o": 0.123,
|
||||
"build/src/libgte29.o": 0.11,
|
||||
"build/src/libgte3.o": 0.125,
|
||||
"build/src/libgte30.o": 0.087,
|
||||
"build/src/libgte4.o": 0.084,
|
||||
"build/src/libgte5.o": 0.117,
|
||||
"build/src/libgte6.o": 0.118,
|
||||
"build/src/libgte7.o": 0.104,
|
||||
"build/src/libgte8.o": 0.074,
|
||||
"build/src/libgte9.o": 0.072,
|
||||
"build/src/libmcrd1.o": 0.13,
|
||||
"build/src/libmcrd2.o": 0.124,
|
||||
"build/src/libpad1.o": 0.085,
|
||||
"build/src/libpad2.o": 0.107,
|
||||
"build/src/sgap.o": 0.114,
|
||||
"build/src/sgap_2.o": 0.073,
|
||||
"build/src/sgap_3.o": 0.125,
|
||||
"build/src/sgap_4.o": 0.136,
|
||||
"build/src/sgap_5.o": 0.092,
|
||||
"build/src/sgap_6.o": 0.1,
|
||||
"build/src/sgap_8.o": 0.088,
|
||||
"build/src/snd1.o": 0.119,
|
||||
"build/src/snd10.o": 0.116,
|
||||
"build/src/snd11.o": 0.074,
|
||||
"build/src/snd12.o": 0.107,
|
||||
"build/src/snd2.o": 0.081,
|
||||
"build/src/snd3.o": 0.081,
|
||||
"build/src/snd4.o": 0.072,
|
||||
"build/src/snd5.o": 0.137,
|
||||
"build/src/snd6.o": 0.088,
|
||||
"build/src/snd7.o": 0.091,
|
||||
"build/src/snd8.o": 0.099,
|
||||
"build/src/snd9.o": 0.13,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.18,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.659,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.541,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.097,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.107,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.174,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.216,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.181,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.109,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.083,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.22,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.127,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.239,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.118,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.105,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.076,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.156,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.57,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.305,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.175,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.346,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.102,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.139,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.12,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.183,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.243,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.068,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.375,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.069,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.085,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.077,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.166,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.171,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.631,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.538,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.089,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.098,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.161,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.225,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.176,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.141,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.091,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.258,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.136,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.206,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.121,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.08,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.092,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.146,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.629,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.404,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.13,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.31,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.115,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.146,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.131,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.203,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.252,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.07,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.405,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.081,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.124,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.101,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.151,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.182,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.651,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.511,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.095,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.094,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.102,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.184,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.624,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.516,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.111,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.11,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.138,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.226,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.136,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.091,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.081,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.237,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.091,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.217,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.125,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.104,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.091,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.154,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.665,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.364,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.138,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.291,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.12,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.161,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.107,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.216,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.268,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.094,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.345,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.072,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.086,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.092,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.098,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.162,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.597,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.497,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.102,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.08,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.153,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.205,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.14,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.128,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.107,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.241,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.112,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.235,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.14,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.116,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.112,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.174,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.589,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.35,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.125,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.279,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.082,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.129,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.135,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.155,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.755,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.062,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.126
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.212,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.139,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.131,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.083,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.225,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.118,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.279,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.187,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.089,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.113,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.121,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.553,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.345,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.16,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.257,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.083,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.135,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.09,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.16,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.683,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.077,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.099
|
||||
},
|
||||
"ok": true,
|
||||
"seconds": 3.8
|
||||
"seconds": 8.7
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7598,13 +7598,12 @@ void CdReadSectorReadyCB(u8 reason) {
|
||||
XRECT dead;
|
||||
u32 *q;
|
||||
XRECT *r;
|
||||
register s32 i __asm__("$18"); // !FAKE: pin $18 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 i;
|
||||
s32 n, pos, res, b;
|
||||
s32 tmp;
|
||||
s32 k80;
|
||||
s32 one;
|
||||
s32 dst;
|
||||
s32 cnt;
|
||||
s32 dst4;
|
||||
|
||||
if (reason != 1) goto endReason;
|
||||
@@ -7753,8 +7752,8 @@ void CdReadSectorReadyCB(u8 reason) {
|
||||
break;
|
||||
case 4:
|
||||
if (p->words < 0x801) {
|
||||
cnt = (p->words + 3) / 4;
|
||||
func_80043994(lzss_sectorStagingBuf, cnt);
|
||||
i = (p->words + 3) / 4;
|
||||
func_80043994(lzss_sectorStagingBuf, i);
|
||||
if (func_8002FC64(p->words, lzss_sectorStagingBuf) == 0) goto stageFail;
|
||||
p->count++;
|
||||
if (p->flags != 0) goto phaseDone;
|
||||
|
||||
@@ -694,7 +694,7 @@ extern s32 func_8004787C(s32 a0);
|
||||
|
||||
void func_80183790(s32 a0) {
|
||||
s32 sum1;
|
||||
register s32 sum2 __asm__("$17"); // !FAKE: pin $17 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 sum2;
|
||||
s32 frac;
|
||||
s32 threshold;
|
||||
s32 ret;
|
||||
@@ -707,8 +707,7 @@ void func_80183790(s32 a0) {
|
||||
|
||||
sum1 = D_801C7748 + D_8018ABA4;
|
||||
frac = sum1 & 0xFFF;
|
||||
sum2 = D_801C774A;
|
||||
sum2 += D_8018ABA6;
|
||||
sum2 = D_801C774A + D_8018ABA6;
|
||||
|
||||
threshold = -(sum1 * 1536) / 12288 - 0x22;
|
||||
|
||||
|
||||
@@ -3897,12 +3897,11 @@ extern s8 D_801B42D8;
|
||||
void func_801826F0(s32 *param_1)
|
||||
{
|
||||
int new_var;
|
||||
register s32 p __asm__("$4"); // !FAKE: pin $4 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 p;
|
||||
s32 r;
|
||||
p = (s32) (&D_801B42D8);
|
||||
r = param_1[0x2c / 4];
|
||||
new_var = r;
|
||||
p += new_var;
|
||||
p = (s32) (&D_801B42D8) + new_var;
|
||||
*((s8 *) p) = 0;
|
||||
((void (*)(void)) func_80146C3C)();
|
||||
}
|
||||
|
||||
@@ -2838,7 +2838,7 @@ extern void func_80181D3C(void *a0);
|
||||
void func_80181D78(s32 a0) {
|
||||
s32 r;
|
||||
s32 r2;
|
||||
register s32 *self __asm__("$16"); // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 *self, *self2, *self3;
|
||||
u16 arr[6];
|
||||
|
||||
extern s32 rand(void);
|
||||
@@ -2947,8 +2947,8 @@ void func_80181D78(s32 a0) {
|
||||
func_801821B4((s32)a0);
|
||||
return;
|
||||
case 6:
|
||||
self = (s32 *)(a0 + 4);
|
||||
r = func_8012B6D4((s16 *)self, (s16 *)(*(s32 *)(a0 + 0x64) + 4));
|
||||
self2 = (s32 *)(a0 + 4);
|
||||
r = func_8012B6D4((s16 *)self2, (s16 *)(*(s32 *)(a0 + 0x64) + 4));
|
||||
r2 = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), r, 8);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += r2;
|
||||
func_8012B178((s32)a0, (s32)0xFFFA0000);
|
||||
@@ -2962,8 +2962,8 @@ void func_80181D78(s32 a0) {
|
||||
*(s32 *)(a0 + 0x1C) = 0x10;
|
||||
break;
|
||||
case 7:
|
||||
self = (s32 *)(a0 + 4);
|
||||
r = func_8012B6D4((s16 *)self, (s16 *)(*(s32 *)(a0 + 0x64) + 4));
|
||||
self3 = (s32 *)(a0 + 4);
|
||||
r = func_8012B6D4((s16 *)self3, (s16 *)(*(s32 *)(a0 + 0x64) + 4));
|
||||
r2 = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), r, 8);
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += r2;
|
||||
func_8012B178((s32)a0, (s32)0xFFFA0000);
|
||||
|
||||
@@ -3433,9 +3433,8 @@ s32 a0;
|
||||
s16 s0;
|
||||
s32 obj;
|
||||
s32 ang0;
|
||||
s32 ang1;
|
||||
s32 x;
|
||||
register s32 m1 __asm__("$3"); // !FAKE: pin $3 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 m1;
|
||||
s32 m2;
|
||||
s16 d;
|
||||
s32 q;
|
||||
@@ -3494,11 +3493,11 @@ L474:
|
||||
}
|
||||
x = ratan2(-*(s16 *)(a0 + 0xE), *(s16 *)(a0 + 6)) - 0x400;
|
||||
m2 = x & 0xFFF;
|
||||
ang1 = m2;
|
||||
m1 = m2;
|
||||
if (x & 0x800) {
|
||||
ang1 = m2 | 0xF000;
|
||||
m1 = m2 | 0xF000;
|
||||
}
|
||||
x = ang1 - ang0;
|
||||
x = m1 - ang0;
|
||||
m2 = x & 0xFFF;
|
||||
d = m2;
|
||||
if (x & 0x800) {
|
||||
|
||||
@@ -2981,8 +2981,7 @@ extern void func_8012CAE4(void *a0);
|
||||
|
||||
void func_8017F920(s32 a0) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
register s32 addr __asm__("$3"); // !FAKE: pin $3 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 addr;
|
||||
|
||||
addr = (s32)&D_8019C7EC;
|
||||
*(s32 *)(a0 + 0x78) = addr;
|
||||
@@ -3006,8 +3005,8 @@ void func_8017F920(s32 a0) {
|
||||
*(s32 *)(a0 + 0x58) = D_8019C7F4 | 0x60000000;
|
||||
}
|
||||
|
||||
v1 = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(v1 + 0x4) |= 0x8040;
|
||||
addr = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(addr + 0x4) |= 0x8040;
|
||||
*(u16 *)(a0 + 0x5C) = 0xCC00;
|
||||
func_8012A828(a0, (void *)&D_8019D200);
|
||||
|
||||
|
||||
@@ -4678,8 +4678,7 @@ extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
|
||||
void func_8017F9CC(s32 a0) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
register s32 addr __asm__("$3"); // !FAKE: pin $3 — NEEDED DIFFERS (P36 rung B tus8)
|
||||
s32 addr;
|
||||
|
||||
addr = (s32)&D_8018547C;
|
||||
*(s32 *)(a0 + 0x78) = addr;
|
||||
@@ -4703,8 +4702,8 @@ void func_8017F9CC(s32 a0) {
|
||||
*(s32 *)(a0 + 0x58) = D_80185484 | 0x60000000;
|
||||
}
|
||||
|
||||
v1 = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(v1 + 0x4) |= 0x8040;
|
||||
addr = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(addr + 0x4) |= 0x8040;
|
||||
*(s8 *)(a0 + 0xC0) = 1;
|
||||
*(s32 *)(a0 + 0xB4) = 1;
|
||||
func_8012A828(a0, (void *)&D_80181594);
|
||||
|
||||
@@ -2998,8 +2998,7 @@ extern void func_8012A828(s32 a0, void *a1);
|
||||
|
||||
void func_80180958(s32 a0) {
|
||||
s32 v0;
|
||||
s32 v1;
|
||||
register s32 addr __asm__("$3"); // !FAKE: pin $3 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 addr;
|
||||
|
||||
addr = (s32)&D_801A52E4;
|
||||
*(s32 *)(a0 + 0x78) = addr;
|
||||
@@ -3023,8 +3022,8 @@ void func_80180958(s32 a0) {
|
||||
*(s32 *)(a0 + 0x58) = D_801A52EC | 0x60000000;
|
||||
}
|
||||
|
||||
v1 = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(v1 + 0x4) |= 0x8040;
|
||||
addr = *(s32 *)(a0 + 0x20);
|
||||
*(s32 *)(addr + 0x4) |= 0x8040;
|
||||
*(u16 *)(a0 + 0x5C) = 0xCC00;
|
||||
func_8012A828(a0, (void *)&D_801A5CF8);
|
||||
|
||||
|
||||
@@ -3287,8 +3287,7 @@ extern u16 func_80148800(s32 *a0);
|
||||
void func_8017F304(s32 a0) {
|
||||
Blk8_80126940_8017D6D0_8017F48C sp10;
|
||||
u8 t;
|
||||
register s16 lo __asm__("$4"); // !FAKE: pin $4 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s16 hi;
|
||||
s16 lo;
|
||||
|
||||
if (func_80148800(&D_80126B58) & 3) {
|
||||
t = (*(u8 *)(a0 + 5) + 1) & 1;
|
||||
@@ -3302,9 +3301,9 @@ void func_8017F304(s32 a0) {
|
||||
if (sp10.v[0] < lo) {
|
||||
sp10.v[0] = lo;
|
||||
}
|
||||
hi = -0x10c0;
|
||||
if (sp10.v[0] > hi) {
|
||||
sp10.v[0] = hi;
|
||||
lo = -0x10c0;
|
||||
if (sp10.v[0] > lo) {
|
||||
sp10.v[0] = lo;
|
||||
}
|
||||
func_8017F53C(a0, sp10.v);
|
||||
}
|
||||
|
||||
@@ -3749,7 +3749,6 @@ void func_8017E71C(void *a0) {
|
||||
if (s1 != 0) {
|
||||
s32 sx;
|
||||
s32 pan;
|
||||
s32 vol;
|
||||
|
||||
v[0] = *(u16 *)(s0 + 0x6);
|
||||
v[1] = *(u16 *)(s0 + 0xA);
|
||||
@@ -3759,15 +3758,14 @@ void func_8017E71C(void *a0) {
|
||||
sx = (s16)*(u16 *)&sxy;
|
||||
pan = (sx + 0xA0) / 0x14;
|
||||
if (sx < 0) {
|
||||
vol = (sx >> 1) + 0x7F;
|
||||
v1 = (sx >> 1) + 0x7F;
|
||||
} else {
|
||||
vol = 0x7F - (sx >> 1);
|
||||
v1 = 0x7F - (sx >> 1);
|
||||
}
|
||||
if ((u32)(pan & 0xFFFF) < 0x10) {
|
||||
s32 row = vol - 0x2F;
|
||||
__asm__("" : "=r"(row) : "0"(row)); // !FAKE: launder — NEEDED DIFFERS (P36 rung B tus10)
|
||||
s32 row = v1 - 0x2F;
|
||||
if ((u32)(row & 0xFFFF) < 0x51) {
|
||||
func_8002D4C8(s1, (vol | 0x3000 | (pan << 8)) & 0xFFFF);
|
||||
func_8002D4C8(s1, (v1 | 0x3000 | (pan << 8)) & 0xFFFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3950,8 +3950,7 @@ void func_80189F24(s16 *arg0, s32 arg1)
|
||||
u8 sp10[4];
|
||||
s32 size;
|
||||
s32 prod;
|
||||
register s32 h __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 w;
|
||||
s32 h;
|
||||
|
||||
if (D_801E67A0[D_800B99DA & 0xF] == 0) {
|
||||
size = 0x60;
|
||||
@@ -3961,10 +3960,10 @@ void func_80189F24(s16 *arg0, s32 arg1)
|
||||
|
||||
arg1++;
|
||||
prod = size * arg1;
|
||||
w = prod / 32;
|
||||
h = w / 2;
|
||||
sp10[0] = w;
|
||||
sp10[1] = w;
|
||||
size = prod / 32;
|
||||
h = size / 2;
|
||||
sp10[0] = size;
|
||||
sp10[1] = size;
|
||||
sp10[2] = h;
|
||||
sp10[3] = 0;
|
||||
|
||||
|
||||
@@ -3589,9 +3589,8 @@ extern s32 D_801E1158;
|
||||
void func_8017E1F0(s32 param_)
|
||||
{
|
||||
s32 s1;
|
||||
register s32 ent __asm__("$16"); // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
register s32 i __asm__("$18"); // !FAKE: pin $18 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 k;
|
||||
s32 ent;
|
||||
s32 i;
|
||||
struct {
|
||||
s16 m[16];
|
||||
s16 out[4];
|
||||
@@ -3658,10 +3657,10 @@ void func_8017E1F0(s32 param_)
|
||||
frm.f07 = 0x7FFF;
|
||||
*(u16 *)(s1 + 0x108) = 0;
|
||||
func_8012EC04(s1, tmp, (s32 *)frm.m);
|
||||
k = 0;
|
||||
while (k < 4) {
|
||||
func_8012F14C((s32)frm.m, (s32)&D_80193448[k * 4], (s32)frm.out);
|
||||
frm.idx = k;
|
||||
i = 0;
|
||||
while (i < 4) {
|
||||
func_8012F14C((s32)frm.m, (s32)&D_80193448[i * 4], (s32)frm.out);
|
||||
frm.idx = i;
|
||||
frm.ax = frm.out[0];
|
||||
frm.ay = frm.out[1];
|
||||
frm.az = frm.out[2];
|
||||
@@ -3675,7 +3674,7 @@ void func_8017E1F0(s32 param_)
|
||||
*(s16 *)(ent + 0xA) = frm.out[1];
|
||||
*(s16 *)(ent + 0xE) = frm.out[2];
|
||||
}
|
||||
k++;
|
||||
i++;
|
||||
}
|
||||
func_8002D4C8(0x953, 0);
|
||||
cnt = *(s32 *)(s1 + 0xE0) + 1;
|
||||
@@ -5002,29 +5001,27 @@ extern u8 D_801936C8[];
|
||||
|
||||
void func_801809A8(s32 a0)
|
||||
{
|
||||
s32 s0 = a0;
|
||||
s32 v1;
|
||||
|
||||
if (func_8012C354(a0, &D_80193688) != 0) {
|
||||
*(u8 *)(s0 + 0xC0) = 1;
|
||||
*(s32 *)(s0 + 0xB4) = -1;
|
||||
*(s16 *)(s0 + 0xAE) = -1;
|
||||
*(u8 *)(s0 + 0x75) = 8;
|
||||
func_8012A828(s0, &D_801936C8);
|
||||
__asm__("" : "=r"(s0) : "0"(s0)); // !FAKE: launder — NEEDED DIFFERS (P36 rung B tus9)
|
||||
if (*(s16 *)(s0 + 0x70) != 0) {
|
||||
*(s16 *)(s0 + 2) = 4;
|
||||
*(u8 *)(a0 + 0xC0) = 1;
|
||||
*(s32 *)(a0 + 0xB4) = -1;
|
||||
*(s16 *)(a0 + 0xAE) = -1;
|
||||
*(u8 *)(a0 + 0x75) = 8;
|
||||
func_8012A828(a0, &D_801936C8);
|
||||
if (*(s16 *)(a0 + 0x70) != 0) {
|
||||
*(s16 *)(a0 + 2) = 4;
|
||||
} else {
|
||||
*(s16 *)(s0 + 2) = 1;
|
||||
*(u32 *)(*(s32 *)(s0 + 0x20) + 4) |= 0x80000000;
|
||||
func_8012B2CC(s0);
|
||||
v1 = func_8012C658(0x346, 1, s0);
|
||||
*(s16 *)(a0 + 2) = 1;
|
||||
*(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x80000000;
|
||||
func_8012B2CC(a0);
|
||||
v1 = func_8012C658(0x346, 1, a0);
|
||||
if (v1 != 0) {
|
||||
*(s16 *)(v1 + 6) = -0x660;
|
||||
*(s16 *)(v1 + 0xA) = -0x682;
|
||||
*(s16 *)(v1 + 0xE) = 0x80;
|
||||
}
|
||||
v1 = func_8012C658(0x346, 1, s0);
|
||||
v1 = func_8012C658(0x346, 1, a0);
|
||||
if (v1 != 0) {
|
||||
*(s16 *)(v1 + 6) = -0xA60;
|
||||
*(s16 *)(v1 + 0xA) = -0x882;
|
||||
|
||||
@@ -3704,8 +3704,7 @@ void func_80180DCC(void *a0)
|
||||
void *s3 = a0;
|
||||
void *s2;
|
||||
void *p;
|
||||
s32 v1;
|
||||
register s32 v0 __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9)
|
||||
s32 v0;
|
||||
s32 bits;
|
||||
s32 s0;
|
||||
s32 s1;
|
||||
@@ -3725,9 +3724,9 @@ void func_80180DCC(void *a0)
|
||||
}
|
||||
s1 = func_80012A60(s0, 0x400);
|
||||
v0 = func_80012A60(s0, 0xC00);
|
||||
v1 = (s16)s1;
|
||||
bits = (s16)s1;
|
||||
v0 = (s16)v0;
|
||||
v0 = (v0 < v1);
|
||||
v0 = (v0 < bits);
|
||||
if (v0 != 0) {
|
||||
goto TRUE1;
|
||||
}
|
||||
@@ -3739,9 +3738,9 @@ TRUE1:
|
||||
ELSE:
|
||||
s1 = func_80012A60(s0, 0);
|
||||
v0 = func_80012A60(s0, 0x800);
|
||||
v1 = (s16)s1;
|
||||
bits = (s16)s1;
|
||||
v0 = (s16)v0;
|
||||
v0 = (v0 < v1);
|
||||
v0 = (v0 < bits);
|
||||
if (v0 != 0) {
|
||||
goto TRUE2;
|
||||
}
|
||||
|
||||
@@ -4512,7 +4512,6 @@ void func_8017FCA8(s32 a0)
|
||||
s16 clamped;
|
||||
s16 va;
|
||||
s16 vb;
|
||||
register s32 sc __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus10)
|
||||
|
||||
cur = *(PosFCA8 *) D_80126940;
|
||||
ret = func_8012E544(0x306);
|
||||
@@ -4535,8 +4534,8 @@ void func_8017FCA8(s32 a0)
|
||||
*(s16 *) (a0 + 0x20) = va;
|
||||
vb = ((clamped * 111) / 0x300) - 0x70;
|
||||
*(s16 *) (a0 + 0x30) = vb;
|
||||
sc = ((clamped * 800) / 0x300) + 0x190;
|
||||
*(s32 *) (a0 + 0x14) = (s16) sc;
|
||||
ret = ((clamped * 800) / 0x300) + 0x190;
|
||||
*(s32 *) (a0 + 0x14) = (s16) ret;
|
||||
} else {
|
||||
target = *(PosFCA8 *) D_80126940;
|
||||
}
|
||||
@@ -6234,13 +6233,12 @@ extern void func_80182038(s32 param_1);
|
||||
extern void func_8018247C(void);
|
||||
|
||||
void func_80182DF0(s32 arg0) {
|
||||
register s32 s0 __asm__("$16") = arg0; // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus10)
|
||||
|
||||
*(s16 *)(s0 + 0x52) = (rand() & 3) * 2 - 3;
|
||||
if (func_8012BEE8(s0) != 0) {
|
||||
func_80182038(s0);
|
||||
*(s16 *)(arg0 + 0x52) = (rand() & 3) * 2 - 3;
|
||||
if (func_8012BEE8(arg0) != 0) {
|
||||
func_80182038(arg0);
|
||||
}
|
||||
((void (*)(s32))func_8018247C)(s0);
|
||||
((void (*)(s32))func_8018247C)(arg0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,23 +8,22 @@ extern void func_8012A828(s32 a0, void *a1);
|
||||
extern s32 D_801DF700;
|
||||
extern s32 D_8018EFDC;
|
||||
void func_801860E4(void *a0) {
|
||||
register s32 s0 __asm__("$16") = (s32)a0; // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B headers2)
|
||||
s32 s1;
|
||||
s32 v0;
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
s1 = v0;
|
||||
*(s32 *)((s8 *)s0 + 0x20) = v0;
|
||||
*(s32 *)((s8 *)a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
func_8012CAE4((void *)s0);
|
||||
func_8012CAE4((void *)a0);
|
||||
} else {
|
||||
func_8001C214(s1, (s32)&D_801DF700);
|
||||
func_8001D0E8(s1, 0x800, 0x800);
|
||||
func_8012A828(s0, &D_8018EFDC);
|
||||
*(s32 *)((s8 *)s0 + 0x14) = 0xFFFC0000;
|
||||
*(s32 *)((s8 *)s0 + 0x48) = 0x20000;
|
||||
*(s32 *)((s8 *)s0 + 0x44) = 0;
|
||||
*(s32 *)((s8 *)s0 + 0x4C) = 0;
|
||||
*(s16 *)((s8 *)s0 + 0xDC) = 0x40;
|
||||
*(u16 *)((s8 *)s0 + 0x2) = *(u16 *)((s8 *)s0 + 0x2) + 1;
|
||||
func_8012A828(a0, &D_8018EFDC);
|
||||
*(s32 *)((s8 *)a0 + 0x14) = 0xFFFC0000;
|
||||
*(s32 *)((s8 *)a0 + 0x48) = 0x20000;
|
||||
*(s32 *)((s8 *)a0 + 0x44) = 0;
|
||||
*(s32 *)((s8 *)a0 + 0x4C) = 0;
|
||||
*(s16 *)((s8 *)a0 + 0xDC) = 0x40;
|
||||
*(u16 *)((s8 *)a0 + 0x2) = *(u16 *)((s8 *)a0 + 0x2) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user