Page 1 of 2

Sharper by Genesis Project

Posted: Sun Jul 03, 2022 10:31 am
by Sdw
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!

Re: Sharper by Genesis Project

Posted: Tue Jul 05, 2022 9:20 am
by mz-80a
Very cool indeed :) HSYNC is everybody's best friend.

Re: Sharper by Genesis Project

Posted: Tue Jul 05, 2022 8:08 pm
by hlide
Any technical explanation about the parallax star field? Even running on the emulator, it is quite impressive.

Re: Sharper by Genesis Project

Posted: Wed Jul 06, 2022 8:23 am
by mz-80a
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

Posted: Wed Jul 06, 2022 9:30 am
by Sdw
hlide wrote: Tue Jul 05, 2022 8:08 pm Any technical explanation about the parallax star field? Even running on the emulator, it is quite impressive.
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

Posted: Wed Jul 06, 2022 6:47 pm
by mz-80a
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

Posted: Thu Jul 07, 2022 10:00 pm
by hlide
@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!
FXFZna2WYAA1VVK.png
FXFZna2WYAA1VVK.png (6.1 KiB) Viewed 3472 times
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

Posted: Tue Jul 12, 2022 1:06 pm
by mz-80a
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

Posted: Thu Jul 14, 2022 4:29 pm
by hlide
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

Posted: Fri Jul 15, 2022 2:35 pm
by Sdw
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.