Repository navigation
Commit ecbe10f
test(accuracysnes): harden A3.03's stack; the oracle hypothesis was wrong
A3.03 hand-loads S and then runs assertions that need the stack, so on a
core confining the stack differently the divergence lands in the return
address rather than the verdict. The caller's S is now stashed and
restored through long addressing before any assertion branches, and Y is
parked through A because STY/LDY have no long form.
That was also my hypothesis for the Mesen oracle hang, and it is WRONG:
MesenCE still stops after 14 of 335 status bytes with the hardening in.
The hardening is kept on its own merits -- the fragility is real
regardless of host -- but it is not the fix and the docs no longer claim
a root cause.
Next, in order: verify the status array is written in catalogue order at
all, since the whole index-to-test mapping rests on that and it has not
been checked; then, if it is, find what A3.03 does that MesenCE does not
return from, the stack no longer being a candidate.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent aaf9f3e commit ecbe10f
6 files changed
Lines changed: 70 additions & 10 deletions
File tree
- docs
- tests/roms/AccuracySNES
- asm
- build
- gen/src/tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | | - | |
16 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
483 | | - | |
484 | | - | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
485 | 498 | | |
486 | 499 | | |
487 | 500 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
715 | 715 | | |
716 | 716 | | |
717 | 717 | | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
718 | 725 | | |
719 | 726 | | |
720 | 727 | | |
| 728 | + | |
| 729 | + | |
721 | 730 | | |
722 | 731 | | |
723 | 732 | | |
| |||
745 | 754 | | |
746 | 755 | | |
747 | 756 | | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
748 | 761 | | |
749 | 762 | | |
750 | 763 | | |
751 | 764 | | |
752 | 765 | | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
753 | 769 | | |
754 | 770 | | |
755 | 771 | | |
| |||
766 | 782 | | |
767 | 783 | | |
768 | 784 | | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
769 | 792 | | |
770 | 793 | | |
771 | 794 | | |
| |||
Binary file not shown.
Binary file not shown.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
749 | 749 | | |
750 | 750 | | |
751 | 751 | | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
752 | 761 | | |
| 762 | + | |
| 763 | + | |
753 | 764 | | |
754 | 765 | | |
755 | 766 | | |
| |||
766 | 777 | | |
767 | 778 | | |
768 | 779 | | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
769 | 784 | | |
770 | 785 | | |
771 | 786 | | |
772 | 787 | | |
773 | 788 | | |
| 789 | + | |
774 | 790 | | |
775 | 791 | | |
776 | 792 | | |
| |||
779 | 795 | | |
780 | 796 | | |
781 | 797 | | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
782 | 805 | | |
783 | 806 | | |
784 | 807 | | |
| |||
0 commit comments