Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ZXodus Engine support
#1
Hola!

Various people have mentioned that they would like to see support for my ZXodus Engine in the compiler. However, I suspect they haven't actually mentioned it here.

ZXodus is a rainbow processor and tile engine that gives you a 9x9 grid of tiles (144x144 pixels with 8x1 attributes) on the original 48K Spectrum. It does work on other models but the timing may need tweaking.

The engine is available here (with source):
<!-- m --><a class="postlink" href="http://www.worldofspectrum.org/infoseekid.cgi?id=0026639">http://www.worldofspectrum.org/infoseek ... id=0026639</a><!-- m -->

A simple PNG to tile converter (by na_th_an) is available here:
<!-- m --><a class="postlink" href="http://www.mojontwins.com/warehouse/zxodus-conv-0.1.rar">http://www.mojontwins.com/warehouse/zxodus-conv-0.1.rar</a><!-- m -->

Cheers!

-chev
Reply
#2
Oh my...:!:
I've just read this post TODAY Confusedhock:
I would like to know a bit more about this engine.
Reply
#3
boriel Wrote:Oh my...:!:
I've just read this post TODAY Confusedhock:
I would like to know a bit more about this engine.

I'm not sure what more detail I can give, although you can try out the software here:

<!-- m --><a class="postlink" href="http://www.worldofspectrum.org/infoseekid.cgi?id=0026639">http://www.worldofspectrum.org/infoseek ... id=0026639</a><!-- m -->

It's a software driven 144x144 window of rainbow processing (8x1 attributes) powered by LD / PUSH. The routine includes a tile engine so you don't have to worry about updating the LD / PUSHes yourself. It supports up to 256 tiles. Each tile is 16x16 pixels (and takes up 64 bytes). Tiles are drawn continuously, based on an 81 byte tile map. You update the map to update the tiles. The original version of the code draws only 3 tiles per interrupt (it's all IM2 driven). The next version draws 9 tiles per interrupt.

In theory the window can be relocated anywhere on the screen but moving it lower down would reduce the available t-states to do anything else in.

There's a good explanation of what's going on here:

<!-- m --><a class="postlink" href="http://simonowen.com/blog/2011/09/29/zxodus-engine/">http://simonowen.com/blog/2011/09/29/zxodus-engine/</a><!-- m -->

Cheers!

-chev
Reply
#4
this provides some explanation too
<!-- m --><a class="postlink" href="ftp://ftp.worldofspectrum.org/pub/sinclair/games-info/s/StarTip1.txt">ftp://ftp.worldofspectrum.org/pub/sincl ... arTip1.txt</a><!-- m -->
Reply
#5
slenkar Wrote:this provides some explanation too
<!-- m --><a class="postlink" href="ftp://ftp.worldofspectrum.org/pub/sinclair/games-info/s/StarTip1.txt">ftp://ftp.worldofspectrum.org/pub/sincl ... arTip1.txt</a><!-- m -->

Actually I think that's a bit misleading. The 'rainbow processor' only does: "a different colour on each pixel line, in a band twenty characters wide in the centre of the screen"

ZXodus does: "2 different colors for each bitmap byte (8x1) on each pixel line, in a band 18 characters wide, by 18 characters deep, relocatable (by changing the timings) but generally located in a window (with a one character border) on the top left of the screen"

Most rainbow processors use the POP / PUSH method for rapidly updating the attribute, but that only gets you 16 characters wide of individual colour. ZXodus uses LD / PUSH to get the extra two columns. Other modes use the full depth of the screen but because the CPU is held the whole time the attributes are being updated, by default ZXodus limits you to a 144x144 pixel window.

However, besides the extra colours, what really sets ZXodus apart is the simple tile mechanism used for updating the screen. The engine does handles all the scene updates for you. All you have to do is set which tiles (from a maximum of 256) you want to display in an 81 byte buffer.
Reply
#6
Probably you already know, but someone has already ported BIFROST (a Zxodus derivated engine) to ZX BASIC.
It's already at WOS: <!-- m --><a class="postlink" href="http://www.worldofspectrum.org/infoseekid.cgi?id=0027405">http://www.worldofspectrum.org/infoseek ... id=0027405</a><!-- m --> 8)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)