What are you proposing is not easy, and I think since MSX1 has no hardware support, impossible. Not if I want to add all visual appeal of SMB3.
Look I would need to make the 1 pixel the only speed allowed in the game. Nothing can move more than 1 pixel per frame. So, the maximum speed would be 60 pixels per sec for NTSC and 50 for PAL. Right now, mario moves 2 or 3 pixels depending on speed. What are you proposing is skipping frames to control the speed.
I spend some time updating patterns for sprites and flipping coins. Those things are performed in hardware by the NES memory mapper. No to mention there is no sound yet, so more CPU is needed. Also, I need to copy the name tbl and flick the sprite table to overcome MSX1 limitations.
Such game speed would demand the state of art in assembly. I understand your demand, but the game would be ridiculously harder to do.
I could not resist making a BASIC demo
It turns out my camera stop formula was wrong, no "+4" in there.
The red sprite is meant to be a tile, the blue sprite shows the internal 1 pixel accurate view of the tile. Pressing cursor keys simulates mario pushing the scroller. Scroller snaps to 8x8 positions.
objects can refere to the internal view just like in a normal 1 pixel game.
Mario would run completely unsnapped.
When I press cursor keys short, Marios sprite shows he got it, but I can make short clicks forever, he never moves. Is this mario physics or is it snapping business? At the end of the level, as scroller stops, he starts moving in 8 pixel jumps. Again looks like wrestling with snapping rules.
Maybe the 1 pixel scroll world position + scroller snap can added just to Mario if you do not want to mess the rest.
And: imagine a tile makes an 8 pixel jump in 200 milliseconds.
Imagine it will jump in 200 milliseconds, and after 100 milliseconds you hit 4 pixels away from the tile. Well the ghost tile will be already there. See BASIC demo. I suspect this may improve 8x8 gaming accuracy.
p.s.
The demo also shows another thing: doing smoothscroller in this style,
the size of a colorclash error block is not 8 pixels wide, but 4 pixels wide.
10 DEFINT A-Z 20 COLOR 15,1,1 30 SCREEN 2,2 40 A$=CHR$(255) 50 FOR I = 1 TO 32 : S$=S$+A$ : NEXT 60 SPRITE$(0)=S$ 70 'scrolpos somewher in the map 80 SX =100 : SY =100 90 'provoke scroll snap 100 DX = 1 : DY = 1 110 '--- 120 A = STICK(0) 130 ON A GOTO 150,160,170,180,190,200,210,220 140 GOTO 230 150 DY =-1 : GOTO 230 160 DX = 1 : GOTO 230 170 DX = 1 : GOTO 230 180 DX = 1 : GOTO 230 190 DY = 1 : GOTO 230 200 DX =-1 : GOTO 230 210 DX =-1 : GOTO 230 220 DX =-1 : GOTO 230 230 '--- 240 SX = SX + DX 250 SY = SY + DY 260 'scroller snap stop rule 270 IF((SX) AND 7)=0 THEN DX=0 280 IF((SY) AND 7)=0 THEN DY=0 290 'tile x and y positions 300 TX =(SX + 4)/8 310 TY =(SY + 4)/8 320 '"255-", show sprite the way tiles would go 330 PUT SPRITE 0,(255-TX*8, 255-TY*8),6,0 340 PUT SPRITE 1,(255-SX,255-SY),4,0 350 GOTO 110
What are you proposing is not easy, and I think since MSX1 has no hardware support, impossible.
Misunderstandings.
Imagine a C64 game. Imagine the scrollregister breaks. Then the tiles wobble on 8x8 positions.
But the sprites will still move like there was a smoothscroller.
And the sprites making tile tests will work like before, because they do not test the content of the rasterbeam.
The BASIC demo shows what I mean.
Magical Kid Wiz makes a good scroller:
http://www.youtube.com/watch?v=W5IJBTvrrXk&feature=related
But as I said: things detach from the ground. When moving up or down is even more evident.
Now I think that Mario moves are more interesting than Turtle moves.
What do you think about Mario relating to a 1 pixel accurate scrollx,scrolly variable (like SX,SY in BASIC demo).
And the scroller (i.e. said 1 pixel accurate varuables) only stops on modulo-8 positions.
Done that, Mario moves can be programmed like on a pixelscroller machine.
not that simple as mario has momentum, he never stops when you released. Also, it doesn't start moving right away because of friction.
not that simple as mario has momentum, he never stops when you released. Also, it doesn't start moving right away because of friction.
Well imagine you do all this to a naked sprite. Totaly simple.
Then, as that sprite hits the scroller bounding box, it starts moving a 1 pixel scroller variable.
That move done to scroller variable is to be subtracted from mario position.
Now he will stay "somewhat in the middle of the screen".
Then, said 1 pixel scroll variable only halt on modulo-8 positions.
Because the charset display shows said 1 pixel scroll variable in modulo-8 steps.
Then, program all mario physics like there was no 8x8 problem.
Did you see the BASIC demo?
yep
Problems with scrolling? Super Mario doesn't need it!
Check "A Super Mario Summary" (it's a flash game)
(not that I want Retrocanada to remove the scroll of his version; simply it made me remember about this thread ;) )