As an example, I dug up an existing script of a bug catcher in viridian forest.
trainerbattle 0x0 0x214 0x0 0x81724F9 0x817251B
msgbox 0x8172527 0x6 '"BUG POKéMON evolve quickly.\nThey'..."
= Did you know that POKéMON evolve?
For example that "0x81724F9" you see in the "trainerbattle" command actually calls for an asm routine to display text through a 4-byte pointer. The pointer in rom looks like this: F9 24 17 08 and so points to the ram address shown in the code 0x81724F9. The rom address then again is 0x1724F9 (as I pointed out in that other message, you can basically decrease 0x8000000 from the pointer to form the rom address it points to).
If we wanted to point to 0x1012345 (ROM) instead, we'd have to add 0x8000000 to it to get 0x9012345 (the form you'd write the pointer in code) (or translated into how it's shown in the game: 45 23 01 09).
You were missing one 0 from the end but yeah, 0x9000000 should work although I've never scripted with 3rd gen games before.
But the reason for that is because the end of 16MB rom is at 0xFFFFFF which corresponds to ram address 0x8FFFFFF. The expanded 16MB rom is between offsets 0x1000000 and 0x1FFFFFF (which correspond to ram area 0x9000000-0x9FFFFFF).
What you can see by this is that the pointers point to ram, not rom data.
If you'd like to call something from WRAM for instance during a script, you'd set the fourth byte of the gba pointer to 02 (because WRAM is between 0x2000000-0x2FFFFFF).