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