Temat: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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ć?

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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.

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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ę) :)

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

Było miło :) Do widzenia.

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

Adam: chyba odwrotnie?

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

11

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

Dzięki Cyprian.

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

Było miło :) Do widzenia.

16

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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.

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

Było miło :) Do widzenia.

21

Odp: Rozdzielczość ekranu

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

Odp: Rozdzielczość ekranu

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.

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

Było miło :) Do widzenia.