For a game, I personally would use (and have actually used) this approach:
- In the module file, separate sub songs by a "---" pattern (in IT/S3M, in MOD/XM there is no such thing, so you'd have to put some arbitrary empty pattern between sub songs, f.e. pattern 99).
- In the game, use ChannelGetTags(handle, BASS_TAG_MUSIC_ORDERS) to retrieve the order list byte array. The byte array's length can be retrieved by using ChannelGetLength(handle, BASS_POS_MUSIC_ORDER). Scan this byte array for the value 255 (if you put "---" between the sub songs) or 99 (if you did use an empty pattern as described above). Save the positions of those numbers + 1 into a new array. Then you can use those positions together with BASS_ChannelSetPosition to start the music from that position.