That's alright, I honestly didn't think anyone would know how to do it.
(EDIT)
I found a way to do it, or at least a start! It looks like this:
Code:
D3000000 089EFC00 --- Sets offset 1
DD000000 00004020 --- Checks for ZL+Left (this will need to be changed to get it fully working)
D9000000 0000009C --- Sets Data#1 to the value at [0000009C + offset]
DF000002 00020000 --- Copies Data#1 to Storage#1 (not sure if required)
D0000000 00000000 --- End if
DD000000 00004010 --- Checks for ZL+Right (can be changed to whatever)
DF000002 00010000 --- copies storage#1 to data#1
D6000000 0000009C --- writes the value at [0000009C+offset] to the value at data#1
D2000000 00000000 --- End all
One thing that definitely be changed if possible is the ZL+Right check. If at all possible it could check if the value at the address is back to it's default and then set it back to it's previous value.
EDIT 2
We might be able to drop the storage bits if we use
D2000000 00000001
to exit the code WITHOUT clearing the data
Final Edit
I got it fully working! it's a bit messy though, so feel free to clean it up if you want.
It requires 1 address that gets reset between load zones (NOT THE ONE YOU ARE GOING TO HAVE SAVE)
here is the full working code:
STORAGE BETWEEN LOADING ZONES
Code:
D3000000 [ADDRESS TO CHANGE] (ADDRESS 1) sets offset 1
D3000001 [ADDRESS THAT GETS RESET DURING LOADS] (ADDRESS 2) sets offset 2
DF000000 00000001 sets offset 2 as active
60000000 [DEFAULT VALUE OF ADDRESS 2] checks if the value of address 2 is not it's default value
DF000000 00000000 sets offset 1 as active
D9000000 00000000 copies the value at address 1 into data
DF000002 00020000 copies data to storage
D0000000 00000001 end if
DF000002 00010000 storage back to data
DF000000 00000001 offset 2 active
50000000 [DEFAULT VALUE OF ADDRESS 2] checks if address 2's value is equal to it's default
DF000000 00000000 offset 1 active
D6000000 00000000 sets address 1 to stored value
DF000000 00000001 offset 2 active
F1000000 00000001 (WORKS BEST IF ADDRESS 2 IS A FLOAT*) adds 1 to address 2
D2000000 00000001 exit immediately
*a float should be stored as a 4 byte value with a hex value of 3F800000 if the default value is 1.000