Sharper by Genesis Project

Is there such a thing as an MZ demoscene?
Sdw
Posts: 15
Joined: Wed Jul 08, 2020 10:27 am

Sharper by Genesis Project

Post 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!
User avatar
mz-80a
Posts: 403
Joined: Thu Jan 25, 2018 10:46 am
Location: Devon, UK
Contact:

Re: Sharper by Genesis Project

Post by mz-80a »

Very cool indeed :) HSYNC is everybody's best friend.
MZ-80A Secrets
https://mz-80a.com/

Sharpworks (Sharp MZ homebrew)
https: //mz-sharpworks.co.uk/
hlide
Posts: 681
Joined: Thu Jan 25, 2018 9:31 pm

Re: Sharper by Genesis Project

Post by hlide »

Any technical explanation about the parallax star field? Even running on the emulator, it is quite impressive.
User avatar
mz-80a
Posts: 403
Joined: Thu Jan 25, 2018 10:46 am
Location: Devon, UK
Contact:

Re: Sharper by Genesis Project

Post 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
MZ-80A Secrets
https://mz-80a.com/

Sharpworks (Sharp MZ homebrew)
https: //mz-sharpworks.co.uk/
Sdw
Posts: 15
Joined: Wed Jul 08, 2020 10:27 am

Re: Sharper by Genesis Project

Post 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).
User avatar
mz-80a
Posts: 403
Joined: Thu Jan 25, 2018 10:46 am
Location: Devon, UK
Contact:

Re: Sharper by Genesis Project

Post 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!
MZ-80A Secrets
https://mz-80a.com/

Sharpworks (Sharp MZ homebrew)
https: //mz-sharpworks.co.uk/
hlide
Posts: 681
Joined: Thu Jan 25, 2018 9:31 pm

Re: Sharper by Genesis Project

Post 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 3483 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).
User avatar
mz-80a
Posts: 403
Joined: Thu Jan 25, 2018 10:46 am
Location: Devon, UK
Contact:

Re: Sharper by Genesis Project

Post 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 :)
MZ-80A Secrets
https://mz-80a.com/

Sharpworks (Sharp MZ homebrew)
https: //mz-sharpworks.co.uk/
hlide
Posts: 681
Joined: Thu Jan 25, 2018 9:31 pm

Re: Sharper by Genesis Project

Post by hlide »

That's the simplest way to get those star dots though. Using other random characters would be over-complicated to deal with.
Sdw
Posts: 15
Joined: Wed Jul 08, 2020 10:27 am

Re: Sharper by Genesis Project

Post 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.
Post Reply