Merge branch 'master' into cga-composite-settings
This commit is contained in:
@@ -278,6 +278,7 @@ typedef struct ibm8514_t {
|
||||
int _8514on;
|
||||
int _8514crt;
|
||||
PALETTE _8514pal;
|
||||
uint8_t ven_clock;
|
||||
|
||||
latch8514_t latch;
|
||||
|
||||
|
||||
@@ -498,9 +498,12 @@ extern const device_t bt485a_ramdac_device;
|
||||
extern const device_t gendac_ramdac_device;
|
||||
extern const device_t ibm_rgb528_ramdac_device;
|
||||
extern const device_t ics2494an_305_device;
|
||||
extern const device_t ati18810_device;
|
||||
extern const device_t ati18811_0_device;
|
||||
extern const device_t ati18811_1_device;
|
||||
extern const device_t ati18810_28800_device;
|
||||
extern const device_t ati18811_0_28800_device;
|
||||
extern const device_t ati18811_1_28800_device;
|
||||
extern const device_t ati18810_mach32_device;
|
||||
extern const device_t ati18811_0_mach32_device;
|
||||
extern const device_t ati18811_1_mach32_device;
|
||||
extern const device_t ics2595_device;
|
||||
extern const device_t icd2061_device;
|
||||
extern const device_t ics9161_device;
|
||||
|
||||
@@ -28,7 +28,7 @@ msgid "&Pause"
|
||||
msgstr "&Pauza"
|
||||
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
msgstr "Pauza"
|
||||
|
||||
msgid "Re&sume"
|
||||
msgstr "&Wznów"
|
||||
@@ -49,7 +49,7 @@ msgid "&Resizeable window"
|
||||
msgstr "&Okno o zmiennym rozmiarze"
|
||||
|
||||
msgid "R&emember size && position"
|
||||
msgstr "P&amiętaj rozmiar &i pozycję"
|
||||
msgstr "P&amiętaj rozmiar i pozycję"
|
||||
|
||||
msgid "Re&nderer"
|
||||
msgstr "Re&nderer"
|
||||
@@ -193,7 +193,7 @@ msgid "&Settings..."
|
||||
msgstr "&Ustawienia..."
|
||||
|
||||
msgid "Settings..."
|
||||
msgstr ""
|
||||
msgstr "Ustawienia..."
|
||||
|
||||
msgid "&Update status bar icons"
|
||||
msgstr "&Aktualizuj ikony na pasku statusu"
|
||||
@@ -220,7 +220,7 @@ msgid "End trace"
|
||||
msgstr "Zakończ śledzenie"
|
||||
|
||||
msgid "&Help"
|
||||
msgstr "&Pomoc"
|
||||
msgstr "Pomo&c"
|
||||
|
||||
msgid "&Documentation..."
|
||||
msgstr "&Dokumentacja..."
|
||||
@@ -361,7 +361,7 @@ msgid "Configure"
|
||||
msgstr "Konfiguruj"
|
||||
|
||||
msgid "CPU:"
|
||||
msgstr ""
|
||||
msgstr "Procesor:"
|
||||
|
||||
msgid "CPU type:"
|
||||
msgstr "Rodzaj procesora:"
|
||||
@@ -424,25 +424,25 @@ msgid "XGA Graphics"
|
||||
msgstr "Grafika XGA"
|
||||
|
||||
msgid "IBM PS/55 Display Adapter Graphics"
|
||||
msgstr ""
|
||||
msgstr "Karta graficzna IBM PS/55"
|
||||
|
||||
msgid "Keyboard:"
|
||||
msgstr "Klawiatura:"
|
||||
|
||||
msgid "Keyboard"
|
||||
msgstr ""
|
||||
msgstr "Klawiatura"
|
||||
|
||||
msgid "Mouse:"
|
||||
msgstr "Mysz:"
|
||||
|
||||
msgid "Mouse"
|
||||
msgstr ""
|
||||
msgstr "Mysz"
|
||||
|
||||
msgid "Joystick:"
|
||||
msgstr "Joystick:"
|
||||
|
||||
msgid "Joystick"
|
||||
msgstr ""
|
||||
msgstr "Joystick"
|
||||
|
||||
msgid "Joystick 1..."
|
||||
msgstr "Joystick 1..."
|
||||
@@ -475,7 +475,7 @@ msgid "MIDI In Device:"
|
||||
msgstr "Urządzenie wejściowe MIDI:"
|
||||
|
||||
msgid "MIDI Out:"
|
||||
msgstr ""
|
||||
msgstr "Wyjście MIDI:"
|
||||
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Samodzielne urządzenie MPU-401"
|
||||
@@ -517,7 +517,7 @@ msgid "LPT4 Device:"
|
||||
msgstr "Urządzenie LPT4:"
|
||||
|
||||
msgid "Internal LPT ECP DMA:"
|
||||
msgstr ""
|
||||
msgstr "Wewnętrzne DMA LPT ECP:"
|
||||
|
||||
msgid "Serial port 1"
|
||||
msgstr "Port szeregowy 1"
|
||||
@@ -640,10 +640,10 @@ msgid "MO drives:"
|
||||
msgstr "Napędy MO:"
|
||||
|
||||
msgid "MO:"
|
||||
msgstr ""
|
||||
msgstr "MO:"
|
||||
|
||||
msgid "Removable disks:"
|
||||
msgstr ""
|
||||
msgstr "Dyski wymienne:"
|
||||
|
||||
msgid "Removable disk drives:"
|
||||
msgstr "Stacje dysków wymiennych:"
|
||||
@@ -742,16 +742,16 @@ msgid "Surface images"
|
||||
msgstr "Obrazy powierzchni"
|
||||
|
||||
msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
|
||||
msgstr "Maszyna \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/machines. Przełączanie na dostępną maszynę."
|
||||
msgstr "Maszyna „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/machines. Przełączanie na dostępną maszynę."
|
||||
|
||||
msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
|
||||
msgstr "Karta wideo \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Przełączanie na dostępną kartę graficzną."
|
||||
msgstr "Karta wideo „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Przełączanie na dostępną kartę graficzną."
|
||||
|
||||
msgid "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
|
||||
msgstr "Karta wideo 2 \"%hs\" nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Wyłączenie drugiej karty graficznej."
|
||||
msgstr "Karta wideo 2 „%hs” nie jest dostępna, ponieważ brakuje ROM-ów w katalogu roms/video. Wyłączenie drugiej karty graficznej."
|
||||
|
||||
msgid "Device \"%hs\" is not available due to missing ROMs. Ignoring the device."
|
||||
msgstr "Urządzenie \"%hs\" nie jest dostępne, ponieważ brakuje ROM-ów. Ignorowanie urządzenia."
|
||||
msgstr "Urządzenie „%hs” nie jest dostępne, ponieważ brakuje ROM-ów. Ignorowanie urządzenia."
|
||||
|
||||
msgid "Machine"
|
||||
msgstr "Maszyna"
|
||||
@@ -772,13 +772,13 @@ msgid "Ports (COM & LPT)"
|
||||
msgstr "Porty (COM & LPT)"
|
||||
|
||||
msgid "Ports"
|
||||
msgstr ""
|
||||
msgstr "Porty"
|
||||
|
||||
msgid "Serial ports"
|
||||
msgstr ""
|
||||
msgstr "Porty szeregowe"
|
||||
|
||||
msgid "Parallel ports"
|
||||
msgstr ""
|
||||
msgstr "Porty równoległe"
|
||||
|
||||
msgid "Storage controllers"
|
||||
msgstr "Kontrolery pamięci masowej"
|
||||
@@ -787,13 +787,13 @@ msgid "Hard disks"
|
||||
msgstr "Dyski twarde"
|
||||
|
||||
msgid "Disks:"
|
||||
msgstr ""
|
||||
msgstr "Dyski:"
|
||||
|
||||
msgid "Floppy:"
|
||||
msgstr ""
|
||||
msgstr "Dyskietki:"
|
||||
|
||||
msgid "Controllers:"
|
||||
msgstr ""
|
||||
msgstr "Kontrolery:"
|
||||
|
||||
msgid "Floppy & CD-ROM drives"
|
||||
msgstr "Napędy dyskietek i CD-ROM"
|
||||
@@ -805,7 +805,7 @@ msgid "Other peripherals"
|
||||
msgstr "Inne urządzenia peryferyjne"
|
||||
|
||||
msgid "Other devices"
|
||||
msgstr ""
|
||||
msgstr "Inne urządzenia"
|
||||
|
||||
msgid "Click to capture mouse"
|
||||
msgstr "Kliknij, by przechwycić mysz"
|
||||
@@ -952,16 +952,16 @@ msgid "Internal device"
|
||||
msgstr "Urządzenie wewnętrzne"
|
||||
|
||||
msgid "&File"
|
||||
msgstr ""
|
||||
msgstr "&Plik"
|
||||
|
||||
msgid "&New machine..."
|
||||
msgstr ""
|
||||
msgstr "&Nowa maszyna..."
|
||||
|
||||
msgid "&Check for updates..."
|
||||
msgstr ""
|
||||
msgstr "&Sprawdź aktualizacje..."
|
||||
|
||||
msgid "Exit"
|
||||
msgstr "Zakończ"
|
||||
msgstr "Za&kończ"
|
||||
|
||||
msgid "No ROMs found"
|
||||
msgstr "Nie znaleziono ROM-ów"
|
||||
@@ -982,7 +982,7 @@ msgid "86Box v"
|
||||
msgstr "86Box v"
|
||||
|
||||
msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
|
||||
msgstr "Emulator starych komputerów\n\nAutorzy: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, i inni.\n\nZ wcześniejszym wkładem od Sarah Walker, leilei, JohnElliott, greatpsycho i innych.\n\nPrzetłumaczony przez: Fanta-Shokata, Lili1228\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji."
|
||||
msgstr "Emulator starych komputerów\n\nAutorzy: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, i inni.\n\nZ wcześniejszym wkładem od Sarah Walker, leilei, JohnElliott, greatpsycho i innych.\n\nPrzetłumaczony przez: Lili1228\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji."
|
||||
|
||||
msgid "Hardware not available"
|
||||
msgstr "Sprzęt niedostępny"
|
||||
@@ -1057,7 +1057,7 @@ msgid "Pause execution"
|
||||
msgstr "Zatrzymaj wykonywanie"
|
||||
|
||||
msgid "Ctrl+Alt+Del"
|
||||
msgstr ""
|
||||
msgstr "Ctrl+Alt+Del"
|
||||
|
||||
msgid "Press Ctrl+Alt+Del"
|
||||
msgstr "Naciśnij Ctrl+Alt+Del"
|
||||
@@ -1069,271 +1069,271 @@ msgid "Hard reset"
|
||||
msgstr "Twardy reset"
|
||||
|
||||
msgid "Force shutdown"
|
||||
msgstr ""
|
||||
msgstr "Wymuś zamknięcie"
|
||||
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
msgstr "Uruchom"
|
||||
|
||||
msgid "Not running"
|
||||
msgstr ""
|
||||
msgstr "Wyłączona"
|
||||
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
msgstr "Uruchomiona"
|
||||
|
||||
msgid "Paused"
|
||||
msgstr ""
|
||||
msgstr "Wstrzymana"
|
||||
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
msgstr "Oczekiwanie"
|
||||
|
||||
msgid "Powered Off"
|
||||
msgstr ""
|
||||
msgstr "Wyłączona"
|
||||
|
||||
msgid "%n running"
|
||||
msgstr ""
|
||||
msgstr "%n uruchomion(a/e/ych)"
|
||||
|
||||
msgid "%n paused"
|
||||
msgstr ""
|
||||
msgstr "%n wstrzyman(a/e/ych)"
|
||||
|
||||
msgid "%n waiting"
|
||||
msgstr ""
|
||||
msgstr "%n oczekując(a/e/ych)"
|
||||
|
||||
msgid "%1 total"
|
||||
msgstr ""
|
||||
msgstr "Łącznie %1"
|
||||
|
||||
msgid "VMs: %1"
|
||||
msgstr ""
|
||||
msgstr "Maszyny wirtualne: %1"
|
||||
|
||||
msgid "System Directory:"
|
||||
msgstr ""
|
||||
msgstr "Folder systemowy:"
|
||||
|
||||
msgid "Choose directory"
|
||||
msgstr ""
|
||||
msgstr "Wybierz folder"
|
||||
|
||||
msgid "Choose configuration file"
|
||||
msgstr ""
|
||||
msgstr "Wybierz plik konfiguracyjny"
|
||||
|
||||
msgid "86Box configuration files (86box.cfg)"
|
||||
msgstr ""
|
||||
msgstr "Pliki konfiguracyjne 86Boxa (86box.cfg)"
|
||||
|
||||
msgid "Configuration read failed"
|
||||
msgstr ""
|
||||
msgstr "Nieudany odczyt konfiguracji"
|
||||
|
||||
msgid "Unable to open the selected configuration file for reading: %1"
|
||||
msgstr ""
|
||||
msgstr "Nie udało się otworzyć wybranego pliku konfiguracyjnego do odczytu: %1"
|
||||
|
||||
msgid "Use regular expressions in search box"
|
||||
msgstr ""
|
||||
msgstr "Użyj wyrażeń regularnych w polu wyszukiwania"
|
||||
|
||||
msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?"
|
||||
msgstr ""
|
||||
msgstr "Liczba obecnie aktywnych maszyn: %1. Czy na pewno chcesz, mimo to, wyjść z menedżera maszyn wirtualnych?"
|
||||
|
||||
msgid "Add new system wizard"
|
||||
msgstr ""
|
||||
msgstr "Kreator dodawania nowego systemu"
|
||||
|
||||
msgid "Introduction"
|
||||
msgstr ""
|
||||
msgstr "Wstęp"
|
||||
|
||||
msgid "This will help you add a new system to 86Box."
|
||||
msgstr ""
|
||||
msgstr "Ten kreator pomoże Ci dodać nowy system do 86Boxa."
|
||||
|
||||
msgid "New configuration"
|
||||
msgstr ""
|
||||
msgstr "Nowa konfiguracja"
|
||||
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
msgstr "Ukończono"
|
||||
|
||||
msgid "The wizard will now launch the configuration for the new system."
|
||||
msgstr ""
|
||||
msgstr "Kreator teraz uruchomi konfigurację dla nowego systemu."
|
||||
|
||||
msgid "Use existing configuration"
|
||||
msgstr ""
|
||||
msgstr "Użyj istniejącej konfiguracji"
|
||||
|
||||
msgid "Type some notes here"
|
||||
msgstr ""
|
||||
msgstr "Wpisz tutaj swoje notatki"
|
||||
|
||||
msgid "Paste the contents of the existing configuration file into the box below."
|
||||
msgstr ""
|
||||
msgstr "Wklej zawartość istniejącego pliku konfiguracyjnego w poniższe pole."
|
||||
|
||||
msgid "Load configuration from file"
|
||||
msgstr ""
|
||||
msgstr "Wczytaj konfigurację z pliku"
|
||||
|
||||
msgid "System name"
|
||||
msgstr ""
|
||||
msgstr "Nazwa systemu"
|
||||
|
||||
msgid "System name:"
|
||||
msgstr ""
|
||||
msgstr "Nazwa systemu:"
|
||||
|
||||
msgid "System name cannot contain certain characters"
|
||||
msgstr ""
|
||||
msgstr "Nazwa systemu nie może zawierać niektórych znaków"
|
||||
|
||||
msgid "System name already exists"
|
||||
msgstr ""
|
||||
msgstr "Nazwa systemu już istnieje"
|
||||
|
||||
msgid "Please enter a directory for the system"
|
||||
msgstr ""
|
||||
msgstr "Wprowadź folder dla systemu"
|
||||
|
||||
msgid "Directory does not exist"
|
||||
msgstr ""
|
||||
msgstr "Folder nie istnieje"
|
||||
|
||||
msgid "A new directory for the system will be created in the selected directory above"
|
||||
msgstr ""
|
||||
msgstr "Zostanie utworzony nowy folder dla systemu w wybranym powyżej folderze"
|
||||
|
||||
msgid "System location:"
|
||||
msgstr ""
|
||||
msgstr "Lokalizacja systemu:"
|
||||
|
||||
msgid "System name and location"
|
||||
msgstr ""
|
||||
msgstr "Nazwa i lokalizacja systemu"
|
||||
|
||||
msgid "Enter the name of the system and choose the location"
|
||||
msgstr ""
|
||||
msgstr "Podaj nazwę system i wybierz jego lokalizację"
|
||||
|
||||
msgid "Enter the name of the system"
|
||||
msgstr ""
|
||||
msgstr "Podaj nazwę systemu"
|
||||
|
||||
msgid "Please enter a system name"
|
||||
msgstr ""
|
||||
msgstr "Proszę podać nazwę systemu"
|
||||
|
||||
msgid "Display name (optional):"
|
||||
msgstr ""
|
||||
msgstr "Nazwa wyświetlana (opcjonalne):"
|
||||
|
||||
msgid "Display name:"
|
||||
msgstr ""
|
||||
msgstr "Nazwa wyświetlana:"
|
||||
|
||||
msgid "Set display name"
|
||||
msgstr ""
|
||||
msgstr "Ustaw nazwę wyświetlaną"
|
||||
|
||||
msgid "Enter the new display name (blank to reset)"
|
||||
msgstr ""
|
||||
msgstr "Podaj nową nazwę wyświetlaną (wyczyść, by zresetować)"
|
||||
|
||||
msgid "Change &display name..."
|
||||
msgstr ""
|
||||
msgstr "Zmień wyświetlaną &nazwę..."
|
||||
|
||||
msgid "Context Menu"
|
||||
msgstr ""
|
||||
msgstr "Menu kontekstowe"
|
||||
|
||||
msgid "&Open folder..."
|
||||
msgstr ""
|
||||
msgstr "&Otwórz folder..."
|
||||
|
||||
msgid "Open &printer tray..."
|
||||
msgstr ""
|
||||
msgstr "Otwórz &tackę drukarki..."
|
||||
|
||||
msgid "Set &icon..."
|
||||
msgstr ""
|
||||
msgstr "&Ustaw ikonę..."
|
||||
|
||||
msgid "Select an icon"
|
||||
msgstr ""
|
||||
msgstr "Wybierz ikonę"
|
||||
|
||||
msgid "C&lone..."
|
||||
msgstr ""
|
||||
msgstr "&Klonuj..."
|
||||
|
||||
msgid "Virtual machine \"%1\" (%2) will be cloned into:"
|
||||
msgstr ""
|
||||
msgstr "Maszyna wirtualna „%1” (%2) zostanie sklonowana jako:"
|
||||
|
||||
msgid "Directory %1 already exists"
|
||||
msgstr ""
|
||||
msgstr "Folder %1 już istnieje"
|
||||
|
||||
msgid "You cannot use the following characters in the name: %1"
|
||||
msgstr ""
|
||||
msgstr "Nie możesz użyć następujących znaków w nazwie: %1"
|
||||
|
||||
msgid "Clone"
|
||||
msgstr ""
|
||||
msgstr "Klonuj"
|
||||
|
||||
msgid "Failed to create directory for cloned VM"
|
||||
msgstr ""
|
||||
msgstr "Nie udało się stworzyć folderu dla klonowanej maszyny wirtualnej"
|
||||
|
||||
msgid "Failed to clone VM."
|
||||
msgstr ""
|
||||
msgstr "Nie udało się sklonować maszyny wirtualnej."
|
||||
|
||||
msgid "Directory in use"
|
||||
msgstr ""
|
||||
msgstr "Folder w użyciu"
|
||||
|
||||
msgid "The selected directory is already in use. Please select a different directory."
|
||||
msgstr ""
|
||||
msgstr "Wybrany folder jest już w użyciu. Proszę wybrać inny folder."
|
||||
|
||||
msgid "Create directory failed"
|
||||
msgstr ""
|
||||
msgstr "Nieudane utworzenie folderu"
|
||||
|
||||
msgid "Unable to create the directory for the new system"
|
||||
msgstr ""
|
||||
msgstr "Nie udało się utworzyć folderu dla nowego systemu"
|
||||
|
||||
msgid "Configuration write failed"
|
||||
msgstr ""
|
||||
msgstr "Nieudany zapis konfiguracji"
|
||||
|
||||
msgid "Unable to open the configuration file at %1 for writing"
|
||||
msgstr ""
|
||||
msgstr "Nie udało się otworzyć pliku %1 do zapisu"
|
||||
|
||||
msgid "Error adding system"
|
||||
msgstr ""
|
||||
msgstr "Błąd dodawania systemu"
|
||||
|
||||
msgid "Remove directory failed"
|
||||
msgstr ""
|
||||
msgstr "Nieudane usunięcie folderu"
|
||||
|
||||
msgid "Some files in the machine's directory were unable to be deleted. Please delete them manually."
|
||||
msgstr ""
|
||||
msgstr "Nie udało się usunąć niektórych plików w folderze maszyny wirtualnej. Proszę usunąć je ręcznie."
|
||||
|
||||
msgid "Build"
|
||||
msgstr ""
|
||||
msgstr "Kompilacja"
|
||||
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
msgstr "Wersja"
|
||||
|
||||
msgid "An update to 86Box is available: %1 %2"
|
||||
msgstr ""
|
||||
msgstr "Dostępna jest aktualizacja 86Boxa: %1 %2"
|
||||
|
||||
msgid "An error has occurred while checking for updates: %1"
|
||||
msgstr ""
|
||||
msgstr "Wystąpił błąd podczas sprawdzania aktualizacji %1"
|
||||
|
||||
msgid "<b>An update to 86Box is available!</b>"
|
||||
msgstr ""
|
||||
msgstr "<b>Dostępna jest aktualizacja 86Boxa!</b>"
|
||||
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
msgid "&Kill"
|
||||
msgstr ""
|
||||
msgstr "&Zabij"
|
||||
|
||||
msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?"
|
||||
msgstr ""
|
||||
msgstr "Zabicie maszyny wirtualnej może spowodować utratę danych. Zrób to tylko, jeśli proces 86Boxa się zawiesił.\n\nCzy na pewno chcesz zabić maszynę wirtualną „%1”?"
|
||||
|
||||
msgid "&Delete"
|
||||
msgstr ""
|
||||
msgstr "&Usuń"
|
||||
|
||||
msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!"
|
||||
msgstr ""
|
||||
msgstr "Czy na pewno chcesz usunąć maszynę wirtualną „%1” i jej wszystkie pliki? Tej operacji nie można cofnąć!"
|
||||
|
||||
msgid "Show &config file"
|
||||
msgstr ""
|
||||
msgstr "&Pokaż plik konfiguracyjny"
|
||||
|
||||
msgid "No screenshot"
|
||||
msgstr ""
|
||||
msgstr "Brak zrzutów ekranu"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
msgstr "Szukanie"
|
||||
|
||||
msgid "Searching for VMs..."
|
||||
msgstr ""
|
||||
msgstr "Szukanie maszyn wirtualnych..."
|
||||
|
||||
msgid "Found %1"
|
||||
msgstr ""
|
||||
msgstr "Znaleziono %1"
|
||||
|
||||
msgid "System"
|
||||
msgstr ""
|
||||
msgstr "System"
|
||||
|
||||
msgid "Storage"
|
||||
msgstr ""
|
||||
msgstr "Pamięć"
|
||||
|
||||
msgid "Disk %1: "
|
||||
msgstr ""
|
||||
msgstr "Dysk %1: "
|
||||
|
||||
msgid "No disks"
|
||||
msgstr ""
|
||||
msgstr "Brak dysków"
|
||||
|
||||
msgid "Audio"
|
||||
msgstr ""
|
||||
msgstr "Dźwięk"
|
||||
|
||||
msgid "Audio:"
|
||||
msgstr ""
|
||||
msgstr "Dźwięk:"
|
||||
|
||||
msgid "ACPI shutdown"
|
||||
msgstr "Wyłączenie ACPI"
|
||||
@@ -1639,10 +1639,10 @@ msgid "&MCA devices..."
|
||||
msgstr "Urządzenia MCA..."
|
||||
|
||||
msgid "Show non-&primary monitors"
|
||||
msgstr "Pokaż monitory inne niż podstawowe"
|
||||
msgstr "Pokaż monitory &inne niż podstawowe"
|
||||
|
||||
msgid "Open screenshots &folder..."
|
||||
msgstr "Otwórz folder zrzutów ekranu..."
|
||||
msgstr "Otwórz folder zrzutów &ekranu..."
|
||||
|
||||
msgid "Appl&y fullscreen stretch mode when maximized"
|
||||
msgstr "Zastosowanie trybu rozciągania na pełnym ekranie w stanie zmaksymalizowanym"
|
||||
@@ -1675,7 +1675,7 @@ msgid "Null Driver"
|
||||
msgstr "Null Driver"
|
||||
|
||||
msgid "NIC:"
|
||||
msgstr ""
|
||||
msgstr "NIC:"
|
||||
|
||||
msgid "NIC %1 (%2) %3"
|
||||
msgstr "NIC %1 (%2) %3"
|
||||
@@ -1729,13 +1729,13 @@ msgid "This machine might have been moved or copied."
|
||||
msgstr "To urządzenie mogło zostać przeniesione lub skopiowane."
|
||||
|
||||
msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure."
|
||||
msgstr "Aby zapewnić prawidłową funkcjonalność sieci, 86Box musi wiedzieć, czy to urządzenie zostało przeniesione lub skopiowane.\n\nW przypadku braku pewności, wybrać opcję \"Zostało skopiowane\"."
|
||||
msgstr "Aby zapewnić prawidłową funkcjonalność sieci, 86Box musi wiedzieć, czy to maszyna zostało przeniesiona albo skopiowana.\n\nW przypadku braku pewności, wybierz opcję „Została skopiowana”."
|
||||
|
||||
msgid "I Moved It"
|
||||
msgstr "Zostało przeniesione"
|
||||
msgstr "Została przeniesiona"
|
||||
|
||||
msgid "I Copied It"
|
||||
msgstr "Zostało skopiowane"
|
||||
msgstr "Została skopiowana"
|
||||
|
||||
msgid "86Box Monitor #"
|
||||
msgstr "86Box Monitor "
|
||||
@@ -1747,7 +1747,7 @@ msgid "MiB"
|
||||
msgstr "MiB"
|
||||
|
||||
msgid "GiB"
|
||||
msgstr ""
|
||||
msgstr "GiB"
|
||||
|
||||
msgid "Network Card #1"
|
||||
msgstr "Karta sieciowa nr 1"
|
||||
@@ -1924,10 +1924,10 @@ msgid "IRQ"
|
||||
msgstr "IRQ"
|
||||
|
||||
msgid "Serial port IRQ"
|
||||
msgstr ""
|
||||
msgstr "IRQ portu szeregowego"
|
||||
|
||||
msgid "Parallel port IRQ"
|
||||
msgstr ""
|
||||
msgstr "IRQ portu równoległego"
|
||||
|
||||
msgid "BIOS Revision"
|
||||
msgstr "Rewizja BIOS-u"
|
||||
@@ -2155,7 +2155,7 @@ msgid "SB Address"
|
||||
msgstr "Adres SB"
|
||||
|
||||
msgid "Adlib Address"
|
||||
msgstr ""
|
||||
msgstr "Adres Adlib"
|
||||
|
||||
msgid "Use EEPROM setting"
|
||||
msgstr "Użyj ustawień z EEPROM"
|
||||
@@ -2206,7 +2206,7 @@ msgid "GUS type"
|
||||
msgstr "Typ GUS"
|
||||
|
||||
msgid "Enable 0x04 \"Exit 86Box\" command"
|
||||
msgstr "Włącz polecenie 0x04 \"Wyjdź z 86Boxa\""
|
||||
msgstr "Włącz polecenie 0x04 „Wyjdź z 86Boxa”"
|
||||
|
||||
msgid "Display type"
|
||||
msgstr "Typ ekranu"
|
||||
@@ -2215,7 +2215,7 @@ msgid "Composite type"
|
||||
msgstr "Typ kompozytowy"
|
||||
|
||||
msgid "True color"
|
||||
msgstr ""
|
||||
msgstr "Prawdziwy kolor"
|
||||
|
||||
msgid "RGB type"
|
||||
msgstr "Typ RGB"
|
||||
@@ -2560,7 +2560,7 @@ msgid "3Dfx Voodoo Graphics"
|
||||
msgstr "Grafika 3Dfx Voodoo"
|
||||
|
||||
msgid "3Dfx Voodoo 2"
|
||||
msgstr ""
|
||||
msgstr "3Dfx Voodoo 2"
|
||||
|
||||
msgid "Obsidian SB50 + Amethyst (2 TMUs)"
|
||||
msgstr "Obsidian SB50 + Amethyst (2 jednostki TMU)"
|
||||
@@ -2695,7 +2695,7 @@ msgid "Unable to find Dot-Matrix fonts"
|
||||
msgstr "Nie można znaleźć fontów igłowych"
|
||||
|
||||
msgid "TrueType fonts in the \"roms/printer/fonts\" directory are required for the emulation of the Generic ESC/P Dot-Matrix Printer."
|
||||
msgstr "Fonty TrueType w katalogu \"roms/printer/fonts\" są wymagane do emulacji generycznej drukarki igłowej ESC/P."
|
||||
msgstr "Fonty TrueType w katalogu „roms/printer/fonts” są wymagane do emulacji generycznej drukarki igłowej ESC/P."
|
||||
|
||||
msgid "Inhibit multimedia keys"
|
||||
msgstr "Przejmij klawisze multimedialne"
|
||||
@@ -2815,127 +2815,127 @@ msgid "SoundFont files"
|
||||
msgstr "Pliki SoundFont"
|
||||
|
||||
msgid "Local Switch"
|
||||
msgstr ""
|
||||
msgstr "Switch lokalny"
|
||||
|
||||
msgid "Remote Switch"
|
||||
msgstr ""
|
||||
msgstr "Switch zdalny"
|
||||
|
||||
msgid "Switch:"
|
||||
msgstr ""
|
||||
msgstr "Switch:"
|
||||
|
||||
msgid "Hub Mode"
|
||||
msgstr ""
|
||||
msgstr "Tryb hub"
|
||||
|
||||
msgid "Hostname:"
|
||||
msgstr ""
|
||||
msgstr "Nazwa komputera:"
|
||||
|
||||
msgid "ISA RTC"
|
||||
msgstr ""
|
||||
msgstr "ISA RTC"
|
||||
|
||||
msgid "ISA RAM"
|
||||
msgstr ""
|
||||
msgstr "ISA RAM"
|
||||
|
||||
msgid "ISA ROM"
|
||||
msgstr ""
|
||||
msgstr "ISA ROM"
|
||||
|
||||
msgid "&Wipe NVRAM"
|
||||
msgstr ""
|
||||
msgstr "&Wyczyść NVRAM"
|
||||
|
||||
msgid "This will delete all NVRAM (and related) files of the virtual machine located in the \"nvr\" subdirectory. You'll have to reconfigure the BIOS (and possibly other devices inside the VM) settings again if applicable.\n\nAre you sure you want to wipe all NVRAM contents of the virtual machine \"%1\"?"
|
||||
msgstr ""
|
||||
msgstr "To usunie wszystkie pliki NVRAM (i powiązane) maszyny wirtualnej, zlokalizowane w podkatalogu „nvr”. Będziesz musieć przekonfigurować BIOS (i prawdopodobnie inne urządzenia w maszynie wirtualnej), jeśli dotyczy.\n\nCzy na pewno chcesz wyczyścić całą zawartość NVRAM maszyny wirtualnej \"%1\"?"
|
||||
|
||||
msgid "Success"
|
||||
msgstr ""
|
||||
msgstr "Sukces"
|
||||
|
||||
msgid "Successfully wiped the NVRAM contents of the virtual machine \"%1\""
|
||||
msgstr ""
|
||||
msgstr "Pomyślnie wyczyszczono zawartość NVRAM maszyny wirtualnej „%1”"
|
||||
|
||||
msgid "An error occurred trying to wipe the NVRAM contents of the virtual machine \"%1\""
|
||||
msgstr ""
|
||||
msgstr "Wystąpił błąd podczas próby wyczyszczenia zawartości NVRAM maszyny wirtualnej „%1”"
|
||||
|
||||
msgid "%1 VM Manager"
|
||||
msgstr ""
|
||||
msgstr "Menedżer maszyn wirtualnych %1"
|
||||
|
||||
msgid "%n disk(s)"
|
||||
msgstr ""
|
||||
msgstr "%n dysk(i/ów)"
|
||||
|
||||
msgid "Unknown Status"
|
||||
msgstr ""
|
||||
msgstr "Status nieznany"
|
||||
|
||||
msgid "No Machines Found!"
|
||||
msgstr ""
|
||||
msgstr "Nie znaleziono maszyn!"
|
||||
|
||||
msgid "Check for updates on startup"
|
||||
msgstr ""
|
||||
msgstr "Sprawdzaj aktualizacje przy starcie"
|
||||
|
||||
msgid "Unable to determine release information"
|
||||
msgstr ""
|
||||
msgstr "Nie udało się ustalić informacji o wydaniu"
|
||||
|
||||
msgid "There was an error checking for updates:\n\n%1\n\nPlease try again later."
|
||||
msgstr ""
|
||||
msgstr "Wystąpił błąd podczas sprawdzania aktualizacji:\n\n%1\n\nSpróbuj ponownie później."
|
||||
|
||||
msgid "Update check complete"
|
||||
msgstr ""
|
||||
msgstr "Sprawdzanie aktualizacji ukończone"
|
||||
|
||||
msgid "stable"
|
||||
msgstr ""
|
||||
msgstr "stabilnej"
|
||||
|
||||
msgid "beta"
|
||||
msgstr ""
|
||||
msgstr "beta"
|
||||
|
||||
msgid "You are running the latest %1 version of 86Box: %2"
|
||||
msgstr ""
|
||||
msgstr "Używasz najnowszej wersji %1 86Boxa: %2"
|
||||
|
||||
msgid "version"
|
||||
msgstr ""
|
||||
msgstr "wersja"
|
||||
|
||||
msgid "build"
|
||||
msgstr ""
|
||||
msgstr "kompilacja"
|
||||
|
||||
msgid "You are currently running version <b>%1</b>."
|
||||
msgstr ""
|
||||
msgstr "Aktualnie używasz wersji <b>%1</b>."
|
||||
|
||||
msgid "<b>Version %1</b> is now available."
|
||||
msgstr ""
|
||||
msgstr "<b>Wersja %1</b> jest teraz dostępna."
|
||||
|
||||
msgid "You are currently running build <b>%1</b>."
|
||||
msgstr ""
|
||||
msgstr "Aktualnie używasz kompilacji <b>%1</b>."
|
||||
|
||||
msgid "<b>Build %1</b> is now available."
|
||||
msgstr ""
|
||||
msgstr "<b>Kompilacja %1</b> jest teraz dostępna."
|
||||
|
||||
msgid "Would you like to visit the download page?"
|
||||
msgstr ""
|
||||
msgstr "Czy chcesz odwiedzić stronę pobierania?"
|
||||
|
||||
msgid "Visit download page"
|
||||
msgstr ""
|
||||
msgstr "Odwiedź stronę pobierania"
|
||||
|
||||
msgid "Update check"
|
||||
msgstr ""
|
||||
msgstr "Sprawdzanie aktualizacji"
|
||||
|
||||
msgid "Checking for updates..."
|
||||
msgstr ""
|
||||
msgstr "Sprawdzanie aktualizacji..."
|
||||
|
||||
msgid "86Box Update"
|
||||
msgstr ""
|
||||
msgstr "Aktualizacja 86Boxa"
|
||||
|
||||
msgid "Release notes:"
|
||||
msgstr ""
|
||||
msgstr "Uwagi do wydania:"
|
||||
|
||||
msgid "%1 Hz"
|
||||
msgstr "%1 Hz"
|
||||
|
||||
msgid "Virtual machine crash"
|
||||
msgstr ""
|
||||
msgstr "Awaria maszyny wirtualnej"
|
||||
|
||||
msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2."
|
||||
msgstr ""
|
||||
msgstr "Proces maszyny wirtualnej „%1” zakończył się nieoczekiwanie z kodem błędu %2."
|
||||
|
||||
msgid "The system will not be added."
|
||||
msgstr ""
|
||||
msgstr "System nie będzie dodany."
|
||||
|
||||
msgid "&Update mouse every CPU frame"
|
||||
msgstr ""
|
||||
msgstr "Aktualizuj &mysz z każdą ramką CPU"
|
||||
|
||||
msgid "Hue"
|
||||
msgstr "Barwa"
|
||||
|
||||
@@ -2935,7 +2935,7 @@ msgid "The system will not be added."
|
||||
msgstr "O sistema não será adicionado."
|
||||
|
||||
msgid "&Update mouse every CPU frame"
|
||||
msgstr "&Atualiza o estado do mouse em cada quadro do CPU"
|
||||
msgstr "At&ualiza o estado do mouse em cada quadro do CPU"
|
||||
|
||||
msgid "Hue"
|
||||
msgstr "Matiz"
|
||||
|
||||
@@ -115,9 +115,12 @@ VMManagerDetails::VMManagerDetails(QWidget *parent) :
|
||||
}
|
||||
ui->ssNavTBHolder->setStyleSheet(toolButtonStyleSheet);
|
||||
|
||||
pauseIcon = QIcon(":/menuicons/qt/icons/pause.ico");
|
||||
runIcon = QIcon(":/menuicons/qt/icons/run.ico");
|
||||
|
||||
// Experimenting
|
||||
startPauseButton = new QToolButton();
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico"));
|
||||
startPauseButton->setIcon(runIcon);
|
||||
startPauseButton->setAutoRaise(true);
|
||||
startPauseButton->setEnabled(false);
|
||||
startPauseButton->setToolTip(tr("Start"));
|
||||
@@ -192,10 +195,10 @@ VMManagerDetails::updateData(VMManagerSystem *passed_sysconfig) {
|
||||
bool running = sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::Running ||
|
||||
sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::RunningWaiting;
|
||||
if(running) {
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/pause.ico"));
|
||||
startPauseButton->setIcon(pauseIcon);
|
||||
connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed);
|
||||
} else {
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico"));
|
||||
startPauseButton->setIcon(runIcon);
|
||||
connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed);
|
||||
}
|
||||
startPauseButton->setEnabled(true);
|
||||
@@ -278,6 +281,15 @@ VMManagerDetails::updateConfig(VMManagerSystem *passed_sysconfig) {
|
||||
otherSection->addSection(tr("ISA RTC"), passed_sysconfig->getDisplayValue(Display::Name::IsaRtc));
|
||||
otherSection->addSection(tr("ISA RAM"), passed_sysconfig->getDisplayValue(Display::Name::IsaMem));
|
||||
otherSection->addSection(tr("ISA ROM"), passed_sysconfig->getDisplayValue(Display::Name::IsaRom));
|
||||
|
||||
systemSection->setSections();
|
||||
videoSection->setSections();
|
||||
storageSection->setSections();
|
||||
audioSection->setSections();
|
||||
networkSection->setSections();
|
||||
inputSection->setSections();
|
||||
portsSection->setSections();
|
||||
otherSection->setSections();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -341,10 +353,10 @@ VMManagerDetails::updateProcessStatus() {
|
||||
cadButton->setEnabled(running);
|
||||
if(running) {
|
||||
if(sysconfig->getProcessStatus() == VMManagerSystem::ProcessStatus::Running) {
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/pause.ico"));
|
||||
startPauseButton->setIcon(pauseIcon);
|
||||
startPauseButton->setToolTip(tr("Pause"));
|
||||
} else {
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico"));
|
||||
startPauseButton->setIcon(runIcon);
|
||||
startPauseButton->setToolTip(tr("Continue"));
|
||||
}
|
||||
|
||||
@@ -352,7 +364,7 @@ VMManagerDetails::updateProcessStatus() {
|
||||
disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed);
|
||||
connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed);
|
||||
} else {
|
||||
startPauseButton->setIcon(QIcon(":/menuicons/qt/icons/run.ico"));
|
||||
startPauseButton->setIcon(runIcon);
|
||||
disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::pauseButtonPressed);
|
||||
disconnect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed);
|
||||
connect(startPauseButton, &QToolButton::clicked, sysconfig, &VMManagerSystem::startButtonPressed);
|
||||
|
||||
@@ -68,6 +68,9 @@ private:
|
||||
QToolButton *configureButton;
|
||||
QToolButton *cadButton;
|
||||
|
||||
QIcon pauseIcon;
|
||||
QIcon runIcon;
|
||||
|
||||
void updateConfig(VMManagerSystem *passed_sysconfig);
|
||||
void updateScreenshots(VMManagerSystem *passed_sysconfig);
|
||||
static QWidget* createHorizontalLine(int leftSpacing = 25, int rightSpacing = 25);
|
||||
|
||||
@@ -143,7 +143,6 @@ VMManagerDetailSection::addSection(const QString &name, const QString &value, Di
|
||||
{
|
||||
const auto new_section = DetailSection { name, value};
|
||||
sections.push_back(new_section);
|
||||
setSections();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -154,30 +153,8 @@ VMManagerDetailSection::setupMainLayout()
|
||||
mainLayout = new QVBoxLayout;
|
||||
}
|
||||
void
|
||||
VMManagerDetailSection::clearContentsSetupGrid()
|
||||
{
|
||||
// Clear everything out
|
||||
if(frameGridLayout) {
|
||||
while(frameGridLayout->count()) {
|
||||
QLayoutItem * cur_item = frameGridLayout->takeAt(0);
|
||||
if(cur_item->widget())
|
||||
delete cur_item->widget();
|
||||
delete cur_item;
|
||||
}
|
||||
}
|
||||
|
||||
delete frameGridLayout;
|
||||
frameGridLayout = new QGridLayout();
|
||||
qint32 *left = nullptr, *top = nullptr, *right = nullptr, *bottom = nullptr;
|
||||
frameGridLayout->getContentsMargins(left, top, right, bottom);
|
||||
frameGridLayout->setContentsMargins(getMargins(MarginSection::DisplayGrid));
|
||||
ui->detailFrame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
ui->detailFrame->setLayout(frameGridLayout);
|
||||
}
|
||||
void
|
||||
VMManagerDetailSection::setSections()
|
||||
{
|
||||
clearContentsSetupGrid();
|
||||
int row = 0;
|
||||
|
||||
|
||||
@@ -191,6 +168,19 @@ VMManagerDetailSection::setSections()
|
||||
sectionsToAdd.push_back(section.value);
|
||||
}
|
||||
bool keyAdded = false;
|
||||
|
||||
// Reduce the text size for the label
|
||||
// First, get the existing font
|
||||
auto reference_label = new QLabel();
|
||||
auto smaller_font = reference_label->font();
|
||||
// Get a smaller size
|
||||
// Not sure if I like the smaller size, back to regular for now
|
||||
// auto smaller_size = 0.85 * smaller_font.pointSize();
|
||||
const auto smaller_size = 1 * smaller_font.pointSize();
|
||||
// Set the font to the smaller size
|
||||
smaller_font.setPointSizeF(smaller_size);
|
||||
delete reference_label;
|
||||
|
||||
for(const auto&line : sectionsToAdd) {
|
||||
if(line.isEmpty()) {
|
||||
// Don't bother adding entries if the values are blank
|
||||
@@ -203,15 +193,6 @@ VMManagerDetailSection::setSections()
|
||||
labelValue->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse);
|
||||
labelKey->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse);
|
||||
|
||||
// Reduce the text size for the label
|
||||
// First, get the existing font
|
||||
auto smaller_font = labelValue->font();
|
||||
// Get a smaller size
|
||||
// Not sure if I like the smaller size, back to regular for now
|
||||
// auto smaller_size = 0.85 * smaller_font.pointSize();
|
||||
const auto smaller_size = 1 * smaller_font.pointSize();
|
||||
// Set the font to the smaller size
|
||||
smaller_font.setPointSizeF(smaller_size);
|
||||
// Assign that new, smaller font to the label
|
||||
labelKey->setFont(smaller_font);
|
||||
labelValue->setFont(smaller_font);
|
||||
@@ -237,6 +218,24 @@ VMManagerDetailSection::clear()
|
||||
{
|
||||
sections.clear();
|
||||
setVisible(false);
|
||||
|
||||
// Clear everything out
|
||||
if(frameGridLayout) {
|
||||
while(frameGridLayout->count()) {
|
||||
QLayoutItem * cur_item = frameGridLayout->takeAt(0);
|
||||
if(cur_item->widget())
|
||||
delete cur_item->widget();
|
||||
delete cur_item;
|
||||
}
|
||||
}
|
||||
|
||||
delete frameGridLayout;
|
||||
frameGridLayout = new QGridLayout();
|
||||
qint32 *left = nullptr, *top = nullptr, *right = nullptr, *bottom = nullptr;
|
||||
frameGridLayout->getContentsMargins(left, top, right, bottom);
|
||||
frameGridLayout->setContentsMargins(getMargins(MarginSection::DisplayGrid));
|
||||
ui->detailFrame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
ui->detailFrame->setLayout(frameGridLayout);
|
||||
}
|
||||
|
||||
// QT for Linux and Windows doesn't have the same default margins as QT on MacOS.
|
||||
@@ -284,7 +283,7 @@ void CollapseButton::setButtonText(const QString &text) {
|
||||
void CollapseButton::setContent(QWidget *content) {
|
||||
assert(content != nullptr);
|
||||
content_ = content;
|
||||
const auto animation_ = new QPropertyAnimation(content_, "maximumHeight"); // QObject with auto delete
|
||||
/*const auto animation_ = new QPropertyAnimation(content_, "maximumHeight"); // QObject with auto delete
|
||||
animation_->setStartValue(0);
|
||||
animation_->setEasingCurve(QEasingCurve::InOutQuad);
|
||||
animation_->setDuration(300);
|
||||
@@ -294,16 +293,16 @@ void CollapseButton::setContent(QWidget *content) {
|
||||
animator_.addAnimation(animation_);
|
||||
if (!isChecked()) {
|
||||
content->setMaximumHeight(0);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void CollapseButton::hideContent() {
|
||||
animator_.setDirection(QAbstractAnimation::Backward);
|
||||
animator_.start();
|
||||
/*animator_.setDirection(QAbstractAnimation::Backward);
|
||||
animator_.start();*/
|
||||
}
|
||||
|
||||
void CollapseButton::showContent() {
|
||||
animator_.setDirection(QAbstractAnimation::Forward);
|
||||
animator_.start();
|
||||
/*animator_.setDirection(QAbstractAnimation::Forward);
|
||||
animator_.start();*/
|
||||
}
|
||||
|
||||
|
||||
@@ -61,8 +61,10 @@ public:
|
||||
~VMManagerDetailSection() override;
|
||||
|
||||
void addSection(const QString &name, const QString &value, VMManager::Display::Name displayField = VMManager::Display::Name::Unknown);
|
||||
void setSections();
|
||||
void clear();
|
||||
|
||||
QLabel *tableLabel;
|
||||
CollapseButton *collapseButton;
|
||||
// QGridLayout *buttonGridLayout;
|
||||
QGridLayout *frameGridLayout;
|
||||
@@ -82,7 +84,6 @@ private:
|
||||
void setSectionName(const QString &name);
|
||||
void setupMainLayout();
|
||||
void clearContentsSetupGrid();
|
||||
void setSections();
|
||||
|
||||
static QMargins getMargins(MarginSection section);
|
||||
|
||||
|
||||
@@ -34,6 +34,15 @@ VMManagerListViewDelegate::VMManagerListViewDelegate(QObject *parent)
|
||||
: QStyledItemDelegate(parent),
|
||||
m_ptr(new VMManagerListViewDelegateStyle)
|
||||
{
|
||||
default_icon = QIcon(":/settings/qt/icons/86Box-gray.ico");
|
||||
stop_icon = QApplication::style()->standardIcon(QStyle::SP_MediaStop);
|
||||
running_icon = QIcon(":/menuicons/qt/icons/run.ico");
|
||||
stopped_icon = QIcon(":/menuicons/qt/icons/acpi_shutdown.ico");
|
||||
paused_icon = QIcon(":/menuicons/qt/icons/pause.ico");
|
||||
unknown_icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion);
|
||||
|
||||
highlight_color = QColor("#616161");
|
||||
bg_color = QColor("#272727");
|
||||
}
|
||||
|
||||
VMManagerListViewDelegate::~VMManagerListViewDelegate()
|
||||
@@ -56,34 +65,33 @@ void VMManagerListViewDelegate::paint(QPainter *painter, const QStyleOptionViewI
|
||||
-m_ptr->margins.bottom()));
|
||||
|
||||
// The status icon represents the current state of the vm. Initially set to a default state.
|
||||
QIcon status_icon = QApplication::style()->standardIcon(QStyle::SP_MediaStop);
|
||||
auto process_variant = index.data(VMManagerModel::Roles::ProcessStatus);
|
||||
auto process_status = process_variant.value<VMManagerSystem::ProcessStatus>();
|
||||
// The main icon, configurable. Falls back to default if it cannot be loaded.
|
||||
auto customIcom = index.data(VMManagerModel::Roles::Icon).toString();
|
||||
opt.icon = QIcon(":/settings/qt/icons/86Box-gray.ico");
|
||||
if(!customIcom.isEmpty()) {
|
||||
if (const auto customPixmap = QPixmap(customIcom); !customPixmap.isNull()) {
|
||||
auto customIcon = index.data(VMManagerModel::Roles::Icon).toString();
|
||||
opt.icon = default_icon;
|
||||
if (!customIcon.isEmpty()) {
|
||||
const auto customPixmap = QPixmap(customIcon);
|
||||
if (!customPixmap.isNull())
|
||||
opt.icon = customPixmap;
|
||||
}
|
||||
}
|
||||
// opt.icon = QIcon(":/settings/qt/icons/86Box-gray.ico");
|
||||
|
||||
// Set the status icon based on the process status
|
||||
QIcon status_icon;
|
||||
switch(process_status) {
|
||||
case VMManagerSystem::ProcessStatus::Running:
|
||||
status_icon = QIcon(":/menuicons/qt/icons/run.ico");
|
||||
status_icon = running_icon;
|
||||
break;
|
||||
case VMManagerSystem::ProcessStatus::Stopped:
|
||||
status_icon = QIcon(":/menuicons/qt/icons/acpi_shutdown.ico");
|
||||
status_icon = stopped_icon;
|
||||
break;
|
||||
case VMManagerSystem::ProcessStatus::PausedWaiting:
|
||||
case VMManagerSystem::ProcessStatus::RunningWaiting:
|
||||
case VMManagerSystem::ProcessStatus::Paused:
|
||||
status_icon = QIcon(":/menuicons/qt/icons/pause.ico");
|
||||
status_icon = paused_icon;
|
||||
break;
|
||||
default:
|
||||
status_icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion);
|
||||
status_icon = unknown_icon;
|
||||
}
|
||||
|
||||
|
||||
@@ -105,13 +113,13 @@ void VMManagerListViewDelegate::paint(QPainter *painter, const QStyleOptionViewI
|
||||
// When selected, only draw the highlighted part until the horizontal separator
|
||||
int offset = 2;
|
||||
auto highlightRect = rect.adjusted(0, 0, 0, -offset);
|
||||
painter->fillRect(highlightRect, windows_light_mode ? palette.highlight().color() : QColor("#616161"));
|
||||
painter->fillRect(highlightRect, windows_light_mode ? palette.highlight().color() : highlight_color);
|
||||
// Then fill the remainder with the normal color
|
||||
auto regularRect = rect.adjusted(0, rect.height()-offset, 0, 0);
|
||||
painter->fillRect(regularRect, windows_light_mode ? palette.light().color() : QColor("#272727"));
|
||||
painter->fillRect(regularRect, windows_light_mode ? palette.light().color() : bg_color);
|
||||
} else {
|
||||
// Otherwise just draw the background color as usual
|
||||
painter->fillRect(rect, windows_light_mode ? palette.light().color() : QColor("#272727"));
|
||||
painter->fillRect(rect, windows_light_mode ? palette.light().color() : bg_color);
|
||||
}
|
||||
|
||||
// Draw bottom line. Last line gets a different color
|
||||
|
||||
@@ -63,5 +63,15 @@ public:
|
||||
const QModelIndex &index) const override;
|
||||
private:
|
||||
VMManagerListViewDelegateStyle *m_ptr;
|
||||
|
||||
QIcon default_icon;
|
||||
QIcon stop_icon;
|
||||
QIcon running_icon;
|
||||
QIcon stopped_icon;
|
||||
QIcon paused_icon;
|
||||
QIcon unknown_icon;
|
||||
|
||||
QColor bg_color;
|
||||
QColor highlight_color;
|
||||
};
|
||||
#endif // QT_VMMANAGER_LISTVIEWDELEGATE_H
|
||||
@@ -48,6 +48,120 @@ ics2494_log(const char *fmt, ...)
|
||||
# define ics2494_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
/* Two consecutive byte-writes are NOT allowed. Furthermore an index
|
||||
* written to 0x01CE is only usable ONCE! Note also that the setting of ATI
|
||||
* extended registers (especially those with clock selection bits) should be
|
||||
* bracketed by a sequencer reset.
|
||||
*
|
||||
* Boards prior to V5 use 4 crystals. Boards V5 and later use a clock
|
||||
* generator chip. V3 and V4 boards differ when it comes to choosing clock
|
||||
* frequencies.
|
||||
*
|
||||
* VGA Wonder V3/V4 Board Clock Frequencies
|
||||
* R E G I S T E R S
|
||||
* 1CE(*) 3C2 3C2 Frequency
|
||||
* B2h/BEh
|
||||
* Bit 6/4 Bit 3 Bit 2 (MHz)
|
||||
* ------- ------- ------- -------
|
||||
* 0 0 0 50.175
|
||||
* 0 0 1 56.644
|
||||
* 0 1 0 Spare 1
|
||||
* 0 1 1 44.900
|
||||
* 1 0 0 44.900
|
||||
* 1 0 1 50.175
|
||||
* 1 1 0 Spare 2
|
||||
* 1 1 1 36.000
|
||||
*
|
||||
* (*): V3 uses index B2h, bit 6; V4 uses index BEh, bit 4
|
||||
*
|
||||
* V5, PLUS, XL and XL24 usually have an ATI 18810 clock generator chip, but
|
||||
* some have an ATI 18811-0, and it's quite conceivable that some exist with
|
||||
* ATI 18811-1's or ATI 18811-2's. Mach32 boards are known to use any one of
|
||||
* these clock generators. The possibilities for Mach64 boards also include
|
||||
* two different flavours of the newer 18818 chips. I have yet to figure out
|
||||
* how BIOS initialization sets up the board for a particular set of
|
||||
* frequencies. Mach32 and Mach64 boards also use a different dot clock
|
||||
* ordering. ATI says there is no reliable way for the driver to determine
|
||||
* which clock generator is on the board (their BIOS's are tailored to the
|
||||
* board).
|
||||
*
|
||||
* VGA Wonder V5/PLUS/XL/XL24 Board Clock Frequencies
|
||||
* R E G I S T E R S
|
||||
* 1CE 1CE 3C2 3C2 Frequency
|
||||
* B9h BEh (MHz) 18811-0 18811-1
|
||||
* Bit 1 Bit 4 Bit 3 Bit 2 18810 18812-0 18811-2 18818-? 18818-?
|
||||
* ------- ------- ------- ------- ------- ------- ------- ------- -------
|
||||
* 0 0 0 0 30.240 30.240 135.000 (*3) (*3)
|
||||
* 0 0 0 1 32.000 32.000 32.000 110.000 110.000
|
||||
* 0 0 1 0 37.500 110.000 110.000 126.000 126.000
|
||||
* 0 0 1 1 39.000 80.000 80.000 135.000 135.000
|
||||
* 0 1 0 0 42.954 42.954 100.000 50.350 25.175
|
||||
* 0 1 0 1 48.771 48.771 126.000 56.644 28.322
|
||||
* 0 1 1 0 (*1) 92.400 92.400 63.000 31.500
|
||||
* 0 1 1 1 36.000 36.000 36.000 72.000 36.000
|
||||
* 1 0 0 0 40.000 39.910 39.910 (*3) (*3)
|
||||
* 1 0 0 1 56.644 44.900 44.900 80.000 80.000
|
||||
* 1 0 1 0 75.000 75.000 75.000 75.000 75.000
|
||||
* 1 0 1 1 65.000 65.000 65.000 65.000 65.000
|
||||
* 1 1 0 0 50.350 50.350 50.350 40.000 40.000
|
||||
* 1 1 0 1 56.640 56.640 56.640 44.900 44.900
|
||||
* 1 1 1 0 (*2) (*3) (*3) 49.500 49.500
|
||||
* 1 1 1 1 44.900 44.900 44.900 50.000 50.000
|
||||
*
|
||||
* (*1) External 0 (supposedly 16.657 Mhz)
|
||||
* (*2) External 1 (supposedly 28.322 MHz)
|
||||
* (*3) This setting doesn't seem to generate anything
|
||||
*
|
||||
* Mach32 and Mach64 Board Clock Frequencies
|
||||
* R E G I S T E R S
|
||||
* 1CE 1CE 3C2 3C2 Frequency
|
||||
* B9h BEh (MHz) 18811-0 18811-1
|
||||
* Bit 1 Bit 4 Bit 3 Bit 2 18810 18812-0 18811-2 18818-? 18818-?
|
||||
* ------- ------- ------- ------- ------- ------- ------- ------- -------
|
||||
* 0 0 0 0 42.954 42.954 100.000 50.350 25.175
|
||||
* 0 0 0 1 48.771 48.771 126.000 56.644 28.322
|
||||
* 0 0 1 0 (*1) 92.400 92.400 63.000 31.500
|
||||
* 0 0 1 1 36.000 36.000 36.000 72.000 36.000
|
||||
* 0 1 0 0 30.240 30.240 135.000 (*3) (*3)
|
||||
* 0 1 0 1 32.000 32.000 32.000 110.000 110.000
|
||||
* 0 1 1 0 37.500 110.000 110.000 126.000 126.000
|
||||
* 0 1 1 1 39.000 80.000 80.000 135.000 135.000
|
||||
* 1 0 0 0 50.350 50.350 50.350 40.000 40.000
|
||||
* 1 0 0 1 56.640 56.640 56.640 44.900 44.900
|
||||
* 1 0 1 0 (*2) (*3) (*3) 49.500 49.500
|
||||
* 1 0 1 1 44.900 44.900 44.900 50.000 50.000
|
||||
* 1 1 0 0 40.000 39.910 39.910 (*3) (*3)
|
||||
* 1 1 0 1 56.644 44.900 44.900 80.000 80.000
|
||||
* 1 1 1 0 75.000 75.000 75.000 75.000 75.000
|
||||
* 1 1 1 1 65.000 65.000 65.000 65.000 65.000
|
||||
*
|
||||
* (*1) External 0 (supposedly 16.657 Mhz)
|
||||
* (*2) External 1 (supposedly 28.322 MHz)
|
||||
* (*3) This setting doesn't seem to generate anything
|
||||
*
|
||||
* Note that, to reduce confusion, this driver masks out the different clock
|
||||
* ordering.
|
||||
*
|
||||
* For all boards, these frequencies can be divided by 1, 2, 3 or 4.
|
||||
*
|
||||
* Register 1CE, index B8h
|
||||
* Bit 7 Bit 6
|
||||
* ------- -------
|
||||
* 0 0 Divide by 1
|
||||
* 0 1 Divide by 2
|
||||
* 1 0 Divide by 3
|
||||
* 1 1 Divide by 4
|
||||
*
|
||||
* There is some question as to whether or not bit 1 of index 0xB9 can
|
||||
* be used for clock selection on a V4 board. This driver makes it
|
||||
* available only if the "undocumented_clocks" option (itself
|
||||
* undocumented :-)) is specified in XF86Config.
|
||||
*
|
||||
* Also it appears that bit 0 of index 0xB9 can also be used for clock
|
||||
* selection on some boards. It is also only available under XF86Config
|
||||
* option "undocumented_clocks".
|
||||
*/
|
||||
|
||||
float
|
||||
ics2494_getclock(int clock, void *priv)
|
||||
{
|
||||
@@ -56,7 +170,6 @@ ics2494_getclock(int clock, void *priv)
|
||||
if (clock > 15)
|
||||
clock = 15;
|
||||
|
||||
ics2494_log("Clock=%d, freq=%f.\n", clock, ics2494->freq[clock]);
|
||||
return ics2494->freq[clock];
|
||||
}
|
||||
|
||||
@@ -67,62 +180,116 @@ ics2494_init(const device_t *info)
|
||||
memset(ics2494, 0, sizeof(ics2494_t));
|
||||
|
||||
switch (info->local) {
|
||||
case 10:
|
||||
case 0:
|
||||
/* ATI 18810 for ATI 28800 */
|
||||
ics2494->freq[0x0] = 42954000.0;
|
||||
ics2494->freq[0x1] = 48771000.0;
|
||||
ics2494->freq[0x2] = 0.0;
|
||||
ics2494->freq[0x3] = 36000000.0;
|
||||
ics2494->freq[0x4] = 50350000.0;
|
||||
ics2494->freq[0x5] = 56640000.0;
|
||||
ics2494->freq[0x6] = 0.0;
|
||||
ics2494->freq[0x7] = 44900000.0;
|
||||
ics2494->freq[0x8] = 30240000.0;
|
||||
ics2494->freq[0x9] = 32000000.0;
|
||||
ics2494->freq[0xa] = 37500000.0;
|
||||
ics2494->freq[0xb] = 39000000.0;
|
||||
ics2494->freq[0xc] = 40000000.0;
|
||||
ics2494->freq[0xd] = 56644000.0;
|
||||
ics2494->freq[0xe] = 75000000.0;
|
||||
ics2494->freq[0xf] = 65000000.0;
|
||||
ics2494->freq[0] = 30240000.0;
|
||||
ics2494->freq[1] = 32000000.0;
|
||||
ics2494->freq[2] = 37500000.0;
|
||||
ics2494->freq[3] = 39000000.0;
|
||||
ics2494->freq[4] = 42954000.0;
|
||||
ics2494->freq[5] = 48771000.0;
|
||||
ics2494->freq[6] = 0.0;
|
||||
ics2494->freq[7] = 36000000.0;
|
||||
ics2494->freq[8] = 40000000.0;
|
||||
ics2494->freq[9] = 56644000.0;
|
||||
ics2494->freq[10] = 75000000.0;
|
||||
ics2494->freq[11] = 65000000.0;
|
||||
ics2494->freq[12] = 50350000.0;
|
||||
ics2494->freq[13] = 56640000.0;
|
||||
ics2494->freq[14] = 0.0;
|
||||
ics2494->freq[15] = 44900000.0;
|
||||
break;
|
||||
case 110:
|
||||
/* ATI 18811-0 for ATI Mach32 */
|
||||
ics2494->freq[0x0] = 42954000.0;
|
||||
ics2494->freq[0x1] = 48771000.0;
|
||||
ics2494->freq[0x2] = 92400000.0;
|
||||
ics2494->freq[0x3] = 36000000.0;
|
||||
ics2494->freq[0x4] = 50350000.0;
|
||||
ics2494->freq[0x5] = 56640000.0;
|
||||
ics2494->freq[0x6] = 0.0;
|
||||
ics2494->freq[0x7] = 44900000.0;
|
||||
ics2494->freq[0x8] = 30240000.0;
|
||||
ics2494->freq[0x9] = 32000000.0;
|
||||
ics2494->freq[0xa] = 110000000.0;
|
||||
ics2494->freq[0xb] = 80000000.0;
|
||||
ics2494->freq[0xc] = 39910000.0;
|
||||
ics2494->freq[0xd] = 44900000.0;
|
||||
ics2494->freq[0xe] = 75000000.0;
|
||||
ics2494->freq[0xf] = 65000000.0;
|
||||
case 1:
|
||||
/* ATI 18811-0/ATI 18812-0 for ATI 28800 */
|
||||
ics2494->freq[0] = 42950000.0;
|
||||
ics2494->freq[1] = 48770000.0;
|
||||
ics2494->freq[2] = 92400000.0;
|
||||
ics2494->freq[3] = 36000000.0;
|
||||
ics2494->freq[4] = 50350000.0;
|
||||
ics2494->freq[5] = 56640000.0;
|
||||
ics2494->freq[7] = 44900000.0;
|
||||
ics2494->freq[8] = 30240000.0;
|
||||
ics2494->freq[9] = 32000000.0;
|
||||
ics2494->freq[10] = 110000000.0;
|
||||
ics2494->freq[11] = 80000000.0;
|
||||
ics2494->freq[12] = 39910000.0;
|
||||
ics2494->freq[13] = 44900000.0;
|
||||
ics2494->freq[14] = 75000000.0;
|
||||
ics2494->freq[15] = 65000000.0;
|
||||
break;
|
||||
case 111:
|
||||
/* ATI 18811-1 for ATI Mach32 MCA */
|
||||
ics2494->freq[0x0] = 100000000.0;
|
||||
ics2494->freq[0x1] = 126000000.0;
|
||||
ics2494->freq[0x2] = 92400000.0;
|
||||
ics2494->freq[0x3] = 36000000.0;
|
||||
ics2494->freq[0x4] = 50350000.0;
|
||||
ics2494->freq[0x5] = 56640000.0;
|
||||
ics2494->freq[0x6] = 0.0;
|
||||
ics2494->freq[0x7] = 44900000.0;
|
||||
ics2494->freq[0x8] = 135000000.0;
|
||||
ics2494->freq[0x9] = 32000000.0;
|
||||
ics2494->freq[0xa] = 110000000.0;
|
||||
ics2494->freq[0xb] = 80000000.0;
|
||||
ics2494->freq[0xc] = 39910000.0;
|
||||
ics2494->freq[0xd] = 44900000.0;
|
||||
ics2494->freq[0xe] = 75000000.0;
|
||||
ics2494->freq[0xf] = 65000000.0;
|
||||
case 2:
|
||||
/* ATI 18811-1/ATI 18811-2 for ATI 28800 */
|
||||
ics2494->freq[0] = 100000000.0;
|
||||
ics2494->freq[1] = 126000000.0;
|
||||
ics2494->freq[2] = 92400000.0;
|
||||
ics2494->freq[3] = 36000000.0;
|
||||
ics2494->freq[4] = 50350000.0;
|
||||
ics2494->freq[5] = 56640000.0;
|
||||
ics2494->freq[7] = 44900000.0;
|
||||
ics2494->freq[8] = 135000000.0;
|
||||
ics2494->freq[9] = 32000000.0;
|
||||
ics2494->freq[10] = 110000000.0;
|
||||
ics2494->freq[11] = 80000000.0;
|
||||
ics2494->freq[12] = 39910000.0;
|
||||
ics2494->freq[13] = 44900000.0;
|
||||
ics2494->freq[14] = 75000000.0;
|
||||
ics2494->freq[15] = 65000000.0;
|
||||
break;
|
||||
case 100:
|
||||
/* ATI 18810 for ATI Mach32 */
|
||||
ics2494->freq[0] = 42954000.0;
|
||||
ics2494->freq[1] = 48771000.0;
|
||||
ics2494->freq[2] = 0.0;
|
||||
ics2494->freq[3] = 36000000.0;
|
||||
ics2494->freq[4] = 30240000.0;
|
||||
ics2494->freq[5] = 32000000.0;
|
||||
ics2494->freq[6] = 37500000.0;
|
||||
ics2494->freq[7] = 39000000.0;
|
||||
ics2494->freq[8] = 50350000.0;
|
||||
ics2494->freq[9] = 56640000.0;
|
||||
ics2494->freq[10] = 0.0;
|
||||
ics2494->freq[11] = 44900000.0;
|
||||
ics2494->freq[12] = 40000000.0;
|
||||
ics2494->freq[13] = 56644000.0;
|
||||
ics2494->freq[14] = 75000000.0;
|
||||
ics2494->freq[15] = 65000000.0;
|
||||
break;
|
||||
case 101:
|
||||
/* ATI 18811-0/ATI 18812-0 for ATI Mach32 */
|
||||
ics2494->freq[0] = 42954000.0;
|
||||
ics2494->freq[1] = 48771000.0;
|
||||
ics2494->freq[2] = 92400000.0;
|
||||
ics2494->freq[3] = 36000000.0;
|
||||
ics2494->freq[4] = 30240000.0;
|
||||
ics2494->freq[5] = 32000000.0;
|
||||
ics2494->freq[6] = 110000000.0;
|
||||
ics2494->freq[7] = 80000000.0;
|
||||
ics2494->freq[8] = 50350000.0;
|
||||
ics2494->freq[9] = 56640000.0;
|
||||
ics2494->freq[10] = 0.0;
|
||||
ics2494->freq[11] = 44900000.0;
|
||||
ics2494->freq[12] = 39910000.0;
|
||||
ics2494->freq[13] = 44900000.0;
|
||||
ics2494->freq[14] = 75000000.0;
|
||||
ics2494->freq[15] = 65000000.0;
|
||||
break;
|
||||
case 102:
|
||||
/* ATI 18811-1/ATI 18811-2 for ATI Mach32 */
|
||||
ics2494->freq[0] = 100000000.0;
|
||||
ics2494->freq[1] = 126000000.0;
|
||||
ics2494->freq[2] = 92400000.0;
|
||||
ics2494->freq[3] = 36000000.0;
|
||||
ics2494->freq[4] = 50350000.0;
|
||||
ics2494->freq[5] = 56640000.0;
|
||||
ics2494->freq[7] = 44900000.0;
|
||||
ics2494->freq[8] = 135000000.0;
|
||||
ics2494->freq[9] = 32000000.0;
|
||||
ics2494->freq[10] = 110000000.0;
|
||||
ics2494->freq[11] = 80000000.0;
|
||||
ics2494->freq[12] = 39910000.0;
|
||||
ics2494->freq[13] = 44900000.0;
|
||||
ics2494->freq[14] = 75000000.0;
|
||||
ics2494->freq[15] = 65000000.0;
|
||||
break;
|
||||
case 305:
|
||||
/* ICS2494A(N)-205 for S3 86C924 */
|
||||
@@ -174,11 +341,11 @@ const device_t ics2494an_305_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18810_device = {
|
||||
.name = "ATI 18810 Clock Generator",
|
||||
.internal_name = "ati18810",
|
||||
const device_t ati18810_28800_device = {
|
||||
.name = "ATI 18810 (ATI 28800) Clock Generator",
|
||||
.internal_name = "ati18810_28800",
|
||||
.flags = 0,
|
||||
.local = 10,
|
||||
.local = 0,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
@@ -188,11 +355,11 @@ const device_t ati18810_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18811_0_device = {
|
||||
.name = "ATI 18811-0 Clock Generator",
|
||||
.internal_name = "ati18811_0",
|
||||
const device_t ati18811_0_28800_device = {
|
||||
.name = "ATI 18811-0 (ATI 28800) Clock Generator",
|
||||
.internal_name = "ati18811_0_28800",
|
||||
.flags = 0,
|
||||
.local = 110,
|
||||
.local = 1,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
@@ -202,11 +369,53 @@ const device_t ati18811_0_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18811_1_device = {
|
||||
.name = "ATI 18811-1 Clock Generator",
|
||||
.internal_name = "ati18811_1",
|
||||
const device_t ati18811_1_28800_device = {
|
||||
.name = "ATI 18811-1 (ATI 28800) Clock Generator",
|
||||
.internal_name = "ati18811_1_28800",
|
||||
.flags = 0,
|
||||
.local = 111,
|
||||
.local = 2,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18810_mach32_device = {
|
||||
.name = "ATI 18810 (ATI Mach32) Clock Generator",
|
||||
.internal_name = "ati18810_mach32",
|
||||
.flags = 0,
|
||||
.local = 100,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18811_0_mach32_device = {
|
||||
.name = "ATI 18811-0 (ATI Mach32) Clock Generator",
|
||||
.internal_name = "ati18811_0_mach32",
|
||||
.flags = 0,
|
||||
.local = 101,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ati18811_1_mach32_device = {
|
||||
.name = "ATI 18811-1 (ATI Mach32) Clock Generator",
|
||||
.internal_name = "ati18811_1_mach32",
|
||||
.flags = 0,
|
||||
.local = 102,
|
||||
.init = ics2494_init,
|
||||
.close = ics2494_close,
|
||||
.reset = NULL,
|
||||
|
||||
@@ -269,7 +269,7 @@ ati18800_init(const device_t *info)
|
||||
ati18800_in, ati18800_out,
|
||||
NULL,
|
||||
NULL);
|
||||
ati18800->svga.clock_gen = device_add(&ati18810_device);
|
||||
ati18800->svga.clock_gen = device_add(&ati18810_28800_device);
|
||||
ati18800->svga.getclock = ics2494_getclock;
|
||||
|
||||
io_sethandler(0x01ce, 0x0002, ati18800_in, NULL, NULL, ati18800_out, NULL, NULL, ati18800);
|
||||
|
||||
@@ -407,13 +407,23 @@ static void
|
||||
ati28800_recalctimings(svga_t *svga)
|
||||
{
|
||||
ati28800_t *ati28800 = (ati28800_t *) svga->priv;
|
||||
int clock_sel;
|
||||
int clock_sel = 0x00;
|
||||
|
||||
if (ati28800->regs[0xad] & 0x08)
|
||||
svga->hblankstart = ((ati28800->regs[0x0d] >> 2) << 8) + svga->crtc[2];
|
||||
|
||||
clock_sel = ((svga->miscout >> 2) & 3) | ((ati28800->regs[0xbe] & 0x10) >> 1) |
|
||||
((ati28800->regs[0xb9] & 2) << 1);
|
||||
if (svga->miscout & 0x04)
|
||||
clock_sel |= 0x01;
|
||||
if (svga->miscout & 0x08)
|
||||
clock_sel |= 0x02;
|
||||
if (ati28800->regs[0xb9] & 0x02)
|
||||
clock_sel |= 0x04;
|
||||
if (ati28800->regs[0xbe] & 0x10)
|
||||
clock_sel |= 0x08;
|
||||
|
||||
svga->interlace = !!(ati28800->regs[0xbe] & 0x02);
|
||||
if (svga->interlace)
|
||||
svga->dispend >>= 1;
|
||||
|
||||
if (ati28800->regs[0xa3] & 0x10)
|
||||
svga->memaddr_latch |= 0x10000;
|
||||
@@ -452,9 +462,25 @@ ati28800_recalctimings(svga_t *svga)
|
||||
} else
|
||||
svga->ati_4color = 0;
|
||||
|
||||
if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) {
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen);
|
||||
|
||||
switch ((ati28800->regs[0xb8] >> 6) & 3) {
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
case 1:
|
||||
svga->clock *= 2.0;
|
||||
break;
|
||||
case 2:
|
||||
svga->clock *= 3.0;
|
||||
break;
|
||||
case 3:
|
||||
svga->clock *= 4.0;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1)) {
|
||||
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen);
|
||||
ati28800_log("SEQREG1 bit 3=%x. gdcreg5 bits 5-6=%02x, 4bit pel=%02x, "
|
||||
"planar 16color=%02x, apa mode=%02x, attregs10 bit 7=%02x.\n",
|
||||
svga->seqregs[1] & 8, svga->gdcreg[5] & 0x60,
|
||||
@@ -568,7 +594,7 @@ ati28800k_init(const device_t *info)
|
||||
ati28800k_in, ati28800k_out,
|
||||
NULL,
|
||||
NULL);
|
||||
ati28800->svga.clock_gen = device_add(&ati18810_device);
|
||||
ati28800->svga.clock_gen = device_add(&ati18811_1_28800_device);
|
||||
ati28800->svga.getclock = ics2494_getclock;
|
||||
|
||||
io_sethandler(0x01ce, 0x0002, ati28800k_in, NULL, NULL, ati28800k_out, NULL, NULL, ati28800);
|
||||
@@ -646,7 +672,7 @@ ati28800_init(const device_t *info)
|
||||
ati28800_in, ati28800_out,
|
||||
NULL,
|
||||
NULL);
|
||||
ati28800->svga.clock_gen = device_add(&ati18810_device);
|
||||
ati28800->svga.clock_gen = device_add(&ati18811_1_28800_device);
|
||||
ati28800->svga.getclock = ics2494_getclock;
|
||||
|
||||
io_sethandler(0x01ce, 2,
|
||||
|
||||
@@ -2431,6 +2431,11 @@ mach_out(uint16_t addr, uint8_t val, void *priv)
|
||||
svga_out(addr, val, svga);
|
||||
return;
|
||||
|
||||
case 0x3C2:
|
||||
if (mach->regs[0xb8] & 0x08)
|
||||
return;
|
||||
break;
|
||||
|
||||
case 0x3C6:
|
||||
case 0x3C7:
|
||||
case 0x3C8:
|
||||
@@ -2465,10 +2470,56 @@ mach_out(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0x3D5:
|
||||
if (svga->crtcreg & 0x20)
|
||||
return;
|
||||
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80) && !(mach->regs[0xb4] & 0x80))
|
||||
if ((svga->crtcreg < 7) && ((svga->crtc[0x11] & 0x80) || (mach->regs[0xb4] & 0x40)) && !(mach->regs[0xb4] & 0x80))
|
||||
return;
|
||||
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80) && !(mach->regs[0xb4] & 0x80))
|
||||
if ((svga->crtcreg == 7) && ((svga->crtc[0x11] & 0x80) || (mach->regs[0xb4] & 0x40)) && !(mach->regs[0xb4] & 0x80))
|
||||
val = (svga->crtc[7] & ~0x10) | (val & 0x10);
|
||||
if (mach->regs[0xb8] & 0x04) {
|
||||
if ((svga->crtcreg < 0x0a) && (svga->crtcreg > 0x0d))
|
||||
return;
|
||||
}
|
||||
if (mach->regs[0xb4] & 0x04) {
|
||||
if (svga->crtcreg == 9) {
|
||||
if (val & 0x8f)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (mach->regs[0xb4] & 0x08) {
|
||||
if (svga->crtcreg == 6)
|
||||
return;
|
||||
if (svga->crtcreg == 7) {
|
||||
if (val & 0xaf)
|
||||
return;
|
||||
}
|
||||
if (svga->crtcreg == 9) {
|
||||
if (val & 0x20)
|
||||
return;
|
||||
}
|
||||
if (svga->crtcreg == 0x11) {
|
||||
if (val & 0x0f)
|
||||
return;
|
||||
}
|
||||
if ((svga->crtcreg == 0x10) ||
|
||||
(svga->crtcreg == 0x12) ||
|
||||
(svga->crtcreg == 0x15) ||
|
||||
(svga->crtcreg == 0x16))
|
||||
return;
|
||||
}
|
||||
if (mach->regs[0xb4] & 0x10) {
|
||||
if ((svga->crtcreg == 0x0a) ||
|
||||
(svga->crtcreg == 0x0b))
|
||||
return;
|
||||
}
|
||||
if (mach->regs[0xb4] & 0x20) {
|
||||
if (svga->crtcreg == 8) {
|
||||
if (val & 0x7f)
|
||||
return;
|
||||
}
|
||||
if (svga->crtcreg == 0x14) {
|
||||
if (val & 0x1f)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
old = svga->crtc[svga->crtcreg];
|
||||
svga->crtc[svga->crtcreg] = val;
|
||||
@@ -2726,28 +2777,82 @@ mach_set_resolution(mach_t *mach, svga_t *svga)
|
||||
dev->v_syncstart = 0x0601;
|
||||
|
||||
mach->accel.clock_sel_mode = 0;
|
||||
|
||||
mach_log("ATI Mode: set=%02x, dispcntl=%02x, h_total=%d, hdisp=%d, vdisp=%d, v_total=%04x, v_syncstart=%04x, hsync_start=%d, hsync_width=%d, clocksel=%02x, advancedcntl=%02x.\n", mach->shadow_set & 0x03, dev->disp_cntl, dev->h_total, dev->hdisp, dev->vdisp, dev->v_total, dev->v_syncstart, dev->hsync_start, dev->hsync_width, mach->accel.clock_sel & 0xff, dev->accel.advfunc_cntl & 0x05);
|
||||
if ((dev->disp_cntl_2 >> 5) == 1) { /*Enable the 8514/A subsystem and set modes according to the shadow sets if needed.*/
|
||||
switch (mach->shadow_set & 0x03) {
|
||||
case 0x01:
|
||||
if (!(dev->accel.advfunc_cntl & 0x04)) {
|
||||
dev->h_total = 0x64;
|
||||
dev->hdisp = 640;
|
||||
dev->vdisp = 480;
|
||||
dev->v_total = 0x0419;
|
||||
dev->v_syncstart = 0x03d7;
|
||||
mach->accel.clock_sel_mode = 0x50;
|
||||
mach_log("Mach: EEPROM 640x480: %04x.\n", mach->eeprom.data[7]);
|
||||
switch (mach->eeprom.data[7] & 0xff) {
|
||||
case 0x00: /*640x480 60Hz Non-interlaced*/
|
||||
default:
|
||||
dev->h_total = 0x64;
|
||||
dev->v_total = 0x0419;
|
||||
dev->v_syncstart = 0x03d7;
|
||||
mach->accel.clock_sel_mode = 0x50;
|
||||
break;
|
||||
case 0x01: /*640x480 72Hz Non-interlaced*/
|
||||
dev->h_total = 0x6a;
|
||||
dev->v_total = 0x040c;
|
||||
dev->v_syncstart = 0x03d1;
|
||||
mach->accel.clock_sel_mode = 0x24;
|
||||
break;
|
||||
case 0x03: /*640x480 72Hz Non-interlaced Alt*/
|
||||
dev->h_total = 0x71;
|
||||
dev->v_total = 0x04ca;
|
||||
dev->v_syncstart = 0x0422;
|
||||
mach->accel.clock_sel_mode = 0x6c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x02:
|
||||
if (dev->accel.advfunc_cntl & 0x04) {
|
||||
dev->h_total = 0x9e;
|
||||
dev->hdisp = 1024;
|
||||
dev->vdisp = 768;
|
||||
dev->v_total = 0x0669;
|
||||
dev->v_syncstart = 0x0601;
|
||||
mach->accel.clock_sel_mode = 0x1c;
|
||||
mach_log("Mach: EEPROM 1024x768: %04x.\n", mach->eeprom.data[9]);
|
||||
switch (mach->eeprom.data[9] & 0xff) {
|
||||
case 0x00: /*1024x768 76Hz Non-interlaced*/
|
||||
dev->h_total = 0xa3;
|
||||
dev->v_total = 0x064b;
|
||||
dev->v_syncstart = 0x060c;
|
||||
mach->accel.clock_sel_mode = 0x2c;
|
||||
break;
|
||||
|
||||
case 0x01: /*1024x768 87Hz Interlaced*/
|
||||
default:
|
||||
dev->h_total = 0x9e;
|
||||
dev->v_total = 0x0669;
|
||||
dev->v_syncstart = 0x0601;
|
||||
mach->accel.clock_sel_mode = 0x1c;
|
||||
break;
|
||||
case 0x02: /*1024x768 60Hz Non-interlaced*/
|
||||
dev->h_total = 0xa8;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x3c;
|
||||
break;
|
||||
case 0x04: /*1024x768 70Hz Non-interlaced*/
|
||||
dev->h_total = 0xa6;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
case 0x08: /*1024x768 72Hz Non-interlaced*/
|
||||
dev->h_total = 0xa1;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
case 0x82: /*1024x768 66Hz Non-interlaced*/
|
||||
dev->h_total = 0xac;
|
||||
dev->v_total = 0x065c;
|
||||
dev->v_syncstart = 0x060b;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2758,22 +2863,76 @@ mach_set_resolution(mach_t *mach, svga_t *svga)
|
||||
} else if ((dev->disp_cntl_2 >> 5) == 2) { /*Reset 8514/A to defaults if needed.*/
|
||||
if (dev->accel.advfunc_cntl & 0x04) {
|
||||
if (dev->hdisp == 640) {
|
||||
dev->h_total = 0x9e;
|
||||
dev->hdisp = 1024;
|
||||
dev->vdisp = 768;
|
||||
dev->v_total = 0x0669;
|
||||
dev->v_syncstart = 0x0601;
|
||||
mach->accel.clock_sel_mode = 0x1c;
|
||||
mach_log("Mach Reset: EEPROM 1024x768: %04x.\n", mach->eeprom.data[9]);
|
||||
switch (mach->eeprom.data[9] & 0xff) {
|
||||
case 0x00: /*1024x768 76Hz Non-interlaced*/
|
||||
dev->h_total = 0xa3;
|
||||
dev->v_total = 0x064b;
|
||||
dev->v_syncstart = 0x060c;
|
||||
mach->accel.clock_sel_mode = 0x2c;
|
||||
break;
|
||||
case 0x01: /*1024x768 87Hz Interlaced*/
|
||||
default:
|
||||
dev->h_total = 0x9e;
|
||||
dev->v_total = 0x0669;
|
||||
dev->v_syncstart = 0x0601;
|
||||
mach->accel.clock_sel_mode = 0x1c;
|
||||
break;
|
||||
case 0x02: /*1024x768 60Hz Non-interlaced*/
|
||||
dev->h_total = 0xa8;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x3c;
|
||||
break;
|
||||
case 0x04: /*1024x768 70Hz Non-interlaced*/
|
||||
dev->h_total = 0xa6;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
case 0x08: /*1024x768 72Hz Non-interlaced*/
|
||||
dev->h_total = 0xa1;
|
||||
dev->v_total = 0x064a;
|
||||
dev->v_syncstart = 0x0603;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
case 0x82: /*1024x768 66Hz Non-interlaced*/
|
||||
dev->h_total = 0xac;
|
||||
dev->v_total = 0x065c;
|
||||
dev->v_syncstart = 0x060b;
|
||||
mach->accel.clock_sel_mode = 0x38;
|
||||
break;
|
||||
}
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
} else {
|
||||
if (dev->hdisp == 1024) {
|
||||
dev->h_total = 0x64;
|
||||
dev->hdisp = 640;
|
||||
dev->vdisp = 480;
|
||||
dev->v_total = 0x0419;
|
||||
dev->v_syncstart = 0x03d7;
|
||||
mach->accel.clock_sel_mode = 0x50;
|
||||
mach_log("Mach Reset: EEPROM 640x480: %04x.\n", mach->eeprom.data[7]);
|
||||
switch (mach->eeprom.data[7] & 0xff) {
|
||||
case 0x00: /*640x480 60Hz Non-interlaced*/
|
||||
default:
|
||||
dev->h_total = 0x64;
|
||||
dev->v_total = 0x0419;
|
||||
dev->v_syncstart = 0x03d7;
|
||||
mach->accel.clock_sel_mode = 0x50;
|
||||
break;
|
||||
case 0x01: /*640x480 72Hz Non-interlaced*/
|
||||
dev->h_total = 0x6a;
|
||||
dev->v_total = 0x040c;
|
||||
dev->v_syncstart = 0x03d1;
|
||||
mach->accel.clock_sel_mode = 0x24;
|
||||
break;
|
||||
case 0x03: /*640x480 72Hz Non-interlaced Alt*/
|
||||
dev->h_total = 0x71;
|
||||
dev->v_total = 0x04ca;
|
||||
dev->v_syncstart = 0x0422;
|
||||
mach->accel.clock_sel_mode = 0x6c;
|
||||
break;
|
||||
}
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
}
|
||||
@@ -2797,14 +2956,29 @@ ati8514_recalctimings(svga_t *svga)
|
||||
dev->accel.ge_offset = (mach->accel.ge_offset_lo | (mach->accel.ge_offset_hi << 16)) << 2;
|
||||
mach->accel.crt_offset = (mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16)) << 2;
|
||||
|
||||
if (mach->accel.clock_sel_mode == 0x1c) {
|
||||
dev->interlace = 1;
|
||||
_8514_modes = 1;
|
||||
} else if (mach->accel.clock_sel_mode == 0x50) {
|
||||
dev->interlace = 0;
|
||||
_8514_modes = 2;
|
||||
switch (mach->accel.clock_sel_mode) {
|
||||
case 0x1c:
|
||||
dev->interlace = 1;
|
||||
_8514_modes = 1;
|
||||
break;
|
||||
case 0x24:
|
||||
case 0x2c:
|
||||
case 0x38:
|
||||
case 0x3c:
|
||||
case 0x50:
|
||||
case 0x6c:
|
||||
dev->interlace = 0;
|
||||
_8514_modes = 2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (_8514_modes)
|
||||
dev->ven_clock = mach->accel.clock_sel_mode & 0x7c;
|
||||
else
|
||||
dev->ven_clock = mach->accel.clock_sel & 0x7c;
|
||||
|
||||
dev->accel.ge_offset -= mach->accel.crt_offset;
|
||||
|
||||
mach_log("HDISP=%d, VDISP=%d, shadowset=%x, 8514/A mode=%x, clocksel=%02x.\n",
|
||||
@@ -2826,22 +3000,14 @@ ati8514_recalctimings(svga_t *svga)
|
||||
else if (dev->h_disp == 640)
|
||||
dev->dispend = 480;
|
||||
|
||||
dev->h_disp_time = dev->hdisp >> 3;
|
||||
dev->h_disp_time = dev->h_disp >> 3;
|
||||
|
||||
if (_8514_modes) {
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((mach->accel.clock_sel_mode >> 2) & 0x0f, svga->clock_gen8514) / 2;
|
||||
if (mach->accel.clock_sel_mode & 0x40)
|
||||
svga->clock_8514 *= 2;
|
||||
} else {
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen8514) / 2;
|
||||
if (mach->accel.clock_sel & 0x40)
|
||||
svga->clock_8514 *= 2;
|
||||
}
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0;
|
||||
if ((((dev->ven_clock >> 2) & 0x0f) == 0x09) && (dev->h_total == 0x6b))
|
||||
svga->clock_8514 /= 2.0;
|
||||
|
||||
if (dev->interlace) {
|
||||
if (dev->interlace)
|
||||
dev->dispend >>= 1;
|
||||
svga->clock_8514 /= 2;
|
||||
}
|
||||
|
||||
mach_log("cntl=%d, hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x, shadow=%x interlace=%d.\n",
|
||||
dev->accel.advfunc_cntl & 0x04, dev->h_disp, dev->dispend, dev->pitch, dev->rowoffset,
|
||||
@@ -2864,13 +3030,24 @@ mach_recalctimings(svga_t *svga)
|
||||
{
|
||||
mach_t *mach = (mach_t *) svga->priv;
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
int clock_sel;
|
||||
int clock_sel = 0x00;
|
||||
int _8514_modes = 0;
|
||||
|
||||
if (mach->regs[0xad] & 0x08)
|
||||
svga->hblankstart = ((mach->regs[0x0d] >> 2) << 8) + svga->crtc[2];
|
||||
|
||||
clock_sel = ((svga->miscout >> 2) & 3) | ((mach->regs[0xbe] & 0x10) >> 1) | ((mach->regs[0xb9] & 2) << 1);
|
||||
if (svga->miscout & 0x04)
|
||||
clock_sel |= 0x01;
|
||||
if (svga->miscout & 0x08)
|
||||
clock_sel |= 0x02;
|
||||
if (mach->regs[0xb9] & 0x02)
|
||||
clock_sel |= 0x04;
|
||||
if (mach->regs[0xbe] & 0x10)
|
||||
clock_sel |= 0x08;
|
||||
|
||||
svga->interlace = !!(mach->regs[0xbe] & 0x02);
|
||||
if (svga->interlace)
|
||||
svga->dispend >>= 1;
|
||||
|
||||
if (ATI_MACH32) {
|
||||
if (mach->regs[0xad] & 0x04)
|
||||
@@ -2911,11 +3088,8 @@ mach_recalctimings(svga_t *svga)
|
||||
svga->ati_4color = 0;
|
||||
}
|
||||
|
||||
svga->interlace = !!(mach->regs[0xbe] & 0x02);
|
||||
if (svga->interlace)
|
||||
svga->dispend >>= 1;
|
||||
|
||||
mach_log("ON=%d, override=%d, gelo=%04x, gehi=%04x, crtlo=%04x, crthi=%04x, vgahdisp=%d.\n", dev->on, svga->override, mach->accel.ge_offset_lo, mach->accel.ge_offset_hi, mach->accel.crt_offset_lo, mach->accel.crt_offset_hi, svga->hdisp);
|
||||
|
||||
if (dev->on) {
|
||||
dev->memaddr_latch = 0; /*(mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16)) << 2;*/
|
||||
dev->interlace = !!(dev->disp_cntl & 0x10);
|
||||
@@ -2925,14 +3099,41 @@ mach_recalctimings(svga_t *svga)
|
||||
dev->accel.ge_offset = (mach->accel.ge_offset_lo | (mach->accel.ge_offset_hi << 16));
|
||||
mach->accel.crt_offset = (mach->accel.crt_offset_lo | (mach->accel.crt_offset_hi << 16));
|
||||
|
||||
if (mach->accel.clock_sel_mode == 0x1c) {
|
||||
dev->interlace = 1;
|
||||
_8514_modes = 1;
|
||||
} else if (mach->accel.clock_sel_mode == 0x50) {
|
||||
dev->interlace = 0;
|
||||
_8514_modes = 2;
|
||||
switch (mach->accel.clock_sel_mode) {
|
||||
case 0x1c:
|
||||
dev->interlace = 1;
|
||||
_8514_modes = 1;
|
||||
break;
|
||||
case 0x24:
|
||||
case 0x2c:
|
||||
case 0x38:
|
||||
case 0x3c:
|
||||
case 0x50:
|
||||
case 0x6c:
|
||||
dev->interlace = 0;
|
||||
_8514_modes = 2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (_8514_modes)
|
||||
dev->ven_clock = mach->accel.clock_sel_mode & 0x7c;
|
||||
else
|
||||
dev->ven_clock = mach->accel.clock_sel & 0x7c;
|
||||
|
||||
if (ATI_MACH32) {
|
||||
mach_log("Mach32: Clock=%02x, double=%02x, h_total=%02x.\n", (dev->ven_clock >> 2) & 0x0f, dev->ven_clock & 0x40, dev->h_total);
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0;
|
||||
} else {
|
||||
mach_log("Mach8: Clock=%02x, double=%02x, h_total=%02x, selmode=%02x.\n", (dev->ven_clock >> 2) & 0x0f, dev->ven_clock & 0x40, dev->h_total, mach->accel.clock_sel_mode);
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock8514((dev->ven_clock >> 2) & 0x0f, svga->clock_gen8514) / 2.0;
|
||||
if ((((dev->ven_clock >> 2) & 0x0f) == 0x09) && (dev->h_total == 0x6b))
|
||||
svga->clock_8514 /= 2.0;
|
||||
}
|
||||
if (dev->ven_clock & 0x40)
|
||||
svga->clock_8514 *= 2.0;
|
||||
|
||||
if (dev->bpp) {
|
||||
dev->accel.ge_offset <<= 1;
|
||||
mach->accel.crt_offset <<= 1;
|
||||
@@ -2956,31 +3157,19 @@ mach_recalctimings(svga_t *svga)
|
||||
dev->h_disp = dev->hdisp;
|
||||
dev->dispend = dev->vdisp;
|
||||
if (dev->dispend == 959) { /*FIXME: vertical resolution mess on EEPROM tests on Mach8*/
|
||||
dev->dispend >>= 1;
|
||||
dev->dispend++;
|
||||
dev->dispend >>= 1;
|
||||
} else if (dev->dispend == 600)
|
||||
dev->h_disp = 800;
|
||||
else if (dev->h_disp == 640)
|
||||
dev->dispend = 480;
|
||||
|
||||
dev->h_disp_time = dev->hdisp >> 3;
|
||||
dev->h_disp_time = dev->h_disp >> 3;
|
||||
|
||||
if (_8514_modes) {
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel_mode >> 2) & 0x0f, svga->clock_gen) / 2;
|
||||
if (mach->accel.clock_sel_mode & 0x40)
|
||||
svga->clock_8514 *= 2;
|
||||
} else {
|
||||
svga->clock_8514 = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen) / 2;
|
||||
if (mach->accel.clock_sel & 0x40)
|
||||
svga->clock_8514 *= 2;
|
||||
}
|
||||
mach_log("8514/A modes=%d, clocksel=%02x, clkselmode=%02x, divide reg ibm=%02x, divide reg vga=%02x, vgainterlace=%x, interlace=%x, htotal=%02x.\n", _8514_modes, mach->accel.clock_sel & 0xfe, mach->accel.clock_sel_mode & 0xfe, mach->accel.clock_sel & 0x40, mach->regs[0xb8] & 0x40, svga->interlace, dev->interlace, dev->htotal);
|
||||
|
||||
mach_log("8514/A clock sel=%x, divide reg ibm=%02x, divide reg vga=%02x, vgainterlace=%x, interlace=%x.\n", clock_sel, mach->accel.clock_sel & 0x40, mach->regs[0xb8] & 0xc0, svga->interlace, dev->interlace);
|
||||
|
||||
if (dev->interlace) {
|
||||
if (dev->interlace)
|
||||
dev->dispend >>= 1;
|
||||
svga->clock_8514 /= 2;
|
||||
}
|
||||
|
||||
if (ATI_MACH32) {
|
||||
switch ((mach->shadow_set >> 8) & 0x03) {
|
||||
@@ -3104,33 +3293,30 @@ mach_recalctimings(svga_t *svga)
|
||||
}
|
||||
} else {
|
||||
dev->mode = VGA_MODE;
|
||||
if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) {
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
mach_log("GDCREG5=%02x, ATTR10=%02x, ATI B0 bit 5=%02x, ON=%d.\n",
|
||||
svga->gdcreg[5] & 0x60, svga->attrregs[0x10] & 0x40, mach->regs[0xb0] & 0x20, dev->on);
|
||||
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen);
|
||||
mach_log("VGA clock sel=%x, divide reg=%02x.\n", clock_sel, mach->regs[0xb8] & 0xc0);
|
||||
if (svga->interlace)
|
||||
svga->clock /= 2;
|
||||
if (ATI_MACH32)
|
||||
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen);
|
||||
else
|
||||
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen);
|
||||
|
||||
if (ATI_MACH32) {
|
||||
if (mach->regs[0xb8] & 0x40)
|
||||
svga->clock *= 2;
|
||||
} else {
|
||||
switch (mach->regs[0xb8] & 0xc0) {
|
||||
case 0x40:
|
||||
svga->clock *= 2;
|
||||
break;
|
||||
case 0x80:
|
||||
svga->clock *= 3;
|
||||
break;
|
||||
case 0xc0:
|
||||
svga->clock *= 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch ((mach->regs[0xb8] >> 6) & 3) {
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
case 1:
|
||||
svga->clock *= 2.0;
|
||||
break;
|
||||
case 2:
|
||||
svga->clock *= 3.0;
|
||||
break;
|
||||
case 3:
|
||||
svga->clock *= 4.0;
|
||||
break;
|
||||
}
|
||||
|
||||
mach_log("VGA clock sel=%02x, divide reg=%02x, miscout bits2-3=%x, machregbe bit4=%02x, machregb9 bit1=%02x, charwidth=%d, htotal=%02x, hdisptime=%02x, seqregs1 bit 3=%02x.\n", clock_sel, (mach->regs[0xb8] >> 6) & 3, svga->miscout & 0x0c, mach->regs[0xbe] & 0x10, mach->regs[0xb9] & 0x02, svga->char_width, svga->htotal, svga->hdisp_time, svga->seqregs[1] & 8);
|
||||
if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) {
|
||||
if ((svga->gdcreg[5] & 0x40) || (svga->attrregs[0x10] & 0x40) || (mach->regs[0xb0] & 0x20)) {
|
||||
svga->map8 = svga->pallook;
|
||||
@@ -6376,7 +6562,7 @@ mach32_hwcursor_draw(svga_t *svga, int displine)
|
||||
case 8:
|
||||
color0 = dev->pallook[mach->cursor_col_0];
|
||||
color1 = dev->pallook[mach->cursor_col_1];
|
||||
mach_log("4/8BPP: Color0=%08x, Color1=%08x.\n", color0, color1);
|
||||
mach_log("4/8BPP: Color0=%08x, Color1=%08x, interlace=%x, oddeven=%d.\n", color0, color1, dev->interlace, dev->hwcursor_oddeven);
|
||||
break;
|
||||
case 15:
|
||||
color0 = video_15to32[((mach->ext_cur_col_0_r << 16) | (mach->ext_cur_col_0_g << 8) | mach->cursor_col_0) & 0xffff];
|
||||
@@ -7196,7 +7382,7 @@ mach8_init(const device_t *info)
|
||||
else
|
||||
mach->config1 |= 0x0c;
|
||||
mach->config1 |= 0x0400;
|
||||
svga->clock_gen = device_add(&ati18811_1_device);
|
||||
svga->clock_gen = device_add(&ati18811_1_mach32_device);
|
||||
} else if (mach->mca_bus) {
|
||||
video_inform(VIDEO_FLAG_TYPE_8514, &timing_mach32_mca);
|
||||
if (is286 && !is386)
|
||||
@@ -7204,7 +7390,7 @@ mach8_init(const device_t *info)
|
||||
else
|
||||
mach->config1 |= 0x06;
|
||||
mach->config1 |= 0x0400;
|
||||
svga->clock_gen = device_add(&ati18811_1_device);
|
||||
svga->clock_gen = device_add(&ati18811_1_mach32_device);
|
||||
} else if (mach->pci_bus) {
|
||||
video_inform(VIDEO_FLAG_TYPE_8514, &timing_mach32_pci);
|
||||
mach->config1 |= 0x0e;
|
||||
@@ -7213,11 +7399,11 @@ mach8_init(const device_t *info)
|
||||
else
|
||||
mach->config1 |= 0x0400;
|
||||
mach->config2 |= 0x2000;
|
||||
svga->clock_gen = device_add(&ati18811_1_device);
|
||||
svga->clock_gen = device_add(&ati18811_1_mach32_device);
|
||||
} else {
|
||||
video_inform(VIDEO_FLAG_TYPE_8514, &timing_gfxultra_isa);
|
||||
mach->config1 |= 0x0400;
|
||||
svga->clock_gen = device_add(&ati18811_1_device);
|
||||
svga->clock_gen = device_add(&ati18811_1_mach32_device);
|
||||
}
|
||||
mem_mapping_add(&mach->mmio_linear_mapping, 0, 0, mach32_ap_readb, mach32_ap_readw, mach32_ap_readl, mach32_ap_writeb, mach32_ap_writew, mach32_ap_writel, NULL, MEM_MAPPING_EXTERNAL, mach);
|
||||
mem_mapping_disable(&mach->mmio_linear_mapping);
|
||||
@@ -7239,10 +7425,12 @@ mach8_init(const device_t *info)
|
||||
mach->config1 |= 0x20;
|
||||
|
||||
mach->config2 = 0x02;
|
||||
svga->clock_gen = device_add(&ati18811_0_device);
|
||||
svga->clock_gen = device_add(&ati18811_1_mach32_device);
|
||||
}
|
||||
dev->bpp = 0;
|
||||
svga->getclock = ics2494_getclock;
|
||||
svga->clock_gen8514 = svga->clock_gen;
|
||||
svga->getclock8514 = svga->getclock;
|
||||
|
||||
dev->on = 0;
|
||||
dev->pitch = 1024;
|
||||
@@ -7341,7 +7529,7 @@ ati8514_init(svga_t *svga, void *ext8514, void *dev8514)
|
||||
|
||||
dev->accel_out_fifo = ati8514_accel_out_fifo;
|
||||
dev->vblank_start = ati8514_vblank_start;
|
||||
svga->clock_gen8514 = device_add(&ati18811_0_device);
|
||||
svga->clock_gen8514 = device_add(&ati18811_1_mach32_device);
|
||||
svga->getclock8514 = ics2494_getclock;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user