thanks..
you confirming that prompted me to look at the variable chain backwards, and i found the $4085 variables being copied to $79FC variables in C2/09DD. this after seeing that $7A05 (with offset $39 varying by hand used?) later gets put in Var $57 in C2/653A.
also, i wonder whether parts of C2/09DD were written by robots or monkeys.
the most blatant:
C2/0A06: D0 03 BNE $0A0B
C2/0A08: 4C 3C 0A JMP $0A3C
C2/0A0B: 20 23 99 JSR $9923
[...]
C2/0A41: D0 03 BNE $0A46
C2/0A43: 4C 79 0A JMP $0A79
C2/0A46: 20 23 99 JSR $9923
then we have:
C2/0A22: A6 0E LDX $0E
C2/0A24: BD 8D 40 LDA $408D,X
C2/0A27: 48 PHA
C2/0A28: AD FA 79 LDA $79FA
C2/0A2B: AA TAX
C2/0A2C: 68 PLA
C2/0A2D: 9D 2D 7B STA $7B2D,X
C2/0A30: 9E 1C 7B STZ $7B1C,X
C2/0A33: 9E CC 7A STZ $7ACC,X
admittedly a pain in the ass situation (if you have one index register available), so they use the stack to work around it. lower down, they try a different approach for the same thing:
C2/0A5D: A6 0E LDX $0E
C2/0A5F: AD FA 79 LDA $79FA
C2/0A62: A8 TAY
C2/0A63: BD 99 40 LDA $4099,X
C2/0A66: 99 2D 7B STA $7B2D,Y
C2/0A69: AD FA 79 LDA $79FA
C2/0A6C: AA TAX
C2/0A6D: 9E 1C 7B STZ $7B1C,X
C2/0A70: 9E CC 7A STZ $7ACC,X
...but this way is even 2 bytes bigger. the amazing thing is once they go with Y, an elegant solution of "TYX" is staring them right in the face, and they reload from Var $79FA anyway! or they could "LDY $0E" instead, do all writes with an X index ("TAX" at C2/0A62), and drop the "TYX" as well.
that's 4 bytes smaller than second snippet, 2 bytes than the first. and then putting the large chunks of "LDY $0E" thru "JSR $98E3" into its own function would save 17 bytes more.