Saturday, July 16, 2016

Solid progress...

So much progress since the last update! First up, I finally found why esxDOS wasn't working properly on Prism. Turns out that the divMMC automapper was working perfectly. The problem was actually with the SPI port. +3eMMC was working fine because it uses the SPI port slightly differently to esxDOS. A couple of tweaks to the SPI port implementation's sorted everything out - now both esxDOS and +3eMMC work perfectly.

FINALLY!
I was just about to give up on ever seeing this....

Getting esxDOS working means that I can use emulated TRDOS to try out some of the Russian software, some of which works best with no memory contention, or needs more than 128K of memory.

Fire And Ice running from TRD file. A fun and pretty platform puzzle game, similar to Solomon's Key
Mortal Kombat, running from TRD

Graphics modes, graphics modes... What would a Prism update be without more graphics modes? Firstly, I revisited Gigablend mode - this is a mode which blends the main and shadow screen together to give more colours - basically a hardware implementaiton of the software "Gigascreen" effect found in many Russion demos.

Gigablend mode
I'm afraid I don't know the artist to credit them
Probably one of my favourite gigascreen pictures, displayed using Gigablend mode.
I'm really sorry I don't know the artist to credit them.

Looking back through the blog, I noted that I'd not said much about the 4 plane (16 colour) 256x192 mode. This works in a similar way to the Amiga - 4 bitplanes of pixel data which mean each pixel can be one of 16 colours (ie there is no colour clash). Of course, being Prism, this isn't restricted to the 16 default colours, they can be user defined. Here's a few examples








But what about brand new modes?

How about a completely bonkers 4096 colour mode? Brainbow mode is a 3 plane 256x192 resolution mode with a twist. Each pixel can be one of 8 colours (black, blue, red, magenta, green, cyan, yellow or white/grey) the twist is that each 8x8 "attribute" square has a defined red, green and blue element intensity level. Probably of limited usefulness, but hey - it's up to 4096 colours on screen at once.

It really is quite bonkers... 
What else? Well definitely more useful are the new linear modes. In addition to the Radastan and Zesarux linear modes, Prism's ULA2 also has its own linear modes - two of which have been implemented to date.

Firstly, the 128x128 resolution 256 colour mode which uses 16K of VRAM

256 colour linear (clashless) 128x128 mode
...and secondly, the 256x128 resolution 256 colour mode which uses all 32K of VRAM

256 colour linear (clashless) 256x128 mode

Hand-converted from a 256 colour BMP... ignore the couple of alignment errors ;)

Due to the data needed to be moved around, these modes are probably more useful for splash screens or perhaps static pictures in adventure type games than they would be for actual arcade games (happy to be proven wrong though!)


15 comments:

  1. Very nice, I posted it (well, a link) on my blog, :)

    http://www.zxasm.net/index.php/2016/07/17/zx-prism-solid-progress-by-sjb/

    :D

    ReplyDelete
  2. please give more technical information if you can
    more about the video modes and the ram they use please your work looks fantastic
    512 x 384 has to be directx openGLIDE compatible but will need a lot of processing power - is there any way that you could squeeze a couple of ez80190's in there somehow! no one seems to be developing open architecture parallel computers oh dear i seem to have lost the plot again!
    well all the best any way

    ReplyDelete
    Replies
    1. There's already quite a bit of technical information on this blog - although admittedly a lot of it needs updating as the specification has evolved over the last couple of years.

      512x384 mode is basically four normal Spectrum screens, one stored in each 8K VRAM block. You can actually switch to this mode, then load a Spectrum game and it plays in the top-left quarter of the screen.

      I've no idea why you're talking about directx/openGLIDE compatibility - Prism isn't a PC, or a program running on a PC so directX doesn't enter into it at all.

      Likewise, Prism is basically an FPGA with some memory chips and a few other bits of supporting hardware bolted onto it - its CPU is modelled within the FPGA and it's modelled on a Z80 not an ez80190 as I want it to be able to run (most) Spectrum software :)

      I'm sure people are still developing hobbyist parallel computers (but they're quite probably not Spectrum compatible!)

      Delete
  3. could you run an ez80190 at the full 50MHz ? wouldn't it be able to handle 32kb of video ram or more even doesn't it have a 24 bit address bus or did i dream it!

    ReplyDelete
    Replies
    1. No. Prism's an FPGA based computer with the Z80 CPU modelled. It can run at 56MHz, but crashes if interrupts are enabled (at least it does at the moment). I have no idea of the ez80190's specification as I've never looked at it.

      Delete
  4. oh that was it
    how long before we have some PC tools to convert not just screens but entire AVI videos to these new modes please?

    ReplyDelete
    Replies
    1. Video conversion's not on my to-do list, so that'd need to be done by someone else.

      Delete
  5. you couldn't include 320x200 4bits per pixel and 640x200 2bits per pixel and 640x400 monochrome please?

    ReplyDelete
    Replies
    1. Not at this stage, no. I'd have to rewrite a lot of the vga interface modelling (also I don't know if there's enough video memory for some of those)

      Delete
  6. that would make it cpc+ and amiga st compatible slightly?!

    ReplyDelete
  7. how much will it cost and when can i buy one please!

    ReplyDelete
    Replies
    1. Thanks for your enthusiasm Roger. The honest answer is that I have no idea when I'll finish, and I'm not planning on building them to sell (but I will work with anyone who's interested in building them to sell).

      You can try Prism (and other new hardware like ZX Uno and TB Blue/Next) by using the Zesarux emulator - it emulates all of those plus the traditional Spectrums

      Delete