The main thing is to set CRTC register R12 and R13 to the start of the screen. You can do that from basic like this:
OUT &BC00,12:OUT &BD00,&30:OUT &BC00,13:OUT &BD00,10
The key thing to remember here is if you enter a lot of these commands BASIC will scroll the screen so it may be hard to see what is going on. Therefore put that line into a basic program and change the last value there ‘10’ and you can see a bit more about how it works.
By changing R12 and R13 you are changing where the screen display is shown from. Then based on the width of the screen it then wraps to the next line and so on. When it gets to the end of the screen it wraps back again so if you increase the number for R13 and R12 (but remember to add on +&30 here to keep it in the range &c000-&ffff) then you can see how the numbers work. Adding, subtracting, how much to move entire lines etc.
What the Plus then does is provides two more registers. So you can shift the screen in pixels horizontally and vertically. Essentially you change the shift value 0 up to 15. Then reset it back to 0 and update R12 and R13. Doing that gives a soft pixel scroll. The same pattern can be used vertically with the vertical soft scroll value.
Once you got that you are scrolling the screen. The next step is to update the graphics.
When scrolling horizontally you update a column of graphics on one side of the screen, which is not really important due to the way the screen wraps and you introduce the new graphics here. If you scroll and introduce new graphics you can then scroll an entire map.
If you want to scroll vertically again you update a single row either at the top or the bottom and again not so important which and introduce new graphics to scroll the map.
So once you got all that, on Plus you can freely position hardware sprites anywhere you like over it and no worries.
If you are writing for CPC then you calculate based on the screen base and your sprite x,y coordinates where to draw the sprite. You draw it like you do for a static screen (although there is one place where INC HL doesn’t advance to next screen byte as expected, you can inspect the firmware SCR_NEXT_BYTE dissassembly to see one method, another is you could draw the sprite in columns and avoid it, there are methods).
After you have drawn the sprite you’ll need to erase it, again various methods exist, you could redraw the tiles behind, when drawing copy the screen and restore it, copy it from another fresh version of the screen.. varies.
The softer scroll on the CPC (not using Plus) can be done in various ways, don’t expect to match the smoothness of plus horizontally easily, vertically can be done with various ways.
Is there a specific bits that you need help with? Let me know and hopefully can find a way so it all becomes clear.