Skąd można "pobrać" rozdzielczość ekranu w ST

Xbios pozwala na odczytanie:
http://toshyp.atari.org/en/Screen_functions.html#Getrez

lecz mi chodzi o sytuację, gdy w komputerze jest karta graficzna i rozdzielczość np.800x600x256 kolorów
jak w prosty sposób (GFA Basic) to odczytać ?

Było miło :) Do widzenia.

2

http://toshyp.atari.org/en/00700a.html#v_opnvwk

z GFA to nie pomogę...

What can be asserted without proof can be dismissed without proof.

3

tutaj są przykłady użycia AES/VDI z GFA
http://freddo.chez.com/GfaBasic/GFABASIC.TXT

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

4

A czy jeżeli ustawię rozdzielczość np. 640x480 lub 800x600 to gry uruchomią się w nich, czy mają jakoś na stałe przypisane rozdzielczości i nie da się ich zmienić?

Jeżeli masz kartę graficzną, to w 99.99% przypadków gra oleje kartę graficzną i będzie wyświetlać przez oryginalne układy. 0.01% gier działających pod GEMem powinno działać ok.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

6

Nie chodzi o grę. Chcę po prostu odczytać programowo rozdzielczość ekranu i ilość kolorów. A jak to zrobić w C ?

Było miło :) Do widzenia.

W C to Ci Sqward podał.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

8 Ostatnio edytowany przez artik-wroc (2014-02-22 17:18:58)

Zbyt to skomplikowane jak dla mnie :)

Mam jeszcze jedno pytanie. Wczytanie obrazu Degas w rozdzielczości ST-HIGH to właściwie jedna instrukcja BLOAD. A jeśli chcę wgrać wspomniany obrazek na ekran w rozdzielczości też 640x400, ale 256 kolorów.
Zamiast 1 bitu na piksel jest 8 (kolor). Czy zatem będzie to polegało na "wrzuceniu" 1 bitu z pliku obrazka co 8 bitów w pamięć ekranu (tak ja to na "chłopski rozum" pojmuję) :)

Było miło :) Do widzenia.

Niekoniecznie. Jeśli masz format ekranu chunky (czyli tak jak na atari) to wrzucasz jeden bajt co osiem bajtów. Jak plannar (czyli tak jak na pc), to tak jak napisałeś.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

10

Adam: chyba odwrotnie?

What can be asserted without proof can be dismissed without proof.

11

Jeśli mamy obrazek Degas w ST-High (planar) i chcemy go wrzucić na ekran który jest w rozdzielczości 640x400 w 256 kolorach (planar), to bierzemy nie bajt ale każde kolejne Słowo z obrazka i wrzucamy co ósme słowo na ekran.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

12

Dzięki za informacje. Dokopałem się do teorii. W dwóch numerach Atari magazynu jest artykuł "Nie bój się bitplanów, czyli obrazek oczami komputera". Muszę więc to dokładnie przestudiować. Tak na marginesie, dla zainteresowanych są to numery 4 i 5 z 1994.

Było miło :) Do widzenia.

13

artik-wroc napisał/a:

Nie chodzi o grę. Chcę po prostu odczytać programowo rozdzielczość ekranu i ilość kolorów. A jak to zrobić w C ?

W C wygląda to tak.

#include <stdio.h>
#include <tos.h>
#include <vdi.h>
#include <aes.h>
#include <stdio.h>
#include <stdlib.h>

int work_in[12],     work_out[57];
int handle,    phys_handle;
int gl_hchar,    gl_wchar,    gl_hbox,    gl_wbox;


int main(int argc, char *argv[])
{
    phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox );
    work_in[0]  = handle = phys_handle;
    v_opnvwk( work_in, &handle, work_out );

    printf("Width: %d\n", work_out[0]);
    printf("Height: %d\n", work_out[1]);
    printf("Colors: %d\n", work_out[13]);
    printf("Palette: %d\n", work_out[39]);
    Cconin();

    //~ v_clsvwk( handle );
    return 0;
}

Napisałem z palca więc może być trochę kulawe.
work_out[0] zwraca szerokośc ekranu pomniejszoną o 1;
work_out[1] zwraca wysokość ekranu pomniejszoną o 1;
work_out[13] zwraca ilość dostępnych kolorów na raz - maksymalnie 256 (również dla trybu HiColor/TrueColor);
work_out[39] zwraca wielkość palety (512, 4096, 0 - dla trybów 256 i HiColor/TrueColor)

Dodatkowo przy pomocy  vq_extnd()  work_out[5] można rozróżnić tryb 256 kolorowy od HiColor/TrueColor
http://www.yardley.cc/atari/compendium/ … .htm#color

Ewentualnie z NVDI możesz użyć funkcji vq_scrninfo która daje szczegółowe informacje o ekranie:
http://toshyp.atari.org/en/Inquire_func … q_scrninfo

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

sqward: no, odwrotnie, nazwy trybów mi się pomyliły, ale opisałem poprwanie co do atari/pc.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

15

Dzięki Cyprian.

Poczytałem o tych bitplanach i odpuszczam, zakręcone to jak baranie rogi.

Było miło :) Do widzenia.

16

Artik, może napisz co konkretnie chcesz zrobić, no i w jakim języku.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

17

Chciałem wczytać zrzut ekranu w mono (wiadomo rozdzielczość HI, rozmiar 32000) pod kartą graficzną w tej samej rozdzielczości 640x400, ale przy 256 kolorach.

Było miło :) Do widzenia.

18

jeśli się nie mylę to funkcją vr_trnfm możesz przekonwertować obraz np. mono do formatu karty graficznej.
po konwersji obraz można przenieść do kary funkcją vro_cpyfm/vrt_cpyfm

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

19

artik-wroc napisał/a:

Chciałem wczytać zrzut ekranu w mono (wiadomo rozdzielczość HI, rozmiar 32000) pod kartą graficzną w tej samej rozdzielczości 640x400, ale przy 256 kolorach.

A przypadkiem nie wystarczy wypełnić dwu pozostałych bitów? Jak masz zapalony bit punktu - daj zapalony na pozostałych kanałach. Czyli według mnie powinno zadziałać: wczytuję bajt danych, potem za tym bajtem dubluję dwa bajty z tymi samymi danymi, potem kolejny i tak do końca. Może toporne rozwiązanie, ale powinno zadziałać.

Sikor umarł...

20 Ostatnio edytowany przez artik-wroc (2014-02-24 10:58:56)

Dzięki za wszelkie informacje, teraz muszę się przez to przegryźć. Mam przykłady w C i będę próbował zrozumieć.

Znalazłem też wątek o odczytywanie rozdzielczości w GFA:
http://69.90.163.150/~atari276/viewtopi … &t=702
jest tak jak pisał Cyprian.

Było miło :) Do widzenia.

21

Sikorex, niestety tak by było za łatwo :)
O ile znamy organizację obrazka źródłowego (640x400, 1 bit na piksel), to nie do końca wiemy jak to jest w przypadku karty graficznej. Wiemy że jest to rozdzielczość 640x400 w 256 kolorach, ale nie wiemy jak piksele opisane są w pamięci. Mogą więc być one w organizacji planarnej - czyli każde kolejne 16 pikseli jest rozbite na osiem dwubajtowych planów albo też w  organizacji chunky - 1 bajt na piksel.
Trzeba więc rozpoznać tryb graficzny a potem albo GEMem albo ręcznie przekonwertować grafikę na ekran.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

22 Ostatnio edytowany przez artik-wroc (2014-02-25 10:44:24)

Cyprian napisał/a:

work_out[0] zwraca szerokośc ekranu pomniejszoną o 1;
work_out[1] zwraca wysokość ekranu pomniejszoną o 1;
work_out[13] zwraca ilość dostępnych kolorów na raz - maksymalnie 256 (również dla trybu HiColor/TrueColor);
work_out[39] zwraca wielkość palety (512, 4096, 0 - dla trybów 256 i HiColor/TrueColor)

Właśnie tak jest, jak napisałeś. Ilość kolorów max.256, paleta max.16384
Najważniejsze, że jest rozdzielczość :)

Znalazłem też przykład zastosowania w GFA polecenia vr_trnfm, jest więc dobrze.

Było miło :) Do widzenia.