OricExos - making the impossible

Want to discuss about Demos on the Oric, here you are !
User avatar
mikeb
Flight Lieutenant
Posts: 282
Joined: Wed Sep 05, 2018 8:03 pm
Location: West Midlands, UK
Contact:

Re: OricExos - making the impossible

Post by mikeb »

iss wrote: Wed Oct 10, 2018 10:14 pm @Dbug: it's really weird - if 2 Orics output white then the 3rd become invisible no matter which color it displays
It's not weird -- it's logical. Literally :)

1 or 1 = 1 ... although you do seem to have a third state of "almost one" in the colour bars, (0, almost 1, very much 1).

The voltages won't add up as long as you continue to treat them as logic levels and just wire-or them together. You need analogue levels to go further, so do the resistor ladder thing, you know you need to!
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss »

Mike, you are right, but it still weird :). The 'secret' is in the internal 200 Ohms resistors - I hooked RGB signals AFTER them, so they play their role in the 'equation' and the output is (as I already said) OR-ed but not exactly - it's analogue circuit already. Basic simulation (with no claims for precision) HERE. Another option is to use diodes to avoid outputs in state '0' to pull current (see HERE) - I'll try it from curiosity and because it's easy :). And I think this have to be the case when we want 'lighting fast' screen update - every Oric paints 1/4 from the screen and has only its famous 8 colors.
For more colors we will use definitely R-2R nice 16-step ladder, right?
But there are 2 variants or wiring (or may be more :? ) - I will draw some pictures later to show what I mean and for easier explanation. The very good thing for R-2R ladder is that we already have "2R"s (i.e the internal 200 Ohms) so connecting the missing "R"s is really piece of cake. What bother me is that using this type of connection will not help to avoid Oric attributes constrains. We will have more colors but I'm not sure how many - may be much less than the expected...

Else, I took quick look at the CSAVE routine and I think it's absolutely possible to make it F16-saver! What we have to consider is that we have to leave master's ROM unchanged because the microdisc's ROMDIS (still remember this old discussion). Of course this can be fixed but let's do it only if it's really necessary. And this reminds me I didn't test the beast with any storage device. Ugh, so many things to do...
Symoon wrote: Thu Oct 11, 2018 11:50 amActually, how does that work: you are loading a full program on each machine, one after the other? Each machine waitng for its own program? I suppose the programs are different?
Master's Tape-Out is directly connected (simple wire) to all 3 other Oric's Tape-In. So, when I type CSAVE on the Master (only it has keyboard) then all 3 slaves together are CLOADing the same program. Every slave has its unique number (a patched byte at #EDB0) and executes specific part of the loaded program (see in the github sources for details).
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: OricExos - making the impossible

Post by Symoon »

iss wrote: Thu Oct 11, 2018 9:52 pm Else, I took quick look at the CSAVE routine and I think it's absolutely possible to make it F16-saver! What we have to consider is that we have to leave master's ROM unchanged because the microdisc's ROMDIS
The problem here is that the sinusoid length is set in a part of code which would require to recreate a complete CSAVE (even stripped) routine in RAM. I don't know how long it would be, but it is likely that you will lose much time on the Master program, loading this routine...
iss wrote: Thu Oct 11, 2018 9:52 pmMaster's Tape-Out is directly connected (simple wire) to all 3 other Oric's Tape-In. So, when I type CSAVE on the Master (only it has keyboard) then all 3 slaves together are CLOADing the same program.
Aha, so it's already parallel. So indeed the only way to accelerate is to work on the signal.
EDIT: the minimal length set in F16 for "1" bits is 115µs (instead of 416µs). I don't know how the VIA reacts and if it is able to go that fast when saving, so maybe starting slower would be safe.
User avatar
mikeb
Flight Lieutenant
Posts: 282
Joined: Wed Sep 05, 2018 8:03 pm
Location: West Midlands, UK
Contact:

Re: OricExos - making the impossible

Post by mikeb »

iss wrote: Thu Oct 11, 2018 9:52 pm ... internal 200 Ohms resistors - I hooked RGB signals AFTER them, so they play their role in the 'equation' and the output is (as I already said) OR-ed but not exactly - it's analogue circuit already.
Well, all digital circuits are analogue underneath, and all analogue circuits move whole electrons around (or not), which are digital ... it's all just layers of models of ideas :)

The point is that, however "analogue" you feel the RGB output of Oric is, it's designed to be treated as digital (well, binary). Two levels.

You are getting a third intermediate level, because when they all agree at "0", you get a "0". When one output tries to assert "1" you get an "almost-1", as the others are dragging it down a bit. When two or more outputs assert "1", then you're getting full level "1" and nothing more will happen. Connecting many identical voltage sources in parallel will not increase the voltage further.

For more *levels* (more colours), you need to distinguish between each Oric's output, i.e. weight them.

If you want to stick with 8 colours, and just combine things in an overlay-way, you may need instead to make them *more* digital, and re-buffer them after you combine them, to stop that intermediate "almost red" from a single Oric fighting three others :)
User avatar
Dbug
Site Admin
Posts: 4437
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug »

Ok, pardon me if the question is stupid, I suck at hardware, I approach it all like if it was pure digital signals, but basically what would work for me as an usable compromise is basically something like that:
mixing_idea.png
Basically generate two distinct paths for the signals:
- A "digital/TTL" path, which is what ISS did at the moment, which allows us to have multiple oric to cooperate on the same picture by complementing each other, so you can have normal Oric display 4 times faster, or cooperate with component splitting to remove constraints, the important here being that when one of the Oric emits a 1 on a component, the three other output a zero.
- A "weighted gradient" path, which can generate intermediate values based on the total voltage

...and in between, some kind of "XOR" that makes the final output uses one or the other path depending of the input signal:
- if we have only 1 signal active, we just use the first path
- else we use the second path

Clearly with something like that we lose the possibility to have the full 4096 theorical colors we could have, but I don't see any way to get all the colors we want, while being able to do the fast complementary display, without adding additional logic/circuitry/other pins.

So basically:
- Full speed with just the normal 8 colors by splitting on the four machines
- With two machines setting the same component out, you get 25% less brightness
- With three machines, 50% less
- With four machines, 75% less

Ideally (that would be 50% first, but I don't see how that can work :D )
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss »

Dbug, Mike, yes, you are right and from point of view of the "whole picture" we mean actually the same thing! This is good! :D

I'll try to summarize the possibilities:
1) Direct connection
x1.jpg
Pros: high speed, simple hardware, simple to program.
Cons: 8 colors, additional colors possible but little unpredictable, need experimenting to guess its capabilities.

2) 4-bits ladder
x2.jpg
Pros: 16 shades of each color - theoretically 16*16*16=4096 colors
Cons: depends on serial attributes
(Honestly, I am a bit confused how to program in this case...).

3) bit planes
x3.jpg
Pros: 8 shades of each color - 512 colors, no serial attributes, possible extras with 4th Oric, simple to program
Cons: ?
In this case the 4th Oric can be used as one of the following options:
- logical on/off for every pixel (for dynamic effects, fades, etc.);
- high/low palette - here will be tricky:
= using only black/white "control" pixels we can change simultaneously the intensity of R,G,B for every single pixel thus 1024 colors(!) and easy to program;
= using any of the 8 colors to control the intensity of R,G,B individually gives more colors but dependent on serial attributes (I can't calculate how many will be the colors and in my opinion the programming will be hell, but maybe it only looks difficult...).

So, I think to make all this 3 cases and using multiplexers to select one of them "programmatically".
Please, check the variants - it's possible that I'm missing something or maybe there are other possibilities...
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss »

iss wrote: Fri Oct 12, 2018 9:43 pm 3) bit planes: Pros: 8 shades of each color - 512 colors, no serial attributes
Hm, this is not true - 8 shades are possible but not for every single pixel i.e. within one hires byte we can have less shades but how many?
Well, all comments and ideas are appreciated!
User avatar
Dbug
Site Admin
Posts: 4437
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug »

So, let see :)
1) Direct connection
That one is what we currently have, no matter what else we want to add, we need that one as the core display feature because it allows us to still use the Oric Exos as a standard Oric will all the existing Oric software, and it removes attributes constraints for cheap as well as providing easy x4 speed increase.
2) 4-bits ladder
(Honestly, I am a bit confused how to program in this case...).
It's definitely not easy to program with that one... except for gradients!
With the 4 bits ladder, you can easily do color plasmas, colorful rasters, display high-color intro pictures, but yeah, using that for animating elements require perfect synchronization of the four machines on all pixels modified all the time.

Definitely a Whaou! factor element though :)
3) bit planes
If I understand correctly, this one is a 3 bit ladder accross the components of each machine, so you use the 8 colors of each ORIC to create shades of intensities, so machine 1 has different red intensities, machine 2 varies the green and machine 3 varies the blue component.

It's indeed easy to use (for whoever is used to Oric programming), just use the colors as intensities, a bit like on the French Minitel where the 8 colors were converted to shades of gray on the monochrome minitel displays.

And on top of that you use the 4th machine's RGB output to control the signal of the three other machines: This part I'm not sure about how I would actually use that, need to think about it... if you have concrete examples, that would help :D
So, I think to make all this 3 cases and using multiplexers to select one of them "programmatically".
So, how would you switch between these? Poke somewhere in page 3 on the master Oric?

Ideally, we could switch that on the fly during the screen refresh, that would allow for example for making games with colorful dashboards for the scores, game title, number of lifes, etc... and have the rest of the screen using the fast shared display mode, obviously that would require good timings, but we know that we can sync our machines with locked VIA timers and VSync, so that should be doable.
User avatar
waskol
Flight Lieutenant
Posts: 414
Joined: Wed Jun 13, 2007 8:20 pm
Location: FRANCE, Paris

Re: OricExos - making the impossible

Post by waskol »

Atmos Grid Computing pôwaa !
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OricExos - making the impossible

Post by ibisum »

Honestly, I am aghast at where this is going. Mode 2 looks binoculars huge... but all of them are just .. beyond the pale. I'm guessing though, there is going to need to be some nice new tooling set up for this .. pictconv is gonna need an update, for sure .. ;)
User avatar
Dbug
Site Admin
Posts: 4437
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug »

Having tools to convert is going to be a necessity, I'm not going to patch Lorigraph to run on four Orics :p

Regarding the graphical specs, you need to remember that the Oric has 8000 bytes of video memory, so with four of these we get 32000 bytes of VRAM, which basically is the same specs at the Atari ST.

On purely static images, it's probably possible to get close to what an Atari ST could display, but on animated things, that's not going to be that simple.

For example if we wanted to do a game like "GoldRunner", we would need two bitplans for the scroller, and two bitplans for the sprites, which is not really something we can easily do with this system.
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss »

Just small update with some color improvement...
2018-10-24_00-33-50.jpg
This is output from 3 Orics (the already posted "bars demo") but now with 3 trimmers to adjust RGB levels.
More news are coming ... (hopefully soon).
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: OricExos - making the impossible

Post by Symoon »

Grey and orange with an Oric... You made it ;)
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: OricExos - making the impossible

Post by iss »

...and now with 4 Orics are definitely four bands per color!
Unfortunately I can't take better but the live colors are really beautiful!
20181024_203934.jpg
User avatar
Dbug
Site Admin
Posts: 4437
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OricExos - making the impossible

Post by Dbug »

Nice :)
So, with 4 intensities per component, we get 4*4*4=64 possible colors.
Post Reply