The zxodus engine
I've been playing around with this for a couple of days now. Its one of the best things I've seen for sinclair basic, and I've seen nothing about it in the forums.
It is a tile mapper running in interrupts, that allows control from basic, and also gives the user a 6x8 'AT pixel' print driver. What makes this something I feel worth evangelising in the forums about, is the fact that the tile display is in 8x1 attribute 'rainbow' mode. Just seeing it displaying the tiles, while carrying on with basic editing, is one of the most impressive things I've seen over 30 years with spectrums.
The engine is obviously not restricted to use with basic, and I think a few basic and asm speccy guys might be really interested to try this out. One thing to note, is that the engine doesn't leave all that much space for coding. But its enough to make something simple with it, and with the addition of Spectranet or something like a Divide for data storage - its not hard to imagine creating an epic dungeon crawler in glorious ( for 1982 ) 8x1 attribute colour. :smile:
It can be found here:
http://www.worldofspectrum.org/infoseekid.cgi?id=0026639
Along with a text file which explains it all a lot better than I can. Great documentation as we have come to expect from Chev.
I'm definitely going to be writing a couple of things using this, and hopefully I'll be able to report back here in the not-too-distant future with something to show for myself.
It is a tile mapper running in interrupts, that allows control from basic, and also gives the user a 6x8 'AT pixel' print driver. What makes this something I feel worth evangelising in the forums about, is the fact that the tile display is in 8x1 attribute 'rainbow' mode. Just seeing it displaying the tiles, while carrying on with basic editing, is one of the most impressive things I've seen over 30 years with spectrums.
The engine is obviously not restricted to use with basic, and I think a few basic and asm speccy guys might be really interested to try this out. One thing to note, is that the engine doesn't leave all that much space for coding. But its enough to make something simple with it, and with the addition of Spectranet or something like a Divide for data storage - its not hard to imagine creating an epic dungeon crawler in glorious ( for 1982 ) 8x1 attribute colour. :smile:
It can be found here:
http://www.worldofspectrum.org/infoseekid.cgi?id=0026639
Along with a text file which explains it all a lot better than I can. Great documentation as we have come to expect from Chev.
I'm definitely going to be writing a couple of things using this, and hopefully I'll be able to report back here in the not-too-distant future with something to show for myself.
Post edited by p13z on
SpecBAS stuff: https://www.youtube.com/user/bitemyshineymetalbut
Comments
I'm not convinced it does run flawlessly on the +3. At least it doesn't in an emulator, the 18th column is out of sync
Is that an emulator you made?? If so, then that explains it, :p
- IONIAN-GAMES.com -
By the way, I was wondering if this could be easily modified so it left room for less different tiles, making it more compact. Currently, 256 tiles would take 16Kb. I think I could do with just 64 tiles (including character and enemies), for example, which would give me extra 12Kb RAM.
I've also created a program which would make a png file into a bin file with the tile data ready to be imported. If anybody is interested, just give me a shout. You create your graphics in your favourite painting program using RGB components of 200 for BRIGHT 0 or 255 for BRIGHT 1 (for example, bright yellow would be RGB = 255, 255, 0), save it as a png, and then use my proggie to generate a valid bin file.
By the way, I've found some timing issues when used from pure BASIC. As not the whole screen is updated at once, I've found that animation can be a bit tricky.
Looks promising, although I wonder how much the memory consumption and timing problems are.
Games List 2016 - Games List 2015 - Games List 2014
Am I doing something wrong?
Games List 2016 - Games List 2015 - Games List 2014
Well, here are some things to download.
First of all, the modified version to use just 64 characters and so free up 12Kb of RAM.
- Load this version at 52036
- Once loaded, RANDOMIZE USR 52363
- To enable it, RANDOMIZE USR 52036
- To disable it, RANDOMIZE USR 52039
- Tilemap is at 52363 (81 bytes)
- Tileset is at 53212 (4096 bytes)
- Font is at 52444 (768 bytes)
Here's the conversion tool. It's very, very, very basic. All it does is converting your tileset to a binary you can load at 53212 (or re-assemble alongside the code binary using pasmo). The input must be a png24 file with some restrictions:
- Width of 256 pixels. Height of 64 pixels (for 64 tiles tilesets) or 256 pixels (for full, 256 tiles tilesets).
- Colours MUST be right. I've chosen colours with RGB values of whether 0 or 200 for BRIGHT 0 colours and values of whether 0 or 255 for BRIGHT 1 colour. For example, if you want bright blue to be detected, paint with RGB = 0, 0, 255. If you want dark cyan to be detected, use RGB = 0, 200, 200.
Usage:
Where in.png is your 256x64 or 256x256 png file containing your tileset, out.bin is your desired output filename. Then specify 64 for 64 tiles conversion (will generate a 4096 bytes binary), or nothing for full 256 tiles conversion (will generate a 16384 bytes binary).
I hope these come handy for somebody :)
http://www.mojontwins.com/warehouse/zxodus-mod64.rar
http://www.mojontwins.com/warehouse/zxodus-conv-0.1.rar
Yeah, that was something stupid of me. Not really important.
The thing was, after the program has run, I immediately LIST the program. And whenever I do that some memory get corrupted.
Just don't immediately list your program and you're okay.
(I could say that perhaps some system variables have been changed and therefore LIST will corrupt the 48K memory, but no one cares about that, right?)
tldr: User Error :p
Games List 2016 - Games List 2015 - Games List 2014
Anyways, I have found the routines to be rock solid even BREAKing the execution and doing some BASIC editing which worked flawlessly (albeit very slowly, of course).
Well, let's see what comes out of this :) The tool is dull, but hopefully will make people easier to use their own tilesets.
And I always like to remind you all that we have a fabulous ongoing crap games compo, if you feel inspired ;)
I get this problem too but I can't understand why LIST should go corrupt.
The program works on a IM2 interrupt and shouldn't pose a problem if all registers are correctly PUSHed and POPed.
Maybe Andrew can provdie some insight. I've not looked at the code (yet) but maybe the interrupt return is hard setting the IY register to NR_ERR rather than push/popping it AND LIST is making use of it (although I can't believe that has it will have to DI in order to do so).
Oh yes, so he did... "It seems that the code to switch off the engine (IM 1; RET) can corrupt BASIC unless you ENTER a blank line first. Probably should have made it DI; IM 1; EI; RET;,. Oh well."
..although that leads me to another question.. why DI when returing to IM1? Is it to do with those IFF1 and IFF2 flip-flop thangs?
Disabling interrupts first is allways a clean way.