That's cool about Elegion -- and I never knew that about X for some reason. I need to go back and try that.
I'm still working on the next phase of my SRAM guide. There are a lot of things I know need to be in SRAM about the game that I am trying to track down:
1. All of the treasure chests.
2. All of the "hidden items" (in book cases, etc.).
3. All of the Scenario Items. [they're not in your regular inventory]
4. Every town you visit for the fist time (for your WARP spell).
5. Status of your level in the Old Cave.
6. Items that go to the Isle of Forfeit.
7. Various other in-game scripting (people who change what they say after you talk to them a few times, different locations for people or Doom Island and those sort of things, etc.).
8. Triggers for various in-game cutscenes (ie. The Hope Ruby).
9. The in-game clock timer.
10. The abilities of The Falcon.
Again, a lot of this will take just a lot of time to sift through, but I think there could be a lot of good information here. It wouldn't surprise me if a lot of event data was just a single bit flag... And there's probably even more stuff buried in SRAM that I haven't even thought about yet.
Anyway, on a final note, just as an exercise for myself, I tried to comment the assembler code for the checksum routine... Did I get anywhere in the ballpark? Something about this just seems off to me (I haven't messed with Assembler in about 5 years):
A0 FC 03 LDY #$03FC ; load Y immediate with value 0x03FC
A6 1F LDX $1F [$00:001F] ; load X with value at address 0x1F
A9 02 65 LDA #$6502 ; load Accumulator with 0x6502
18 CLC ; clear the carry flag
7D 08 00 ADC $0008,x[$70:0008] ; add with carry starting at address 0x0008
E8 INX ; increment the X register
E8 INX ; increment the X register (again)
88 DEY ; decrement the Y register
D0 F7 BNE $F7 [$9431] ; repeat until Y hits 0 (branch not equal)
AA TAX ; transfer the accumulator into X
7A PLY ; pull the Y register off of the stack
AB PLB ; pulls a byte off of stack into data bank
28 PLP ; pull processor status off of the stack
60 RTS ; return from subroutine
Thoughts on any of this, anyone?