VOGONS


Planet X3 Open Source Edition

Topic actions

Reply 20 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Thanks for your help. Got it working.
Now what wideo mode should work with go329?
I tried to force amstrad but it gave garbled mono image.
I compiled version 1.1.0-5-g18db8d9
there is no olivetti mode to select.

edit:
nwm just had to change branch from git...

Reply 21 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Something to do with addressing?

edit:
adressing is only for 6300 plus or 6310. Olivetti m24 is plain 6300, I think.

Reply 22 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

The green picture is quite easy to explain:
Until now, only mode setting, fade-in and tile plotting were implemented for the GO329 board, and on top of that, I forgot to change the fade-in entry in that mode's copy-pasted call table.

I just fixed that and added all the other missing functionality.
It should™ now work.

Reply 23 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Well definitely better.

Reply 24 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

Turns out that I misremembered how the GO329 addressing works:
It always arranges the bit planes in a 128 KiB block needed for the 640x400 pixel 16-color mode, even for the 640x200 pixel 16-color mode.

There was also a mismatch between the frame buffer base addresses:
The base address configured in the block of video mode specific variables was a0000h (first GO329 bit plane), but the tile drawing code still expected b8000h (original M24 VRAM).

Everything should work better, now, but I did not look into the bit plane ordering mismatches, yet.

Apologies for the inconveniences. Writing video code blindly tends to be a bit error prone.

Reply 25 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Heh, no inconvenience, just came from sauna and having a nice cold beer 😁

One thing we have to consider is me not having a real olivetti monitor, but just using by change made rgbtohdmi profile...

Reply 26 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

Alright. The bit plane assignment should be better, now.

Can you check whether the colors look right for these four use cases?

  • Menu screen and in-game frame
  • Game window, i.e. tiles
  • Text with background color
  • Radar screens
Kekkula wrote on 2026-01-18, 20:19:

One thing we have to consider is me not having a real olivetti monitor, but just using by change made rgbtohdmi profile...

That should be irrelevant, provided that the normal CGA colors look right e.g. in text mode.

Reply 27 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

I haven't red the manual so I don't know how to enter radar mode 😁... or different text modes.

Reply 28 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

Meh. Back to the drawing board. 😐

Reply 29 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie
Kekkula wrote on 2026-01-24, 17:19:

I haven't red the manual so I don't know how to enter radar mode 😁... or different text modes.

You build a radar station, select it and tell it to do a particular type of scan:
Hydro scan is supposed to be blue, metal scan yellow, mineral scan dark gray and thermal scan red.
(In easy mode, you have enough resources to build the radar station right away.)

There is no “different text mode”. Various text elements simply have a (non-black) background color.

Do menu screen and game window look right, now?

P.S.: It would be very helpful if that video card's documentation made sense. 😒

Reply 30 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Well... different 🙃...
Btw picture shows what driver I'm using, can't quite remember where I got it or why I'm using it 🤷‍♂️
I built radar station, but to scan you need power so I built power station and solar panels, but then something started attacking my buildings, so I did the only reasonable thing and rage quited the game 🤪

Reply 31 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

I'm sorry. This isn't going anywhere.

Since you are clearly already building everything from source, can you play around with the segment shifting in i_plot_tile_go329 in the file src/video/scrdraw.s and then just tell me what works?
That function essentially just calls i_plot_tile_cga four times and shifts the target segment to different 32 KiB blocks of the frame buffer (i.e. a000h, a800h, b000h and b800h) between the calls.
The next call of i_plot_tile_cga will reuse the source pointer (si) of the previous call and thus continue with the bitmap for the next bit plane.
Note: The target segment (es, initialized with a000h) must be restored to its original value before the function returns.

Thank you very much!

Reply 32 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Sorry, can't make heads or tales of it.
Addresses have to correlate somehow each other, don't know how, and can't do the math.
I looked into setmode.s you seem to set card to 640x200 mode by
Mov ax,0041h
Int 10h
Programmer's guide uses
MOV AH,0
MOV AL,41H
INT 10H
What's the difference?
Also programmer's guide seems to set lut to different values depending on if one is using premade cga? Palette or custom palette, is it needed?
Then it says that in 16 color mode driver will combine three deb planes A0000:0, A8000:0 and B8000:0 with vdc plane B8000:0. Is this automatic and does the driver also automatically write to these locations?

Reply 33 of 34, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie
Kekkula wrote on 2026-01-25, 15:19:
I looked into setmode.s you seem to set card to 640x200 mode by Mov ax,0041h Int 10h Programmer's guide uses MOV AH,0 MOV AL,41H […]
Show full quote

I looked into setmode.s you seem to set card to 640x200 mode by
Mov ax,0041h
Int 10h
Programmer's guide uses
MOV AH,0
MOV AL,41H
INT 10H
What's the difference?

The difference is that setting both halves of the register in one go is more efficient.

Maybe my tile plotting code is unnecessarily flexible and therefore unnecessarily confusing. Let's write it like this, instead:

i_plot_tile_go329:
mov ax,a000h ; 1st bit plane
mov es,ax
call i_plot_tile_cga
sub di,4
mov ax,a800h ; 2nd bit plane
mov es,ax
call i_plot_tile_cga
sub di,4
mov ax,b000h ; 3rd bit plane
mov es,ax
call i_plot_tile_cga
sub di,4
mov ax,b800h ; 4th bit plane
mov es,ax
call i_plot_tile_cga
; make sure that es is a000h, again (needed by other functions)
mov ax,a000h
mov es,ax
ret

With this variant, you can just swap the lines with the “bit plane” comments as needed, namely until the in-game tiles have the expected colors.

Reply 34 of 34, by Kekkula

User metadata
Rank Member
Rank
Member

Well... start screen is always pink no matter how the addresses are set... but I managed get few colours match.
By setting
1. plane 0b000h
2. plane 0a000h
3. plane 0a800h
4. plane 0b800h
How ever water is pink, I can get water kinda blue but then everything else is screwed.