diff --git a/docs/re/INDEX.md b/docs/re/INDEX.md index 5006510..e5b3305 100644 --- a/docs/re/INDEX.md +++ b/docs/re/INDEX.md @@ -116,6 +116,7 @@ files, which is how the same ground got covered twice. | [`structures/unit-datasheet-static.md`](structures/unit-datasheet-static.md) | The static unit datasheet and AI flight model — `Generic`, `Maneuver`, `Effect` | āœ… CONFIRMED — 394 Generic + 114 Maneuver + 114 Effect records read; AA_/AV_ are one interleaved block (AV at X, AA at X+8), selection šŸ”“ BLOCKED for static RE (4 routes, all controlled) | | [`structures/weapon-datasheet-static.md`](structures/weapon-datasheet-static.md) | The static weapon datasheet — `Weapon`, `Shell`, `AssortMissileParam` | āœ… CONFIRMED — 131 Weapon + 131 Shell + 9 AssortMissileParam records read | | [`structures/isl-timers.md`](structures/isl-timers.md) | A ScriptPhase owns 32 stopwatches, and they count seconds | āœ… CONFIRMED — the advance is read from `sub_822710D0`, the unit from | +| [`structures/isl-builtins.md`](structures/isl-builtins.md) | The 147 ISL built-ins — dispatch table, calling convention, and which one does what | āœ… for the table/ABI and ~135 handlers; āœ… 26 `set_unit_hp_pct`, 29 `set_unit_damage_taken_pct`, 101 `all_units_invulnerable`; 🟔 28 | | [`structures/isl-message-dialogue-link.md`](structures/isl-message-dialogue-link.md) | Mission scripts as dialogue — built-in 64 -> message id -> caption text | āœ… CONFIRMED total, 2 683/2 683 call sites across all 28 stages resolve, no residue | | [`structures/mission-objective-counter.md`](structures/mission-objective-counter.md) | `REMAINING OB` — the mission's own objective counter, in RAM | āœ… CONFIRMED for one Stage 02 run: a big-endian u32 whose value | | [`structures/movie-subtitles.md`](structures/movie-subtitles.md) | Movie subtitles & the movie ↔ mission ↔ text chain | — | diff --git a/docs/re/data/isl-builtins-26-28-29-sites.txt b/docs/re/data/isl-builtins-26-28-29-sites.txt new file mode 100644 index 0000000..f551e0f --- /dev/null +++ b/docs/re/data/isl-builtins-26-28-29-sites.txt @@ -0,0 +1,909 @@ +# Every call site of ISL built-ins 26, 28, 29 and 101 across all 28 stage scripts. +# +# Regenerate with: +# python3 tools/re-capture/isl_builtin_sites.py 26,28,29,101 \ +# --ssb --craft +# +# Columns: stage offset builtin slot8 slot4-name slot4-raw symtype before after +# slot8 is the double operand; the handler multiplies it by 0.01 before sending it. +# +Stage01 0x0009C8 29 0 TCN001 0x1B type2 [35,118,12] [12,29,15] +Stage01 0x000A44 29 0 TCN002 0x1E type2 [12,29,12] [15,12,30] +Stage01 0x001A5C 29 100 TCN001 0x1B type2 [127,123,8] [35,11,58] +Stage01 0x0028A8 101 - ? None typeNone [11,95,116] [100,124,93] +Stage01 0x002CF8 101 - ? None typeNone [20,20,116] [100,124,93] +Stage01 0x003210 101 - ? None typeNone [11,9,116] [100,124,93] +Stage01 0x007370 28 10 TCN002 0x1E type2 [1,1,1] [29,30,64] +Stage01 0x0073B0 29 0 TCN002 0x1E type2 [1,1,28] [30,64,64] +Stage01 0x00EDAC 29 0 TCN001 0x1B type2 [35,118,12] [12,15,29] +Stage01 0x00EE80 29 0 TCN002 0x1E type2 [29,12,15] [12,15,29] +Stage01 0x00EF54 29 0 TCN003 0x20 type2 [29,12,15] [12,15,30] +Stage01 0x00F094 28 100 ADT201 0x3 type2 [12,15,30] [12,15,30] +Stage01 0x00F1D4 28 100 ADT202 0x6 type2 [12,15,30] [12,3,15] +Stage01 0x00F348 28 100 ADS221 0x7 type2 [12,3,15] [12,3,15] +Stage01 0x00F4BC 28 200 ADS222 0xB type2 [12,3,15] [12,15,28] +Stage01 0x00F590 28 100 ADS223 0xE type2 [28,12,15] [12,15,12] +Stage01 0x0100B0 29 100 TCN001 0x1B type2 [127,123,8] [35,103,1] +Stage01 0x010398 28 10 TCN002 0x1E type2 [1,1,1] [29,30,11] +Stage01 0x0103D8 29 0 TCN002 0x1E type2 [1,1,28] [30,11,58] +Stage01 0x01060C 28 100 ADT203 0xA type2 [15,30,47] [103,69,63] +Stage01 0x0108B4 28 100 ADT204 0xD type2 [58,15,30] [47,1,1] +Stage01 0x010B40 28 100 ADS224 0x11 type2 [58,3,15] [1,11,58] +Stage01 0x010CE8 28 100 ADS225 0x13 type2 [58,3,15] [1,11,58] +Stage01 0x010DF0 28 100 ADT205 0x10 type2 [11,58,15] [30,47,20] +Stage01 0x01115C 28 200 ADS227 0x17 type2 [57,3,15] [58,15,28] +Stage01 0x011230 28 100 ADS226 0x15 type2 [28,58,15] [48,92,1] +Stage01 0x0115CC 28 100 ADS228 0x19 type2 [58,3,15] [1,11,58] +Stage01 0x011774 28 100 ADS229 0x1A type2 [58,3,15] [1,11,95] +Stage01 0x01184C 101 - ? None typeNone [11,95,116] [100,124,93] +Stage01 0x011D58 101 - ? None typeNone [20,20,116] [100,124,93] +Stage01 0x0127AC 101 - ? None typeNone [11,9,116] [100,124,93] +Stage02 0x000E6C 29 0 TCN001 0x4B type2 [35,118,12] [12,15,12] +Stage02 0x002D14 26 0 TCN131 0x57 type2 [14,77,11] [11,116,127] +Stage02 0x002E0C 29 100 TCN001 0x4B type2 [127,123,8] [35,103,30] +Stage02 0x003220 29 0 TCN002 0x4E type2 [1,1,1] [11,58,15] +Stage02 0x004DA8 101 - ? None typeNone [11,95,116] [100,124,93] +Stage02 0x005274 101 - ? None typeNone [11,20,116] [100,124,93] +Stage02 0x0059BC 101 - ? None typeNone [20,20,116] [100,124,93] +Stage02 0x0060A8 101 - ? None typeNone [11,9,116] [100,124,93] +Stage02 0x01586C 29 0 TCN001 0x4B type2 [35,118,12] [12,15,12] +Stage02 0x018544 29 100 TCN001 0x4B type2 [123,123,8] [35,103,30] +Stage02 0x0186DC 29 0 TCN002 0x4E type2 [1,1,1] [11,58,3] +Stage02 0x019204 101 - ? None typeNone [11,95,116] [100,124,93] +Stage02 0x0196D0 101 - ? None typeNone [11,20,116] [100,124,93] +Stage02 0x01A21C 101 - ? None typeNone [20,20,116] [100,124,93] +Stage02 0x01E114 26 0 ADN207 0x2A type2 [79,7,70] [26,11,47] +Stage02 0x01E154 26 0 TCN208 0x68 type2 [7,70,26] [11,47,7] +Stage02 0x01E2C4 26 0 ADN207 0x2A type2 [47,7,70] [26,11,47] +Stage02 0x01E304 26 0 TCN208 0x68 type2 [7,70,26] [11,47,20] +Stage02 0x01E58C 26 0 ADN207 0x2A type2 [80,7,70] [26,11,47] +Stage02 0x01E5CC 26 0 TCN208 0x68 type2 [7,70,26] [11,47,20] +Stage02 0x01E854 26 0 ADN207 0x2A type2 [80,7,70] [26,11,47] +Stage02 0x01E894 26 0 TCN208 0x68 type2 [7,70,26] [11,47,18] +Stage02 0x025B14 29 0 TCN001 0x4B type2 [35,118,12] [12,15,12] +Stage02 0x025FCC 26 60 TCN324 0x67 type2 [15,12,15] [12,15,26] +Stage02 0x0260A0 26 80 TCN325 0x6A type2 [26,12,15] [12,15,26] +Stage02 0x026174 26 60 TCN326 0x6D type2 [26,12,15] [12,15,12] +Stage02 0x0262DC 26 80 TCN328 0x74 type2 [15,12,15] [12,15,12] +Stage02 0x026AD8 26 80 ADN322 0x1F type2 [15,12,15] [12,15,26] +Stage02 0x026BAC 26 60 ADN323 0x25 type2 [26,12,15] [12,15,26] +Stage02 0x026C80 26 80 ADN324 0x2C type2 [26,12,15] [12,15,26] +Stage02 0x026D54 26 30 ADN325 0x32 type2 [26,12,15] [12,15,26] +Stage02 0x026E28 26 80 ADN326 0x38 type2 [26,12,15] [12,15,26] +Stage02 0x026EFC 26 30 ADN327 0x3D type2 [26,12,15] [12,15,26] +Stage02 0x026FD0 26 60 ADN328 0x42 type2 [26,12,15] [12,15,26] +Stage02 0x0270A4 26 80 ADN329 0x45 type2 [26,12,15] [12,15,12] +Stage02 0x02720C 26 80 ADN331 0x20 type2 [15,12,15] [12,15,26] +Stage02 0x0272E0 26 60 ADN332 0x26 type2 [26,12,15] [47,47,47] +Stage02 0x028B5C 29 100 TCN001 0x4B type2 [123,123,8] [35,103,30] +Stage02 0x028E14 29 0 TCN002 0x4E type2 [1,1,1] [11,26,26] +Stage02 0x028E64 26 0 ADN313 0x1E type2 [1,29,11] [26,11,57] +Stage02 0x028EA4 26 0 TCN334 0x6B type2 [29,11,26] [11,57,30] +Stage02 0x02907C 29 100 ADT301 0x31 type2 [30,15,19] [57,30,15] +Stage02 0x029244 29 100 ADT302 0x37 type2 [30,15,19] [48,47,47] +Stage02 0x029B84 29 100 ADT303 0x3C type2 [30,15,19] [1,64,70] +Stage02 0x029ED0 29 100 ADT304 0x41 type2 [30,15,19] [57,30,15] +Stage02 0x02A098 29 100 ADT305 0x44 type2 [30,15,19] [58,15,48] +Stage02 0x02AAE8 29 100 ADT306 0x47 type2 [30,15,19] [57,30,15] +Stage02 0x02ACB0 29 100 ADT307 0x48 type2 [30,15,19] [57,30,15] +Stage02 0x02AE78 29 100 ADT308 0x49 type2 [30,15,19] [58,15,48] +Stage02 0x02B530 101 - ? None typeNone [11,95,116] [100,124,93] +Stage02 0x02B9FC 101 - ? None typeNone [11,20,116] [100,124,93] +Stage02 0x02C000 101 - ? None typeNone [6,11,116] [100,124,93] +Stage02 0x02C524 101 - ? None typeNone [20,20,116] [100,124,93] +Stage02 0x02D018 101 - ? None typeNone [11,9,116] [100,124,93] +Stage02 0x02D2DC 28 150 TCN004 0x56 type2 [20,105,115] [11,26,64] +Stage02 0x02D350 26 0 ADT301 0x31 type2 [115,28,11] [64,90,11] +Stage02 0x02D4D4 26 0 ADT302 0x37 type2 [64,90,11] [64,90,11] +Stage02 0x02D658 26 0 ADT303 0x3C type2 [64,90,11] [64,90,11] +Stage02 0x02D7DC 26 0 ADT304 0x41 type2 [64,90,11] [64,90,11] +Stage02 0x02D960 26 0 ADT305 0x44 type2 [64,90,11] [64,90,11] +Stage02 0x02DAF0 26 0 ADT306 0x47 type2 [64,90,11] [64,90,11] +Stage02 0x02DC74 26 0 ADT307 0x48 type2 [64,90,11] [64,90,11] +Stage02 0x02DDF8 26 0 ADT308 0x49 type2 [64,90,11] [64,90,11] +Stage03 0x0009F0 29 0 TCN001 0x21 type2 [35,118,12] [12,15,12] +Stage03 0x002514 26 0 TCN132 0x30 type2 [14,77,11] [11,116,127] +Stage03 0x00260C 29 100 TCN001 0x21 type2 [127,123,8] [35,103,1] +Stage03 0x002810 29 0 TCN002 0x24 type2 [30,91,47] [11,58,19] +Stage03 0x0034E8 101 - ? None typeNone [11,95,116] [100,124,93] +Stage03 0x0039B4 101 - ? None typeNone [11,20,116] [100,124,93] +Stage03 0x00424C 101 - ? None typeNone [20,20,116] [100,124,93] +Stage03 0x004720 101 - ? None typeNone [11,9,116] [100,124,93] +Stage03 0x00ABB4 29 0 TCN001 0x21 type2 [35,118,12] [12,15,12] +Stage03 0x00B0CC 29 0 TCT207 0x42 type2 [15,19,30] [12,15,19] +Stage03 0x00C720 29 100 TCN001 0x21 type2 [116,123,8] [35,11,58] +Stage03 0x00DD7C 101 - ? None typeNone [11,95,116] [100,124,93] +Stage03 0x00E248 101 - ? None typeNone [11,20,116] [100,124,93] +Stage03 0x00E84C 101 - ? None typeNone [6,11,116] [100,124,93] +Stage03 0x00EFF8 101 - ? None typeNone [20,20,116] [100,124,93] +Stage03 0x00F844 29 0 TCT207 0x42 type2 [64,19,11] [5,11,20] +Stage03 0x00FA58 29 0 TCT208 0x44 type2 [19,19,11] [5,11,20] +Stage03 0x00FC6C 29 0 TCT209 0x46 type2 [19,19,11] [5,11,20] +Stage03 0x00FE34 29 100 TCT207 0x42 type2 [11,20,20] [11,20,20] +Stage03 0x00FF50 29 100 TCT207 0x42 type2 [11,20,20] [11,20,105] +Stage03 0x01584C 29 0 TCN001 0x21 type2 [35,118,12] [12,15,12] +Stage03 0x0164CC 28 500 ADN301 0x4 type2 [117,12,15] [48,48,48] +Stage03 0x016FF8 29 100 TCN001 0x21 type2 [116,123,8] [35,11,58] +Stage03 0x01713C 28 500 ADN304 0xB type2 [58,15,91] [58,15,30] +Stage03 0x01727C 28 1000 ADT302 0x19 type2 [58,15,30] [91,103,4] +Stage03 0x017C6C 28 500 ADN306 0x11 type2 [11,58,15] [91,69,47] +Stage03 0x0182F4 28 500 ADN308 0x18 type2 [11,58,15] [91,69,47] +Stage03 0x018A4C 28 2000 ADT303 0x1D type2 [15,30,91] [69,47,69] +Stage03 0x0191FC 101 - ? None typeNone [11,95,116] [100,124,93] +Stage03 0x0196C8 101 - ? None typeNone [11,20,116] [100,124,93] +Stage03 0x019CCC 101 - ? None typeNone [6,11,116] [100,124,93] +Stage03 0x019ED4 101 - ? None typeNone [6,11,116] [100,124,93] +Stage03 0x01A744 101 - ? None typeNone [11,9,116] [100,124,93] +Stage03 0x01BC10 28 2000 ADT303 0x1D type2 [15,30,91] [69,47,69] +Stage03 0x01C358 28 150 TCN309 0x41 type2 [9,115,69] [64,11,64] +Stage04 0x000A38 29 0 TCN001 0x15 type2 [35,118,12] [12,15,12] +Stage04 0x002228 29 100 TCN001 0x15 type2 [127,123,8] [35,11,69] +Stage04 0x0026D0 101 - ? None typeNone [11,95,116] [100,124,93] +Stage04 0x002BCC 101 - ? None typeNone [11,20,116] [100,124,93] +Stage04 0x003390 101 - ? None typeNone [20,20,116] [100,124,93] +Stage04 0x003834 101 - ? None typeNone [11,9,116] [100,124,93] +Stage04 0x005ED0 29 0 TCN001 0x15 type2 [35,118,12] [12,15,12] +Stage04 0x006260 28 500 ADN201 0x0 type2 [15,12,15] [12,30,15] +Stage04 0x0063A0 28 1000 ADT202 0x9 type2 [12,30,15] [12,15,12] +Stage04 0x0074CC 29 100 TCN001 0x15 type2 [127,8,123] [35,11,58] +Stage04 0x007674 28 500 ADN206 0x4 type2 [58,15,3] [92,91,64] +Stage04 0x007990 28 500 ADN207 0x6 type2 [58,3,15] [47,1,11] +Stage04 0x007B8C 28 500 ADN208 0x8 type2 [58,15,3] [92,91,64] +Stage04 0x007FAC 28 2000 ADT203 0xD type2 [30,47,30] [64,64,8] +Stage04 0x008324 28 500 ADN209 0xC type2 [58,15,3] [92,91,1] +Stage04 0x0084AC 101 - ? None typeNone [11,95,116] [100,124,93] +Stage04 0x0089A8 101 - ? None typeNone [11,20,116] [100,124,93] +Stage04 0x009030 101 - ? None typeNone [11,20,116] [100,124,93] +Stage04 0x0099DC 101 - ? None typeNone [11,9,116] [100,124,93] +Stage04 0x009D40 28 150 TCN205 0x25 type2 [9,115,69] [64,11,20] +Stage04 0x00A004 28 2000 ADT203 0xD type2 [15,30,47] [64,64,64] +Stage05 0x000898 29 0 TCN001 0x13 type2 [35,118,12] [15,12,15] +Stage05 0x00181C 29 100 TCN001 0x13 type2 [8,127,123] [35,119,11] +Stage05 0x002E6C 101 - ? None typeNone [20,9,116] [100,93,124] +Stage05 0x003BAC 101 - ? None typeNone [20,20,116] [100,93,124] +Stage05 0x003F28 28 150 TCN003 0x19 type2 [9,115,70] [70,48,11] +Stage05 0x007F00 29 0 TCN001 0x13 type2 [35,118,12] [15,12,15] +Stage05 0x0081C0 26 80 TCN004 0x1E type2 [12,15,30] [12,15,30] +Stage05 0x008300 28 150 ADT201 0x4 type2 [12,15,30] [12,19,15] +Stage05 0x0084C8 28 150 ADT202 0x6 type2 [19,15,30] [12,3,15] +Stage05 0x008FF8 29 100 TCN001 0x13 type2 [8,127,123] [35,119,11] +Stage05 0x009734 101 - ? None typeNone [20,9,116] [100,93,124] +Stage05 0x00A228 101 - ? None typeNone [20,20,116] [100,93,124] +Stage05 0x00B1A0 28 150 TCN001 0x13 type2 [64,9,115] [28,28,64] +Stage05 0x00B1E0 28 150 TCN002 0x16 type2 [9,115,28] [28,64,64] +Stage05 0x00B220 28 150 TCN003 0x19 type2 [115,28,28] [64,64,11] +Stage06 0x000924 29 0 TCN001 0x26 type2 [118,12,15] [12,15,12] +Stage06 0x001460 29 100 TCN001 0x26 type2 [8,127,123] [35,119,11] +Stage06 0x00330C 101 - ? None typeNone [11,95,116] [100,93,124] +Stage06 0x003810 101 - ? None typeNone [11,20,116] [100,93,124] +Stage06 0x003E94 101 - ? None typeNone [11,9,116] [100,93,124] +Stage06 0x0040D4 101 - ? None typeNone [6,11,116] [100,93,124] +Stage06 0x009B50 29 0 TCN001 0x26 type2 [118,12,15] [12,15,12] +Stage06 0x00BEC4 29 100 TCN001 0x26 type2 [8,127,123] [35,119,11] +Stage06 0x00C168 101 - ? None typeNone [11,95,116] [100,93,124] +Stage06 0x00C66C 101 - ? None typeNone [11,20,116] [100,93,124] +Stage06 0x00CCF0 101 - ? None typeNone [11,9,116] [100,93,124] +Stage06 0x00D274 101 - ? None typeNone [20,20,116] [100,93,124] +Stage06 0x0119AC 29 0 TCN001 0x26 type2 [118,12,15] [12,15,29] +Stage06 0x011A80 29 0 TCN002 0x29 type2 [29,12,15] [28,12,15] +Stage06 0x011AC0 28 50 TCN002 0x29 type2 [12,15,29] [12,15,12] +Stage06 0x011EFC 26 50 TCN306 0x3D type2 [12,15,3] [12,15,3] +Stage06 0x013A7C 29 100 TCN001 0x26 type2 [8,127,123] [35,119,11] +Stage06 0x013B60 101 - ? None typeNone [11,95,116] [100,93,124] +Stage06 0x01405C 101 - ? None typeNone [11,20,116] [100,93,124] +Stage06 0x014724 101 - ? None typeNone [20,20,116] [100,93,124] +Stage06 0x014F64 101 - ? None typeNone [11,9,116] [100,93,124] +Stage06 0x01845C 26 0 TCN350 0x3A type2 [64,11,64] [1,1,1] +Stage06 0x01A7B0 26 80 TCN002 0x29 type2 [69,11,9] [64,64,1] +Stage06 0x01AAA0 26 50 TCN002 0x29 type2 [69,11,9] [11,64,1] +Stage06 0x01ACEC 26 30 TCN002 0x29 type2 [69,11,9] [11,64,11] +Stage07 0x000D3C 29 0 TCN001 0x1C type2 [12,12,12] [15,15,15] +Stage07 0x0026A4 29 100 TCN001 0x1C type2 [8,127,123] [35,119,11] +Stage07 0x002788 101 - ? None typeNone [11,95,116] [100,93,124] +Stage07 0x002BD0 101 - ? None typeNone [11,20,116] [100,93,124] +Stage07 0x00324C 101 - ? None typeNone [11,20,116] [100,93,124] +Stage07 0x0034D4 101 - ? None typeNone [11,9,116] [100,93,124] +Stage07 0x003714 101 - ? None typeNone [6,11,116] [100,93,124] +Stage07 0x00AB0C 29 0 TCN001 0x1C type2 [12,12,12] [15,15,15] +Stage07 0x00CCD4 29 100 TCN001 0x1C type2 [116,8,123] [35,119,11] +Stage07 0x00CDB8 101 - ? None typeNone [11,95,116] [100,93,124] +Stage07 0x00D200 101 - ? None typeNone [11,20,116] [100,93,124] +Stage07 0x00D87C 101 - ? None typeNone [11,20,116] [100,93,124] +Stage07 0x00E4A8 101 - ? None typeNone [20,69,116] [100,93,124] +Stage07 0x00ED78 101 - ? None typeNone [11,9,116] [100,93,124] +Stage08 0x001F44 29 0 TCN001 0x1E type2 [15,12,15] [15,15,15] +Stage08 0x0021C4 28 0.1 TCN104 0x30 type2 [92,15,30] [15,28,15] +Stage08 0x00225C 28 0.1 TCN105 0x35 type2 [30,28,15] [15,28,15] +Stage08 0x0022F4 28 0.1 TCN106 0x36 type2 [15,28,15] [15,30,28] +Stage08 0x0023F8 28 0.1 TCN012 0x29 type2 [28,15,30] [15,28,15] +Stage08 0x002490 28 0.1 TCN113 0x31 type2 [30,28,15] [15,92,30] +Stage08 0x003350 26 0 ADN126 0xF type2 [4,14,77] [11,26,11] +Stage08 0x0033A0 26 0 ADN126b 0x3D type2 [77,26,11] [11,26,11] +Stage08 0x0033F0 26 0 ADN126c 0x3F type2 [11,26,11] [11,116,8] +Stage08 0x0034E8 29 100 TCN001 0x1E type2 [8,127,123] [35,119,11] +Stage08 0x0036D0 101 - ? None typeNone [20,9,116] [100,93,124] +Stage08 0x004294 101 - ? None typeNone [6,11,116] [100,93,124] +Stage08 0x006C54 28 1000 ADS151a 0x45 type2 [15,47,30] [29,58,15] +Stage08 0x006C94 29 40 ADS151a 0x45 type2 [47,30,28] [58,15,47] +Stage08 0x006E28 28 1000 ADS151b 0x4B type2 [15,47,30] [29,64,8] +Stage08 0x006E68 29 40 ADS151b 0x4B type2 [47,30,28] [64,8,1] +Stage08 0x00BD3C 28 150 TCN001 0x1E type2 [105,9,115] [28,28,64] +Stage08 0x00BD7C 28 150 TCN002 0x21 type2 [9,115,28] [28,64,11] +Stage08 0x00BDBC 28 150 TCN003 0x24 type2 [115,28,28] [64,11,20] +Stage08 0x00D918 29 0 TCN001 0x1E type2 [12,12,12] [15,15,15] +Stage08 0x00E190 29 0 ADT201 0x11 type2 [15,92,15] [117,15,92] +Stage08 0x00EE0C 29 100 TCN001 0x1E type2 [8,127,123] [35,119,11] +Stage08 0x00EFF4 101 - ? None typeNone [20,9,116] [100,93,124] +Stage08 0x00FD4C 101 - ? None typeNone [20,20,116] [100,93,124] +Stage09 0x000974 29 0 TCN001 0x28 type2 [35,118,12] [12,15,12] +Stage09 0x002958 29 100 TCN001 0x28 type2 [127,123,8] [35,11,58] +Stage09 0x003610 101 - ? None typeNone [11,95,116] [100,124,93] +Stage09 0x003A20 101 - ? None typeNone [11,20,116] [100,124,93] +Stage09 0x003C68 101 - ? None typeNone [11,20,116] [100,124,93] +Stage09 0x00426C 101 - ? None typeNone [6,11,116] [100,124,93] +Stage09 0x004A44 101 - ? None typeNone [11,9,116] [100,124,93] +Stage09 0x00851C 29 0 TCN001 0x28 type2 [35,118,12] [12,15,12] +Stage09 0x009E64 29 100 TCN001 0x28 type2 [116,123,8] [35,11,58] +Stage09 0x00A1C0 28 1000 ADS251a 0x44 type2 [12,15,30] [29,12,15] +Stage09 0x00A200 29 40 ADS251a 0x44 type2 [15,30,28] [12,15,30] +Stage09 0x00A340 28 1000 ADS251b 0x46 type2 [12,15,30] [29,47,47] +Stage09 0x00A380 29 40 ADS251b 0x46 type2 [15,30,28] [47,47,1] +Stage09 0x00A6D0 101 - ? None typeNone [11,95,116] [100,124,93] +Stage09 0x00AAE0 101 - ? None typeNone [11,20,116] [100,124,93] +Stage09 0x00ACE8 101 - ? None typeNone [6,11,116] [100,124,93] +Stage09 0x00B2D0 101 - ? None typeNone [7,9,116] [100,124,93] +Stage09 0x00C38C 28 150 TCN001 0x28 type2 [115,9,115] [28,11,64] +Stage09 0x00C3CC 28 150 TCN002 0x2B type2 [9,115,28] [11,64,64] +Stage09 0x00FDC4 29 0 TCN001 0x28 type2 [114,114,12] [12,15,12] +Stage09 0x010684 28 500 ADT301 0x14 type2 [15,12,15] [12,15,12] +Stage09 0x011790 29 100 TCN001 0x28 type2 [116,123,8] [35,11,58] +Stage09 0x011E84 101 - ? None typeNone [11,95,116] [100,124,93] +Stage09 0x012294 101 - ? None typeNone [11,20,116] [100,124,93] +Stage09 0x012B60 101 - ? None typeNone [69,69,116] [100,124,93] +Stage09 0x0131AC 101 - ? None typeNone [11,9,116] [100,124,93] +Stage09 0x017BE4 28 500 ADT302 0x18 type2 [3,15,47] [64,1,1] +Stage10 0x0006DC 29 0 TCN001 0xE type2 [118,75,12] [12,3,15] +Stage10 0x000910 28 2000 ADT001 0x2 type2 [15,30,47] [12,15,47] +Stage10 0x000A38 28 500 ADS002 0x1 type2 [12,15,47] [12,15,47] +Stage10 0x000B60 28 500 ADS003 0x5 type2 [12,15,47] [1,1,1] +Stage10 0x000F38 29 100 TCN001 0xE type2 [8,127,123] [35,119,11] +Stage10 0x00101C 101 - ? None typeNone [11,95,116] [100,93,124] +Stage10 0x0013A8 101 - ? None typeNone [11,9,116] [100,93,124] +Stage10 0x001620 101 - ? None typeNone [11,20,116] [100,93,124] +Stage10 0x002394 28 500 ADS004 0x7 type2 [64,128,47] [1,11,20] +Stage10 0x002BA0 28 500 ADS005 0x9 type2 [64,128,47] [1,11,20] +Stage10 0x0033AC 28 500 ADS006 0xA type2 [64,128,47] [1,11,20] +Stage10 0x003BB8 28 500 ADS007 0xB type2 [64,128,47] [1,11,20] +Stage10 0x0043C4 28 500 ADS008 0xC type2 [64,128,47] [1,11,20] +Stage10 0x004BD0 28 500 ADS009 0xD type2 [64,128,47] [1,11,20] +Stage10 0x0053DC 28 500 ADS010 0x0 type2 [64,128,47] [1,11,20] +Stage10 0x005BE8 28 500 ADS011 0x4 type2 [64,128,47] [1,11,20] +Stage10 0x006554 28 500 ADS013 0x8 type2 [64,128,47] [1,11,20] +Stage11 0x000744 29 0 TCN001 0x18 type2 [35,118,12] [12,15,12] +Stage11 0x001610 29 100 TCN001 0x18 type2 [8,127,123] [35,11,58] +Stage11 0x0017D8 28 1000 ADS151a 0x27 type2 [15,47,30] [29,58,15] +Stage11 0x001818 29 40 ADS151a 0x27 type2 [47,30,28] [58,15,47] +Stage11 0x0019AC 28 1000 ADS151b 0x29 type2 [15,47,30] [29,1,1] +Stage11 0x0019EC 29 40 ADS151b 0x29 type2 [47,30,28] [1,1,1] +Stage11 0x001B0C 101 - ? None typeNone [11,95,116] [100,124,93] +Stage11 0x001F54 101 - ? None typeNone [11,20,116] [100,124,93] +Stage11 0x0025D8 101 - ? None typeNone [11,9,116] [100,124,93] +Stage11 0x002818 101 - ? None typeNone [6,11,116] [100,124,93] +Stage11 0x00B070 29 0 TCN001 0x18 type2 [35,118,12] [12,15,12] +Stage11 0x00BFB8 29 100 TCN001 0x18 type2 [8,127,123] [35,1,1] +Stage11 0x00C0D8 101 - ? None typeNone [11,95,116] [100,124,93] +Stage11 0x00C520 101 - ? None typeNone [11,20,116] [100,124,93] +Stage11 0x00CBA4 101 - ? None typeNone [11,9,116] [100,124,93] +Stage11 0x00CDE4 101 - ? None typeNone [6,11,116] [100,124,93] +Stage12 0x0012D0 29 0 TCN001 0x20 type2 [12,12,12] [75,8,11] +Stage12 0x001564 29 100 TCN001 0x20 type2 [8,127,123] [35,119,1] +Stage12 0x0033CC 101 - ? None typeNone [20,9,116] [100,93,124] +Stage12 0x00403C 101 - ? None typeNone [6,11,116] [100,93,124] +Stage13 0x0012C4 29 0 TCN001 0x16 type2 [12,12,12] [15,15,15] +Stage13 0x001D74 26 50 TCN013 0x25 type2 [3,15,1] [3,15,1] +Stage13 0x0027DC 28 150 ADN004 0x8 type2 [47,92,3] [15,3,28] +Stage13 0x002914 28 150 ADN005 0xB type2 [28,15,3] [15,47,28] +Stage13 0x002A00 28 150 ADN012 0x6 type2 [28,15,47] [15,47,47] +Stage13 0x0031BC 29 100 TCN001 0x16 type2 [116,8,123] [35,119,11] +Stage13 0x003348 101 - ? None typeNone [20,20,116] [100,93,124] +Stage13 0x004EC4 101 - ? None typeNone [20,69,116] [100,93,124] +Stage13 0x0098A0 28 150 ADN002 0x3 type2 [20,9,57] [15,47,47] +Stage13 0x00A68C 28 500 ADS051a 0x34 type2 [64,11,58] [15,47,92] +Stage13 0x00A894 28 500 ADS051b 0x36 type2 [92,30,58] [15,47,92] +Stage13 0x00AA9C 28 500 ADS051c 0x37 type2 [92,30,58] [15,47,92] +Stage13 0x00BA00 28 150 ADN015 0xE type2 [64,11,57] [15,92,64] +Stage13 0x00BE08 28 150 ADN017 0x12 type2 [64,11,57] [15,47,92] +Stage14 0x001230 29 0 TCN001 0x18 type2 [12,12,12] [15,15,92] +Stage14 0x001394 26 80 TCN003 0x24 type2 [15,15,92] [25,15,30] +Stage14 0x001548 28 500 ADT102 0x3 type2 [15,30,15] [30,47,92] +Stage14 0x001714 28 500 ADT103 0x6 type2 [47,92,15] [30,47,92] +Stage14 0x0018E0 28 500 ADT104 0x8 type2 [47,92,15] [30,47,92] +Stage14 0x00242C 29 100 TCN001 0x18 type2 [8,127,123] [35,119,11] +Stage14 0x002510 101 - ? None typeNone [11,95,116] [100,93,124] +Stage14 0x002960 101 - ? None typeNone [11,9,116] [100,93,124] +Stage14 0x002D84 101 - ? None typeNone [20,20,116] [100,93,124] +Stage14 0x003784 28 500 ADT105 0xA type2 [64,58,15] [30,47,47] +Stage14 0x003E90 28 500 ADT108 0x10 type2 [64,58,15] [30,47,1] +Stage14 0x004548 28 500 ADT114 0xB type2 [64,58,15] [30,47,47] +Stage14 0x007334 29 0 TCN201 0x29 type2 [12,12,12] [15,30,47] +Stage14 0x00748C 28 500 ADT201 0x5 type2 [15,30,47] [15,15,15] +Stage14 0x007F18 29 100 TCN201 0x29 type2 [8,127,123] [35,119,11] +Stage14 0x007FFC 101 - ? None typeNone [11,95,116] [100,93,124] +Stage14 0x0083C4 101 - ? None typeNone [11,9,116] [100,93,124] +Stage14 0x008644 101 - ? None typeNone [11,20,116] [100,93,124] +Stage15 0x0014F8 29 0 TCN001 0x3A type2 [12,12,12] [15,15,15] +Stage15 0x002390 29 0 TCN008 0x59 type2 [15,47,30] [1,15,48] +Stage15 0x002C68 28 150 ADN101 0x1 type2 [15,48,92] [15,28,15] +Stage15 0x002D00 28 150 ADN102 0x2 type2 [92,28,15] [15,3,1] +Stage15 0x002FC8 28 150 ADN103 0x5 type2 [15,48,92] [15,3,15] +Stage15 0x0032C0 28 150 ADN104 0xB type2 [48,47,92] [15,3,15] +Stage15 0x003564 28 150 ADN106 0x18 type2 [15,48,92] [15,28,15] +Stage15 0x0035FC 28 150 ADN109 0x2C type2 [92,28,15] [15,15,47] +Stage15 0x003F50 29 100 TCN001 0x3A type2 [116,8,123] [35,119,11] +Stage15 0x0040DC 101 - ? None typeNone [20,20,116] [100,93,124] +Stage15 0x00563C 101 - ? None typeNone [20,69,116] [100,93,124] +Stage15 0x00DE90 29 0 TCN001 0x3A type2 [12,12,12] [15,15,15] +Stage15 0x00E970 29 0 TCN008 0x59 type2 [47,92,30] [15,48,92] +Stage15 0x00F198 28 150 ADT201 0x28 type2 [47,92,30] [15,1,30] +Stage15 0x00F2C0 28 150 ADT202 0x30 type2 [15,1,30] [15,1,28] +Stage15 0x00F37C 28 150 ADN203 0xF type2 [28,15,1] [15,28,15] +Stage15 0x00F414 28 150 ADN204 0x15 type2 [1,28,15] [15,28,15] +Stage15 0x00F4AC 28 150 ADN205 0x1C type2 [15,28,15] [15,28,15] +Stage15 0x00F544 28 150 ADN206 0x21 type2 [15,28,15] [15,28,15] +Stage15 0x00F5DC 28 150 ADN207 0x27 type2 [15,28,15] [15,28,15] +Stage15 0x00F674 28 150 ADN208 0x2F type2 [15,28,15] [15,28,15] +Stage15 0x00F70C 28 150 ADN209 0x36 type2 [15,28,15] [15,15,28] +Stage15 0x00F7FC 28 500 ADN210 0x4 type2 [28,15,15] [47,92,1] +Stage15 0x00F980 28 500 ADN211 0x9 type2 [92,1,15] [47,92,1] +Stage15 0x00FB04 28 500 ADN212 0x10 type2 [92,1,15] [47,47,92] +Stage15 0x00FCDC 28 500 ADN213 0x16 type2 [92,1,15] [47,47,92] +Stage15 0x00FEB4 28 500 ADN214 0x1D type2 [92,1,15] [47,47,92] +Stage15 0x0102DC 29 100 TCN001 0x3A type2 [8,127,123] [35,119,11] +Stage15 0x0104C4 101 - ? None typeNone [20,9,116] [100,93,124] +Stage15 0x0110CC 101 - ? None typeNone [20,20,116] [100,93,124] +Stage15 0x013368 28 500 ADN215 0x22 type2 [20,58,15] [47,92,1] +Stage15 0x01358C 28 500 ADN216 0x2A type2 [20,58,15] [47,92,11] +Stage15 0x01378C 28 500 ADN217 0x32 type2 [20,58,15] [47,47,92] +Stage15 0x0139E0 28 500 ADN218 0x37 type2 [20,58,15] [47,47,92] +Stage15 0x013C34 28 500 ADN219 0x39 type2 [20,58,15] [47,47,92] +Stage15 0x013E88 28 500 ADN220 0xA type2 [20,58,15] [47,92,11] +Stage15 0x014088 28 500 ADN221 0x11 type2 [20,58,15] [47,92,11] +Stage15 0x014924 28 150 ADN222 0x17 type2 [64,11,57] [15,64,64] +Stage15 0x014D28 28 500 ADN223 0x1E type2 [11,58,15] [47,47,92] +Stage15 0x015170 28 150 ADN224 0x23 type2 [64,11,57] [15,64,64] +Stage15 0x01553C 28 500 ADN225 0x2B type2 [11,58,15] [47,92,64] +Stage15 0x0158E8 28 500 ADN226 0x33 type2 [11,58,15] [47,92,58] +Stage15 0x015A84 28 500 ADN227 0x38 type2 [92,58,15] [47,92,64] +Stage16 0x0004F4 29 100 TCN001 0x1 type2 [8,127,123] [35,119,11] +Stage16 0x0005D8 101 - ? None typeNone [11,95,116] [100,93,124] +Stage16 0x000A28 101 - ? None typeNone [11,9,116] [100,93,124] +Stage16 0x000E4C 101 - ? None typeNone [140,140,116] [100,93,124] +Stage18 0x000488 28 0 TCN001 0xB type2 [35,8,12] [52,1,11] +Stage18 0x0009D4 26 0 ADT101 0x0 type2 [1,11,18] [13,0,97] +Stage18 0x000D2C 26 0 ADT102 0x2 type2 [1,11,18] [13,0,11] +Stage18 0x000E30 26 0 ADT103 0x4 type2 [0,11,18] [13,0,11] +Stage18 0x000F34 26 0 ADT104 0x5 type2 [0,11,18] [13,0,11] +Stage18 0x0013E4 26 0 ADT105 0x6 type2 [1,11,18] [13,0,11] +Stage18 0x0014E8 26 0 ADT106 0x7 type2 [0,11,18] [13,0,11] +Stage18 0x0015EC 26 0 ADT107 0x8 type2 [0,11,18] [13,0,11] +Stage18 0x001AB0 26 0 ADT108 0x9 type2 [1,11,18] [13,0,97] +Stage18 0x001E2C 28 100 TCN001 0xB type2 [4,1,11] [12,3,15] +Stage18 0x0029FC 26 100 TCN001 0xB type2 [6,11,20] [] +Stage19 0x0003D4 28 0 TCN001 0x7 type2 [35,8,12] [52,1,11] +Stage19 0x000CD4 28 100 TCN001 0x7 type2 [11,104,4] [1,11,69] +Stage19 0x000F0C 26 0 ADS101 0x0 type2 [16,0,12] [26,84,4] +Stage19 0x000F4C 26 0 ADS102 0x1 type2 [0,12,26] [84,4,97] +Stage19 0x001010 28 0 TCN001 0x7 type2 [4,97,4] [12,3,15] +Stage19 0x0012F8 26 0 ADS104 0x2 type2 [4,16,0] [84,4,97] +Stage19 0x001394 28 100 TCN001 0x7 type2 [84,4,97] [12,3,15] +Stage19 0x0019F4 26 100 TCN001 0x7 type2 [6,11,20] [] +Stage20 0x0026C0 26 100 TCN001 0xB type2 [6,11,20] [] +Stage21 0x0002A8 28 0 TCN001 0x2 type2 [35,8,12] [26,52,1] +Stage21 0x0002E8 26 40 TCN001 0x2 type2 [8,12,28] [52,1,12] +Stage21 0x000B58 28 100 TCN001 0x2 type2 [0,84,4] [97,4,12] +Stage21 0x0012F4 26 100 TCN001 0x2 type2 [6,11,20] [] +Stage22 0x00098C 26 0 ADT101 0x0 type2 [1,11,18] [0,11,69] +Stage22 0x000AD0 26 0 ADT102 0x2 type2 [69,11,18] [0,11,69] +Stage22 0x001384 26 0 ADS103 0x1 type2 [11,69,0] [97,1,11] +Stage22 0x001470 26 0 ADT104 0x3 type2 [1,11,18] [0,11,69] +Stage22 0x001868 26 0 ADT106 0x5 type2 [1,11,18] [0,11,69] +Stage22 0x001F1C 26 0 ADT107 0x6 type2 [1,11,18] [0,11,69] +Stage22 0x002130 26 100 TCN001 0x7 type2 [6,11,20] [] +Stage23 0x0002A8 28 0 TCN001 0x3 type2 [35,8,12] [52,1,11] +Stage23 0x000898 26 0 ADS105 0x2 type2 [4,16,0] [84,4,97] +Stage23 0x000B98 28 100 TCN001 0x3 type2 [11,104,4] [1,11,69] +Stage23 0x0012AC 26 100 TCN001 0x3 type2 [6,11,20] [] +Stage24 0x001274 29 0 ADT108 0x1E type2 [12,30,117] [12,12,12] +Stage24 0x001EE8 29 100 TCN001 0x2C type2 [127,123,8] [35,119,1] +Stage24 0x0029B0 29 100 ADT108 0x1E type2 [15,47,64] [20,64,11] +Stage24 0x0045F8 29 100 ADT109 0x22 type2 [15,48,47] [64,1,7] +Stage24 0x004A44 29 0 ADT109 0x22 type2 [58,30,117] [64,7,58] +Stage24 0x0051B8 29 100 ADT103 0x8 type2 [30,15,47] [64,64,1] +Stage24 0x0056B8 29 0 ADT103 0x8 type2 [58,30,117] [64,20,4] +Stage24 0x007094 101 - ? None typeNone [20,20,116] [100,124,93] +Stage24 0x007304 101 - ? None typeNone [11,95,116] [100,124,93] +Stage24 0x007710 101 - ? None typeNone [11,20,116] [100,124,93] +Stage24 0x007DBC 101 - ? None typeNone [11,9,116] [100,124,93] +Stage25 0x001790 28 100 ADN355 0x21 type2 [15,12,15] [12,15,28] +Stage25 0x001864 28 100 ADN350 0xF type2 [28,12,15] [12,15,28] +Stage25 0x001938 28 100 ADN351 0x13 type2 [28,12,15] [12,15,28] +Stage25 0x001A0C 28 100 ADN352 0x17 type2 [28,12,15] [12,15,28] +Stage25 0x001AE0 28 100 ADN353 0x1B type2 [28,12,15] [12,15,28] +Stage25 0x001BB4 28 100 ADN354 0x1E type2 [28,12,15] [12,15,28] +Stage25 0x001C88 28 200 ADN310 0x1 type2 [28,12,15] [12,15,117] +Stage25 0x004218 29 100 TCN001 0x27 type2 [127,123,8] [35,119,1] +Stage25 0x00440C 28 300 ADN312 0x5 type2 [11,57,16] [1,11,57] +Stage25 0x0044F8 28 300 ADN313 0x9 type2 [11,57,16] [1,11,58] +Stage25 0x004600 28 600 ADN314 0xD type2 [11,58,15] [47,47,1] +Stage25 0x004964 28 600 ADN315 0x11 type2 [11,58,15] [47,47,1] +Stage25 0x005348 28 100 ADN350 0xF type2 [143,57,15] [145,47,47] +Stage25 0x005814 28 200 ADN356 0x23 type2 [5,57,15] [145,47,47] +Stage25 0x005BAC 28 200 ADN356 0x23 type2 [143,57,15] [145,47,47] +Stage25 0x00709C 28 100 ADN351 0x13 type2 [143,57,15] [145,47,47] +Stage25 0x0074C8 28 200 ADN357 0x24 type2 [5,57,15] [145,47,47] +Stage25 0x007860 28 200 ADN357 0x24 type2 [143,57,15] [145,47,47] +Stage25 0x0088E8 28 100 ADN352 0x17 type2 [143,57,15] [145,47,47] +Stage25 0x008D14 28 200 ADN358 0x25 type2 [5,57,15] [145,47,47] +Stage25 0x0090AC 28 200 ADN358 0x25 type2 [143,57,15] [145,47,47] +Stage25 0x00A59C 28 100 ADN353 0x1B type2 [143,57,15] [145,47,47] +Stage25 0x00A9C8 28 200 ADN359 0x26 type2 [5,57,15] [145,47,47] +Stage25 0x00AD60 28 200 ADN359 0x26 type2 [143,57,15] [145,47,47] +Stage25 0x00BC70 28 100 ADN354 0x1E type2 [143,57,15] [145,47,47] +Stage25 0x00C09C 28 200 ADN360 0x14 type2 [5,57,15] [145,47,47] +Stage25 0x00C434 28 200 ADN360 0x14 type2 [143,57,15] [145,47,47] +Stage25 0x00D924 28 100 ADN355 0x21 type2 [143,57,15] [145,47,47] +Stage25 0x00DD50 28 200 ADN361 0x18 type2 [5,57,15] [145,47,47] +Stage25 0x00E0E8 28 200 ADN361 0x18 type2 [143,57,15] [145,47,47] +Stage25 0x00ECD4 28 200 ADN310 0x1 type2 [143,57,15] [19,64,20] +Stage25 0x00F390 28 300 ADN311 0x2 type2 [5,57,15] [19,1,64] +Stage25 0x00F704 28 300 ADN311 0x2 type2 [143,57,15] [19,64,8] +Stage25 0x010EFC 28 300 ADN312 0x5 type2 [9,143,57] [16,64,69] +Stage25 0x0111A8 26 0 ADN320 0x3 type2 [69,20,18] [69,8,69] +Stage25 0x011450 28 300 ADN320 0x3 type2 [9,128,15] [47,47,1] +Stage25 0x011C0C 28 300 ADN320 0x3 type2 [143,128,15] [47,47,1] +Stage25 0x011FFC 28 300 ADN320 0x3 type2 [143,128,15] [47,47,1] +Stage25 0x012240 26 0 ADN321 0x7 type2 [69,20,18] [69,8,69] +Stage25 0x0124E8 28 300 ADN321 0x7 type2 [9,128,15] [47,47,1] +Stage25 0x012CA4 28 300 ADN321 0x7 type2 [143,128,15] [47,47,1] +Stage25 0x013094 28 300 ADN321 0x7 type2 [143,128,15] [47,47,1] +Stage25 0x0134C0 28 300 ADN328 0x20 type2 [9,128,15] [47,1,69] +Stage25 0x013BE8 28 300 ADN328 0x20 type2 [143,128,15] [47,1,69] +Stage25 0x0142CC 28 300 ADN313 0x9 type2 [9,143,57] [16,64,69] +Stage25 0x0146F4 28 300 ADN325 0x16 type2 [9,128,15] [47,1,69] +Stage25 0x014E1C 28 300 ADN325 0x16 type2 [143,128,15] [47,1,18] +Stage25 0x0151F4 28 300 ADN329 0x22 type2 [9,128,15] [47,1,69] +Stage25 0x01591C 28 300 ADN329 0x22 type2 [143,128,15] [47,1,69] +Stage25 0x016058 28 600 ADN314 0xD type2 [143,57,15] [47,47,145] +Stage25 0x016B84 28 600 ADN315 0x11 type2 [143,57,15] [47,47,145] +Stage25 0x017094 101 - ? None typeNone [64,95,116] [100,124,93] +Stage25 0x01748C 101 - ? None typeNone [11,20,116] [100,124,93] +Stage25 0x017AE8 101 - ? None typeNone [11,9,116] [100,124,93] +Stage26 0x000EF0 29 0 TCN001 0x16 type2 [118,146,12] [15,12,15] +Stage26 0x001614 29 50 TCT012 0x28 type2 [15,3,30] [12,15,3] +Stage26 0x0017F4 29 50 TCT013 0x2A type2 [15,3,30] [12,15,3] +Stage26 0x0019D4 29 50 TCT014 0x2C type2 [15,3,30] [12,15,3] +Stage26 0x001BB4 29 50 TCT015 0x2E type2 [15,3,30] [12,15,3] +Stage26 0x001D94 29 50 TCT016 0x30 type2 [15,3,30] [12,15,3] +Stage26 0x001F74 29 50 TCT017 0x32 type2 [15,3,30] [12,15,3] +Stage26 0x002154 29 50 TCT018 0x34 type2 [15,3,30] [12,15,3] +Stage26 0x002334 29 50 TCT019 0x36 type2 [15,3,30] [12,15,3] +Stage26 0x003928 29 100 TCN001 0x16 type2 [127,123,8] [35,11,95] +Stage26 0x003A00 101 - ? None typeNone [11,95,116] [100,124,93] +Stage26 0x003E10 101 - ? None typeNone [11,20,116] [100,124,93] +Stage26 0x004414 101 - ? None typeNone [6,11,116] [100,124,93] +Stage26 0x004664 101 - ? None typeNone [11,9,116] [100,124,93] +Stage26 0x008DD0 29 20 ADN128 0x14 type2 [47,11,57] [15,3,46] +Stage26 0x00AD0C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00AD4C 26 0 TCT012 0x28 type2 [5,5,26] [4,64,11] +Stage26 0x00AF4C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00AF8C 26 0 TCT013 0x2A type2 [5,5,26] [4,64,11] +Stage26 0x00B18C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00B1CC 26 0 TCT014 0x2C type2 [5,5,26] [4,64,11] +Stage26 0x00B3CC 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00B40C 26 0 TCT015 0x2E type2 [5,5,26] [4,64,11] +Stage26 0x00B60C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00B64C 26 0 TCT016 0x30 type2 [5,5,26] [4,64,11] +Stage26 0x00B84C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00B88C 26 0 TCT017 0x32 type2 [5,5,26] [4,64,11] +Stage26 0x00BA8C 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00BACC 26 0 TCT018 0x34 type2 [5,5,26] [4,64,11] +Stage26 0x00BCCC 26 0 ADN128 0x14 type2 [18,5,5] [26,4,64] +Stage26 0x00BD0C 26 0 TCT019 0x36 type2 [5,5,26] [4,64,11] +Stage27 0x000AAC 29 0 TCN001 0x12 type2 [118,146,12] [15,12,15] +Stage27 0x002088 29 100 TCN001 0x12 type2 [127,123,8] [35,11,95] +Stage27 0x002160 101 - ? None typeNone [11,95,116] [100,124,93] +Stage27 0x002570 101 - ? None typeNone [11,20,116] [100,124,93] +Stage27 0x002BBC 101 - ? None typeNone [11,9,116] [100,124,93] +Stage27 0x00339C 101 - ? None typeNone [20,20,116] [100,124,93] +Stage28 0x00101C 29 0 TCN001 0x13 type2 [118,146,12] [15,12,30] +Stage28 0x0020EC 29 100 TCN001 0x13 type2 [127,123,8] [35,11,95] +Stage28 0x0021C4 101 - ? None typeNone [11,95,116] [100,124,93] +Stage28 0x00256C 101 - ? None typeNone [20,20,116] [100,124,93] +Stage28 0x002958 101 - ? None typeNone [11,9,116] [100,124,93] +Stage28 0x002E4C 29 0 ADT102 0x2 type2 [12,12,12] [29,29,136] +Stage28 0x002E8C 29 0 ADT103 0x4 type2 [12,12,29] [29,136,13] +Stage28 0x002ECC 29 0 ADT104 0x6 type2 [12,29,29] [136,13,1] +Stage28 0x003BE8 29 0 ADT107 0xB type2 [12,12,12] [29,29,136] +Stage28 0x003C28 29 0 ADT108 0xC type2 [12,12,29] [29,136,13] +Stage28 0x003C68 29 0 ADT109 0xD type2 [12,29,29] [136,13,64] +Stage28 0x004848 29 0 ADT113 0x7 type2 [12,12,12] [29,29,136] +Stage28 0x004888 29 0 ADT114 0x8 type2 [12,12,29] [29,136,13] +Stage28 0x0048C8 29 0 ADT115 0xA type2 [12,29,29] [136,13,1] +Stage28 0x0050F8 26 0 ADT102 0x2 type2 [11,70,18] [13,70,136] +Stage28 0x005330 26 0 ADT103 0x4 type2 [11,70,18] [13,70,11] +Stage28 0x005520 26 0 ADT104 0x6 type2 [11,70,18] [13,11,70] +Stage28 0x005638 26 0 ADT107 0xB type2 [11,70,18] [13,70,136] +Stage28 0x005870 26 0 ADT108 0xC type2 [11,70,18] [13,70,11] +Stage28 0x005A60 26 0 ADT109 0xD type2 [11,70,18] [13,11,70] +Stage28 0x005B78 26 0 ADT113 0x7 type2 [11,70,18] [13,70,136] +Stage28 0x005DB0 26 0 ADT114 0x8 type2 [11,70,18] [13,70,11] +Stage28 0x005FA0 26 0 ADT115 0xA type2 [11,70,18] [13,11,64] +Stage29 0x0083A0 29 100 TCN001 0x11 type2 [12,12,12] [15,29,15] +Stage29 0x008438 29 100 TCN002 0x14 type2 [12,29,15] [15,29,15] +Stage29 0x0084D0 29 50 TCN003 0x18 type2 [15,29,15] [15,92,15] +Stage29 0x008740 29 75 TCN004 0x1F type2 [15,30,3] [15,3,29] +Stage29 0x008878 29 50 TCN005 0x21 type2 [29,15,3] [15,30,19] +Stage29 0x008AA4 29 75 TCT006 0x2C type2 [30,19,3] [15,3,3] +Stage29 0x008C7C 29 50 TCN007 0x25 type2 [15,3,3] [15,3,3] +Stage29 0x008E54 29 50 TCN110 0x17 type2 [15,3,3] [15,3,3] +Stage29 0x00902C 29 50 TCN111 0x1D type2 [15,3,3] [15,3,3] +Stage29 0x009204 29 50 TCN113 0x22 type2 [15,3,3] [15,30,29] +Stage29 0x009308 29 0 TCN008 0x26 type2 [29,15,30] [92,15,48] +Stage29 0x0094B4 29 50 TCN009 0x29 type2 [92,15,48] [15,92,29] +Stage29 0x0095C0 29 50 TCN114 0x24 type2 [29,15,92] [1,15,92] +Stage29 0x0096F0 29 50 TCN116 0x28 type2 [1,15,92] [1,15,48] +Stage29 0x00984C 29 50 TCN119 0x2B type2 [1,15,48] [1,1,75] +Stage29 0x00CCF0 29 100 TCN001 0x11 type2 [127,123,8] [35,119,11] +Stage29 0x010580 101 - ? None typeNone [69,95,116] [100,93,124] +Stage29 0x0109A8 101 - ? None typeNone [11,20,116] [100,124,93] +Stage29 0x011004 101 - ? None typeNone [11,20,116] [100,124,93] +Stage29 0x01128C 101 - ? None typeNone [11,9,116] [100,93,124] +Stage29 0x01158C 101 - ? None typeNone [6,11,116] [100,93,124] +Stage29 0x011D74 29 50 TCN120 0x1E type2 [128,15,92] [11,20,11] +Stage29 0x011FD0 29 50 TCN121 0x20 type2 [128,15,92] [11,69,57] +Stage29 0x012D0C 28 200 ADN101ea1 0x0 type2 [145,128,15] [145,47,47] +Stage29 0x013294 28 200 ADN101ea2 0x1 type2 [1,128,15] [29,145,47] +Stage29 0x0132D4 29 50 ADN101ea2 0x1 type2 [128,15,28] [145,47,47] +Stage29 0x01381C 28 200 ADN102ea1 0x2 type2 [145,128,15] [145,47,47] +Stage29 0x013DA4 28 200 ADN102ea2 0x3 type2 [1,128,15] [29,145,47] +Stage29 0x013DE4 29 50 ADN102ea2 0x3 type2 [128,15,28] [145,47,47] +Stage29 0x01432C 28 200 ADN103ea1 0x4 type2 [145,128,15] [145,47,47] +Stage29 0x0148B4 28 200 ADN103ea2 0x6 type2 [1,128,15] [29,145,47] +Stage29 0x0148F4 29 50 ADN103ea2 0x6 type2 [128,15,28] [145,47,47] +Stage29 0x014E3C 28 200 ADN104ea1 0x7 type2 [145,128,15] [145,47,47] +Stage29 0x0153C4 28 200 ADN104ea2 0xA type2 [1,128,15] [29,145,47] +Stage29 0x015404 29 50 ADN104ea2 0xA type2 [128,15,28] [145,47,47] +Stage29 0x01594C 28 200 ADN121ea1 0x5 type2 [145,128,15] [145,47,47] +Stage29 0x015EB0 28 200 ADN121ea2 0x8 type2 [92,128,15] [29,145,47] +Stage29 0x015EF0 29 50 ADN121ea2 0x8 type2 [128,15,28] [145,47,47] +Stage29 0x016338 28 200 ADN122ea1 0x9 type2 [145,128,15] [145,47,47] +Stage29 0x01689C 28 200 ADN122ea2 0xB type2 [92,128,15] [29,145,47] +Stage29 0x0168DC 29 50 ADN122ea2 0xB type2 [128,15,28] [145,47,47] +Stage29 0x016D24 28 200 ADN123ea1 0xC type2 [145,128,15] [145,47,47] +Stage29 0x017288 28 200 ADN123ea2 0xD type2 [92,128,15] [29,145,47] +Stage29 0x0172C8 29 50 ADN123ea2 0xD type2 [128,15,28] [145,47,47] +Stage29 0x017710 28 200 ADN124ea1 0xE type2 [145,128,15] [145,47,47] +Stage29 0x017C74 28 200 ADN124ea2 0xF type2 [92,128,15] [29,145,47] +Stage29 0x017CB4 29 50 ADN124ea2 0xF type2 [128,15,28] [145,47,47] +Stage29 0x01C5FC 28 200 ADN101b 0x2F type2 [64,57,15] [1,4,57] +Stage29 0x01C71C 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x01C83C 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x01C95C 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x01CA7C 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x01CB9C 28 200 ADN103b 0x39 type2 [4,57,15] [1,4,57] +Stage29 0x01CCBC 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x01CDDC 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x01CEFC 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x01D01C 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x01D13C 28 300 ADN104e 0x5C type2 [4,57,15] [1,4,57] +Stage29 0x01D25C 28 120 ADN105a 0x43 type2 [4,57,15] [1,4,57] +Stage29 0x01D37C 28 120 ADN106a 0x4D type2 [4,57,15] [1,4,57] +Stage29 0x01D49C 28 120 ADN107a 0x56 type2 [4,57,15] [1,4,57] +Stage29 0x01D5C4 28 200 ADN101c 0x32 type2 [4,57,15] [1,4,57] +Stage29 0x01D6E4 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x01D804 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x01D924 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x01DA44 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x01DB64 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x01DC84 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x01DDA4 28 200 ADN103b 0x39 type2 [4,57,15] [1,4,57] +Stage29 0x01DEC4 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x01DFE4 28 120 ADN105a 0x43 type2 [4,57,15] [1,4,57] +Stage29 0x01E104 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x01E224 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x01E344 28 120 ADN106a 0x4D type2 [4,57,15] [1,4,57] +Stage29 0x01E464 28 200 ADN104b 0x42 type2 [4,57,15] [1,4,57] +Stage29 0x01E58C 28 200 ADN101c 0x32 type2 [4,57,15] [1,4,57] +Stage29 0x01E6AC 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x01E7CC 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x01E8EC 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x01EA0C 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x01EB2C 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x01EC4C 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x01ED6C 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x01EE8C 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x01EFAC 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x01F0CC 28 120 ADN105a 0x43 type2 [4,57,15] [1,4,57] +Stage29 0x01F1EC 28 200 ADN103b 0x39 type2 [4,57,15] [1,4,57] +Stage29 0x01F30C 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x01F42C 28 300 ADN104e 0x5C type2 [4,57,15] [1,57,15] +Stage29 0x01F52C 28 200 ADN101c 0x32 type2 [1,57,15] [1,4,57] +Stage29 0x01F64C 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x01F76C 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x01F88C 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x01F9AC 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x01FACC 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x01FBEC 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x01FD0C 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x01FE2C 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x01FF4C 28 200 ADN103b 0x39 type2 [4,57,15] [1,4,57] +Stage29 0x02006C 28 300 ADN101d 0x37 type2 [4,57,15] [1,4,57] +Stage29 0x02018C 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x0202AC 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x0203CC 28 300 ADN104e 0x5C type2 [4,57,15] [1,4,57] +Stage29 0x0204F4 28 300 ADN101d 0x37 type2 [4,57,15] [1,4,57] +Stage29 0x020614 28 200 ADN101c 0x32 type2 [4,57,15] [1,4,57] +Stage29 0x020734 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x020854 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x020974 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x020A94 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x020BB4 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x020CD4 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x020DF4 28 200 ADN103b 0x39 type2 [4,57,15] [1,4,57] +Stage29 0x020F14 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x021034 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x021154 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x021274 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x021394 28 300 ADN104e 0x5C type2 [4,57,15] [1,4,57] +Stage29 0x0214BC 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x0215DC 28 300 ADN101e 0x40 type2 [4,57,15] [1,4,57] +Stage29 0x0216FC 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x02181C 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x02193C 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x021A5C 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x021B7C 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x021C9C 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x021DBC 28 120 ADN105a 0x43 type2 [4,57,15] [1,4,57] +Stage29 0x021EDC 28 120 ADN106a 0x4D type2 [4,57,15] [1,4,57] +Stage29 0x021FFC 28 200 ADN101c 0x32 type2 [4,57,15] [1,57,15] +Stage29 0x0220F4 28 200 ADN102b 0x33 type2 [1,57,15] [1,4,57] +Stage29 0x022214 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x022334 28 300 ADN104e 0x5C type2 [4,57,15] [1,57,15] +Stage29 0x022434 28 300 ADN101e 0x40 type2 [1,57,15] [1,4,57] +Stage29 0x022554 28 200 ADN101b 0x2F type2 [4,57,15] [1,4,57] +Stage29 0x022674 28 300 ADN102e 0x4B type2 [4,57,15] [1,4,57] +Stage29 0x022794 28 120 ADN101a 0x2E type2 [4,57,15] [1,4,57] +Stage29 0x0228B4 28 200 ADN101c 0x32 type2 [4,57,15] [1,4,57] +Stage29 0x0229D4 28 300 ADN101d 0x37 type2 [4,57,15] [1,4,57] +Stage29 0x022AF4 28 120 ADN102a 0x30 type2 [4,57,15] [1,4,57] +Stage29 0x022C14 28 120 ADN103a 0x34 type2 [4,57,15] [1,4,57] +Stage29 0x022D34 28 120 ADN104a 0x3A type2 [4,57,15] [1,4,57] +Stage29 0x022E54 28 200 ADN102b 0x33 type2 [4,57,15] [1,4,57] +Stage29 0x022F74 28 300 ADN103e 0x54 type2 [4,57,15] [1,4,57] +Stage29 0x023094 28 120 ADN105a 0x43 type2 [4,57,15] [1,4,57] +Stage29 0x0231B4 28 200 ADN102c 0x38 type2 [4,57,15] [1,4,57] +Stage29 0x0232D4 28 120 ADN106a 0x4D type2 [4,57,15] [1,4,11] +Stage29 0x023764 28 200 ADN141a 0x3E type2 [16,16,16] [145,47,47] +Stage29 0x023EFC 28 200 ADN141b 0x48 type2 [16,16,16] [29,145,47] +Stage29 0x023F3C 29 50 ADN141b 0x48 type2 [16,16,28] [145,47,47] +Stage29 0x024420 28 200 ADN142a 0x49 type2 [16,16,16] [145,47,47] +Stage29 0x024BB8 28 200 ADN142b 0x52 type2 [16,16,16] [29,145,47] +Stage29 0x024BF8 29 50 ADN142b 0x52 type2 [16,16,28] [145,47,47] +Stage29 0x02517C 28 200 ADN143a 0x53 type2 [16,16,16] [145,47,47] +Stage29 0x025914 28 200 ADN143b 0x5A type2 [16,16,16] [29,145,47] +Stage29 0x025954 29 50 ADN143b 0x5A type2 [16,16,28] [145,47,47] +Stage29 0x025F78 28 200 ADN144a 0x5B type2 [16,16,16] [145,47,47] +Stage29 0x026710 28 200 ADN144b 0x61 type2 [16,16,16] [29,145,47] +Stage29 0x026750 29 50 ADN144b 0x61 type2 [16,16,28] [145,47,47] +Stage29 0x026CD4 28 200 ADN145a 0x62 type2 [16,16,16] [145,47,47] +Stage29 0x02746C 28 200 ADN145b 0x65 type2 [16,16,16] [29,145,47] +Stage29 0x0274AC 29 50 ADN145b 0x65 type2 [16,16,28] [145,47,47] +Stage29 0x02783C 28 200 ADN121b 0x35 type2 [64,57,15] [1,4,57] +Stage29 0x02795C 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x027A7C 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x027B9C 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x027CBC 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x027DDC 28 200 ADN123b 0x46 type2 [4,57,15] [1,4,57] +Stage29 0x027EFC 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02801C 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x02813C 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02825C 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02837C 28 300 ADN124e 0x63 type2 [4,57,15] [1,4,57] +Stage29 0x02849C 28 120 ADN125a 0x51 type2 [4,57,15] [1,4,57] +Stage29 0x0285BC 28 120 ADN126a 0x59 type2 [4,57,15] [1,4,57] +Stage29 0x0286DC 28 120 ADN127a 0x60 type2 [4,57,15] [1,4,64] +Stage29 0x0288A4 28 200 ADN121c 0x3B type2 [64,57,15] [1,4,57] +Stage29 0x0289C4 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x028AE4 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x028C04 28 200 ADN121b 0x35 type2 [4,57,15] [1,4,57] +Stage29 0x028D24 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x028E44 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x028F64 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x029084 28 200 ADN123b 0x46 type2 [4,57,15] [1,4,57] +Stage29 0x0291A4 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x0292C4 28 120 ADN125a 0x51 type2 [4,57,15] [1,4,57] +Stage29 0x0293E4 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x029504 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x029624 28 120 ADN126a 0x59 type2 [4,57,15] [1,4,57] +Stage29 0x029744 28 200 ADN124b 0x50 type2 [4,57,15] [1,4,64] +Stage29 0x0299AC 28 200 ADN121c 0x3B type2 [64,57,15] [1,4,57] +Stage29 0x029ACC 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x029BEC 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x029D0C 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x029E2C 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x029F4C 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x02A06C 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02A18C 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02A2AC 28 200 ADN121b 0x35 type2 [4,57,15] [1,4,57] +Stage29 0x02A3CC 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x02A4EC 28 120 ADN125a 0x51 type2 [4,57,15] [1,4,57] +Stage29 0x02A60C 28 200 ADN123b 0x46 type2 [4,57,15] [1,4,57] +Stage29 0x02A72C 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02A84C 28 300 ADN124e 0x63 type2 [4,57,15] [1,64,64] +Stage29 0x02AA8C 28 200 ADN121c 0x3B type2 [64,57,15] [1,4,57] +Stage29 0x02ABAC 28 200 ADN121b 0x35 type2 [4,57,15] [1,4,57] +Stage29 0x02ACCC 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x02ADEC 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x02AF0C 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x02B02C 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x02B14C 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x02B26C 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02B38C 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02B4AC 28 200 ADN123b 0x46 type2 [4,57,15] [1,4,57] +Stage29 0x02B5CC 28 300 ADN121d 0x44 type2 [4,57,15] [1,4,57] +Stage29 0x02B6EC 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x02B80C 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02B92C 28 300 ADN124e 0x63 type2 [4,57,15] [1,4,64] +Stage29 0x02BB94 28 300 ADN121d 0x44 type2 [64,57,15] [1,4,57] +Stage29 0x02BCB4 28 200 ADN121c 0x3B type2 [4,57,15] [1,4,57] +Stage29 0x02BDD4 28 200 ADN121b 0x35 type2 [4,57,15] [1,4,57] +Stage29 0x02BEF4 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x02C014 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x02C134 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x02C254 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x02C374 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02C494 28 200 ADN123b 0x46 type2 [4,57,15] [1,4,57] +Stage29 0x02C5B4 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x02C6D4 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x02C7F4 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02C914 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02CA34 28 300 ADN124e 0x63 type2 [4,57,15] [1,4,64] +Stage29 0x02CC9C 28 200 ADN121b 0x35 type2 [64,57,15] [1,4,57] +Stage29 0x02CDBC 28 300 ADN121e 0x4E type2 [4,57,15] [1,4,57] +Stage29 0x02CEDC 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x02CFFC 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02D11C 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x02D23C 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02D35C 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x02D47C 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02D59C 28 120 ADN125a 0x51 type2 [4,57,15] [1,4,57] +Stage29 0x02D6BC 28 120 ADN126a 0x59 type2 [4,57,15] [1,4,57] +Stage29 0x02D7DC 28 200 ADN121c 0x3B type2 [4,57,15] [1,4,57] +Stage29 0x02D8FC 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x02DA1C 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x02DB3C 28 300 ADN124e 0x63 type2 [4,57,15] [1,64,64] +Stage29 0x02DD7C 28 300 ADN121e 0x4E type2 [64,57,15] [1,4,57] +Stage29 0x02DE9C 28 200 ADN121b 0x35 type2 [4,57,15] [1,4,57] +Stage29 0x02DFBC 28 300 ADN122e 0x57 type2 [4,57,15] [1,4,57] +Stage29 0x02E0DC 28 120 ADN121a 0x31 type2 [4,57,15] [1,4,57] +Stage29 0x02E1FC 28 200 ADN121c 0x3B type2 [4,57,15] [1,4,57] +Stage29 0x02E31C 28 300 ADN121d 0x44 type2 [4,57,15] [1,4,57] +Stage29 0x02E43C 28 120 ADN122a 0x36 type2 [4,57,15] [1,4,57] +Stage29 0x02E55C 28 120 ADN123a 0x3D type2 [4,57,15] [1,4,57] +Stage29 0x02E67C 28 120 ADN124a 0x47 type2 [4,57,15] [1,4,57] +Stage29 0x02E79C 28 200 ADN122b 0x3C type2 [4,57,15] [1,4,57] +Stage29 0x02E8BC 28 300 ADN123e 0x5E type2 [4,57,15] [1,4,57] +Stage29 0x02E9DC 28 120 ADN125a 0x51 type2 [4,57,15] [1,4,57] +Stage29 0x02EAFC 28 200 ADN122c 0x45 type2 [4,57,15] [1,4,57] +Stage29 0x02EC1C 28 120 ADN126a 0x59 type2 [4,57,15] [1,4,64] +Stage29 0x02F1EC 28 200 ADN146a 0x66 type2 [16,16,16] [145,47,47] +Stage29 0x02F960 28 200 ADN146b 0x67 type2 [16,16,16] [29,145,47] +Stage29 0x02F9A0 29 50 ADN146b 0x67 type2 [16,16,28] [145,47,47] +Stage29 0x02FF24 28 200 ADN147a 0x68 type2 [16,16,16] [145,47,47] +Stage29 0x030698 28 200 ADN147b 0x69 type2 [16,16,16] [29,145,47] +Stage29 0x0306D8 29 50 ADN147b 0x69 type2 [16,16,28] [145,47,47] +Stage29 0x030C5C 28 200 ADN148a 0x6A type2 [16,16,16] [145,47,47] +Stage29 0x0313D0 28 200 ADN148b 0x6B type2 [16,16,16] [29,145,47] +Stage29 0x031410 29 50 ADN148b 0x6B type2 [16,16,28] [145,47,47] +Stage29 0x031994 28 200 ADN149a 0x6C type2 [16,16,16] [145,47,47] +Stage29 0x032108 28 200 ADN149b 0x6D type2 [16,16,16] [29,145,47] +Stage29 0x032148 29 50 ADN149b 0x6D type2 [16,16,28] [145,47,47] +Stage29 0x0326CC 28 200 ADN150a 0x3F type2 [16,16,16] [145,47,47] +Stage29 0x032E40 28 200 ADN150b 0x4A type2 [16,16,16] [29,145,47] +Stage29 0x032E80 29 50 ADN150b 0x4A type2 [16,16,28] [145,47,47] + +# builtin 26: 97 sites, 7 distinct values +# values: 0 x69, 80 x10, 100 x6, 60 x5, 30 x3, 50 x3, 40 x1 +# units: 66 distinct, top: ADN128 x8, TCN001 x7, ADN207 x4, TCN208 x4, TCN002 x3, ADT102 x3, ADT104 x3, ADT107 x3, ADT101 x2, ADT103 x2 +# craft cross-tab (0 unresolved): +# UN_e201_ADAN_ISCMissile 17 0x17 +# UN_n001_TTRL_Box 16 0x16 +# UN_f202_TCAF_Cargo 9 0x9 +# UN_e106_ADAN_Destroyer 8 0x4, 80x2, 30x1, 60x1 +# UN_f106_TCAF_Destroyer 8 0x4, 60x2, 80x1, 50x1 +# UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1 6 100x5, 40x1 +# UN_f105_TCAF_Cruiser 5 0x3, 80x1, 50x1 +# UN_e015_ADAN_Puppy_2 5 0x5 +# UN_e015_ADAN_Puppy 5 0x5 +# UN_e108_ADAN_ASFrigate 4 80x2, 60x1, 30x1 +# UN_f001_TCAF_DeltaSaber_T 3 80x1, 50x1, 30x1 +# UN_mn500_ADAN_FloatingMine 3 0x3 +# UN_e105_ADAN_Cruiser 2 80x1, 60x1 +# UN_e011_ADAN_Attacker_B 2 0x2 +# UN_f101_TCAF_Acropolis 1 80x1 +# UN_f002_TCAF_DeltaSaber_W 1 80x1 +# UN_n001_TTRL_Box_move 1 0x1 +# UN_f001_TCAF_DeltaSaber_T_Player_Ttrl2 1 100x1 +# UN_f001_TCAF_DeltaSaber_T_Ttrl 1 100x1 + +# builtin 28: 410 sites, 13 distinct values +# values: 200 x116, 120 x76, 300 x74, 500 x48, 150 x37, 100 x29, 1000 x8, 2000 x5, 0.1 x5, 0 x5, 600 x4, 10 x2, 50 x1 +# units: 190 distinct, top: TCN001 x13, ADN101b x7, ADN101a x7, ADN102a x7, ADN102b x7, ADN103a x7, ADN104a x7, ADN101e x7, ADN102e x7, ADN121b x7 +# craft cross-tab (0 unresolved): +# UN_e106_ADAN_Destroyer 105 120x76, 150x15, 100x12, 200x2 +# UN_e104_ADAN_Carrier 55 300x54, 150x1 +# UN_e105_ADAN_CruiserEX 52 200x52 +# UN_e102_ADAN_BattleshipEX 26 200x26 +# UN_e001_ADAN_Elan 24 200x18, 300x6 +# UN_e010_ADAN_Attacker_S 21 200x18, 100x3 +# UN_e004_ADAN_ElanPlus_N 19 500x19 +# UN_e009_ADAN_Phantom 16 500x16 +# UN_f001_TCAF_DeltaSaber_T_Player_Ttrl1 10 0x5, 100x5 +# UN_e007_ADAN_Turret 9 100x9 +# UN_e002_ADAN_Elan_N 9 500x9 +# UN_e105_ADAN_Cruiser 8 150x8 +# UN_e101_ADAN_SDBattleshipEX 8 300x8 +# UN_f001_TCAF_DeltaSaber_T 7 150x4, 10x2, 50x1 +# UN_e011_ADAN_Attacker_B 6 300x6 +# UN_f002_TCAF_DeltaSaber_W 5 150x5 +# UN_e003_ADAN_ElanPlus_Margras 4 2000x4 +# UN_e108_ADAN_ASFrigateEX 4 600x4 +# UN_f106_TCAF_Destroyer_Inv 3 0.1x2, 150x1 +# UN_e001_ADAN_Elan_GR_Violeta 3 1000x3 +# UN_e001_ADAN_Elan_GR 3 1000x3 +# UN_e101_ADAN_SDBattleship 3 150x3 +# UN_f101_TCAF_Acropolis 2 150x1, 0.1x1 +# UN_e013_ADAN_ElanPlus_Taskent 2 1000x2 +# UN_f002_TCAF_DeltaSaber_W_Player 2 150x2 +# UN_e011_ADAN_Attacker_B_HF 2 500x2 +# UN_e102_ADAN_Battleship 2 150x2 +# UN_f106_TCAF_Destroyer 1 150x1 +# UN_f001_TCAF_DeltaSaber_T_Player 1 150x1 +# UN_f105_TCAF_Cruiser 1 0.1x1 +# UN_f102_TCAF_LightCarrier_Inv 1 0.1x1 +# UN_e005_ADAN_ElanTypeQ_Margras 1 2000x1 +# UN_e108_ADAN_ASFrigate 1 150x1 +# UN_e011_ADAN_Attacker_B_HF_Wayne 1 500x1 +# UN_e006_ADAN_Vindicator_Margras 1 500x1 + +# builtin 29: 164 sites, 6 distinct values +# values: 0 x64, 100 x53, 50 x38, 40 x6, 75 x2, 20 x1 +# units: 70 distinct, top: TCN001 x71, TCN002 x10, TCT207 x4, TCN008 x3, ADT108 x3, ADT109 x3, ADT103 x3, TCN003 x2, ADS151a x2, ADS151b x2 +# craft cross-tab (0 unresolved): +# UN_f002_TCAF_DeltaSaber_W_Player 41 100x23, 0x18 +# UN_f001_TCAF_DeltaSaber_T 40 0x25, 100x15 +# UN_f002_TCAF_DeltaSaber_W 38 100x21, 0x16, 50x1 +# UN_f001_TCAF_DeltaSaber_T_Player 30 0x15, 100x15 +# UN_e010_ADAN_Attacker_S 18 50x18 +# UN_f202_TCAF_Cargo 14 50x8, 0x4, 100x2 +# UN_e201_ADAN_ISCMissile 9 100x8, 20x1 +# UN_n001_TTRL_Box 9 0x9 +# UN_e104_ADAN_Carrier 6 0x3, 100x3 +# UN_f003_TCAF_ArrowHead 5 50x5 +# UN_e001_ADAN_Elan_GR_Violeta 3 40x3 +# UN_e001_ADAN_Elan_GR 3 40x3 +# UN_e006_ADAN_Vindicator_MargrasF 3 0x3 +# UN_f004_TCAF_DeltaSaber_A_Player 2 0x1, 100x1 +# UN_f001_TCAF_DeltaSaber_T_EX5_el 2 0x1, 100x1 +# UN_f106_TCAF_Destroyer 2 50x2 +# UN_f105_TCAF_Cruiser 2 50x2 +# UN_be005_ADAN_SpaceFortress 1 0x1 +# UN_f101_TCAF_Acropolis 1 75x1 +# UN_f104_TCAF_Battleship 1 75x1 +# UN_f102_TCAF_LightCarrier 1 50x1 +# UN_e004_ADAN_ElanPlus_NF 1 50x1 + +# builtin 101: 133 sites, 1 distinct values +# values: - x133 +# units: 1 distinct, top: ? x133 +# craft cross-tab (133 unresolved): diff --git a/docs/re/structures/isl-builtins.md b/docs/re/structures/isl-builtins.md index 26d39f5..cd6cdb4 100644 --- a/docs/re/structures/isl-builtins.md +++ b/docs/re/structures/isl-builtins.md @@ -3,6 +3,9 @@ Status: āœ… table encoding, calling convention and the `ScriptPhase` state layout; āœ… ~135 of 147 handlers characterised from the disassembly; 🟔 three resolved only partially; ā” the interpreter-command table is only partly recovered. +āœ… built-ins **26 / 29 / 101** are now named end to end (HP %, damage-taken %, +broadcast invulnerability); 🟔 **28** writes the matching damage-**dealt** field +but its one consumer is a single weapon path — see below. Companion to [isl-bytecode](isl-bytecode.md) (the instruction encoding) and [mission-phase-advance](../mission-phase-advance.md) (why phases hinge on these). @@ -168,56 +171,269 @@ words**: a descriptor offset and the message id. That fixes the id format as `0xED08 nn DE`, and the ids already known from other work fit it: opcode 514 → `00DE`, 803 → `07DE`, 999 → `0FDE`. -🟔 The pump's arm for `0xED0802DE` does **not** apply an effect — it walks the +āœ… **The pump's arm for `0xED0802DE` applies no effect itself** — it walks the unit's child list at `[unit+320]`/`[unit+324]` and **rebroadcasts** to each child -as `0xED0902DE`. So `0xED08…` is the to-unit family and `0xED09…` the to-child -one, and the terminal effect is one link further on. āŒ Not followed; 26/28/29 -remain unnamed. +as `0xED0902DE`. So `0xED08…` is the to-group family and `0xED09…` the +to-individual one. That link is now followed all the way to the effect — see +below. -### 🟔 Built-ins 26 / 28 / 29 are one family — and `damage_unit` looks mis-named +### āœ… Built-ins 26 / 28 / 29 RESOLVED — HP, damage dealt, damage taken -Method-diffing put the structure beyond doubt but did not reach the semantics. +The chain was followed end to end for all three, from the dispatch table to the +field write. Nothing here is inferred from shape; every hop was read. -| built-in | vtable slot | method | opcode | sites | -|---|---|---|---|---| -| 26 `damage_unit` | 76 | `sub_8226ACD0` (67) | **800** | 97 | -| **28** | 84 | `sub_82268F98` (69) | **801** | 410 | -| **29** | 88 | `sub_822690B0` (69) | **802** | 164 | -| 101 | 276 | `sub_822691C8` (78) | 802 (broadcast) | 133 | +| built-in | vtable slot | method | opcode | cmd word | interp thunk | opcode handler | to-group msg | to-child msg | arm | writes | +|---|---|---|---|---|---|---|---|---|---|---| +| **26** | 76 | `sub_8226ACD0` | 800 | `0xAB0320BA` | `0x822FF118` | `sub_823008C8` | `0xED0802DE` | `0xED0902DE` | `0x82398E8C` | `[unit+532]` = **HP** | +| **28** | 84 | `sub_82268F98` | 801 | `0xAB0321BA` | `0x822FF120` | `sub_823009B8` | `0xED0803DE` | `0xED0903DE` | `0x8239926C` | `[unit+672]` | +| **29** | 88 | `sub_822690B0` | 802 | `0xAB0322BA` | `0x822FF128` | `sub_82300AA8` | `0xED0804DE` | `0xED0904DE` | `0x823994C0` | `[unit+676]` | -**28 and 29 differ in two words only** — the opcode (`0x21BA` vs `0x22BA`) and a -descriptor pointer 8 bytes apart. Otherwise instruction-identical. All three take -`(unit, double)`. +The cmd word decodes as `0xAB` `opcode:16` `0xBA`, which is the same encoding +already recorded for 256 (`0xAB0100BA`), 513 (`0xAB0201BA`) and 996 +(`0xAB03E4BA`) — `0x320/0x321/0x322` = 800/801/802. -26 differs from both by one guard: it rejects only state 3, while **28 and 29 -reject states 1 and 3** (2 = active, 1/3/4 = gone/dead/invalid). +Two links that the previous attempt did not have: -#### The operand distributions separate them +* the **to-group pump is `sub_8232C4C0`** (vtable `0x820AF1FC` slot 6), whose + arms at `0x8232C824` / `0x8232CB48` / `0x8232CC40` each walk the child list and + re-post with the `0xED09…` id, copying the float from `[msg+36]` unchanged; +* the **to-individual handler is `sub_82398CC0`** (vtable `0x820B192C` slot 6), + the entity base class. Its `0xED0902DE` arm is reached by a `sub.`/`cmplwi 0x8200` + pair rather than a `lis`+`ori` compare, which is why a constant scan for + `0xED0902DE` finds only the *sender*. That is worth remembering: **a + subtract-based compare hides the constant from any scan that pairs + `lis` with `ori`.** -| built-in | n | distinct | range | most common | -|---|---|---|---|---| -| 26 | 97 | 7 | **[0, 100]** | **0 Ɨ69**, 80 Ɨ10, 100 Ɨ6 | -| 28 | 410 | 13 | **[0, 2000]** | 200 Ɨ116, 120 Ɨ76, 300 Ɨ74 | -| 29 | 164 | 6 | **[0, 100]** | **0 Ɨ64**, 100 Ɨ53, 50 Ɨ38 | +#### āœ… 26 is `set_unit_hp_pct` — NOT `damage_unit` -26 and 29 are percentage-shaped; 28 is an absolute quantity an order of magnitude -larger. +`sub_8226ACD0` multiplies the double operand by the constant at `0x820C5688`, +which is **0.01** — so the operand is a percentage and the message carries a +fraction. `0x82398E8C` then does, in its own terms: -#### 🟔 `damage_unit` (26) is doubtful +``` +new = min( max(def.HP * frac, 0.0), def.HP ) ; def = [unit+496] +[unit+532] = new +if new < FLT_EPSILON and old > 0: ; crossed to zero + [unit+688] = 0.0 ; [unit+1340] = 1 ; [unit+692] = def.Delay +``` -**69 of its 97 calls pass 0.** Dealing zero damage is a no-op, so 71 % of the -call sites would do nothing. *Setting* a percentage-valued property to 0 is a -perfectly natural thing to do 69 times, and 29 has the same shape (0 Ɨ64 of 164). -The existing name predates this session and is not withdrawn, but it should not -be relied on. +Three independent facts pin the field: -#### āŒ Where this stopped +* `[unit+496]` is the **unit definition** — the entity constructor + `sub_82393868` sets it from `sub_82348830` (the per-member definition + `std::map::find` already identified for built-in 15) at `0x82393BE4`; +* `[def+84]` is **`HP`** in + `crates/sylpheed-formats/data/unit_definition_layout.txt`, and the same + constructor immediately does `[unit+532] = [def+84]` at `0x82393BF0` — so + `+532` *is* current HP, seeded from the datasheet maximum; +* the crossing branch loads **`[def+584]` = `Delay`** into `[unit+692]` and sets + a flag — the destruction sequence. So a percentage of **0 destroys the unit**, + with the definition's own death delay. -The three commands' descriptors sit at `0x820A8D10` / `+8` / `+16`. Following -them lands on data pointing into `0x8210E5xx`, which is **below the disassembly -DB's range** (it starts at `0x82150000`) and contains no code — so that route -does not reach an execute method. Reaching opcodes 800–802's semantics needs the -interpreter's command table, not the command objects. +So the operand is *percent of maximum HP*, the write is absolute (a **set**, not +a subtract), and `damage_unit` is withdrawn: 100 heals to full, which no +"damage" primitive does. + +#### āœ… 29 is `set_unit_damage_taken_pct` — `[unit+676]` scales incoming damage + +`[unit+672]` and `[unit+676]` are **both initialised to 1.0** by the entity +constructor (`0x8239395C`/`0x82393964`, from the float at `0x8208583C`), so both +are multipliers whose neutral value is 1.0 and which built-ins 28/29 set to +`operand/100`. + +`[unit+676]` has **three independent readers**, and every one of them multiplies +a damage amount immediately before it is subtracted from `[unit+532]`: + +| reader | what it computes | +|---|---| +| `0x8237B20C` in `sub_8237B020` (craft subclass `0x820B0A3C` slot 6, the `0xED0200DE` damage arm) | `dmg = [msg+36] Ɨ def.ResistanceToPlayer Ɨ [unit+676]` | +| `0x823803A4` in `sub_823800A8` (another subclass's damage arm) | the same product | +| `0x82399FFC` in `sub_82398CC0` (the base class's continuous-damage arm) | `dmg = def.HP Ɨ globalRate Ɨ t Ɨ [unit+676]`, then `[unit+532] -= dmg` | + +`def+128` is `ResistanceToPlayer` in the layout file, which is the second +corroboration that the object is the entity and the quantity is damage. + +#### 🟔 28 sets `[unit+672]`, and its one consumer scales damage DEALT + +The write is certain and the field's default (1.0) is certain. The **label** is +one link weaker than 29's, and this is the honest state: + +`[unit+672]` is read in **exactly one place** in the image — +`0x8237A44C`, inside `sub_823785A0`, which is vtable `0x820B0A3C` **slot 1**, +i.e. the craft subclass's per-frame update. There it is copied into a 240-byte +projectile spawn record at `+100`; `sub_8238F4D0` turns that record into a +projectile with `[proj+300] = [rec+100]`; and `sub_8238FE10` builds the +`0xED0200DE` damage message with **`[msg+36] = [proj+300] Ɨ charge Ɨ globalScale`** +— the same `[msg+36]` that the readers above multiply by the *target's* `+676`. + +So the two fields are the two ends of one damage product: **`+672` on the +shooter, `+676` on the target.** That is a tidy story and it is exactly the +shape that has produced wrong names in this file before, so it is 🟔 and not āœ…. + +ā” **What is not established**: that `+672` reaches *every* weapon. The one read +site is on a charged-shot path (`[unit+2244]` is a charge accumulator compared +against thresholds, `[unit+2268]` the resulting power), and the other damage +sender in the same family, `sub_82388FF8`, computes +`dmg = ammo.base Ɨ [proj+268] Ɨ k` with **no `+672` term at all**. Either the +craft update funnels all firing through this one spawn, or `+672` scales only +some weapons. Not settled. + +#### āœ… The operand-range test discriminates the three + +All three built-ins have the identical signature `(unit, double)` and the +identical `Ɨ 0.01` conversion, so an operand ceiling is a real measurement rather +than a coincidence: + +| built-in | n | distinct | min | max | inside [0, 100] | +|---|---|---|---|---|---| +| 26 | 97 | 7 | 0 | **100** | **97 / 97** | +| 29 | 164 | 6 | 0 | **100** | **164 / 164** | +| 28 | 410 | 13 | 0.1 | **2000** | 42 / 410 | + +26 and 29 respect a hard 100 ceiling — they are percentages of something with a +natural maximum (HP; and "no more damage than normal"). 28 does not: it is a +free multiplier that reaches 20Ɨ. 🟔 Note that 29 therefore **only ever makes a +unit tougher**, never more fragile. + +#### āœ… The craft cross-tab — the same test that settled built-in 15 + +Joining every call site to its squadron's craft through `UnitGroup_S.tbl` +resolves **671 of 671** sites (26 + 28 + 29), none unknown. Full dump in +[`data/isl-builtins-26-28-29-sites.txt`](../data/isl-builtins-26-28-29-sites.txt). + +**26** splits into three groups with nothing in between: + +| group | craft (sites) | values | +|---|---|---| +| disposable objects | `e201_ISCMissile` 17, `n001_TTRL_Box` 16, `f202_Cargo` 9, `e015_Puppy(_2)` 10, `mn500_FloatingMine` 3, `e011_Attacker_B` 2 | **0, and only 0** | +| warships | `e106_Destroyer` 8, `f106_Destroyer` 8, `f105_Cruiser` 5, `e108_ASFrigate` 4, `e105_Cruiser` 2, `f101_Acropolis` 1 | 30 / 50 / 60 / 80 | +| the player's craft in a tutorial | `..._Player_Ttrl1/2`, `..._T_Ttrl` (8) | **100** Ɨ7, 40 Ɨ1 | + +Scripted removal of props, pre-damaged capital-ship spawns, and healing the +player to full at the start of a tutorial section — one field, three uses, and +no other reading covers all three. + +**29** is dominated by the ships the mission must protect: + +| craft (sites) | values | +|---|---| +| player + wingman `DeltaSaber` variants (`_T`, `_W`, `_A`, `_Player`) 113 | **0** and **100**, alternating | +| `n001_TTRL_Box` 9 | **0** only | +| escorted TCAF hulls — `f202_Cargo` 14, `f106_Destroyer` 2, `f105_Cruiser` 2, `f104_Battleship` 1, `f102_LightCarrier` 1, `f101_Acropolis` 1 | 50 / 75 | +| named ADAN aces — `e001_Elan_GR`, `_GR_Violeta` 6; `e010_Attacker_S` 18 | 40 / 50 | + +**28** stratifies by combat class and is applied almost only to ADAN craft: + +| class | craft (sites) | value | +|---|---|---| +| named bosses | `e003_ElanPlus_Margras` 4, `e005_ElanTypeQ_Margras` 1 | **2000** | +| named aces | `e001_Elan_GR(_Violeta)` 6, `e013_ElanPlus_Taskent` 2 | **1000** | +| elite fighters | `e004_ElanPlus_N` 19, `e009_Phantom` 16, `e002_Elan_N` 9, `e011_Attacker_B_HF` 3 | **500–600** | +| line fighters | `e001_Elan` 24, `e010_Attacker_S` 21, `e011_Attacker_B` 6 | 200–300 | +| capital hulls | `e106_Destroyer` 105, `e104_Carrier` 55, `e105_CruiserEX` 52, `e102_BattleshipEX` 26 | 100–300 | +| background props | `f106_Destroyer_Inv`, `f102_LightCarrier_Inv`, `f101_Acropolis`, `f105_Cruiser` (5) | **0.1** | + +A monotone boss > ace > elite > line > prop ordering is what a firepower knob +looks like. 🟔 It is also what several other knobs would look like, which is why +the name stays PROBABLE and rests on the disassembly link above rather than on +this table. + +#### āœ… The idiom that ties all three together + +The per-unit setup block that follows every deployment reads, e.g. Stage 06 +phase 3 at `0x0119AC` (from +[`data/isl-builtins-26-28-29-sites.txt`](../data/isl-builtins-26-28-29-sites.txt)): + +``` +activate_unit(TCN001) set_group_speed(TCN001, 400) 29(TCN001, 0) +activate_unit(TCN002) set_group_speed(TCN002, 400) 29(TCN002, 0) 28(TCN002, 50) +activate_unit(TCN003) set_group_speed(TCN003, 400) +... 26(TCN306, 50) +``` + +`15 / 29 / 28` is a **speed / toughness / firepower trio**, each a percentage +override of the craft's datasheet, applied immediately after `activate_unit`; +`26` joins it wherever a unit should arrive pre-damaged. + +And the scripted-drama use is unambiguous. Stage 06 makes the wingman flight +TCN002 invulnerable at phase start (`29(TCN002, 0)`), then walks its HP down as +the voice lines fire: + +``` +0x01A7B0 26(TCN002, 80) -> request_script_message(MSG_VOICE_D_065) +0x01AAA0 26(TCN002, 50) -> request_script_message(MSG_VOICE_D_069) +0x01ACEC 26(TCN002, 30) +``` + +You would only combine those two built-ins that way if they meant exactly "this +unit cannot be hurt by combat" and "set this unit's HP to N %". + +#### āœ… Refutation attempts, and what they found + +Recorded because two of them turned into confirmations. + +* **"26 kills a unit the mission still needs."** Over all 28 stages there are + 200 (stage, unit) pairs where a predicate on `u` follows a `26(u, 0)` in file + order. Every one inspected is a `unit_alive` / `unit_state` / `hp_pct_test` + **poll waiting for that death** — which is what a scripted kill implies, not a + contradiction. Not a counterexample, but the count is recorded rather than + hidden. +* **"29 makes a unit invulnerable that the player is required to destroy."** + The nine `n001_TTRL_Box` targets in Stage 28 do get `29(box, 0)`. They are + then destroyed by **`26(box, 0)`** later in the same file — nine boxes, nine + pairs, invulnerability first (offsets 0x2E4C–0x48C8) and the scripted removal + second (0x50F8–0x5FA0). The tutorial target cannot be shot down; the script + removes it when the lesson ends. The counterexample became a confirmation. +* **"28 is applied to something with no weapons."** Of the 35 craft classes it + touches, none is an unarmed prop — no asteroid, box, cargo or mine ever + receives 28, while 26 and 29 both do. The only near-miss is the four + `…_Inv` / background hulls at 0.1, i.e. deliberately harmless. +* **"`+672`/`+676` have another consumer that contradicts damage."** Searched + every `lfs`/`stfs`/`addi`/`lfsx` reference to offsets 672 and 676 across the + whole `.text`, then filtered by base register. **No further entity-side reader + of either exists.** āš ļø The search also produced the trap this file keeps + warning about: `sub_8238E0F0` writes `676(r3)` and `sub_82389558` reads + `672(r31)`, but in both `r3`/`r31` is a **projectile**, which has its own + fields at those offsets. Three of the five "extra readers" the raw offset + search returned were that mistake. +* **What I could not refute and could not confirm**: that `+672` reaches every + weapon (see the ā” above). + +#### āœ… Bonus: built-in 101 is `all_units_invulnerable` + +`sub_822691C8` is 29's **broadcast** twin — same descriptor `0x820A8D20`, same +opcode 802 — but it takes **no operand**: the float it sends is the constant at +`0x8209FD28`, which is **0.0**, and it loops over the phase's whole unit array +posting `0xED0804DE` to each live entry. + +The usage confirms it. All **133** sites sit in one fixed phase-teardown idiom, +with no exceptions: + +``` +builtin116(0) -> builtin101 -> reset_phase_threads -> timer_stop -> clear_flag(-1) -> builtin118 +``` + +133/133 preceded by 116 and 133/133 followed by 100. Freezing all damage is +exactly the first step of tearing a phase down, and no other reading of "post +0.0 to every unit" fits a teardown. + +#### āŒ Two corrections to this file's earlier entries + +* **The state guards were mis-stated.** Read directly: **26 rejects states 3 and + 4**; **28 and 29 reject 1, 3 and 4**. This file said 26 rejects "only state 3" + and 28/29 "states 1 and 3". So 26 alone will still act on a state-1 unit. +* **"28 is an absolute quantity, 26 and 29 are percentage-shaped"** was half + right for the wrong reason. All three are percentages of *something*; only 26 + and 29 are percentages of a thing with a ceiling. + +#### šŸ—’ļø The route that failed, kept + +The three commands' descriptors at `0x820A8D10` / `+8` / `+16` are **vtables**, +not data: slot 0 of each is `0x82301C20` and slot 1 points into `0x8210E5xx`, +below the disassembly DB's range. Chasing them still leads nowhere. The route +that works is the one this file already recommended — the **interpreter command +table** → `0x822FF118/120/128` → the three opcode handlers — and from there the +**unit-message pump**, which is the part that was missing. ### āœ… Built-in 108 is `deploy_squadron_ex` — `deploy_squadron` plus a `1 << n` selector diff --git a/tools/re-capture/isl.py b/tools/re-capture/isl.py index 448ed94..b6cac11 100755 --- a/tools/re-capture/isl.py +++ b/tools/re-capture/isl.py @@ -92,7 +92,11 @@ BUILTIN = { 13: 'play_se', 14: 'play_bgm', 15: 'set_group_speed', 17: 'wait_frames', 18: 'dist_lt', 20: 'hp_pct_test', 24: 'squad_survival_pct', - 26: 'damage_unit', 30: 'objective_marker', 31: 'objective_marker_at_route', + 26: 'set_unit_hp_pct', + # 28's field and default (1.0) are certain; the LABEL rests on a single + # consumer, so it is PROBABLE, not confirmed. See isl-builtins.md. + 28: 'set_unit_damage_dealt_pct', 29: 'set_unit_damage_taken_pct', + 30: 'objective_marker', 31: 'objective_marker_at_route', 33: 'global_counter0', 34: 'global_counter1', 36: 'screen_fade', 39: 'MARK_LAST_PHASE', 40: 'mark_not_last', 43: 'play_voice', 45: 'play_voice_vol', 46: 'squadron_trace', 47: 'squadron_attack', @@ -109,8 +113,13 @@ BUILTIN = { 77: 'banner_mission_start', 78: 'banner_mission_complete', 81: 'banner_objective_update', 82: 'banner_mission_failed', 135: 'banner_mission_restart', + # 93 is `stopwatch_stop`, not the older `clear_flag`: 8/9/93 were renamed to + # stopwatch_start/_elapsed/_stop once the reading landed (isl-timers.md says + # of the old trio "the names predate the reading"). The branch that still + # called it `clear_flag` simply forked before that rename. 93: 'stopwatch_stop', 94: 'is_engaged', 95: 'unit_hp_pct', 100: 'reset_phase_threads', - 102: 'prompt_yes_no', 104: 'request_next', 108: 'deploy_squadron_ex', + 101: 'all_units_invulnerable', 102: 'prompt_yes_no', 104: 'request_next', + 108: 'deploy_squadron_ex', 109: 'set_unit_flags', 115: 'named_event', 120: 'wait_cmds_drained', 123: 'timer_resume', 124: 'timer_stop', 125: 'timer_reset', 126: 'timer_elapsed', 127: 'timer_set', diff --git a/tools/re-capture/isl_builtin_sites.py b/tools/re-capture/isl_builtin_sites.py new file mode 100644 index 0000000..f5e0002 --- /dev/null +++ b/tools/re-capture/isl_builtin_sites.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +"""Every call site of one or more ISL built-ins, across all `StageNN.ssb`. + +Pure static work — reads the extracted scripts, runs no emulator. + + python3 tools/re-capture/isl_builtin_sites.py 26,28,29 --ssb + python3 tools/re-capture/isl_builtin_sites.py 101 --ctx 3 --ssb + python3 tools/re-capture/isl_builtin_sites.py 28 --craft + +Why this exists rather than `isl.py --calls`: naming a built-in needs the +OPERANDS and the NEIGHBOURS, not just a histogram of ids. `isl.py --calls` +scans on the encoding and so cannot see the `local[]` staging that carries a +call's arguments, and `isl.py dis` has to be re-synchronised by hand for each +site. + +The walk here is a straight linear decode of the whole code region, from the +header's code offset (`+0x08`) to the symbol-table-1 offset (`+0x0C`, which is +where the code ends). That is safe: **measured on all 28 stages, the linear walk +lands on every call site the independent encoding scan finds** (Stage02: +2846/2846), so no call is skipped and no false instruction boundary is invented. + +Columns are tab-separated: + + stage offset builtin slot8 slot4-name slot4-raw symtype before after + +`slot4` is the unit operand (a symbol-table-2 index; see isl.py for why the unit +sits at slot 4 and slot 0 is a tag word) and `slot8` is the second operand, +which is a bare double for the built-ins this was written for. `before`/`after` +are the ids of the neighbouring calls, which is what makes a fixed idiom — +`116 -> 101 -> 100 -> 124 -> 93` — visible. + +With `--craft ` (the output of `unitgroup.py --all`) it also cross-tabs +value against the squadron's craft type, which is the test that separated +built-in 15's classes and separates these three. +""" +import argparse +import collections +import glob +import os +import re +import struct +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import isl # noqa: E402 + + +def walk(b): + """Yield `(offset, builtin_id, staged)` for every call in the code region. + + `staged` is the `local[]` slot -> value map as it stood when the call + executed, i.e. the call's arguments. Both staging forms matter: + `local[i] = special[0]` after an immediate, and the far commoner + `local[i] = immediate` written straight in. + """ + code_base = struct.unpack_from('>I', b, 0x08)[0] + code_end = struct.unpack_from('>I', b, 0x0C)[0] + off, staged, pending = code_base, {}, None + while off + 4 <= code_end: + w = struct.unpack_from('>I', b, off)[0] + op, ln = w & 0xFF, (w >> 8) & 0xFF + k1, k0 = (w >> 24) & 0xFF, (w >> 16) & 0xFF + if ln == 0 or ln % 4: + break + words = [struct.unpack_from('>I', b, off + i)[0] + for i in range(4, max(ln, 4), 4) if off + i + 4 <= len(b)] + if op in (0, 1) and len(words) >= 2: + if k0 == 2 and k1 == 1: + pending = _imm(op, words) + elif k0 == 3 and k1 == 2 and pending is not None: + staged[words[0]] = pending + elif k0 == 3 and k1 == 1: + staged[words[0]] = _imm(op, words) + if op == 19 and words: + yield off, words[0], dict(staged) + staged = {} + off += ln + + +def _imm(op, words): + """An `op 1` immediate is a DOUBLE carried as two words, not a float.""" + if op == 1: + lo = words[2] if len(words) > 2 else 0 + return struct.unpack('>d', struct.pack('>II', words[1], lo))[0] + return words[1] + + +def _fmt(v): + if v is None: + return '-' + return ('%g' % v) if isinstance(v, float) else '0x%X' % v + + +def load_craft(path): + """{stage: {squadron: [craft, ...]}} from `unitgroup.py --all` output.""" + out, stage, squad = collections.defaultdict(dict), None, None + for line in open(path): + m = re.match(r'^(S\d\d):', line) + if m: + stage = m.group(1) + continue + m = re.match(r'^ (\S+)\s+\S+\s+Count=', line) + if m: + squad = m.group(1) + out[stage][squad] = [] + continue + m = re.match(r'^ unit=(\S+)', line) + if m and squad: + out[stage][squad].append(m.group(1)) + return out + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument('ids', help='comma-separated built-in ids') + ap.add_argument('--ssb', default='.', help='directory holding StageNN.ssb') + ap.add_argument('--ctx', type=int, default=2, help='neighbour calls to show') + ap.add_argument('--craft', help='unitgroup.py --all output, for the cross-tab') + a = ap.parse_args() + + ids = {int(x) for x in a.ids.split(',')} + craft = load_craft(a.craft) if a.craft else None + vals = collections.defaultdict(collections.Counter) + units = collections.defaultdict(collections.Counter) + cross = collections.defaultdict(lambda: collections.defaultdict(collections.Counter)) + unresolved = collections.Counter() + + for path in sorted(glob.glob(os.path.join(a.ssb, 'Stage*.ssb'))): + stage = os.path.basename(path)[:-4] + b = isl.load(path) + sym2 = isl.symbols(b, 2) + calls = list(walk(b)) + for i, (off, bid, staged) in enumerate(calls): + if bid not in ids: + continue + uidx = staged.get(4) + typ, name = sym2.get(uidx, (None, '?')) if isinstance(uidx, int) \ + else (None, '?') + val = _fmt(staged.get(8)) + print('%s\t0x%06X\t%d\t%s\t%s\t%s\ttype%s\t[%s]\t[%s]' % ( + stage, off, bid, val, name, + ('0x%X' % uidx) if isinstance(uidx, int) else uidx, typ, + ','.join(str(calls[j][1]) for j in range(max(0, i - a.ctx), i)), + ','.join(str(calls[j][1]) + for j in range(i + 1, min(len(calls), i + 1 + a.ctx))))) + vals[bid][val] += 1 + units[bid][name] += 1 + if craft is not None: + cs = craft.get('S' + stage[-2:], {}).get(name) + if cs: + for c in set(cs): + cross[bid][c][val] += 1 + else: + unresolved[bid] += 1 + + for bid in sorted(ids): + n = sum(vals[bid].values()) + print('\n# builtin %d: %d sites, %d distinct values' % (bid, n, len(vals[bid]))) + print('# values: ' + ', '.join('%s x%d' % kv for kv in vals[bid].most_common())) + print('# units: %d distinct, top: %s' % ( + len(units[bid]), ', '.join('%s x%d' % kv for kv in units[bid].most_common(10)))) + if craft is not None: + print('# craft cross-tab (%d unresolved):' % unresolved[bid]) + for c in sorted(cross[bid], key=lambda c: -sum(cross[bid][c].values())): + print('# %-42s %4d %s' % ( + c, sum(cross[bid][c].values()), + ', '.join('%sx%d' % kv for kv in cross[bid][c].most_common()))) + + +if __name__ == '__main__': + main()