okay... they work pretty fine and perfect in my case. :\
I really do not know why it doesn't work in your case. however, I am also sure this works in FireRed as well.
I got no time though, busy in real life. :\
but if you wish, I can post some proof that this method does work in FireRed as well. But maybe later. :\
Maybe you have overwritten an offset which was already have been used. :\
here's proof that it also works with FireRed. :\