So I've made a few attempts at this...
Calling 0x806F924 directly displays an empty textbox, but does nothing. Calling each subroutine up from there brings up respectively the save data box (Dex, Badges, Time, etc.) and a YES/NO choice box, but none do any saving.
On the other hand, calling the next subroutine down (save_game_via_menu_while_dont_turn_off_the_power_is_shown at 0x0806F940) does save the game, but only partially: When loading the save, the map shows up corrupted and the game freezes when trying to move (interestingly, Pokémon data, options and map music seem to be saved and loaded correctly). Correction! This routine does save the game correctly, only showing some graphical map glitches on-screen when the save is loaded again (like so) - these return to normal once you enter/exit a warp.
My guess is the game already begins saving data before the player presses "YES", and that this is lost. If this is the case, doing a save-from-script routine is probably going to be a lot more complicated to make sure all data is saved in the right order. :/
Special 0x5D clearly has the closest thing to the intended behaviour, but it would be neat to be able to skip the confirmation box. Too bad nobody's worked this out yet.