Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,39 +35,39 @@ Decompilation progress is tracked live on **[openrac.dev](https://openrac.dev)**
<!-- progress:begin (tools/progress.py --write) -->
| Program | Functions | Final source | in C | ASM_FUNC | LINKER_REMNANT | INCLUDE_ASM |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| frontbin | 1667 | 1393 (83.6%) | 1034 | 138 | 221 | 274 |
| boot_elf | 1043 | 852 (81.7%) | 575 | 204 | 73 | 191 |
| frontbin | 1690 | 1419 (84.0%) | 1060 | 138 | 221 | 271 |
| boot_elf | 1020 | 829 (81.3%) | 552 | 204 | 73 | 191 |
| i5bootn | 194 | 193 (99.5%) | 41 | 147 | 5 | 1 |
| Shared level code | 7747 | 2758 (35.6%) | 2259 | 0 | 499 | 4989 |
| Level-specific code | 5513 | 611 (11.1%) | 449 | 0 | 162 | 4902 |

| | Functions (exact) | Code (exact) | Fuzzy |
| --- | ---: | ---: | ---: |
| Core programs | 2,438 of 2,904 | 380,896 of 639,780 bytes (59.54%) | 59.54% |
| Core programs | 2,441 of 2,904 | 381,516 of 639,780 bytes (59.63%) | 59.63% |
| Shared level code | 2,758 of 7,747 | 251,444 of 3,914,160 bytes (6.42%) | 6.42% |
| Level-specific code | 611 of 5,513 | 25,440 of 2,993,008 bytes (0.85%) | 0.85% |
| **Total** | 5,807 of 16,164 | 657,780 of 7,546,948 bytes (8.72%) | 8.72% |
| **Total** | 5,810 of 16,164 | 658,400 of 7,546,948 bytes (8.72%) | 8.72% |

Each distinct function counts once: boot_elf's copy of the front end is frontbin's, and a level function counts once however many of the 49 levels have it. 204,304 bytes (2.71%) are in source files with nothing left to decompile.
Each distinct function counts once: boot_elf's copy of the front end is frontbin's, and a level function counts once however many of the 49 levels have it. 199,208 bytes (2.64%) are in source files with nothing left to decompile.
<!-- progress:end -->

**NTSC-U** (`SCUS-973.53`: 3 core programs and 51 levels, built byte-identical from assembly; [docs/versions.md](docs/versions.md)):

<!-- progress-us:begin (tools/progress.py --version us --write) -->
| NTSC-U program | Functions | Final source | in C | ASM_FUNC | LINKER_REMNANT | INCLUDE_ASM |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| frontbin | 1656 | 1372 (82.9%) | 1014 | 138 | 220 | 284 |
| boot_elf | 1046 | 814 (77.8%) | 543 | 204 | 67 | 232 |
| i5bootn | 191 | 183 (95.8%) | 35 | 145 | 3 | 8 |
| frontbin | 1672 | 1402 (83.9%) | 1044 | 138 | 220 | 270 |
| boot_elf | 1030 | 805 (78.2%) | 534 | 204 | 67 | 225 |
| i5bootn | 191 | 185 (96.9%) | 37 | 145 | 3 | 6 |
| Shared level code | 7728 | 2715 (35.1%) | 2209 | 0 | 506 | 5013 |
| Level-specific code | 5601 | 593 (10.6%) | 431 | 0 | 162 | 5008 |

| | Functions (exact) | Code (exact) | Fuzzy |
| --- | ---: | ---: | ---: |
| Core programs | 2,369 of 2,893 | 355,416 of 639,076 bytes (55.61%) | 61.55% |
| Core programs | 2,392 of 2,893 | 373,928 of 639,076 bytes (58.51%) | 63.18% |
| Shared level code | 2,715 of 7,728 | 249,772 of 3,883,768 bytes (6.43%) | 6.46% |
| Level-specific code | 593 of 5,601 | 23,928 of 2,986,136 bytes (0.80%) | 0.85% |
| **Total** | 5,677 of 16,222 | 629,116 of 7,508,980 bytes (8.38%) | 8.92% |
| **Total** | 5,700 of 16,222 | 647,628 of 7,508,980 bytes (8.62%) | 9.06% |

Counted from the NTSC-U disc's own function tables; a function is final when PAL's source for the function with its code checks MATCH there (config/us/map.tsv, tools/version_map.py), and the fuzzy figure adds what the near misses and the C that does not check yet reach there (docs/versions.md). 51 levels; each distinct function counts once.
<!-- progress-us:end -->
Expand Down
3 changes: 3 additions & 0 deletions config/frontbin/symbol_addrs_resolved.txt
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,7 @@ D_001D8014_003A91D0 = 0x001D8014;
D_001D81AC_003AB890 = 0x001D81AC;
D_001D81B0_003AB890 = 0x001D81B0;
D_001D81E8_003AB168 = 0x001D81E8;
D_001D81E8_003AB830 = 0x001D81E8;
D_001D8434_003AC948 = 0x001D8434;
D_001D8438_003AC948 = 0x001D8438;
D_001D8880 = 0x001D8880;
Expand Down Expand Up @@ -678,6 +679,8 @@ D_001D9C10_00388AF8 = 0x001D9C10;
D_001D9C10_00389E28 = 0x001D9C10;
D_001D9C14_00388AF8 = 0x001D9C14;
D_001D9C14_00389EA0 = 0x001D9C14;
D_001D9C18_00389FE0 = 0x001D9C18;
D_001D9C28_00389FE0 = 0x001D9C28;
D_001D9C38_00388AF8 = 0x001D9C38;
D_001D9C38_00389FE0 = 0x001D9C38;
D_001D9C40_0038A058 = 0x001D9C40;
Expand Down
4 changes: 2 additions & 2 deletions config/frontbin/text_parts.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# @ps2as: assembled with SN's Ps2EeAs; @newas: with ee/bin/as.exe.
0x00381080 -O2 -G8 -fopt-stack -mno-check-zero-division
0x00381140 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
0x00382380 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
0x00382380 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division @ps2as
0x0038CA08 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
0x0038CDB8 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
0x0038CEA8 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
Expand Down Expand Up @@ -70,4 +70,4 @@
0x003E7188 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division @ps2as
0x003E73A0 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division
0x003EA8E0 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division -mno-split-addresses
0x003F2238 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division -mno-split-addresses
0x003F2238 -mvu0-use-vf0-vf2 -O2 -G8 -fopt-stack -mno-check-zero-division -mno-split-addresses
67 changes: 48 additions & 19 deletions config/us/built.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,14 @@ boot_elf func_00129A18 1 -
boot_elf func_00129A58 1 -
boot_elf func_00129AA0 1 -
boot_elf func_00129AF0 1 -
boot_elf func_00129BF0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_00129E58 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_00129EA0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_00129F28 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_00129BF0 1 -
boot_elf func_00129E58 1 -
boot_elf func_00129EA0 1 -
boot_elf func_00129F28 1 -
boot_elf func_0012A068 1 -
boot_elf func_0012A150 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0012A5F0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0012A7C8 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0012A150 1 -
boot_elf func_0012A5F0 1 -
boot_elf func_0012A7C8 1 -
boot_elf func_0012A948 1 -
boot_elf func_0012AA78 1 -
boot_elf func_0012AAE0 1 -
Expand Down Expand Up @@ -402,7 +402,7 @@ boot_elf func_00383038 1 -
boot_elf func_00383128 1 -
boot_elf func_003831A8 1 -
boot_elf func_003831F0 1 -
boot_elf func_00383508 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_00383508 1 -
boot_elf func_00383718 1 -
boot_elf func_00383760 1 -
boot_elf func_003838B0 1 -
Expand Down Expand Up @@ -611,7 +611,7 @@ boot_elf func_0039BF98 1 -
boot_elf func_0039BFF0 1 -
boot_elf func_0039C050 1 -
boot_elf func_0039C0E8 1 -
boot_elf func_0039C1A0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0039C1A0 1 -
boot_elf func_0039C228 1 -
boot_elf func_0039C250 1 -
boot_elf func_0039C270 1 -
Expand All @@ -626,7 +626,7 @@ boot_elf func_0039C440 1 -
boot_elf func_0039C458 1 -
boot_elf func_0039C600 1 -
boot_elf func_0039C6E0 1 -
boot_elf func_0039C7F0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0039C7F0 1 -
boot_elf func_0039E9C0 1 -
boot_elf func_0039EA88 1 -
boot_elf func_0039EAC0 1 -
Expand All @@ -643,7 +643,7 @@ boot_elf func_0039F308 1 -
boot_elf func_0039F3B8 1 -
boot_elf func_0039F4A8 1 -
boot_elf func_0039F4E8 1 -
boot_elf func_0039F728 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_0039F728 1 -
boot_elf func_0039F890 1 -
boot_elf func_0039F8C8 1 -
boot_elf func_0039F908 1 -
Expand All @@ -662,7 +662,7 @@ boot_elf func_0039FB70 1 -
boot_elf func_0039FCF8 1 -
boot_elf func_0039FD58 1 -
boot_elf func_0039FF28 1 -
boot_elf func_003A0180 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_003A0180 1 -
boot_elf func_003A0470 1 -
boot_elf func_003A1000 1 -
boot_elf func_003A1090 1 -
Expand Down Expand Up @@ -894,7 +894,7 @@ boot_elf func_003B1A38 1 -
boot_elf func_003B1AB0 1 -
boot_elf func_003B1C10 1 -
boot_elf func_003B1D00 1 -
boot_elf func_003B1D58 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_003B1D58 1 -
boot_elf func_003B1F40 1 -
boot_elf func_003B2050 1 -
boot_elf func_003B2360 1 -
Expand Down Expand Up @@ -995,9 +995,9 @@ boot_elf func_003B6090 1 -
boot_elf func_003B6588 1 -
boot_elf func_003B6608 1 -
boot_elf func_003B6620 1 -
boot_elf func_003B6638 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_003B6638 1 -
boot_elf func_003B67F0 1 -
boot_elf func_003B6860 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_003B6860 1 -
boot_elf func_003B68C0 1 -
boot_elf func_003B68C8 1 -
boot_elf func_003B6900 1 -
Expand Down Expand Up @@ -1056,7 +1056,7 @@ boot_elf func_003BAB48 1 -
boot_elf func_003BACD8 1 -
boot_elf func_003BAF68 1 -
boot_elf func_003BAF88 1 -
boot_elf func_003BAFA0 0 boot_elf: no object of the block alone checks MATCH
boot_elf func_003BAFA0 1 -
boot_elf func_003BB090 1 -
boot_elf func_003BB308 1 -
boot_elf func_003BB468 1 -
Expand Down Expand Up @@ -1608,6 +1608,7 @@ frontbin func_00382348 1 -
frontbin func_00382468 1 -
frontbin func_00382498 1 -
frontbin func_003824E0 1 -
frontbin func_00382538 1 -
frontbin func_00382580 1 -
frontbin func_00382760 1 -
frontbin func_00382A80 1 -
Expand All @@ -1622,12 +1623,34 @@ frontbin func_00384AC8 1 -
frontbin func_00384BB8 1 -
frontbin func_00384CC8 1 -
frontbin func_00385398 1 -
frontbin func_00385D28 1 -
frontbin func_00385EF0 1 -
frontbin func_003864C0 1 -
frontbin func_00386678 1 -
frontbin func_00387218 1 -
frontbin func_00387268 1 -
frontbin func_00387EF0 1 -
frontbin func_00387F68 1 -
frontbin func_00388138 1 -
frontbin func_003881B0 1 -
frontbin func_00388238 1 -
frontbin func_00389240 1 -
frontbin func_00389C48 1 -
frontbin func_00389D00 1 -
frontbin func_00389D60 1 -
frontbin func_00389DB0 1 -
frontbin func_00389E28 1 -
frontbin func_00389EA0 1 -
frontbin func_00389F18 1 -
frontbin func_00389F68 1 -
frontbin func_00389FE0 1 -
frontbin func_0038A238 1 -
frontbin func_0038A3B8 1 -
frontbin func_0038ABC0 1 -
frontbin func_0038AD40 1 -
frontbin func_0038AE20 1 -
frontbin func_0038B670 1 -
frontbin func_0038B850 1 -
frontbin func_0038C3B0 1 -
frontbin func_0038C9B0 1 -
frontbin func_0038CDB8 1 -
Expand Down Expand Up @@ -1716,7 +1739,9 @@ frontbin func_0039A9B0 1 -
frontbin func_0039AA38 1 -
frontbin func_0039AC08 1 -
frontbin func_0039ADD8 0 frontbin: starts on a 4-mod-8 address here; C starts 8-aligned
frontbin func_0039AEF0 1 -
frontbin func_0039B038 1 -
frontbin func_0039B088 1 -
frontbin func_0039B0B0 1 -
frontbin func_0039B0D8 1 -
frontbin func_0039B168 1 -
Expand Down Expand Up @@ -1899,6 +1924,7 @@ frontbin func_003AB570 1 -
frontbin func_003AB738 1 -
frontbin func_003AB778 1 -
frontbin func_003AB820 1 -
frontbin func_003AB830 1 -
frontbin func_003AB890 1 -
frontbin func_003AB988 1 -
frontbin func_003AB9B8 1 -
Expand Down Expand Up @@ -2128,7 +2154,7 @@ frontbin func_003BA790 1 -
frontbin func_003BA920 1 -
frontbin func_003BABB0 1 -
frontbin func_003BABD0 1 -
frontbin func_003BABE8 0 frontbin: no object of the block alone checks MATCH
frontbin func_003BABE8 1 -
frontbin func_003BACD8 1 -
frontbin func_003BAF50 1 -
frontbin func_003BB0B0 1 -
Expand Down Expand Up @@ -2582,14 +2608,17 @@ frontbin func_003F2380 1 -
frontbin func_003F2388 1 -
frontbin func_003F2390 1 -
frontbin func_003F23A8 1 -
frontbin func_U_0037D1A8 1 -
frontbin func_U_0037E060 1 -
frontbin func_U_0038F0C0 1 -
frontbin func_U_0038F3A0 1 -
frontbin func_U_003906E8 1 -
frontbin func_U_00391B30 1 -
frontbin func_U_00391B70 1 -
frontbin func_U_003B0D18 1 -
frontbin func_U_003B8700 1 -
frontbin func_U_003B8EC0 1 -
frontbin func_U_003B8EF8 1 -
frontbin func_U_003BA108 1 -
frontbin func_U_003BB558 1 -
frontbin func_U_003BBC48 1 -
Expand All @@ -2606,8 +2635,8 @@ i5bootn func_008010F8 1 -
i5bootn func_008014A0 1 -
i5bootn func_008014D8 1 -
i5bootn func_00801510 1 -
i5bootn func_008015A0 0 i5bootn: no object of the block alone checks MATCH
i5bootn func_00801778 0 i5bootn: no object of the block alone checks MATCH
i5bootn func_008015A0 1 -
i5bootn func_00801778 1 -
i5bootn func_00802490 1 -
i5bootn func_008024B8 1 -
i5bootn func_00802508 0 i5bootn: no object of the block alone checks MATCH
Expand Down
Loading
Loading