780D0000 00000030 - Add 30 to the address stored in D.Line 5 I know is an arithmetic codetype, but it doesn't appear to have an operation, so I don't understand what it's for?
No, the 5 first lines give to D the address of the Max HP, not the value of Max HP.So the first 4 lines of your code load the pointer to the HP value into register D.
You must understand that an address and a value are different things.
Just because D has an address does not mean that it stores the value of that address. It only has the address.
Yes, line 6 copies the D register to A, but D only has the address, not the value stored at that address. Now A equals the address of D.Line 6 copies register D into register A.
Line 7 is changing register A's value to zero(? So register A retains the memory address, but the value associated with that address becomes zero?)
Line 7: Read the address stored in A and put that value in A. Now A stored the value, not the address.
780D1000 00000010 - Add 10 to the address of D. Now D is pointing to another address (Old address + 10)Line 8 adds 10 to the address of register D, as you said (this I don't understand because it's about to be overwritten by the value in register A anyway, right?)
A4AD0000 ---------------- Write the value stored in A in the address stored in D.line 9 overwrites the value (and memory address?) of register D with register A(? My understanding is that this would simply overwrite the register without pushing values back to the actual memory address. Is this not the case?)