I saw your code.
I thought that this project was not yet open.
#define ItemImage 0x85926F4
#define ItemPalette 0x85996F4
#define ItemTable 0x8809B10
When these programs are created with pointer reference,I think setting is unnecessary.
0x08016410 is a reference to the item table called in function 080163F0 (StatBonusGetter GetItemHPBonus).
If we have re-point the item table, we need to rewrite this address.
Therefore, by referring to this address, setting is unnecessary.
It will be able to endure the re-point.
Or you could use the 080177B0 (GetROMItemStructPtr) function.
Even for the other two pointers, if you use pointer reference, we do not need to set it.
By this, the code will increase by 2 bytes, but I think that it is acceptable range.