Yesterday we released a new demo for the Sharp MZ-700 called Sharper.
YouTube video.
Binary download links and more info
The follow up to "Futuro MZ", my first SharpMZ demo from two years ago, this time with some more routines running in hires as well!
Sharper by Genesis Project
Re: Sharper by Genesis Project
Very cool indeed
HSYNC is everybody's best friend.

Re: Sharper by Genesis Project
Any technical explanation about the parallax star field? Even running on the emulator, it is quite impressive.
Re: Sharper by Genesis Project
Waiting for certain scanlines and printing only the top pixel line of some characters and then switching to blank character (display code 0) from the next 7 scanlines? Can't be I guess otherwise you'd just end up with a bunch of pixels all on one horizontal line
Re: Sharper by Genesis Project
Interesting that you should ask! Actually to me, this is probably the coolest effect in the demo, 200 pixel-sized stars moving smoothly over the entire screen. For people who don't know the SharpMZ it seems trivial, but we who know the hardware knows that it isn't!

It is, just as mz-80a guessed, done by carefully scanline-synced code, and every scanline a new character is placed and the previous character is cleared (to cut the star to one scanline in height).
Re: Sharper by Genesis Project
Thanks for the explanation
For a long time I have been thinking through doing something like this (on a smaller scale) on my MZ-80A. I think it would be near impossible on the 80A though. Great to see it finally done on the 700 though!

Re: Sharper by Genesis Project
@Sdw Oh I didn't see your answer. In fact I already found out how to do so (or at least something similarly) once I understood there is only one star per line: then it is very easy to be able to draw in the full 320x200 area!
A simple PUSH to draw a dot and erase the right character when dot address is decreasing, doing so 200 times with various changes of the dot characters according to a fix number of frames per line as a speed and "randomized" when star begins. So two characters per line. Well that would be one solution (I guess a PUSH is not necessarily the only solution).
A simple PUSH to draw a dot and erase the right character when dot address is decreasing, doing so 200 times with various changes of the dot characters according to a fix number of frames per line as a speed and "randomized" when star begins. So two characters per line. Well that would be one solution (I guess a PUSH is not necessarily the only solution).
Re: Sharper by Genesis Project
I doubt that the straight vertical line character is being used though. I'm sure it must be a mixture of different characters 

Re: Sharper by Genesis Project
That's the simplest way to get those star dots though. Using other random characters would be over-complicated to deal with.
Re: Sharper by Genesis Project
You got the theory correct hlide!
No need to abuse the stack and PUSH though, that would only give a speed advantage when you need to output 2 (or more bytes) on consecutive addresses. Here it's only one byte to set the star, and one to clear the previous per line, and those are on different places.
No need to abuse the stack and PUSH though, that would only give a speed advantage when you need to output 2 (or more bytes) on consecutive addresses. Here it's only one byte to set the star, and one to clear the previous per line, and those are on different places.