Giter Site home page Giter Site logo

kieranhj / stnicc-beeb Goto Github PK

View Code? Open in Web Editor NEW
7.0 5.0 0.0 19.19 MB

Port of STNICCC-2000 for the BBC Micro.

Home Page: https://bitshifters.github.io/posts/prods/bs-beeb-niccc.html

License: MIT License

Python 41.21% Batchfile 0.51% Assembly 56.35% Makefile 1.26% VBA 0.67%
bbcmicro demo demoscene revision2020 bbc stniccc

stnicc-beeb's Introduction

stnicc-beeb's People

Contributors

kieranhj avatar tom-seddon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

stnicc-beeb's Issues

Credits?

We'll want credits at the end for the folks involved.
Plus thanks / greets as ever.

Fix Model B ROM slot bug.

Can't read from &FE30 - need to read from &F4 instead!
Ensure no random crashes - ask folks to test on real Model B hw.
Ensure runs through on b-em.

Fix looping.

Demo is supposed to loop but currently doesn't.
Figure we should just leave looping on by default, user can press BREAK.

Some kind of intro?

We'll almost certainly want some kind of intro at the start to call out the specs of the machine:

BBC w/ 32K RAM (+16K? for music)
No VIC, no blitter etc.
Real floppy discs
2MHz 6502 CPU

Oh and a Bitshifters logo somewhere as well, I'm sure. :)

NULA version?

It would be possible to make a custom NULA version that runs in MODE 8 but with full 16 colour palette. Not sure what to do about the resolution though as 64x100 is going to look super-chunky.

There might be some optimisations to be made since we wouldn't require the dithering pattern for the palette?

Can Medium Quality use a different dither byte per scanline?

In MQ the exact same scanline is duplicated for the second (odd) line by running the plot routine twice with the same palette byte. It shouldn't be that hard to increment the palette lookup so the second line is using the correct palette byte for the odd scanline. This would increase the apparent resolution and might be virtually indistinguishable from HQ.

Single drive version

For the determined completist with only one disk drive: a version that has a disk swap message, waiting for a keypress, so you can still see the whole thing.

Add real time clock?

Some versions of the demo have a clock (minutes:seconds:frames) either during the whole thing or at the end to indicate the speed. Perhaps not a great idea considering this is hardly the fastest version (!!) but might be of interest to some.

Sort out the colour palette and dither patterns

The original colour palette and dither patterns were a lucky guess + MODE 5 defaults!

Need to have a look at the palette data in the stream to see if it is worth redefining the palette at various points in the sequence. How much can be pre-baked?

What dither patterns actually look best with the selected palette colour values?

What dither patterns should be used for the medium / low quality settings as these can turn into a pixellated mess quite easily?

Music!

Integrate most recent / optimised music player (is this from Wave Runner or use Simon's LZ compressor?)

Pick awesome music, ideally an SN version of ChechnoBankh if we can..

Inline plot functions

Once we believe there's no more juice to squeeze out of the code, final optimisation would be to directly inline the plot_span function into plot_poly_span and maybe even inline plot_poly_span into parse_frame.

This would remove the 6c JMP/JMP overhead per fn call which is considerable across the entire sequence. It will, however, make the code very hard to read / maintain.

Fix degenerate polys in low & medium quality

Halving both the horizontal and vertical vertex coordinates can leave some degenerate (single point) polys which aren’t handled very well. End up with a two pixel dash on the edge of a line because the span buffer isn’t set correctly. Need to filter these out in quality modes < high.

Check streaming works on MMFS type systems

Last time I tried, streaming didn't work on my B with a recent version of MMFS. Possible regression in MMFS for OSWORD &7F implementation as had problems getting Bad Apple to run as well and sure this was OK previously.

Might need to implement the same disc speed test as Bad Apple and change streaming to sector-by-sector load rather than track-by-track as the latter caused stuttering / slowdown on Bad Apple.

Open questions regarding NuLA quality level and overall timing

The batch files a quality=1 NuLA build, which looks pretty nice. The makefile build creates a quality=0 NuLA build, because then the demo finishes before the music, rather than the other way around.

4b481dc adds a delay to the NuLA version so the quality=0 version runs in the same time as the non-NuLA version, so it finishes in time with the music. (Haven't tried this on real hardware, though... just b2.)

The quality=0 build does look a bit dim, of course, which might be objectionable. So perhaps we want quality=1 after all, get rid of the delay, avoid the temptation to re-open #25, and just live with the music finishing early?

Middle of the animation sequence looks a bit of a mess.

Need to do another pass on ST palette => BBC dither mapping.
The start and end of the sequence look good but the middle parts turn into a bit of a pixellated mess.
Try using more contrasting dither patterns - fewer middle values, push to extremes (either almost empty or almost filled).
Are there any occasions when it is possible to mix up the colours a bit to make it more solid?
Hate the green/yellow combination of the boring pentagonal tunnel. Can we swap one of the colours for something else? Even if the palette switch is obvious? (Need yellow for the blue tunnel later on and using green as come out of a very green tunnel beforehand). Perhaps cyan would be better?

Streaming won't switch to drive 2 on my real floppy hw

Demo just crashes at the end of drive 0 but works fine for Tom on his real floppy hw. Can't hear the head seeking back to the start of drive 2 so not sure what's going on here.

Works fine on DataCentre under DTRAP.

Centre the screen

Screen is currently top left - should centre this with CRTC reg values.

Loader to select version.

Select low / medium / high quality
Select loop? (For ABUG type events)
Confirm SWRAM usage for music?
Select music on/off?
Must also work without input for online emulator.

Readme for discs

How to install / run on floppy + DataCentre + MMC type solution.
Given that the demo is across 4x SSD images some less technical folks might find this problematic to get running on real hw.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.