Note that this tool i made a one month ago from zero (i did not release it owing to my absence)
and it hasn't any relation to the neighbour topic (and to any other eariler topic), i am surprised by it .
The program inside archive represents a special patch for GTA:SA that literally adds to
the game three new opcodes, replacing with itself some NOPs:
|00C3: read_mem_address [ ] type [ ] value_to [ ]|
This new opcode reads value of specified mem address (with new 0181 - any game address) and
writes it to the global or local variable. You may specify how much to read - 8 bit value (byte),
16 bit (word) or 32 bit (dword).
|00C4: write_mem_address [ ] type [ ] value [ ]|
This opcode same as previous except that it writes memory but not reads.
|0181: virtual_protect_change_at [ ] size [ ] new_protect [ ]|
And this opcode is maybe most unstandard. It allows to call VirtualProtect WinAPI
function directly from SCM, as you know it can unlock any address, which cause
AccessViolation exception (or game crash in SA) when accessing to it. So all reasonable
game memory can get in your hands.
All other information and why the CyQ's mem-technique for VC became impossible in SA
in the readme.
- Easiest to use and absence of necessity to use variables, to do any actions
and to write any mission code for make this focus working.
- Flexibility - you can specify size of value when accessing to the memory and
write real address, what it is anywhere (one action - convertion from HEX to INT, but
in new SB it will be possible to specify hex and other numeric formats for values).
- Presentation of the mnemonics of the opcodes.
- Very small size of the patch (~14 kb without docs).
- Without patch it doesn't work, but i can add to the next version opcode, by means of
which it will be possible to check up its presence and avoid game crash.
Most likely in new SB also will be built-in functions based on this tool for works with memory.
I very much wait for any wishes or criticism from you, and forgive me for my dreadful grammar
In theory, by similar approach it is possible to carry out calls to other API functions (just present the opening opportunities) and to make, for example, full working MP3 player, operated by the SCM opcodes, and many many other.
Have fun with it.