TMs pocket is specially designed for 58 slots.
Interesting fact is Emerald doesn't have separate TMs pocket, so each pocket can load more and more.
I think that hijack the existing bag routine is not a good solution because the code seen had its own limitation, a better way is rewrite a new bag routine instead(I am not good in c ). I heard that someone in community is doing this, so you might ask him for further information.
You are right, you will have 0xE8 free bytes or 58 item slots from saveblock if you relocated the TM slots to somewhere else, I totally forgot this thing.
So you might assign the counter and the bytes added like this,
change #0x1E to #0x2A for key item slot counter
change #0x78 to #0xA8 for space needed
change #0xD to #0x2A for pokeball slot counter
change #0x34 to #0xA8 for space needed
TRUE, I hook the routine before it reads the TM slots value and assign the RAM location.
But you can't simply change the limiter, because the memory used might overlay important data in the saveblock.
The max value for bag slots is 0x2a and idk why.
Btw, do you think my English bad? I don't really speak it in my real life.
It is pretty easy, the routine for slots is located at 0x99E44, you can hook it to your owns to relocate the RAM for slots data.
However, the limits each slots in bag for Fire Red is 42, I am still figuring how to crack this.
I am glad someone finally use it. You might apply it so you can have more slots in your bag. Otherwise you can only get the first 58TM/HMs. The HMs counted as #51-58, so the TM51 will follow as #59 in the compatibility table.