Depends what is it.
If you store an address in "SomeSymboolName" then use pointer. Example would be "mov [SomeSymboolName], rax", then use as pointer with 28 offset.
This is the recommend method, because it is then possible to change the ingame value.

If it only contains a value (integer/float/...) add it as address. But note that using this is only for showing the value, you can change it but it will have no effect on the ingame value.

Last edited by Schnitzelmaker on Sat Mar 18, 2017 9:26 am, edited 1 time in total.

I assumed that RCX would be an address so you would add 'SomeSymbolName' as a pointer, this would give you the ability to display an editable value, but if RCX is a value then you should add 'SomeSymbolName' as an address, but editing it wouldn't change the game's value.

And then you can add an address using _base as a pointer with an offset of 28 to reach that value. If you know that there aren't any other interesting values at other offsets then you could use something like this to get the exact address

// rax gets overwritten after rcx is stored so it's ok to overwrite it ourselves
lea rax, [rax+28] // essentially the above code in one line
mov [_base], rax
mov [rax], rcx // we need to store rcx differently now though

If rax was used later so you didn't want to overwrite it you could try to find another register that gets overwritten (and thus doesn't need to be saved) to store the address in or use push rax before and pop rax afterwards to save and restore it's value on the stack.

If on the other hand that address was on the stack or something and wasn't stable and all you had access to was the register at that point in memory but changing it's value would give the desired result then you could allocate 2 spots in memory the same size as the register, one called value and one called knownValue and let the user change value, then you'd compare value and knownValue and update the register to value if they were different otherwise update the two memory locations to the (current) value in the register. Assuming you wanted the game to be able to change it normally. If you just wanted to set it to a constant value all the time then you'd just do that lol

It's possible there's a simpler way but that's the first method that I thought of

Here's some examples on step 2 of the tutorial program (6.6's tutorial v3.3):