Hi,
I'm stumped and please need some help.
tl;dr: how do i copy the contents of 0x006E8422 to 0x1485B4D8 (2 bytes, both possibly pointers)?
Looking to copy values from a pointer (max HP) to another pointer (current HP) so I have an "Infinite HP" cheat without setting HP to some arbitrary high value.
Even with the help of (link to nanquitas' github gist "CTRPF Action Replay Code Types") and (link to Codejunkies Datel Trainer Toolkit for DS Manual), I cannot figure out how to accomplish this or which operation(s) actually equals "read". Call me stupid if you want
Say current HP is at 0x31234567, pointer, 1 byte.
Max HP is at 0x3123dcb0, pointer, 1 byte.
First I need to set the base offset to 0x30000000 to accomodate the offset length: (D3000000 = set offset #1)
D3000000 30000000
Make sure the pointer is not zero (6xxxxxxx = Not equal, xxxxxxx = pointer address without leading 3 due to offset, compare value is 0):
61234567 00000000
Load actual pointer (Bxxxxxxx = load offset register, value is always 00000000)
B1234567 00000000
Now normally would come the write command (write to current address) with some specific value and that's it.
But how would I go about reading the contents of 0x3123dcb0 and write that value to 0x31234567 instead?
Before of course closing the If opened above with
D2000000 000000
Hope it was not too confusing and someone here knows the answer
Also, if both values are simple values instead of pointers, what would the code for this be?
Thanks and regards,
sub
Edit: Further search brought me to codedonut / ds action replay tutorial. The copy there is done with D3 (which I understand to be load first offset) and "0F" (can't find that in nanquitas' reference) instruction. The code used in that example would mean it multiplies something (F2xxxxxx where the 2 would be the offset starting number instead of the operation F2.....?).
But how do I go about it if my target offset isn't (0)20A3012 but 120A3012? Prepending an F for the operation makes it 9 characters and thus too long (F120A3012)
This gets weirder and weirder for me
I'm stumped and please need some help.
tl;dr: how do i copy the contents of 0x006E8422 to 0x1485B4D8 (2 bytes, both possibly pointers)?
Looking to copy values from a pointer (max HP) to another pointer (current HP) so I have an "Infinite HP" cheat without setting HP to some arbitrary high value.
Even with the help of (link to nanquitas' github gist "CTRPF Action Replay Code Types") and (link to Codejunkies Datel Trainer Toolkit for DS Manual), I cannot figure out how to accomplish this or which operation(s) actually equals "read". Call me stupid if you want
Say current HP is at 0x31234567, pointer, 1 byte.
Max HP is at 0x3123dcb0, pointer, 1 byte.
First I need to set the base offset to 0x30000000 to accomodate the offset length: (D3000000 = set offset #1)
D3000000 30000000
Make sure the pointer is not zero (6xxxxxxx = Not equal, xxxxxxx = pointer address without leading 3 due to offset, compare value is 0):
61234567 00000000
Load actual pointer (Bxxxxxxx = load offset register, value is always 00000000)
B1234567 00000000
Now normally would come the write command (write to current address) with some specific value and that's it.
But how would I go about reading the contents of 0x3123dcb0 and write that value to 0x31234567 instead?
Before of course closing the If opened above with
D2000000 000000
Hope it was not too confusing and someone here knows the answer
Also, if both values are simple values instead of pointers, what would the code for this be?
Thanks and regards,
sub
Edit: Further search brought me to codedonut / ds action replay tutorial. The copy there is done with D3 (which I understand to be load first offset) and "0F" (can't find that in nanquitas' reference) instruction. The code used in that example would mean it multiplies something (F2xxxxxx where the 2 would be the offset starting number instead of the operation F2.....?).
Code:
We need to set the offset value to our total crystals address, which means we will use the D3 code type.
This will set the total crystals address as the internal “pointer” register.
D3000000 XXXXXXXX , XX being the address.
Next, we will need to copy memory (bytes), using the 0F code type, which works in conjunction with
the code types (D3, DC or B) to set the offset beforehand. Doing this will copy the bytes specified, from
the internal pointer register (0A3010 or the first line) to our current crystals address (0A3012).
FXXXXXXX YYYYYYYY , XX being the address (current crystals), and YY being the number of bytes
to copy. We’ll do only 1 byte, so 00000001.
D3000000 020A3010
F20A3012 00000001
D2000000 00000000
This gets weirder and weirder for me
Last edited by subworx,