You could use an asm code type. C2's require you to hook something, and if that hook isn't called every frame, then you could use a C0, which I think is executed during the code handler. You'll need two unused registers to do it, but I'm not sure what registers are free during a C0 code (perhaps the code handler pushes all the registers onto the stack before executing C0's?)
This small assembly routine ought to do what you want. To make it a code, I suggest asmwiird; it does C2 codes, but you can just replace the C2 line with a C0 line. The only thing left, I think, is that C0's need to end with blr.
lis r0, 0x8041
ori r0, r0, 0x2918 # load pointer into r0
lis r3, 0x4080 # load value into r3
stw r3,-4024(r0) # write the value from r3 to the address r0 - 4024
blr # terminator for C0 code type
Note that if your value had anything in the lower 16 bits, you would need to use an ori r3, r3, [value], similar to how r0 was loaded with the pointer 0x80412918.