You can make the map much shorter (although you don't have to), and just make sure it's set to loop scroll horizontally. In the map properties, you'll see "Scroll Type," set it to horizontal.
Now make an NPC event with the graphic of the NPC and set it to a parallel process. Create a loop (because parallel processes will sort of stutter in their execution while message boxes are being displayed unless you have a loop), then do "move route player: move left" and make sure to uncheck the "wait for completion" box. Then, do "move route this event: move left" and make sure to check "wait for completion." You'll want to make sure that both your NPC event and your player are set to the same move speed, so if your player is set at speed 4: normal, the event needs to also be at speed 4: normal.
So what this will do is make the player and the NPC move left the same number of spaces, then loop back and do it again - infinitely. Since you're on a scrolling map, too, it will just indefinitely make them walk until you transfer out of the map (or you could turn on a switch to make them stop walking, then within your loop, do a conditional that only makes them walk if the switch is on, and if not, break loop and turn on a self-switch to a blank page).
In a separate event, you can then do an autorun that has all the messages and such you want them to talk about while they're walking.