From d3efb6998bf2a1a1e8db03a7e35b4aedd1cbdf46 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 00:37:30 +0100 Subject: [PATCH 01/44] ES1371 MIDI UART transmit interrupt enable bit is now actually honored. --- src/sound/snd_audiopci.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c index 480362e3a..37b112287 100644 --- a/src/sound/snd_audiopci.c +++ b/src/sound/snd_audiopci.c @@ -158,7 +158,7 @@ typedef struct { #define INT_STATUS_DAC2 (1<<1) #define UART_CTRL_RXINTEN (1<<7) -#define UART_CTRL_TXINTEN (1<<5) +#define UART_CTRL_TXINTEN (3<<5) #define UART_STATUS_RXINT (1<<7) #define UART_STATUS_TXINT (1<<2) @@ -206,7 +206,8 @@ es1371_update_irqs(es1371_t *dev) irq = 1; /* MIDI input is unsupported for now */ - if ((dev->int_status & INT_STATUS_UART) && (dev->uart_status & UART_STATUS_TXINT)) + if ((dev->int_status & INT_STATUS_UART) && (dev->uart_status & UART_STATUS_TXINT) && + ((dev->uart_ctrl & UART_CTRL_TXINTEN) != 0x20)) irq = 1; if (irq) @@ -786,6 +787,9 @@ es1371_outb(uint16_t port, uint8_t val, void *p) Addressable as byte only */ case 0x09: dev->uart_ctrl = val & 0xe3; + if ((dev->uart_ctrl & UART_CTRL_TXINTEN) != 0x20) + dev->int_status &= ~INT_STATUS_UART; + es1371_update_irqs(dev); audiopci_log("ES1371 UART Cntrl = %02x\n", dev->uart_ctrl); break; From 39f40d45ea0bd0d167a0decb5264de2659ca78ae Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 00:39:35 +0100 Subject: [PATCH 02/44] The ES1371 now correctly clears all interrupts when it is reset. --- src/sound/snd_audiopci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c index 37b112287..7efc9e812 100644 --- a/src/sound/snd_audiopci.c +++ b/src/sound/snd_audiopci.c @@ -317,6 +317,9 @@ es1371_reset(void *p) /* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b Addressable as longword only */ dev->uart_fifo = 0xfffffe00; + + /* Update interrupts to ensure they're all correctly cleared. */ + es1371_update_irqs(dev); } From 0d0459f9724a968a14af26599ba731653558f87b Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 00:45:50 +0100 Subject: [PATCH 03/44] The ES1371 no longer blocks reads of the power management registers. --- src/sound/snd_audiopci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c index 7efc9e812..7f10701f5 100644 --- a/src/sound/snd_audiopci.c +++ b/src/sound/snd_audiopci.c @@ -1404,7 +1404,7 @@ es1371_pci_read(int func, int addr, void *p) if (func > 0) return 0xff; - if (addr > 0x3f) + if ((addr > 0x3f) && ((addr < 0xdc) || (addr > 0xe1))) return 0x00; switch (addr) { From d28c9af75389fdcbe332c6320b0e950c5e3d5c4f Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 00:47:23 +0100 Subject: [PATCH 04/44] Bumped up the version to 3.1. --- CMakeLists.txt | 2 +- src/include_make/86box/version.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89e661fcb..f9e0a29f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ cmake_policy(SET CMP0079 NEW) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") project(86Box - VERSION 3.0 + VERSION 3.1 DESCRIPTION "Emulator of x86-based systems" HOMEPAGE_URL "https://86box.net" LANGUAGES C CXX) diff --git a/src/include_make/86box/version.h b/src/include_make/86box/version.h index b52c362f8..b2eb49aaf 100644 --- a/src/include_make/86box/version.h +++ b/src/include_make/86box/version.h @@ -20,9 +20,9 @@ #define EMU_NAME "86Box" #define EMU_NAME_W LSTR(EMU_NAME) -#define EMU_VERSION "3.0" +#define EMU_VERSION "3.1" #define EMU_VERSION_W LSTR(EMU_VERSION) -#define EMU_VERSION_EX "3.00" +#define EMU_VERSION_EX "3.01" #define EMU_VERSION_MAJ 3 #define EMU_VERSION_MIN 0 #define EMU_VERSION_PATCH 0 From 0a0d47745861bb46cab4c20f64f4483f4c019932 Mon Sep 17 00:00:00 2001 From: mlow <77110434+notmlow@users.noreply.github.com> Date: Fri, 3 Dec 2021 09:27:03 -0500 Subject: [PATCH 05/44] Fix a mistake in French translation (#1901) Properly translated the Help menu tab to Aide instead of ?. --- src/win/languages/fr-FR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index 06f46221d..b0db2586c 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -148,7 +148,7 @@ BEGIN # endif END #endif - POPUP "&?" + POPUP "&Aide" BEGIN MENUITEM "&Documentation...", IDM_DOCS MENUITEM "&A Propos de 86Box...", IDM_ABOUT From 51cfb056c9cc92e5ee76287da66c1dc83d48fec4 Mon Sep 17 00:00:00 2001 From: mlow <77110434+notmlow@users.noreply.github.com> Date: Fri, 3 Dec 2021 09:30:23 -0500 Subject: [PATCH 06/44] Fix a mistake in the French translation (#1902) Fixed a typo under the Vue menu section. The typo is Echelle facteurr while the correct spelling is Echelle facteur. --- src/win/languages/fr-FR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index b0db2586c..be7f86889 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -49,7 +49,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Specifier dimensions...", IDM_VID_SPECIFY_DIM MENUITEM "F&orcer 4:3", IDM_VID_FORCE43 - POPUP "&Echelle facteurr" + POPUP "&Echelle facteur" BEGIN MENUITEM "&0.5x", IDM_VID_SCALE_1X MENUITEM "&1x", IDM_VID_SCALE_2X From 09dd15782a5d97ab027b4279c02135e4953a05b1 Mon Sep 17 00:00:00 2001 From: mlow <77110434+notmlow@users.noreply.github.com> Date: Fri, 3 Dec 2021 09:37:19 -0500 Subject: [PATCH 07/44] Fixed a typo under cassette menu. Fixed a typo under the cassette menu. The typo is Image Exsistane while the correct spelling is Image Existante. --- src/win/languages/fr-FR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index be7f86889..fe6cdc865 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -167,7 +167,7 @@ BEGIN MENUITEM "&Nouvelle image...", IDM_CASSETTE_IMAGE_NEW MENUITEM SEPARATOR MENUITEM "Image &Existante...", IDM_CASSETTE_IMAGE_EXISTING - MENUITEM "Image Exsistane(&Lecture seule)...", IDM_CASSETTE_IMAGE_EXISTING_WP + MENUITEM "Image Existante(&Lecture seule)...", IDM_CASSETTE_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "En®istrer", IDM_CASSETTE_RECORD MENUITEM "&Jouer", IDM_CASSETTE_PLAY From 4a7b330f3f7089b7ea84c17951a76394ac8092de Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 19:48:51 +0100 Subject: [PATCH 08/44] Minor Russian translation fixes by mlow. --- src/win/languages/ru-RU.rc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 40c7eaf9c..7f80abe87 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -534,7 +534,7 @@ END STRINGTABLE DISCARDABLE BEGIN - IDS_4096 "Жесткий диск (%s)" + IDS_4096 "Жёсткий диск (%s)" IDS_4097 "%01i:%01i" IDS_4098 "%01i" IDS_4099 "MFM/RLL или ESDI дисководов CD-ROM никогда не существовало" @@ -544,7 +544,7 @@ BEGIN IDS_4103 "Добавить существующий жёсткий диск" IDS_4104 "Размер образов дисков HDI не может превышать 4 ГБ." IDS_4105 "Размер образов дисков не может превышать 127 ГБ." - IDS_4106 "Образы жестких дисков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Все файлы (*.*)\0*.*\0" + IDS_4106 "Образы жёстких дисков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Все файлы (*.*)\0*.*\0" IDS_4107 "Невозможно прочитать файл" IDS_4108 "Невозможно записать файл" IDS_4109 "Образы HDI или HDX с размером сектора, отличным от 512, не поддерживаются." @@ -565,12 +565,12 @@ BEGIN IDS_4124 "Образ HDX (.hdx)" IDS_4125 "VHD фиксированного размера (.vhd)" IDS_4126 "VHD динамического размера (.vhd)" - IDS_4127 "Дифференцированнный образ VHD (.vhd)" + IDS_4127 "Дифференцированный образ VHD (.vhd)" IDS_4128 "Большие блоки (2 МБ)" IDS_4129 "Маленькие блоки (512 КБ)" IDS_4130 "Файлы VHD (*.VHD)\0*.VHD\0Все файлы (*.*)\0*.*\0" IDS_4131 "Выберите родительский VHD" - IDS_4132 "Это может означать, что родительский образ был изменён после того, как был создан дифференцированнный образ.\n\nЭто также может произойти, если файлы образа были перемещены или скопированы, или из-за ошибки в программе, создавшей этот диск.\n\nВы хотите исправить временные метки?" + IDS_4132 "Это может означать, что родительский образ был изменён после того, как был создан дифференцированный образ.\n\nЭто также может произойти, если файлы образа были перемещены или скопированы, или из-за ошибки в программе, создавшей этот диск.\n\nВы хотите исправить временные метки?" IDS_4133 "Временные метки родительского и дочернего дисков не совпадают" IDS_4134 "Не удалось исправить временную метку VHD." IDS_4135 "%01i:%02i" From 303707998b2832a9bce56c8c1c0e62c61bb412f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miran=20Gr=C4=8Da?= Date: Fri, 3 Dec 2021 20:10:45 +0100 Subject: [PATCH 09/44] Update for RTMidi. --- .ci/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/build.sh b/.ci/build.sh index b0c22f671..f9d5f56af 100644 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -224,7 +224,7 @@ else fi libpkgs="" longest_libpkg=0 - for pkg in libc6-dev linux-libc-dev libopenal-dev libfreetype6-dev libsdl2-dev libpng-dev + for pkg in libc6-dev linux-libc-dev libopenal-dev libfreetype6-dev libsdl2-dev libpng-dev librtmidi-dev do libpkgs="$libpkgs $pkg:$arch_deb" length=$(echo -n $pkg | sed 's/-dev$//' | wc -c) From 3eaa6153b5992b3850c203912603938a83abe975 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 20:12:44 +0100 Subject: [PATCH 10/44] Switched MIDI to RtMidi. --- src/CMakeLists.txt | 7 +- src/rtmidi_midi.cpp | 204 ++++++++++++++++++++++++++++++++++ src/win/CMakeLists.txt | 2 +- src/win/Makefile.mingw | 6 +- src/win/win_midi.c | 241 ----------------------------------------- 5 files changed, 214 insertions(+), 246 deletions(-) create mode 100644 src/rtmidi_midi.cpp delete mode 100644 src/win/win_midi.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7e9e24e89..58a9c2959 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -36,7 +36,12 @@ endif() # MACOSX_BUNDLE prepares a macOS application bundle including with the app icon add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c - device.c nvr.c nvr_at.c nvr_ps2.c ${APP_ICON_MACOSX}) + device.c nvr.c nvr_at.c nvr_ps2.c rtmidi_midi.cpp ${APP_ICON_MACOSX}) + +find_package(RTMIDI REQUIRED) +target_include_directories(86Box ${RTMIDI_INCLUDE_DIRS}) +target_link_directories(86Box INTERFACE ${RTMIDI_LIBRARY_DIRS}) +target_link_libraries(86Box ${RTMIDI_LIBRARY_DIRS}) if(APPLE) target_link_libraries(86Box "-framework AppKit") diff --git a/src/rtmidi_midi.cpp b/src/rtmidi_midi.cpp new file mode 100644 index 000000000..43f8a2400 --- /dev/null +++ b/src/rtmidi_midi.cpp @@ -0,0 +1,204 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * MIDI backend implemented using the RtMidi library. + * + * Author: jgilje, + * Miran Grca, + * Copyright 2021 jgilje. + * Copyright 2021 Miran Grca. + */ +#if defined __has_include +# if __has_include () +# include +# endif +# if __has_include () +# include +# endif +#endif + +#include +#include + +extern "C" +{ +#include <86box/86box.h> +#include <86box/midi.h> +#include <86box/plat_midi.h> +#include <86box/config.h> + + +static RtMidiOut * midiout = nullptr; +static RtMidiIn * midiin = nullptr; +static int midi_out_id = 0, midi_in_id = 0; +static const int midi_lengths[8] = {3, 3, 3, 3, 2, 2, 3, 1}; + + +int +plat_midi_write(uint8_t val) +{ + return 0; +} + + +void plat_midi_init(void) +{ + try { + if (!midiout) midiout = new RtMidiOut; + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI output: %s\n", error.getMessage().c_str()); + return; + } + + midi_out_id = config_get_int((char*)SYSTEM_MIDI_NAME, (char*)"midi", 0); + + try { + midiout->openPort(midi_out_id); + } catch (RtMidiError& error) { + pclog("Fallback to default MIDI output port: %s\n", error.getMessage().c_str()); + + try { + midiout->openPort(0); + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI output: %s\n", error.getMessage().c_str()); + delete midiout; + midiout = nullptr; + return; + } + } +} + + +void +plat_midi_close(void) +{ + if (!midiout) + return; + + midiout->closePort(); + + delete midiout; + midiout = nullptr; +} + + +int +plat_midi_get_num_devs(void) +{ + if (!midiout) { + try { + midiout = new RtMidiOut; + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI output: %s\n", error.getMessage().c_str()); + } + } + + return midiout ? midiout->getPortCount() : 0; +} + + +void +plat_midi_play_msg(uint8_t *msg) +{ + if (midiout) + midiout->sendMessage(msg, midi_lengths[(msg[0] >> 4) & 7]); +} + + +void +plat_midi_get_dev_name(int num, char *s) +{ + strcpy(s, midiout->getPortName(num).c_str()); +} + + +void +plat_midi_play_sysex(uint8_t *sysex, unsigned int len) +{ + if (midiout) + midiout->sendMessage(sysex, len); +} + + +static void +plat_midi_callback(double timeStamp, std::vector *message, void *userData) +{ + if (message->size() <= 3) + midi_in_msg(message->data()); + else + midi_in_sysex(message->data(), message->size()); +} + + +void +plat_midi_input_init(void) +{ + try { + if (!midiin) + midiin = new RtMidiIn; + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI input: %s\n", error.getMessage().c_str()); + return; + } + + midi_in_id = config_get_int((char*)SYSTEM_MIDI_NAME, (char*)"midi_input", 0); + + try { + midiin->openPort(midi_in_id); + } catch (RtMidiError& error) { + pclog("Fallback to default MIDI input port: %s\n", error.getMessage().c_str()); + + try { + midiin->openPort(0); + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI input: %s\n", error.getMessage().c_str()); + delete midiin; + midiin = nullptr; + return; + } + } + + midiin->setCallback(plat_midi_callback); +} + + +void +plat_midi_input_close(void) +{ + midiin->cancelCallback(); + midiin->closePort(); + + delete midiin; + midiin = nullptr; + + return; +} + + +int +plat_midi_in_get_num_devs(void) +{ + if (!midiin) { + try { + midiin = new RtMidiIn; + } catch (RtMidiError& error) { + pclog("Failed to initialize MIDI input: %s\n", error.getMessage().c_str()); + } + } + + return midiin ? midiin->getPortCount() : 0; +} + + +void +plat_midi_in_get_dev_name(int num, char *s) +{ + strcpy(s, midiin->getPortName(num).c_str()); +} + +} diff --git a/src/win/CMakeLists.txt b/src/win/CMakeLists.txt index 1a535c61a..301544798 100644 --- a/src/win/CMakeLists.txt +++ b/src/win/CMakeLists.txt @@ -16,7 +16,7 @@ enable_language(RC) add_library(plat OBJECT win.c win_dynld.c win_cdrom.c win_thread.c - win_keyboard.c win_crashdump.c win_midi.c win_mouse.c) + win_keyboard.c win_crashdump.c win_mouse.c) add_library(ui OBJECT win_ui.c win_icon.c win_stbar.c win_sdl.c win_dialog.c win_about.c win_settings.c win_devconf.c win_snd_gain.c win_specify_dim.c win_new_floppy.c diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index 0fcdd9ab4..e3199b319 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -466,7 +466,7 @@ CXXFLAGS := $(CFLAGS) ######################################################################### MAINOBJ := 86box.o config.o log.o random.o timer.o io.o acpi.o apm.o dma.o ddma.o \ nmi.o pic.o pit.o port_6x.o port_92.o ppi.o pci.o mca.o \ - usb.o device.o nvr.o nvr_at.o nvr_ps2.o \ + usb.o device.o nvr.o nvr_at.o nvr_ps2.o rtmidi_midi.o \ $(VNCOBJ) MEMOBJ := catalyst_flash.o i2c_eeprom.o intel_flash.o mem.o rom.o smram.o spd.o sst_flash.o @@ -674,7 +674,7 @@ VOODOOOBJ := vid_voodoo.o vid_voodoo_banshee.o \ PLATOBJ := win.o \ win_dynld.o win_thread.o \ win_cdrom.o win_keyboard.o \ - win_crashdump.o win_midi.o \ + win_crashdump.o \ win_mouse.o UIOBJ := win_ui.o win_icon.o win_stbar.o win_discord.o \ @@ -704,7 +704,7 @@ LIBS := -mwindows -lcomctl32 \ ifeq ($(VNC), y) LIBS += $(VNCLIB) -lws2_32 endif -LIBS += -lpng -lz -lwsock32 -lshell32 -liphlpapi -lpsapi -lSDL2 -limm32 -lhid -lsetupapi -loleaut32 -luxtheme -lversion -lwinmm -static -lstdc++ +LIBS += -lpng -lz -lwsock32 -lshell32 -liphlpapi -lpsapi -lSDL2 -limm32 -lhid -lsetupapi -loleaut32 -luxtheme -lversion -lrtmidi -lwinmm -static -lstdc++ ifneq ($(X64), y) ifneq ($(ARM64), y) LIBS += -Wl,--large-address-aware diff --git a/src/win/win_midi.c b/src/win/win_midi.c deleted file mode 100644 index 86ff9d285..000000000 --- a/src/win/win_midi.c +++ /dev/null @@ -1,241 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include <86box/86box.h> -#include <86box/config.h> -#include <86box/midi.h> -#include <86box/plat.h> -#include <86box/plat_midi.h> - - -typedef struct -{ - int midi_id, midi_input_id; - - HANDLE m_event; - - HMIDIOUT midi_out_device; - HMIDIIN midi_in_device; - - MIDIHDR m_hdr; -} plat_midi_t; - -plat_midi_t *pm = NULL, *pm_in = NULL; - - -void -plat_midi_init(void) -{ - MMRESULT hr; - - pm = (plat_midi_t *) malloc(sizeof(plat_midi_t)); - memset(pm, 0, sizeof(plat_midi_t)); - - pm->midi_id = config_get_int(SYSTEM_MIDI_NAME, "midi", 0); - - hr = MMSYSERR_NOERROR; - - pm->m_event = CreateEvent(NULL, TRUE, TRUE, NULL); - - hr = midiOutOpen(&pm->midi_out_device, pm->midi_id, - (uintptr_t) pm->m_event, 0, CALLBACK_EVENT); - if (hr != MMSYSERR_NOERROR) { - printf("midiOutOpen error - %08X\n", hr); - pm->midi_id = 0; - hr = midiOutOpen(&pm->midi_out_device, pm->midi_id, - (uintptr_t) pm->m_event, 0, CALLBACK_EVENT); - if (hr != MMSYSERR_NOERROR) { - printf("midiOutOpen error - %08X\n", hr); - return; - } - } - - midiOutReset(pm->midi_out_device); -} - - -void -plat_midi_close(void) -{ - if (pm) { - if (pm->midi_out_device != NULL) { - midiOutReset(pm->midi_out_device); - midiOutClose(pm->midi_out_device); - CloseHandle(pm->m_event); - } - - free(pm); - pm = NULL; - } -} - - -int -plat_midi_get_num_devs(void) -{ - return midiOutGetNumDevs(); -} - - -void -plat_midi_get_dev_name(int num, char *s) -{ - MIDIOUTCAPS caps; - - midiOutGetDevCaps(num, &caps, sizeof(caps)); - strcpy(s, caps.szPname); -} - - -void -plat_midi_play_msg(uint8_t *msg) -{ - if (!pm) - return; - - midiOutShortMsg(pm->midi_out_device, *(uint32_t *) msg); -} - - -void -plat_midi_play_sysex(uint8_t *sysex, unsigned int len) -{ - MMRESULT result; - - if (!pm) - return; - - if (WaitForSingleObject(pm->m_event, 2000) == WAIT_TIMEOUT) - return; - - midiOutUnprepareHeader(pm->midi_out_device, &pm->m_hdr, sizeof(pm->m_hdr)); - - pm->m_hdr.lpData = (char *) sysex; - pm->m_hdr.dwBufferLength = len; - pm->m_hdr.dwBytesRecorded = len; - pm->m_hdr.dwUser = 0; - - result = midiOutPrepareHeader(pm->midi_out_device, &pm->m_hdr, sizeof(pm->m_hdr)); - - if (result != MMSYSERR_NOERROR) - return; - ResetEvent(pm->m_event); - result = midiOutLongMsg(pm->midi_out_device, &pm->m_hdr, sizeof(pm->m_hdr)); - if (result != MMSYSERR_NOERROR) { - SetEvent(pm->m_event); - return; - } -} - - -int -plat_midi_write(uint8_t val) -{ - return 0; -} - - -void CALLBACK -plat_midi_in_callback(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) -{ - uint8_t msg[4] = { ((dwParam1 & 0xff)), (((dwParam1 & 0xff00) >> 8)), - (((dwParam1 & 0xff0000) >> 16)), MIDI_evt_len[((dwParam1 & 0xff))]}; - uint8_t *sysex; - uint32_t len; - MIDIHDR *hdr; - - switch (wMsg) { - case MM_MIM_DATA: /* 0x3C3 - midi message */ - midi_in_msg(msg); - break; - case MM_MIM_OPEN: /* 0x3C1 */ - break; - case MM_MIM_CLOSE: /* 0x3C2 */ - break; - case MM_MIM_LONGDATA: /* 0x3C4 - sysex */ - /* It is midi_in_sysex() that now does the loop. */ - hdr = (MIDIHDR *) dwParam1; - sysex = (uint8_t *) hdr->lpData; - len = (uint32_t) hdr->dwBytesRecorded; - midi_in_sysex(sysex, len); - - midiInUnprepareHeader(hMidiIn, hdr, sizeof(*hdr)); - hdr->dwBytesRecorded = 0; - midiInPrepareHeader(hMidiIn, hdr, sizeof(*hdr)); - break; - case MM_MIM_ERROR: - case MM_MIM_LONGERROR: - break; - default: - break; - } -} - - -void -plat_midi_input_init(void) -{ - MMRESULT hr; - - pm_in = (plat_midi_t *) malloc(sizeof(plat_midi_t)); - memset(pm_in, 0, sizeof(plat_midi_t)); - - pm_in->midi_input_id = config_get_int(MIDI_INPUT_NAME, "midi_input", 0); - - hr = MMSYSERR_NOERROR; - - hr = midiInOpen(&pm_in->midi_in_device, pm_in->midi_input_id, - (uintptr_t) plat_midi_in_callback, 0, CALLBACK_FUNCTION); - if (hr != MMSYSERR_NOERROR) { - printf("midiInOpen error - %08X\n", hr); - pm_in->midi_input_id = 0; - hr = midiInOpen(&pm_in->midi_in_device, pm_in->midi_input_id, - (uintptr_t) plat_midi_in_callback, 0, CALLBACK_FUNCTION); - if (hr != MMSYSERR_NOERROR) { - printf("midiInOpen error - %08X\n", hr); - return; - } - } - - pm_in->m_hdr.lpData = (char*)&MIDI_InSysexBuf[0]; - pm_in->m_hdr.dwBufferLength = SYSEX_SIZE; - pm_in->m_hdr.dwBytesRecorded = 0; - pm_in->m_hdr.dwUser = 0; - midiInPrepareHeader(pm_in->midi_in_device,&pm_in->m_hdr,sizeof(pm_in->m_hdr)); - midiInStart(pm_in->midi_in_device); -} - - -void -plat_midi_input_close(void) -{ - if (pm_in) { - if (pm_in->midi_in_device != NULL) { - midiInStop(pm_in->midi_in_device); - midiInClose(pm_in->midi_in_device); - } - - free(pm_in); - pm_in = NULL; - } -} - - -int -plat_midi_in_get_num_devs(void) -{ - return midiInGetNumDevs(); -} - - -void -plat_midi_in_get_dev_name(int num, char *s) -{ - MIDIINCAPS caps; - - midiInGetDevCaps(num, &caps, sizeof(caps)); - strcpy(s, caps.szPname); -} From 54551fc6c4c986dac390eef0c3f01cfd7c3f2732 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 20:20:02 +0100 Subject: [PATCH 11/44] RtMidi fixes. --- src/rtmidi_midi.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rtmidi_midi.cpp b/src/rtmidi_midi.cpp index 43f8a2400..af9fc5439 100644 --- a/src/rtmidi_midi.cpp +++ b/src/rtmidi_midi.cpp @@ -23,6 +23,8 @@ #endif #include +#include +#include #include extern "C" From e7ae91ed59de545aecdaa42442b0531a146bfe1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 20:54:52 +0100 Subject: [PATCH 12/44] Fix the rtmidi dependency --- .github/workflows/c-cpp.yml | 2 +- .github/workflows/cmake.yml | 2 +- vcpkg.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 362becce6..51e2acbeb 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -52,7 +52,7 @@ jobs: ${{ matrix.environment.prefix }}-zlib ${{ matrix.environment.prefix }}-libpng ${{ matrix.environment.prefix }}-libvncserver - ${{ matrix.environment.prefix }}-winpthreads + ${{ matrix.environment.prefix }}-rtmidi - uses: actions/checkout@v2 - name: make run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.dev-build }} NEW_DYNAREC=${{ matrix.new-dynarec }} X64=${{ matrix.environment.x64 }} VNC=n diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fd2c2b55e..6ba242981 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -71,7 +71,7 @@ jobs: ${{ matrix.environment.prefix }}-zlib ${{ matrix.environment.prefix }}-libpng ${{ matrix.environment.prefix }}-libvncserver - ${{ matrix.environment.prefix }}-winpthreads + ${{ matrix.environment.prefix }}-rtmidi - uses: actions/checkout@v2 - name: Configure CMake run: >- diff --git a/vcpkg.json b/vcpkg.json index eb9ed9b1d..d8ec1d981 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -9,6 +9,6 @@ "libpng", "openal-soft", "sdl2", - "pthreads" + "rtmidi" ] } \ No newline at end of file From 8a66570e9dd3f12d9925794be5c5c75fb99bd6d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 21:17:30 +0100 Subject: [PATCH 13/44] Add rtmidi to Linux and Mac jobs --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6ba242981..08d4522ff 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -152,7 +152,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install dependencies - run: sudo apt update && sudo apt install gcc-11 g++-11 libfreetype-dev libsdl2-dev libpng-dev libopenal-dev libc6-dev + run: sudo apt update && sudo apt install gcc-11 g++-11 libfreetype-dev libsdl2-dev libpng-dev libopenal-dev libc6-dev librtmidi-dev - name: Configure CMake run: >- cmake -S . -B build @@ -185,7 +185,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install dependencies - run: brew install freetype sdl2 libpng openal-soft + run: brew install freetype sdl2 libpng openal-soft rtmidi - name: Configure CMake run: >- cmake -S . -B build From 4338560466244186b5109ca1a4b13eefd5558829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 21:18:38 +0100 Subject: [PATCH 14/44] Properly find rtmidi on the CMake build --- src/CMakeLists.txt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 58a9c2959..1f7fe67c0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -38,11 +38,6 @@ add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c device.c nvr.c nvr_at.c nvr_ps2.c rtmidi_midi.cpp ${APP_ICON_MACOSX}) -find_package(RTMIDI REQUIRED) -target_include_directories(86Box ${RTMIDI_INCLUDE_DIRS}) -target_link_directories(86Box INTERFACE ${RTMIDI_LIBRARY_DIRS}) -target_link_libraries(86Box ${RTMIDI_LIBRARY_DIRS}) - if(APPLE) target_link_libraries(86Box "-framework AppKit") endif() @@ -162,6 +157,16 @@ find_package(PNG REQUIRED) include_directories(${PNG_INCLUDE_DIRS}) target_link_libraries(86Box PNG::PNG) +if(VCPKG_TOOLCHAIN) + # vcpkg includes a config file for rtmidi + find_package(RtMidi) + target_link_libraries(86Box RtMidi::rtmidi) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET rtmidi) + target_link_libraries(86Box PkgConfig::RTMIDI) +endif() + configure_file(include/86box/version.h.in include/86box/version.h @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) From 156e88f20a2b0cf44b00a1e7d70946c16c47a726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 21:41:08 +0100 Subject: [PATCH 15/44] Use static MSVCRT only when using static vcpkg deps Should fix MT/MD mismatch with rtmidi --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f9e0a29f6..243418924 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,9 @@ cmake_minimum_required(VERSION 3.15) cmake_policy(SET CMP0091 NEW) cmake_policy(SET CMP0079 NEW) -set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +if(VCPKG_TOOLCHAIN AND VCPKG_TARGET_TRIPLET MATCHES "static") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +endif() project(86Box VERSION 3.1 From 2175fc58883eeaa3907a01bf425fa40986647981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 21:45:22 +0100 Subject: [PATCH 16/44] Require C++11 support; fixes the Mac build --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 243418924..127bae80b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,8 @@ if(WIN32) add_compile_definitions(_WINSOCK_DEPRECATED_NO_WARNINGS) endif() +set(CMAKE_CXX_STANDARD 11) + option(RELEASE "Release build" OFF) option(USB "USB support" OFF) option(DYNAREC "Dynamic recompiler" ON) From 538b9bc478c5b95f8c011d3f023f7d8670d7e134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Fri, 3 Dec 2021 23:10:46 +0100 Subject: [PATCH 17/44] Fix link order in MSYS2 build --- src/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1f7fe67c0..2bb82ca4e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -159,12 +159,16 @@ target_link_libraries(86Box PNG::PNG) if(VCPKG_TOOLCHAIN) # vcpkg includes a config file for rtmidi - find_package(RtMidi) + find_package(RtMidi REQUIRED) target_link_libraries(86Box RtMidi::rtmidi) else() find_package(PkgConfig REQUIRED) pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET rtmidi) target_link_libraries(86Box PkgConfig::RTMIDI) + + if(WIN32) + target_link_libraries(PkgConfig::RTMIDI INTERFACE winmm) + endif() endif() configure_file(include/86box/version.h.in include/86box/version.h @ONLY) From f36462639a8d5c866a1bf7d7530fe49d8b87ce62 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 3 Dec 2021 23:34:42 +0100 Subject: [PATCH 18/44] Fixed the OpenGL menu in the Chinese (Simplified) translation. --- src/win/languages/zh-CN.rc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 11f219dc2..f999f0478 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -41,9 +41,7 @@ BEGIN MENUITEM "&SDL (软件)", IDM_VID_SDL_SW MENUITEM "SDL (硬件 &H)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL -#if defined(DEV_BRANCH) && defined(USE_OPENGL) MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE -#endif #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif @@ -246,7 +244,6 @@ BEGIN END END -#if defined(DEV_BRANCH) && defined(USE_OPENGL) VidGLSubMenu MENU DISCARDABLE BEGIN POPUP "目标帧率(&f)" @@ -262,7 +259,6 @@ BEGIN MENUITEM "选择着色器(&S)...", IDM_VID_GL_SHADER MENUITEM "移除着色器(&R)", IDM_VID_GL_NOSHADER END -#endif ///////////////////////////////////////////////////////////////////////////// From 89c5bbb1159a02fb6130c853b0543f913cf16112 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 00:17:45 +0100 Subject: [PATCH 19/44] Fixes by basic2004 for the Japanese and Korean translations. --- src/win/languages/ja-JP.rc | 62 +++++++++++++++++++------------------- src/win/languages/ko-KR.rc | 40 ++++++++++++------------ 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index 9807d2e94..f7a8f9770 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -33,8 +33,8 @@ BEGIN BEGIN MENUITEM "ステータスバーを隠す(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM SEPARATOR - MENUITEM "ウィンドウのサイズを変更できるようにする(&R)", IDM_VID_RESIZE - MENUITEM "ウィンドウのサイズと位置を記憶(&E)", IDM_VID_REMEMBER + MENUITEM "ウィンドウのサイズを変更可能にする(&R)", IDM_VID_RESIZE + MENUITEM "ウィンドウのサイズと位置を記憶する(&E)", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "レンダラー(&N)" BEGIN @@ -48,7 +48,7 @@ BEGIN END MENUITEM SEPARATOR MENUITEM "ウィンドウのサイズを指定する...", IDM_VID_SPECIFY_DIM - MENUITEM "4:3に合わせる(&O)", IDM_VID_FORCE43 + MENUITEM "画面比率を4:3に合わせる(&O)", IDM_VID_FORCE43 POPUP "ウィンドウの倍率(&W)" BEGIN MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X @@ -73,7 +73,7 @@ BEGIN END POPUP "E&GA/(S)VGAの設定" BEGIN - MENUITEM "色反転VGAモニター(&)", IDM_VID_INVERT + MENUITEM "色反転VGAモニター(&I)", IDM_VID_INVERT POPUP "VGA画面タイプ(&T)" BEGIN MENUITEM "RGBカラー(&C)", IDM_VID_GRAY_RGB @@ -97,7 +97,7 @@ BEGIN POPUP "ツール(&T)" BEGIN MENUITEM "設定(&S)...", IDM_CONFIG - MENUITEM "ステータスバーアイコンの更新(&U)", IDM_UPDATE_ICONS + MENUITEM "ステータスバーのアイコンを更新する(&U)", IDM_UPDATE_ICONS MENUITEM SEPARATOR MENUITEM "スクリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR @@ -249,11 +249,11 @@ BEGIN POPUP "目標フレームレート(&F)" BEGIN MENUITEM "ビデオとの同期(&S)", IDM_VID_GL_FPS_BLITTER - MENUITEM "25フレーム/秒(&2)", IDM_VID_GL_FPS_25 - MENUITEM "30フレーム/秒(&3)", IDM_VID_GL_FPS_30 - MENUITEM "50フレーム/秒(&5)", IDM_VID_GL_FPS_50 - MENUITEM "60フレーム/秒(&6)", IDM_VID_GL_FPS_60 - MENUITEM "75フレーム/秒(&7)", IDM_VID_GL_FPS_75 + MENUITEM "25 fps(&2)", IDM_VID_GL_FPS_25 + MENUITEM "30 fps(&3)", IDM_VID_GL_FPS_30 + MENUITEM "50 fps(&5)", IDM_VID_GL_FPS_50 + MENUITEM "60 fps(&6)", IDM_VID_GL_FPS_60 + MENUITEM "75 fps(&7)", IDM_VID_GL_FPS_75 END MENUITEM "VSync(&V)", IDM_VID_GL_VSYNC MENUITEM "シェーダの選択(&S)...", IDM_VID_GL_SHADER @@ -284,7 +284,7 @@ END #define STR_FILE_NAME "ファイル名:" #define STR_DISK_SIZE "ディスクの容量:" #define STR_RPM_MODE "RPMモード:" -#define STR_PROGRESS "プログレス:" +#define STR_PROGRESS "進行:" #define STR_WIDTH "幅:" #define STR_HEIGHT "高さ:" @@ -324,9 +324,9 @@ END #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32サウンドを使用" -#define STR_NET_TYPE "ネットワークタイプ:" +#define STR_NET_TYPE "ネットワークタイプ:" #define STR_PCAP "PCapデバイス:" -#define STR_NET "ネットワークアダプター:" +#define STR_NET "ネットワークカード:" #define STR_LPT1 "LPT1デバイス:" #define STR_LPT2 "LPT2デバイス:" @@ -339,15 +339,15 @@ END #define STR_PARALLEL2 "パラレルポート2" #define STR_PARALLEL3 "パラレルポート3" -#define STR_HDC "HDコントローラー:" -#define STR_FDC "FDコントローラー:" +#define STR_HDC "HDコントローラー:" +#define STR_FDC "FDコントローラー:" #define STR_IDE_TER "第三のIDEコントローラー" #define STR_IDE_QUA "第四のIDEコントローラー" #define STR_SCSI "SCSI" -#define STR_SCSI_1 "コントローラー1:" -#define STR_SCSI_2 "コントローラー2:" -#define STR_SCSI_3 "コントローラー3:" -#define STR_SCSI_4 "コントローラー4:" +#define STR_SCSI_1 "コントローラー1:" +#define STR_SCSI_2 "コントローラー2:" +#define STR_SCSI_3 "コントローラー3:" +#define STR_SCSI_4 "コントローラー4:" #define STR_CASSETTE "カセット" #define STR_HDD "ハードディスク:" @@ -359,13 +359,13 @@ END #define STR_ID "ID:" #define STR_SPECIFY "参照(&S)..." -#define STR_SECTORS "セクター:" -#define STR_HEADS "ヘッド:" -#define STR_CYLS "シリンダー:" +#define STR_SECTORS "セクター:" +#define STR_HEADS "ヘッド:" +#define STR_CYLS "シリンダー:" #define STR_SIZE_MB "容量(MB):" #define STR_TYPE "形式:" -#define STR_IMG_FORMAT "イメージフォーマット:" -#define STR_BLOCK_SIZE "ブロックサイズ:" +#define STR_IMG_FORMAT "イメージ形式:" +#define STR_BLOCK_SIZE "ブロックサイズ:" #define STR_FLOPPY_DRIVES "フロッピードライブ:" #define STR_TURBO "高速タイミング" @@ -376,8 +376,8 @@ END #define STR_ZIP_DRIVES "ZIPドライブ:" #define STR_250 "ZIP 250" -#define STR_ISARTC "ISA RTCカード:" -#define STR_ISAMEM "ISAメモリー拡張ボード" +#define STR_ISARTC "ISA RTCカード:" +#define STR_ISAMEM "ISAメモリー拡張カード" #define STR_ISAMEM_1 "カード1:" #define STR_ISAMEM_2 "カード2:" #define STR_ISAMEM_3 "カード3:" @@ -405,7 +405,7 @@ BEGIN IDS_2053 "速度" IDS_2054 "ZIP %03i %i (%s): %ls" IDS_2055 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0" - IDS_2056 "86Boxでは、使用可能なROMイメージが見つかりませんでした。\n\nROMセットをダウンロードして、《roms》ディレクトリに解凍してください。" + IDS_2056 "86Boxで使用可能なROMイメージが見つかりませんでした。\n\nROMセットをダウンロードして、《roms》ディレクトリに解凍してください。" IDS_2057 "(空)" IDS_2058 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0すべてのファイル (*.*)\0*.*\0" IDS_2059 "高速" @@ -426,7 +426,7 @@ BEGIN IDS_2070 "ポート (COM & LPT)" IDS_2071 "ストレージコントローラ" IDS_2072 "ハードディスク" - IDS_2073 "フロッピー・CD-ROMドライブ" + IDS_2073 "フロッピー/CD-ROMドライブ" IDS_2074 "その他のリムーバブルデバイス" IDS_2075 "その他の周辺機器" IDS_2076 "表面イメージ (*.86F)\0*.86F\0" @@ -479,7 +479,7 @@ BEGIN IDS_2119 "終了" IDS_2120 "ROMが見つかりません" IDS_2121 "設定を保存しますか?" - IDS_2122 "これにより、エミュレートされたマシンが再起動されます。" + IDS_2122 "保存すると使用中のマシンが再起動されます。" IDS_2123 "保存" IDS_2124 "86Boxについて" IDS_2125 "86Box v" EMU_VERSION @@ -492,7 +492,7 @@ BEGIN #else #define LIB_NAME_PCAP "libpcap" #endif - IDS_2129 LIB_NAME_PCAP "がインストールされてるか、" LIB_NAME_PCAP "に対応したネットワークに接続されてるかを確認してください。" + IDS_2129 LIB_NAME_PCAP "がインストールされてるか、" LIB_NAME_PCAP "に対応したネットワークに接続されてるか確認してください。" IDS_2130 "不正な設定です" #ifdef _WIN32 #define LIB_NAME_FREETYPE "freetype.dll" @@ -524,7 +524,7 @@ BEGIN IDS_2143 "OpenGLシェーダー (*.GLSL)\0*.GLSL\0すべてのファイル (*.*)\0*.*\0" IDS_2144 "OpenGLの設定" IDS_2145 "サポートされていない設定を読み込んでいます" - IDS_2146 "選択したマシンに基づくCPUタイプのフィルタリングは、このエミュレートされたマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。 ただし、マシンBIOSまたは他のソフトウェアとの互換性が失われる可能性があります。\n\nこの設定の有効化は正式的にサポートされていません。また、バグレポートが無効として閉じられる場合があります。" + IDS_2146 "選択したマシンに基づくCPUタイプのフィルタリングは、このエミュレートされたマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。 ただし、マシンのBIOSまたは他のソフトウェアとの互換性が失われる可能性があります。\n\nこの設定の有効化は公式サポートができません。また、バグレポートが無効として閉じられる場合があります。" IDS_2147 "つづく" IDS_2148 "カセット: %s" IDS_2149 "カセットイメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0すべてのファイル (*.*)\0*.*\0" diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index 4ab9a3455..4562fdbce 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -31,10 +31,10 @@ BEGIN END POPUP "표시(&V)" BEGIN - MENUITEM "상태 바 숨김(&H)", IDM_VID_HIDE_STATUS_BAR + MENUITEM "상태 바 숨기기(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM SEPARATOR - MENUITEM "창 크기 변경 가능(&R)", IDM_VID_RESIZE - MENUITEM "창 크기와 위치를 기억(&E)", IDM_VID_REMEMBER + MENUITEM "창 크기 조절 가능하게 하기(&R)", IDM_VID_RESIZE + MENUITEM "창 크기와 위치를 기억하기(&E)", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "렌더러(&N)" BEGIN @@ -48,7 +48,7 @@ BEGIN END MENUITEM SEPARATOR MENUITEM "창 크기 지정하기...", IDM_VID_SPECIFY_DIM - MENUITEM "4:3으로 맞추기(&O)", IDM_VID_FORCE43 + MENUITEM "화면 비율을 4:3으로 맞추기(&O)", IDM_VID_FORCE43 POPUP "창 표시 배율(&W)" BEGIN MENUITEM "0.5배(&0)", IDM_VID_SCALE_1X @@ -73,8 +73,8 @@ BEGIN END POPUP "E&GA/(S)VGA 설정" BEGIN - MENUITEM "색상 반전된 VGA 모니터(&)", IDM_VID_INVERT - POPUP "VGA 화면 유형(&T)" + MENUITEM "색상 반전된 VGA 모니터(&I)", IDM_VID_INVERT + POPUP "VGA 화면 종류(&T)" BEGIN MENUITEM "RGB 천연색(&C)", IDM_VID_GRAY_RGB MENUITEM "RGB 회색조(&R)", IDM_VID_GRAY_MONO @@ -97,7 +97,7 @@ BEGIN POPUP "도구(&T)" BEGIN MENUITEM "설정(&S)...", IDM_CONFIG - MENUITEM "상태 바 아이콘 업데이트(&U)", IDM_UPDATE_ICONS + MENUITEM "상태 바 아이콘 갱신하기(&U)", IDM_UPDATE_ICONS MENUITEM SEPARATOR MENUITEM "스크린샷 찍기(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR @@ -130,7 +130,7 @@ BEGIN MENUITEM "IDE 로그 켜기\tCtrl+F8", IDM_LOG_IDE # endif # ifdef ENABLE_SERIAL_LOG - MENUITEM "시리얼 포트 로그 켜기\tCtrl+F3", IDM_LOG_SERIAL + MENUITEM "직렬 포트 로그 켜기\tCtrl+F3", IDM_LOG_SERIAL # endif # ifdef ENABLE_NIC_LOG MENUITEM "네트워크 로그 켜기\tCtrl+F9", IDM_LOG_NIC @@ -288,7 +288,7 @@ END #define STR_WIDTH "가로:" #define STR_HEIGHT "세로:" -#define STR_LOCK_TO_SIZE "이 크기를 고정" +#define STR_LOCK_TO_SIZE "크기 고정" #define STR_MACHINE_TYPE "머신 종류:" #define STR_MACHINE "기종:" @@ -296,7 +296,7 @@ END #define STR_CPU_TYPE "CPU 종류:" #define STR_SPEED "속도:" #define STR_FPU "FPU:" -#define STR_WAIT_STATES "지연 시간:" +#define STR_WAIT_STATES "대기 상태:" #define STR_MB "MB" #define STR_MEMORY "메모리:" #define STR_TIME_SYNC "시간 동기화" @@ -339,8 +339,8 @@ END #define STR_PARALLEL2 "병렬 포트 2" #define STR_PARALLEL3 "병렬 포트 3" -#define STR_HDC "HD컨트롤러:" -#define STR_FDC "FD컨트롤러:" +#define STR_HDC "HD 컨트롤러:" +#define STR_FDC "FD 컨트롤러:" #define STR_IDE_TER "제3의 IDE 컨트롤러" #define STR_IDE_QUA "제4의 IDE 컨트롤러" #define STR_SCSI "SCSI" @@ -365,7 +365,7 @@ END #define STR_SIZE_MB "용량(MB):" #define STR_TYPE "형식:" #define STR_IMG_FORMAT "이미지 포맷:" -#define STR_BLOCK_SIZE "블럭 사이즈:" +#define STR_BLOCK_SIZE "블록 크기:" #define STR_FLOPPY_DRIVES "플로피 드라이브:" #define STR_TURBO "고속 동작" @@ -426,7 +426,7 @@ BEGIN IDS_2070 "포트 (COM & LPT)" IDS_2071 "장치 컨트롤러" IDS_2072 "하드 디스크" - IDS_2073 "플로피 / CD-ROM 드라이브" + IDS_2073 "플로피 / CD-ROM" IDS_2074 "기타 이동식 저장장치" IDS_2075 "기타 주변기기" IDS_2076 "표면 이미지 (*.86F)\0*.86F\0" @@ -448,7 +448,7 @@ BEGIN IDS_2088 "KB" IDS_2089 "비디오 렌더러를 초기화할 수 없습니다." IDS_2090 "기본값" - IDS_2091 "지연 시간 %i" + IDS_2091 "%i 대기 상태" IDS_2092 "형식" IDS_2093 "PCap 설정에 실패했습니다" IDS_2094 "PCap 장치가 없습니다" @@ -524,7 +524,7 @@ BEGIN IDS_2143 "OpenGL 쉐이더 (*.GLSL)\0*.GLSL\0모든 파일 (*.*)\0*.*\0" IDS_2144 "OpenGL 설정" IDS_2145 "지원하지 않는 설정입니다" - IDS_2146 "이 에뮬레이트된 기종에 대해 선택한 기종을 기반으로 하는 CPU 타입 필터링이 사용되지 않도록 설정되었습니다.\n\n따라서 선택된 머신과 호환되지 않는 CPU를 선택하실 수 있습니다. 하지만 BIOS 또는 다른 소프트웨어와 호환되지 않을 수 있습니다.\n\n이 설정을 활성화하는 것은 공식적으로 지원되지 않으며, 제출된 버그 보고서는 유효하지 않음으로 닫힐 수 있습니다." + IDS_2146 "이 에뮬레이트된 기종에 대해 선택한 기종을 기반으로 하는 CPU 종류 필터링이 사용되지 않도록 설정되었습니다.\n\n따라서 선택된 머신과 호환되지 않는 CPU를 선택하실 수 있습니다. 하지만 BIOS 또는 다른 소프트웨어와 호환되지 않을 수 있습니다.\n\n이 설정을 활성화하는 것은 공식적으로 지원되지 않으며, 제출된 버그 보고서는 유효하지 않음으로 닫힐 수 있습니다." IDS_2147 "계속" IDS_2148 "카세트: %s" IDS_2149 "카세트 이미지 (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0모든 파일 (*.*)\0*.*\0" @@ -547,7 +547,7 @@ BEGIN IDS_4106 "하드 디스크 이미지 (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0모든 파일 (*.*)\0*.*\0" IDS_4107 "파일을 읽을 수 없습니다" IDS_4108 "파일을 저장할 수 없습니다" - IDS_4109 "512 바이트 이외의 섹터 용량을 가진 HDI 또는 HDX 형식의 이미지를 생성할 수 없습니다" + IDS_4109 "512 바이트 이외의 섹터 크기를 가진 HDI 또는 HDX 형식의 이미지를 생성할 수 없습니다" IDS_4110 "USB는 아직 지원하지 않습니다" IDS_4111 "디스크 이미지 파일이 이미 존재합니다" IDS_4112 "올바른 파일명을 지정해 주세요." @@ -557,7 +557,7 @@ BEGIN IDS_4116 "디스크 이미지가 너무 큽니다" IDS_4117 "새로 생성한 드라이브의 파티션 설정과 포맷을 꼭 해주세요." IDS_4118 "선택하신 파일을 덮어씌웁니다. 사용하시겠습니까?" - IDS_4119 "지원하지 않는 디스크 이미지" + IDS_4119 "지원하지 않는 디스크 이미지입니다" IDS_4120 "덮어쓰기" IDS_4121 "덮어쓰지 않음" IDS_4122 "Raw 이미지 (.img)" @@ -566,8 +566,8 @@ BEGIN IDS_4125 "고정 사이즈 VHD (.vhd)" IDS_4126 "동적 사이즈 VHD (.vhd)" IDS_4127 "디퍼런싱 VHD (.vhd)" - IDS_4128 "대형 블럭 (2 MB)" - IDS_4129 "소형 블럭 (512 KB)" + IDS_4128 "대형 블록 (2 MB)" + IDS_4129 "소형 블록 (512 KB)" IDS_4130 "VHD 파일 (*.VHD)\0*.VHD\0모든 파일 (*.*)\0*.*\0" IDS_4131 "부모 VHD 선택" IDS_4132 "이는 디퍼런싱 이미지가 생성된 후 부모 이미지가 수정되었음을 의미할 수 있습니다.\n\n이미지 파일이 이동 또는 복사된 경우 또는 이 디스크를 만든 프로그램의 버그로 인해 발생할 수도 있습니다.\n\n타임스탬프를 수정하시겠습니까?" From 051b41ea6ccebc749af7b2b50f0f2807accce17a Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 01:21:11 +0100 Subject: [PATCH 20/44] Updated MacOS bundle version. --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2bb82ca4e..7e815c5e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -114,9 +114,9 @@ if(APPLE) set_target_properties(86Box PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist.in) set(MACOSX_BUNDLE_GUI_IDENTIFIER net.86Box.86Box) set(MACOSX_BUNDLE_BUNDLE_NAME 86Box) - set(MACOSX_BUNDLE_BUNDLE_VERSION 3.0.${EMU_BUILD_NUM}) - set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.0.${EMU_BUILD_NUM}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.0.${EMU_BUILD_NUM}") + set(MACOSX_BUNDLE_BUNDLE_VERSION 3.1.${EMU_BUILD_NUM}) + set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.1.${EMU_BUILD_NUM}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.1.${EMU_BUILD_NUM}") set(MACOSX_BUNDLE_ICON_FILE 86Box.icns) set(MACOSX_BUNDLE_INFO_STRING "A emulator of old computers") set(MACOSX_BUNDLE_COPYRIGHT "© 2007-${EMU_COPYRIGHT_YEAR} 86Box contributors") From 9e00ac9c9fec1f9b1aed25a67c2861a1be23403c Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 01:24:27 +0100 Subject: [PATCH 21/44] Attempted fix for RtMidi. --- src/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7e815c5e9..2583038d5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -164,6 +164,8 @@ if(VCPKG_TOOLCHAIN) else() find_package(PkgConfig REQUIRED) pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET rtmidi) + if (NOT RTMIDI_FOUND) + pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET librtmidi) target_link_libraries(86Box PkgConfig::RTMIDI) if(WIN32) From 7064e768962e929fe0e6c1bea26b0d10b1dc9191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Sat, 4 Dec 2021 01:31:30 +0100 Subject: [PATCH 22/44] Revert "Attempted fix for RtMidi." This reverts commit 9e00ac9c9fec1f9b1aed25a67c2861a1be23403c. --- src/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2583038d5..7e815c5e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -164,8 +164,6 @@ if(VCPKG_TOOLCHAIN) else() find_package(PkgConfig REQUIRED) pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET rtmidi) - if (NOT RTMIDI_FOUND) - pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET librtmidi) target_link_libraries(86Box PkgConfig::RTMIDI) if(WIN32) From 69b40be0cb94ebb4be8df6b749baf718daac915e Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 01:32:20 +0100 Subject: [PATCH 23/44] Missing endif(). --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2583038d5..fb1f13577 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -166,6 +166,7 @@ else() pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET rtmidi) if (NOT RTMIDI_FOUND) pkg_check_modules(RTMIDI REQUIRED IMPORTED_TARGET librtmidi) + endif() target_link_libraries(86Box PkgConfig::RTMIDI) if(WIN32) From ed3cb694a775e80eb17fd86decaacba960214077 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 02:21:10 +0100 Subject: [PATCH 24/44] Fixes to the Croatian and Slovenian translations. --- src/win/languages/hr-HR.rc | 196 ++++++++++++++++++------------------- src/win/languages/sl-SI.rc | 22 ++--- 2 files changed, 109 insertions(+), 109 deletions(-) diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index db1191e1e..ed4dbe6f6 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -15,26 +15,26 @@ LANGUAGE LANG_CROATIAN, SUBLANG_DEFAULT MainMenu MENU DISCARDABLE BEGIN - POPUP "&Akcija" + POPUP "&Radnje" BEGIN - MENUITEM "&Tipkovnica zahtijeva snimanje miša", IDM_ACTION_KBD_REQ_CAPTURE + MENUITEM "&Tipkovnica zahtijeva hvatanje miša", IDM_ACTION_KBD_REQ_CAPTURE MENUITEM "&Desni CTRL je lijevi ALT", IDM_ACTION_RCTRL_IS_LALT MENUITEM SEPARATOR - MENUITEM "&Hard Reset...", IDM_ACTION_HRESET + MENUITEM "&Ponovno pokretanje...", IDM_ACTION_HRESET MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD MENUITEM SEPARATOR MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC MENUITEM SEPARATOR MENUITEM "&Pauza", IDM_ACTION_PAUSE MENUITEM SEPARATOR - MENUITEM "&Izlaz...", IDM_ACTION_EXIT + MENUITEM "Iz&laz...", IDM_ACTION_EXIT END POPUP "&Pogled" BEGIN - MENUITEM "&Sakrij statusnu traku", IDM_VID_HIDE_STATUS_BAR + MENUITEM "&Sakrij statusni redak", IDM_VID_HIDE_STATUS_BAR MENUITEM SEPARATOR MENUITEM "&Prozor s promjenjivim veličinama", IDM_VID_RESIZE - MENUITEM "&Zapamtite veličinu && poziciju", IDM_VID_REMEMBER + MENUITEM "&Zapamtite veličinu i položaj", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "&Renderer" BEGIN @@ -47,9 +47,9 @@ BEGIN #endif END MENUITEM SEPARATOR - MENUITEM "Odrediti dimenzije...", IDM_VID_SPECIFY_DIM + MENUITEM "Odrediti veličinu...", IDM_VID_SPECIFY_DIM MENUITEM "&4:3 omjer prikaza", IDM_VID_FORCE43 - POPUP "&Faktor skaliranje prozora" + POPUP "&Faktor skaliranja prozora" BEGIN MENUITEM "&0,5x", IDM_VID_SCALE_1X MENUITEM "&1x", IDM_VID_SCALE_2X @@ -58,92 +58,92 @@ BEGIN END POPUP "Metoda filtriranja" BEGIN - MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST - MENUITEM "&Linear", IDM_VID_FILTER_LINEAR + MENUITEM "&Najbliža", IDM_VID_FILTER_NEAREST + MENUITEM "&Linearna", IDM_VID_FILTER_LINEAR END MENUITEM "&HiDPI skaliranje", IDM_VID_HIDPI MENUITEM SEPARATOR - MENUITEM "&Cijelozaslonki način\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN - POPUP "&Način rastezanja preko cijelog zaslona" + MENUITEM "&Cijelozaslonski način\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN + POPUP "&Način cijelozaslonskog rastezanja" BEGIN - MENUITEM "&Razvlačenje preko cijelog zaslona", IDM_VID_FS_FULL + MENUITEM "&Razvuci na cijeli zaslona", IDM_VID_FS_FULL MENUITEM "&4:3", IDM_VID_FS_43 MENUITEM "&Kvadratni pikseli (zadrži omjer)", IDM_VID_FS_KEEPRATIO - MENUITEM "&Integer skaliranje", IDM_VID_FS_INT + MENUITEM "&Cijelobrojno skaliranje", IDM_VID_FS_INT END POPUP "E&GA/(S)VGA postavke" BEGIN - MENUITEM "&Invertirani VGA monitor", IDM_VID_INVERT - POPUP "&Tip VGA monitora" + MENUITEM "&Obrni boje zaslona VGA", IDM_VID_INVERT + POPUP "&Tip zaslona VGA" BEGIN - MENUITEM "RGB &Boja", IDM_VID_GRAY_RGB - MENUITEM "&RGB s sivih tonova", IDM_VID_GRAY_MONO - MENUITEM "&Jantarni monitor", IDM_VID_GRAY_AMBER - MENUITEM "&Zeleni monitor", IDM_VID_GRAY_GREEN - MENUITEM "&Bijeli monitor", IDM_VID_GRAY_WHITE + MENUITEM "RGB u &boji", IDM_VID_GRAY_RGB + MENUITEM "&RGB u nijansama sive boje", IDM_VID_GRAY_MONO + MENUITEM "&Jantarni zaslon", IDM_VID_GRAY_AMBER + MENUITEM "&Zeleni zaslon", IDM_VID_GRAY_GREEN + MENUITEM "&Bijeli zaslon", IDM_VID_GRAY_WHITE END - POPUP "&Vrsta konverzije sivih tonova" + POPUP "&Vrsta konverzije nijansa sive boje" BEGIN MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601 MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709 - MENUITEM "&Prosječno", IDM_VID_GRAYCT_AVE + MENUITEM "&Prosjek", IDM_VID_GRAYCT_AVE END END MENUITEM SEPARATOR - MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN - MENUITEM "Promjena kontrasta za &monokromatski ekran", IDM_VID_CGACON + MENUITEM "&Višak slike CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN + MENUITEM "&Promjeni kontrast za crno-bijeli zaslon", IDM_VID_CGACON END MENUITEM "&Mediji", IDM_MEDIA POPUP "&Alati" BEGIN MENUITEM "&Opcije...", IDM_CONFIG - MENUITEM "&Ažuriranje ikone statusne trake", IDM_UPDATE_ICONS + MENUITEM "&Ažuriraj ikone statusnog redka", IDM_UPDATE_ICONS MENUITEM SEPARATOR - MENUITEM "Napravite &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT + MENUITEM "Napravi &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "&Postavke...", IDM_PREFERENCES - MENUITEM "Omogući integraciju &Discord-a", IDM_DISCORD + MENUITEM "Omogući integraciju sa programom &Discord", IDM_DISCORD MENUITEM SEPARATOR MENUITEM "&Pojačanje zvuka...", IDM_SND_GAIN #ifdef MTR_ENABLED MENUITEM SEPARATOR - MENUITEM "Započni tracing\tCtrl+T", IDM_ACTION_BEGIN_TRACE - MENUITEM "Prestani tracing\tCtrl+T", IDM_ACTION_END_TRACE + MENUITEM "Z&apočni praćenje\tCtrl+T", IDM_ACTION_BEGIN_TRACE + MENUITEM "&Svrši praćenje\tCtrl+T", IDM_ACTION_END_TRACE #endif END #if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS) POPUP "&Logging" BEGIN # ifdef ENABLE_BUSLOGIC_LOG - MENUITEM "Omogući BusLogic logging\tCtrl+F4", IDM_LOG_BUSLOGIC + MENUITEM "Omogući bilježenje za BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC # endif # ifdef ENABLE_CDROM_LOG - MENUITEM "Omogući logging CD-ROM-a\tCtrl+F5", IDM_LOG_CDROM + MENUITEM "Omogući bilježenje za CD-ROM\tCtrl+F5", IDM_LOG_CDROM # endif # ifdef ENABLE_D86F_LOG - MENUITEM "Omogući logging disketa (86F)\tCtrl+F6", IDM_LOG_D86F + MENUITEM "Omogući bilježenje za diskete (86F)\tCtrl+F6", IDM_LOG_D86F # endif # ifdef ENABLE_FDC_LOG - MENUITEM "Omogući logging floppy kontrolera\tCtrl+F7", IDM_LOG_FDC + MENUITEM "Omogući bilježenje za disketni krmilnik\tCtrl+F7", IDM_LOG_FDC # endif # ifdef ENABLE_IDE_LOG - MENUITEM "Omogući IDE logging\tCtrl+F8", IDM_LOG_IDE + MENUITEM "Omogući bilježenje za IDE\tCtrl+F8", IDM_LOG_IDE # endif # ifdef ENABLE_SERIAL_LOG - MENUITEM "Omogući logging serijskog porta\tCtrl+F3", IDM_LOG_SERIAL + MENUITEM "Omogući bilježenje za serijska vrata\tCtrl+F3", IDM_LOG_SERIAL # endif # ifdef ENABLE_NIC_LOG - MENUITEM "Omogući mrežni logging\tCtrl+F9", IDM_LOG_NIC + MENUITEM "Omogući bilježenje za omrežje\tCtrl+F9", IDM_LOG_NIC # endif # ifdef ENABLE_LOG_COMMANDS # ifdef ENABLE_LOG_TOGGLES MENUITEM SEPARATOR # endif # ifdef ENABLE_LOG_BREAKPOINT - MENUITEM "&Breakpoint za logging\tCtrl+F10", IDM_LOG_BREAKPOINT + MENUITEM "&Zabilježi prekidnu točku\tCtrl+F10", IDM_LOG_BREAKPOINT # endif # ifdef ENABLE_VRAM_DUMP - MENUITEM "Dump od &video RAM-a\tCtrl+F1", IDM_DUMP_VRAM + MENUITEM "&Ispiši memoriju zaslona\tCtrl+F1", IDM_DUMP_VRAM # endif # endif END @@ -170,9 +170,9 @@ BEGIN MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_CASSETTE_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "&Snimi", IDM_CASSETTE_RECORD - MENUITEM "&Pusti", IDM_CASSETTE_PLAY - MENUITEM "&Premotajte na početak", IDM_CASSETTE_REWIND - MENUITEM "&Preskočite do kraja", IDM_CASSETTE_FAST_FORWARD + MENUITEM "&Pokreni", IDM_CASSETTE_PLAY + MENUITEM "P&remotaj na početak", IDM_CASSETTE_REWIND + MENUITEM "&Preskoči do kraja", IDM_CASSETTE_FAST_FORWARD MENUITEM SEPARATOR MENUITEM "&Izbaci", IDM_CASSETTE_EJECT END @@ -197,7 +197,7 @@ BEGIN MENUITEM "&Postojeća slika...", IDM_FLOPPY_IMAGE_EXISTING MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_FLOPPY_IMAGE_EXISTING_WP MENUITEM SEPARATOR - MENUITEM "&Exportiraj u 86F format...", IDM_FLOPPY_EXPORT_TO_86F + MENUITEM "&Izvozi u 86F...", IDM_FLOPPY_EXPORT_TO_86F MENUITEM SEPARATOR MENUITEM "&Izbaci", IDM_FLOPPY_EJECT END @@ -246,9 +246,9 @@ END VidGLSubMenu MENU DISCARDABLE BEGIN - POPUP "&Ciljni framerate" + POPUP "&Ciljni broj okvira u sekundi" BEGIN - MENUITEM "&Sinkronizacija s videom", IDM_VID_GL_FPS_BLITTER + MENUITEM "&Sinkroniziraj s videom", IDM_VID_GL_FPS_BLITTER MENUITEM "&25 fps", IDM_VID_GL_FPS_25 MENUITEM "&30 fps", IDM_VID_GL_FPS_30 MENUITEM "&50 fps", IDM_VID_GL_FPS_50 @@ -272,8 +272,8 @@ END #define STR_CONFIG "Opcije" #define STR_SPECIFY_DIM "Odredite glavne dimenzije prozora" -#define STR_OK "OK" -#define STR_CANCEL "Odustani" +#define STR_OK "U redu" +#define STR_CANCEL "Otkaži" #define STR_GLOBAL "Spremite ove postavke kao &globalne zadane postavke" #define STR_DEFAULT "Zadano" #define STR_LANGUAGE "Jezik:" @@ -283,7 +283,7 @@ END #define STR_FILE_NAME "Ime datoteke:" #define STR_DISK_SIZE "Veličina diska:" -#define STR_RPM_MODE "Način rotacije:" +#define STR_RPM_MODE "Način broja okretaja:" #define STR_PROGRESS "Napredak:" #define STR_WIDTH "Širina:" @@ -300,44 +300,44 @@ END #define STR_MB "MB" #define STR_MEMORY "Memorija:" #define STR_TIME_SYNC "Sinkronizacija vremena" -#define STR_DISABLED "Deaktivirano" +#define STR_DISABLED "Isključeno" #define STR_ENABLED_LOCAL "Uključeno (lokalno vrijeme)" #define STR_ENABLED_UTC "Uključeno (UTC)" #define STR_DYNAREC "Dinamički rekompilator" -#define STR_VIDEO "Video kartica:" +#define STR_VIDEO "Video:" #define STR_VOODOO "Voodoo grafika" #define STR_MOUSE "Miš:" -#define STR_JOYSTICK "Joystick:" -#define STR_JOY1 "Joystick 1..." -#define STR_JOY2 "Joystick 2..." -#define STR_JOY3 "Joystick 3..." -#define STR_JOY4 "Joystick 4..." +#define STR_JOYSTICK "Palica za igru:" +#define STR_JOY1 "Palica za igru 1..." +#define STR_JOY2 "Palica za igru 2..." +#define STR_JOY3 "Palica za igru 3..." +#define STR_JOY4 "Palica za igru 4..." -#define STR_SOUND "Sound kartica:" -#define STR_MIDI "MIDI izlazni uređaj:" -#define STR_MIDI_IN "MIDI ulazni uređaj:" -#define STR_MPU401 "Samostalni MPU-401 uređaj" +#define STR_SOUND "Zvučna kartica:" +#define STR_MIDI "Izlazni uređaj MIDI:" +#define STR_MIDI_IN "Ulazni uređaj MIDI:" +#define STR_MPU401 "Samostalni MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" -#define STR_FLOAT "Koristi FLOAT32 zvuk" +#define STR_FLOAT "Koristi FLOAT32 za zvuk" #define STR_NET_TYPE "Tip mreže:" -#define STR_PCAP "PCap uređaj:" -#define STR_NET "Mrežni adapter:" +#define STR_PCAP "Uređaj PCap:" +#define STR_NET "Mrežna kartica:" -#define STR_LPT1 "LPT1 uređaj:" -#define STR_LPT2 "LPT2 uređaj:" -#define STR_LPT3 "LPT3 uređaj:" -#define STR_SERIAL1 "Serijski port 1" -#define STR_SERIAL2 "Serijski port 2" -#define STR_SERIAL3 "Serijski port 3" -#define STR_SERIAL4 "Serijski port 4" -#define STR_PARALLEL1 "Paralelni priključak 1" -#define STR_PARALLEL2 "Paralelni priključak 2" -#define STR_PARALLEL3 "Paralelni priključak 3" +#define STR_LPT1 "Uređaj LPT1:" +#define STR_LPT2 "Uređaj LPT2:" +#define STR_LPT3 "Uređaj LPT3:" +#define STR_SERIAL1 "Serijska vrata 1" +#define STR_SERIAL2 "Serijska vrata 2" +#define STR_SERIAL3 "Serijska vrata 3" +#define STR_SERIAL4 "Serijska vrata 4" +#define STR_PARALLEL1 "Paralelna vrata 1" +#define STR_PARALLEL2 "Paralelna vrata 2" +#define STR_PARALLEL3 "Paralelna vrata 3" #define STR_HDC "Kontroler tvrdog diska:" #define STR_FDC "Kontroler diskete:" @@ -351,14 +351,14 @@ END #define STR_CASSETTE "Audio kaseta" #define STR_HDD "Tvrdi diskovi:" -#define STR_NEW "&Novo..." +#define STR_NEW "&Novi..." #define STR_EXISTING "&Postojeći..." -#define STR_REMOVE "&Ukloniti" -#define STR_BUS "Međusklop:" +#define STR_REMOVE "&Ukloni" +#define STR_BUS "Sabirnica:" #define STR_CHANNEL "Kanal:" #define STR_ID "ID:" -#define STR_SPECIFY "&Odredite..." +#define STR_SPECIFY "&Odredi..." #define STR_SECTORS "Sektori:" #define STR_HEADS "Glave:" #define STR_CYLS "Cilindri:" @@ -368,22 +368,22 @@ END #define STR_BLOCK_SIZE "Veličina slike:" #define STR_FLOPPY_DRIVES "Disketni pogoni:" -#define STR_TURBO "Turbo timingovi" -#define STR_CHECKBPB "Provjerite BPB" +#define STR_TURBO "Turbo vrijemena" +#define STR_CHECKBPB "Provjeraj BPB" #define STR_CDROM_DRIVES "CD-ROM pogoni:" #define STR_MO_DRIVES "MO pogoni:" #define STR_ZIP_DRIVES "ZIP pogoni:" #define STR_250 "ZIP 250" -#define STR_ISARTC "ISA RTC:" -#define STR_ISAMEM "ISA proširenje memorije" +#define STR_ISARTC "Ura u stvarnom vrijemenu RTC:" +#define STR_ISAMEM "Proširenje memorije ISA" #define STR_ISAMEM_1 "Kartica 1:" #define STR_ISAMEM_2 "Kartica 2:" #define STR_ISAMEM_3 "Kartica 3:" #define STR_ISAMEM_4 "Kartica 4:" -#define STR_BUGGER "ISABugger uređaj" -#define STR_POSTCARD "POST kartica" +#define STR_BUGGER "Uređaj ISABugger" +#define STR_POSTCARD "Kartica POST" #define FONT_SIZE 9 #define FONT_NAME "Segoe UI" @@ -400,7 +400,7 @@ BEGIN 2048 "86Box" IDS_2049 "Greška" IDS_2050 "Fatalna greška" - IDS_2051 "" + IDS_2051 "" IDS_2052 "Pritisnite CTRL+ALT+PAGE DOWN za povratak u prozorski način rada." IDS_2053 "Brzina" IDS_2054 "ZIP %03i %i (%s): %ls" @@ -424,7 +424,7 @@ BEGIN IDS_2068 "Zvuk" IDS_2069 "Mreža" IDS_2070 "Priključci (COM & LPT)" - IDS_2071 "Kontroleri za diskovi" + IDS_2071 "Kontroleri za diskove" IDS_2072 "Tvrdi diskovi" IDS_2073 "Floppy & CD-ROM pogoni" IDS_2074 "Ostali uklonjivi uređaji" @@ -446,22 +446,22 @@ BEGIN IDS_2086 "MB" IDS_2087 "Provjeri BPB" IDS_2088 "KB" - IDS_2089 "Nije moguće inicijalizirati videorenderer." + IDS_2089 "Nije moguće inicijalizirati renderer." IDS_2090 "Standard" IDS_2091 "%i stanje čekanja" IDS_2092 "Tip" IDS_2093 "Postavljanje PCap-a nije uspjelo" IDS_2094 "Nema PCap uređaja" IDS_2095 "Nevažeći PCap uređaj" - IDS_2096 "Standardni joystick(e) s 2 tipke" - IDS_2097 "Standardni joystick s 4 tipke" - IDS_2098 "Standardni joystick s 6 tipke" - IDS_2099 "Standardni joystick s 8 tipke" + IDS_2096 "Standardna palica za igru s 2 tipke" + IDS_2097 "Standardna palica za igru s 4 tipke" + IDS_2098 "Standardna palica za igru s 6 tipke" + IDS_2099 "Standardna palica za igru s 8 tipke" IDS_2100 "CH Flightstick Pro" IDS_2101 "Microsoft SideWinder Pad" IDS_2102 "Thrustmaster Flight Control System" IDS_2103 "Bez" - IDS_2104 "Nije moguće učitati akceleratore tipkovnice." + IDS_2104 "Nije moguće učitati ubrzivače tipkovnice." IDS_2105 "Nije moguće registrirati neobrađeni unos." IDS_2106 "%u" IDS_2107 "%u MB (CHS: %i, %i, %i)" @@ -469,15 +469,15 @@ BEGIN IDS_2109 "Sve slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux slike (*.FDI)\0*.FDI\0Površne slike (*.86F;*.MFM)\0*.86F;*.MFM\0Sve datoteke (*.*)\0*.*\0" IDS_2110 "Nije moguće inicijalizirati FreeType" IDS_2111 "Nije moguće inicijalizirati SDL, SDL2.dll je potrebno" - IDS_2112 "Jeste li sigurni da želite hard resetirati emulirano računalo?" - IDS_2113 "Jeste li sigurni da želite izaći iz 86Boxa?" + IDS_2112 "Jeste li sigurni da želite hard resetirati emulirani sistem?" + IDS_2113 "Jeste li sigurni da želite zatvoriti 86Box?" IDS_2114 "Nije moguće inicijalizirati GhostScript" IDS_2115 "MO %i (%ls): %ls" IDS_2116 "MO slike (*.IM?;*.MDI)\0*.IM?;*.MDI\0Svi datoteke (*.*)\0*.*\0" IDS_2117 "Dobrodošli u 86Box!" - IDS_2118 "Interni kontroler" + IDS_2118 "Uunutarnji kontroler" IDS_2119 "Izlazi" - IDS_2120 "Nisu pronađeni ROM datoteke" + IDS_2120 "Nisu pronađene ROM datoteke" IDS_2121 "Želite li spremiti postavke?" IDS_2122 "Ovo će napraviti hard resetiranje emuliranog sistema." IDS_2123 "Spremaj" @@ -492,7 +492,7 @@ BEGIN #else #define LIB_NAME_PCAP "libpcap" #endif - IDS_2129 "Provjerite je li " LIB_NAME_PCAP " instaliran i jeste li na " LIB_NAME_PCAP "-kompatibilnoj mrežnoj vezi." + IDS_2129 "Provjerite je li " LIB_NAME_PCAP " instaliran i jeste li na mreži, kompadibilnoj s " LIB_NAME_PCAP "." IDS_2130 "Nevažeća konfiguracija" #ifdef _WIN32 #define LIB_NAME_FREETYPE "freetype.dll" @@ -512,7 +512,7 @@ BEGIN #define LIB_NAME_FLUIDSYNTH "libfluidsynth" #endif IDS_2133 LIB_NAME_FLUIDSYNTH " je potrebno za FluidSynth MIDI izlaz." - IDS_2134 "Ulazak u cijelozaslonski način" + IDS_2134 "Ulazim u cijelozaslonski način" IDS_2135 "Ne pokazi više ovu poruku" IDS_2136 "Ne izlazi" IDS_2137 "Resetiraj" @@ -569,10 +569,10 @@ BEGIN IDS_4128 "Veliki blokovi (2 MB)" IDS_4129 "Mali blokovi (512 KB)" IDS_4130 "VHD slike (*.VHD)\0*.VHD\0Sve datoteke (*.*)\0*.*\0" - IDS_4131 "Izaberi matični VHD" + IDS_4131 "Izaberi matičnu sliku VHD" IDS_4132 "To bi moglo značiti da je matična slika promijenjena nakon što je stvorena različita slika.\n\nTo se također može dogoditi ako su slike premještene ili kopirane, ili greška u programu koji je stvorio ovaj disk.\n\nŽelite li popraviti vremenske oznake?" IDS_4133 "Vremenske ozanke matične i poređenog diska ne odgovaraju." - IDS_4134 "Nisam mogao popraviti vremensku oznaku VHD slike." + IDS_4134 "Ne možem popraviti vremensku oznaku slike VHD." IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index d8eaeb2c8..cdd9ecba3 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -115,25 +115,25 @@ BEGIN POPUP "&Beleženje" BEGIN # ifdef ENABLE_BUSLOGIC_LOG - MENUITEM "Omogoči beležnje za BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC + MENUITEM "Omogoči beleženje za BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC # endif # ifdef ENABLE_CDROM_LOG - MENUITEM "Omogoči beležnje za CD-ROM\tCtrl+F5", IDM_LOG_CDROM + MENUITEM "Omogoči beleženje za CD-ROM\tCtrl+F5", IDM_LOG_CDROM # endif # ifdef ENABLE_D86F_LOG - MENUITEM "Omogoči beležnje za diskete (86F)\tCtrl+F6", IDM_LOG_D86F + MENUITEM "Omogoči beleženje za diskete (86F)\tCtrl+F6", IDM_LOG_D86F # endif # ifdef ENABLE_FDC_LOG - MENUITEM "Omogoči beležnje za disketni krmilnik\tCtrl+F7", IDM_LOG_FDC + MENUITEM "Omogoči beleženje za disketni krmilnik\tCtrl+F7", IDM_LOG_FDC # endif # ifdef ENABLE_IDE_LOG - MENUITEM "Omogoči beležnje za IDE\tCtrl+F8", IDM_LOG_IDE + MENUITEM "Omogoči beleženje za IDE\tCtrl+F8", IDM_LOG_IDE # endif # ifdef ENABLE_SERIAL_LOG - MENUITEM "Omogoči beležnje za serijska vrata\tCtrl+F3", IDM_LOG_SERIAL + MENUITEM "Omogoči beleženje za serijska vrata\tCtrl+F3", IDM_LOG_SERIAL # endif # ifdef ENABLE_NIC_LOG - MENUITEM "Omogoči beležnje za omrežje\tCtrl+F9", IDM_LOG_NIC + MENUITEM "Omogoči beleženje za omrežje\tCtrl+F9", IDM_LOG_NIC # endif # ifdef ENABLE_LOG_COMMANDS # ifdef ENABLE_LOG_TOGGLES @@ -369,7 +369,7 @@ END #define STR_FLOPPY_DRIVES "Disketni pogoni:" #define STR_TURBO "Turbo časovniki" -#define STR_CHECKBPB "Preveri BPB" +#define STR_CHECKBPB "Preverjaj BPB" #define STR_CDROM_DRIVES "Pogoni CD-ROM:" #define STR_MO_DRIVES "Magnetno-optični pogoni:" @@ -462,7 +462,7 @@ BEGIN IDS_2102 "Thrustmaster Flight Control System" IDS_2103 "Brez" IDS_2104 "Ne morem naložiti pospeševalnikov tipkovnice." - IDS_2105 "Ne morem registrirati surovega vnosa." + IDS_2105 "Ne morem registrirati neobdelanega vnosa." IDS_2106 "%u" IDS_2107 "%u MB (CHS: %i, %i, %i)" IDS_2108 "Disketa %i (%s): %ls" @@ -492,7 +492,7 @@ BEGIN #else #define LIB_NAME_PCAP "libpcap" #endif - IDS_2129 "Prepičajte se, da je nameščen " LIB_NAME_PCAP " in da ste na omrežni povezavi, ki je združljiva z " LIB_NAME_PCAP + IDS_2129 "Prepičajte se, da je nameščen " LIB_NAME_PCAP " in da ste na omrežni povezavi, združljivi z " LIB_NAME_PCAP IDS_2130 "Neveljavna konfiguracija" #ifdef _WIN32 #define LIB_NAME_FREETYPE "freetype.dll" @@ -572,7 +572,7 @@ BEGIN IDS_4131 "Izberite starševsko sliko VHD" IDS_4132 "To lahko pomeni, da je bila starševska slika spremenjena potem, ko je že bila ustvarjena diferencialna slika.\n\nDo tega lahko pride tudi kadar so datoteke slik diska premaknjene ali kopirane, ali pa gre za hrošča v programu, ki je ustvaril ta disk.\n\nŽelite popraviti časovni žig?" IDS_4133 "Časovna žiga starševske slike diska in slike diska otroka se ne ujemata" - IDS_4134 "Ne morem popraviti časovnega žiga VHD." + IDS_4134 "Ne morem popraviti časovnega žiga slike VHD." IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" From 3fc0a73f3e6c974468da997968de6a5f26d653f1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 02:22:28 +0100 Subject: [PATCH 25/44] And another fix. --- src/win/languages/hr-HR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index ed4dbe6f6..b6ab67c20 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -572,7 +572,7 @@ BEGIN IDS_4131 "Izaberi matičnu sliku VHD" IDS_4132 "To bi moglo značiti da je matična slika promijenjena nakon što je stvorena različita slika.\n\nTo se također može dogoditi ako su slike premještene ili kopirane, ili greška u programu koji je stvorio ovaj disk.\n\nŽelite li popraviti vremenske oznake?" IDS_4133 "Vremenske ozanke matične i poređenog diska ne odgovaraju." - IDS_4134 "Ne možem popraviti vremensku oznaku slike VHD." + IDS_4134 "Ne mogu popraviti vremensku oznaku slike VHD." IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" From b75a81bdc2ee7b9c8f2cf4abfa6e742719b6aa9f Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 02:24:54 +0100 Subject: [PATCH 26/44] And another. --- src/win/languages/hr-HR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index b6ab67c20..2fbaecbad 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -552,7 +552,7 @@ BEGIN IDS_4111 "Slika diska već postoji" IDS_4112 "Molimte unesite važeći naziv datoteke." IDS_4113 "Slika je stvorena" - IDS_4114 "Provjerite je li postoji datoteka i je li je čitljiva." + IDS_4114 "Provjerite je li postoji datoteka i je li čitljiva." IDS_4115 "Provjerite je li se datoteka sprema u mapu s dopuštenjima za pisanje." IDS_4116 "Slika diska je prevelika" IDS_4117 "Ne zaboravite stvoriti particije i formatirati ih na novom disku." From 7ef61299d677529e18e9ed867551afe4d85e7dcc Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 02:25:59 +0100 Subject: [PATCH 27/44] And another. --- src/win/languages/hr-HR.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index 2fbaecbad..348cd13f0 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -423,7 +423,7 @@ BEGIN IDS_2067 "Ulazni uređaji" IDS_2068 "Zvuk" IDS_2069 "Mreža" - IDS_2070 "Priključci (COM & LPT)" + IDS_2070 "Vrata (COM & LPT)" IDS_2071 "Kontroleri za diskove" IDS_2072 "Tvrdi diskovi" IDS_2073 "Floppy & CD-ROM pogoni" From 71cca642acdeeea7cb4d7c34bc452a8088b7e12b Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Dec 2021 02:27:57 +0100 Subject: [PATCH 28/44] And another. --- src/win/languages/hr-HR.rc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index 348cd13f0..df1402995 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -411,7 +411,7 @@ BEGIN IDS_2059 "Turbo" IDS_2060 "Uključeno" IDS_2061 "Isključeno" - IDS_2062 "Sve slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0BOsnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površne slike (*.86F)\0*.86F\0" + IDS_2062 "Sve slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0BOsnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površinske slike (*.86F)\0*.86F\0" IDS_2063 "Sistem ""%hs"" nije dostupan jer ne postoje potrebni ROM-ovi u mapu roms/machines. Prebacivanje na dostupno računalo." END @@ -429,7 +429,7 @@ BEGIN IDS_2073 "Floppy & CD-ROM pogoni" IDS_2074 "Ostali uklonjivi uređaji" IDS_2075 "Ostali periferni uređaji" - IDS_2076 "Površne slike (*.86F)\0*.86F\0" + IDS_2076 "Površinske slike (*.86F)\0*.86F\0" IDS_2077 "Kliknite da uhvatite miš" IDS_2078 "Pritisnite F8+F12 za otpustanje miša" IDS_2079 "Pritisnite F8+F12 ili srednji gumb miša za otpuštanje miša" @@ -466,7 +466,7 @@ BEGIN IDS_2106 "%u" IDS_2107 "%u MB (CHS: %i, %i, %i)" IDS_2108 "Disketa %i (%s): %ls" - IDS_2109 "Sve slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux slike (*.FDI)\0*.FDI\0Površne slike (*.86F;*.MFM)\0*.86F;*.MFM\0Sve datoteke (*.*)\0*.*\0" + IDS_2109 "Sve slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux slike (*.FDI)\0*.FDI\0Površinske slike (*.86F;*.MFM)\0*.86F;*.MFM\0Sve datoteke (*.*)\0*.*\0" IDS_2110 "Nije moguće inicijalizirati FreeType" IDS_2111 "Nije moguće inicijalizirati SDL, SDL2.dll je potrebno" IDS_2112 "Jeste li sigurni da želite hard resetirati emulirani sistem?" From 05ff0b0921efe85ca9e31b5fbcef3032c9acecfb Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sat, 4 Dec 2021 11:35:26 -0300 Subject: [PATCH 29/44] Build script: Fix pkg-config (for rtmidi) when cross-compiling --- .ci/build.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.ci/build.sh b/.ci/build.sh index f9d5f56af..7cd0984fa 100644 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -239,6 +239,12 @@ else *) arch_gnu="$arch-linux-gnu";; esac + # Determine library directory name for this architecture. + case $arch in + x86) libdir="i386-linux-gnu";; + *) libdir="$arch_gnu";; + esac + # Create CMake toolchain file. cat << EOF > toolchain.cmake set(CMAKE_SYSTEM_NAME Linux) @@ -257,6 +263,9 @@ set(CMAKE_STRIP $arch_gnu-strip) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(ENV{PKG_CONFIG_PATH} "") +set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/$libdir/pkgconfig:/usr/share/$libdir/pkgconfig") EOF cmake_flags_extra="$cmake_flags_extra -D CMAKE_TOOLCHAIN_FILE=toolchain.cmake" strip_binary="$arch_gnu-strip" From 9679ec1955c07491bef213597ae52f6669b05946 Mon Sep 17 00:00:00 2001 From: OldMadMan <87818252+OldMadMan@users.noreply.github.com> Date: Sun, 5 Dec 2021 01:36:17 +0800 Subject: [PATCH 30/44] Update simplified Chinese text (#1909) Correct a few typos, adjust individual sentences --- src/win/languages/zh-CN.rc | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index f999f0478..047591eb0 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -18,7 +18,7 @@ BEGIN POPUP "操作(&A)" BEGIN MENUITEM "键盘需要捕捉(&K)", IDM_ACTION_KBD_REQ_CAPTURE - MENUITEM "右CTRL作为左ALT(&R)", IDM_ACTION_RCTRL_IS_LALT + MENUITEM "将右 CTRL 键映射为左 ALT 键(&R)", IDM_ACTION_RCTRL_IS_LALT MENUITEM SEPARATOR MENUITEM "硬重置(&H)...", IDM_ACTION_HRESET MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD @@ -33,8 +33,8 @@ BEGIN BEGIN MENUITEM "隐藏状态栏(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM SEPARATOR - MENUITEM "窗口可调整大小(&R)", IDM_VID_RESIZE - MENUITEM "记住窗口大小和未知(&e)", IDM_VID_REMEMBER + MENUITEM "窗口尺寸可调(&R)", IDM_VID_RESIZE + MENUITEM "记忆窗口尺寸和位置(&e)", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "渲染器(&n)" BEGIN @@ -48,7 +48,7 @@ BEGIN END MENUITEM SEPARATOR MENUITEM "指定窗口大小...", IDM_VID_SPECIFY_DIM - MENUITEM "强制 4:3 显示比例(&o)", IDM_VID_FORCE43 + MENUITEM "强制以 4:3 显示画面(&o)", IDM_VID_FORCE43 POPUP "窗口缩放比例(&W)" BEGIN MENUITEM "&0.5x", IDM_VID_SCALE_1X @@ -73,7 +73,7 @@ BEGIN END POPUP "E&GA/(S)VGA 设置" BEGIN - MENUITEM "反转 VGA 显示器(&I)", IDM_VID_INVERT + MENUITEM "反色 VGA 显示器(&I)", IDM_VID_INVERT POPUP "VGA 屏幕类型(&t)" BEGIN MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB @@ -399,7 +399,7 @@ STRINGTABLE DISCARDABLE BEGIN 2048 "86Box" IDS_2049 "错误" - IDS_2050 "关键错误" + IDS_2050 "致命错误" IDS_2051 "<保留>" IDS_2052 "按 CTRL+ALT+PAGE DOWN 组合键返回窗口模式." IDS_2053 "速度" @@ -411,7 +411,7 @@ BEGIN IDS_2059 "Turbo" IDS_2060 "开" IDS_2061 "关" - IDS_2062 "所以镜像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区镜像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面镜像 (*.86F)\0*.86F\0" + IDS_2062 "所有镜像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区镜像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面镜像 (*.86F)\0*.86F\0" IDS_2063 "由于 roms/machines 文件夹中缺少合适的ROM, ""%hs"" 机型不可用. 将切换到其他可用机型." END @@ -453,10 +453,10 @@ BEGIN IDS_2093 "设置 PCap 失败" IDS_2094 "未找到 PCap 设备" IDS_2095 "无效 PCap 设备" - IDS_2096 "标准 2键操纵杆" - IDS_2097 "标准 4键操纵杆" - IDS_2098 "标准 6键操纵杆" - IDS_2099 "标准 8键操纵杆" + IDS_2096 "标准 2 键操纵杆" + IDS_2097 "标准 4 键操纵杆" + IDS_2098 "标准 6 键操纵杆" + IDS_2099 "标准 8 键操纵杆" IDS_2100 "CH Flightstick Pro" IDS_2101 "Microsoft SideWinder Pad" IDS_2102 "Thrustmaster Flight Control System" @@ -513,7 +513,7 @@ BEGIN #endif IDS_2133 "FluidSynth MIDI 输出需要" LIB_NAME_FLUIDSYNTH IDS_2134 "即将进入全屏模式" - IDS_2135 "请勿在显示此提示" + IDS_2135 "请勿再显示此提示" IDS_2136 "不退出" IDS_2137 "重置" IDS_2138 "不重置" @@ -537,7 +537,7 @@ BEGIN IDS_4096 "硬盘 (%s)" IDS_4097 "%01i:%01i" IDS_4098 "%01i" - IDS_4099 "没有 MFM/RLL 或 ESDI CD-ROM 驱动器" + IDS_4099 "历史上没有出现过 MFM/RLL 或 ESDI CD-ROM 驱动器" IDS_4100 "自定义..." IDS_4101 "自定义 (large)..." IDS_4102 "添加新硬盘" @@ -548,7 +548,7 @@ BEGIN IDS_4107 "无法读取文件" IDS_4108 "无法写入文件" IDS_4109 "不支持非 512 字节扇区的 HDI 或 HDX 镜像." - IDS_4110 "USB 目前还不支持" + IDS_4110 "尚不支持 USB" IDS_4111 "磁盘镜像文件已存在" IDS_4112 "请指定有效的文件名." IDS_4113 "磁盘镜像创建完成" @@ -572,7 +572,7 @@ BEGIN IDS_4131 "选择父 VHD 文件" IDS_4132 "这可能因为在创建差异镜像后修改了父映像. \n\n如果镜像文件被移动或复制, 或由于创建此磁盘的程序中的错误, 也可能发生这种情况. \n\n是否需要修复时间戳?" IDS_4133 "父盘与子盘的时间戳不匹配." - IDS_4134 "无法固定 VHD 时间戳." + IDS_4134 "无法修复 VHD 时间戳." IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" @@ -624,10 +624,10 @@ BEGIN IDS_5910 "5.25"" 1Gb M.O." IDS_5911 "5.25"" 1.3Gb M.O." - IDS_6144 "完美转速(RPM)" - IDS_6145 "低于完美转速 1%%" - IDS_6146 "低于完美转速 1.5%%" - IDS_6147 "低于完美转速 2%%" + IDS_6144 "标准转速(RPM)" + IDS_6145 "低于标准转速 1%%" + IDS_6146 "低于标准转速 1.5%%" + IDS_6147 "低于标准转速 2%%" IDS_7168 "(系统默认)" END From 40abfc1b5e06f392f8c6ca77dac8522420403568 Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sat, 4 Dec 2021 21:26:55 +0200 Subject: [PATCH 31/44] Lower required OpenGL version from 3.3 -> 3.0 --- CMakeLists.txt | 2 +- src/include/glad/glad.h | 471 ++++--------------------------------- src/win/glad.c | 234 +++--------------- src/win/languages/cs-CZ.rc | 2 +- src/win/languages/de-DE.rc | 2 +- src/win/languages/en-GB.rc | 2 +- src/win/languages/en-US.rc | 2 +- src/win/languages/es-ES.rc | 2 +- src/win/languages/fi-FI.rc | 2 +- src/win/languages/fr-FR.rc | 2 +- src/win/languages/hr-HR.rc | 2 +- src/win/languages/hu-HU.rc | 2 +- src/win/languages/it-IT.rc | 2 +- src/win/languages/ja-JP.rc | 2 +- src/win/languages/ko-KR.rc | 2 +- src/win/languages/pt-BR.rc | 2 +- src/win/languages/pt-PT.rc | 2 +- src/win/languages/ru-RU.rc | 2 +- src/win/languages/sl-SI.rc | 2 +- src/win/languages/tr-TR.rc | 2 +- src/win/languages/zh-CN.rc | 2 +- src/win/win_opengl.c | 41 +++- src/win/win_opengl_glslp.c | 8 +- 23 files changed, 125 insertions(+), 667 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 127bae80b..5299448f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,7 @@ CMAKE_DEPENDENT_OPTION(MGA "Matrox Mystique graphics adapters" ON "DEV_BRANCH" O CMAKE_DEPENDENT_OPTION(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF) CMAKE_DEPENDENT_OPTION(OLIVETTI "Olivetti M290" ON "DEV_BRANCH" OFF) CMAKE_DEPENDENT_OPTION(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF) -CMAKE_DEPENDENT_OPTION(OPENGL "OpenGL 3.3 Core renderer" ON "DEV_BRANCH" OFF) +CMAKE_DEPENDENT_OPTION(OPENGL "OpenGL 3.0 Core renderer" ON "DEV_BRANCH" OFF) CMAKE_DEPENDENT_OPTION(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF) CMAKE_DEPENDENT_OPTION(PS2M70T4 "IBM PS/2 model 70 (type 4)" ON "DEV_BRANCH" OFF) CMAKE_DEPENDENT_OPTION(S3TRIO3D2X "S3 Trio3D/2X" ON "DEV_BRANCH" OFF) diff --git a/src/include/glad/glad.h b/src/include/glad/glad.h index f8a96f376..0b4d36656 100644 --- a/src/include/glad/glad.h +++ b/src/include/glad/glad.h @@ -1,23 +1,24 @@ /* - OpenGL loader generated by glad 0.1.34 on Tue Apr 27 15:16:07 2021. + OpenGL loader generated by glad 0.1.34 on Sat Dec 4 18:46:02 2021. Language/Generator: C/C++ Specification: gl - APIs: gl=3.3 + APIs: gl=3.0 Profile: core Extensions: GL_ARB_buffer_storage, - GL_ARB_debug_output + GL_ARB_debug_output, + GL_ARB_sync Loader: True Local files: False Omit khrplatform: False Reproducible: False Commandline: - --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_debug_output" + --profile="core" --api="gl=3.0" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_debug_output,GL_ARB_sync" Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_debug_output + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.0&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_debug_output&extensions=GL_ARB_sync */ @@ -811,147 +812,6 @@ typedef void (APIENTRY *GLVULKANPROCNV)(void); #define GL_RG32I 0x823B #define GL_RG32UI 0x823C #define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFF -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 -#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 -#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 -#define GL_DEPTH_CLAMP 0x864F -#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 -#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 -#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B -#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C -#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_SRC1_COLOR 0x88F9 -#define GL_ONE_MINUS_SRC1_COLOR 0x88FA -#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB -#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_SAMPLER_BINDING 0x8919 -#define GL_RGB10_A2UI 0x906F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 -#define GL_TIME_ELAPSED 0x88BF -#define GL_TIMESTAMP 0x8E28 -#define GL_INT_2_10_10_10_REV 0x8D9F #ifndef GL_VERSION_1_0 #define GL_VERSION_1_0 1 GLAPI int GLAD_GL_VERSION_1_0; @@ -1843,285 +1703,6 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; #define glIsVertexArray glad_glIsVertexArray #endif -#ifndef GL_VERSION_3_1 -#define GL_VERSION_3_1 1 -GLAPI int GLAD_GL_VERSION_3_1; -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); -GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; -#define glDrawArraysInstanced glad_glDrawArraysInstanced -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); -GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; -#define glDrawElementsInstanced glad_glDrawElementsInstanced -typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); -GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; -#define glTexBuffer glad_glTexBuffer -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); -GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; -#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex -typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; -#define glCopyBufferSubData glad_glCopyBufferSubData -typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); -GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; -#define glGetUniformIndices glad_glGetUniformIndices -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; -#define glGetActiveUniformsiv glad_glGetActiveUniformsiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; -#define glGetActiveUniformName glad_glGetActiveUniformName -typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); -GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; -#define glGetUniformBlockIndex glad_glGetUniformBlockIndex -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; -#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; -#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName -typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; -#define glUniformBlockBinding glad_glUniformBlockBinding -#endif -#ifndef GL_VERSION_3_2 -#define GL_VERSION_3_2 1 -GLAPI int GLAD_GL_VERSION_3_2; -typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; -#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); -GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; -#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; -#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); -GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; -#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); -GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; -#define glProvokingVertex glad_glProvokingVertex -typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); -GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; -#define glFenceSync glad_glFenceSync -typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); -GLAPI PFNGLISSYNCPROC glad_glIsSync; -#define glIsSync glad_glIsSync -typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); -GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; -#define glDeleteSync glad_glDeleteSync -typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; -#define glClientWaitSync glad_glClientWaitSync -typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); -GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; -#define glWaitSync glad_glWaitSync -typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); -GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; -#define glGetInteger64v glad_glGetInteger64v -typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); -GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; -#define glGetSynciv glad_glGetSynciv -typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); -GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; -#define glGetInteger64i_v glad_glGetInteger64i_v -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); -GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; -#define glGetBufferParameteri64v glad_glGetBufferParameteri64v -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); -GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; -#define glFramebufferTexture glad_glFramebufferTexture -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; -#define glTexImage2DMultisample glad_glTexImage2DMultisample -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; -#define glTexImage3DMultisample glad_glTexImage3DMultisample -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); -GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; -#define glGetMultisamplefv glad_glGetMultisamplefv -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); -GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; -#define glSampleMaski glad_glSampleMaski -#endif -#ifndef GL_VERSION_3_3 -#define GL_VERSION_3_3 1 -GLAPI int GLAD_GL_VERSION_3_3; -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); -GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; -#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed -typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); -GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; -#define glGetFragDataIndex glad_glGetFragDataIndex -typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); -GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; -#define glGenSamplers glad_glGenSamplers -typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); -GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; -#define glDeleteSamplers glad_glDeleteSamplers -typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); -GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; -#define glIsSampler glad_glIsSampler -typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); -GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; -#define glBindSampler glad_glBindSampler -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); -GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; -#define glSamplerParameteri glad_glSamplerParameteri -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; -#define glSamplerParameteriv glad_glSamplerParameteriv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); -GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; -#define glSamplerParameterf glad_glSamplerParameterf -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); -GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; -#define glSamplerParameterfv glad_glSamplerParameterfv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); -GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; -#define glSamplerParameterIiv glad_glSamplerParameterIiv -typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); -GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; -#define glSamplerParameterIuiv glad_glSamplerParameterIuiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; -#define glGetSamplerParameteriv glad_glGetSamplerParameteriv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; -#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); -GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; -#define glGetSamplerParameterfv glad_glGetSamplerParameterfv -typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); -GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; -#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv -typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); -GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; -#define glQueryCounter glad_glQueryCounter -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); -GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; -#define glGetQueryObjecti64v glad_glGetQueryObjecti64v -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); -GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; -#define glGetQueryObjectui64v glad_glGetQueryObjectui64v -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); -GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; -#define glVertexAttribDivisor glad_glVertexAttribDivisor -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; -#define glVertexAttribP1ui glad_glVertexAttribP1ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; -#define glVertexAttribP1uiv glad_glVertexAttribP1uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; -#define glVertexAttribP2ui glad_glVertexAttribP2ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; -#define glVertexAttribP2uiv glad_glVertexAttribP2uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; -#define glVertexAttribP3ui glad_glVertexAttribP3ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; -#define glVertexAttribP3uiv glad_glVertexAttribP3uiv -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); -GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; -#define glVertexAttribP4ui glad_glVertexAttribP4ui -typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); -GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; -#define glVertexAttribP4uiv glad_glVertexAttribP4uiv -typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; -#define glVertexP2ui glad_glVertexP2ui -typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; -#define glVertexP2uiv glad_glVertexP2uiv -typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; -#define glVertexP3ui glad_glVertexP3ui -typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; -#define glVertexP3uiv glad_glVertexP3uiv -typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); -GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; -#define glVertexP4ui glad_glVertexP4ui -typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); -GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; -#define glVertexP4uiv glad_glVertexP4uiv -typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; -#define glTexCoordP1ui glad_glTexCoordP1ui -typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; -#define glTexCoordP1uiv glad_glTexCoordP1uiv -typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; -#define glTexCoordP2ui glad_glTexCoordP2ui -typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; -#define glTexCoordP2uiv glad_glTexCoordP2uiv -typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; -#define glTexCoordP3ui glad_glTexCoordP3ui -typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; -#define glTexCoordP3uiv glad_glTexCoordP3uiv -typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; -#define glTexCoordP4ui glad_glTexCoordP4ui -typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; -#define glTexCoordP4uiv glad_glTexCoordP4uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; -#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; -#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; -#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; -#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; -#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; -#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); -GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; -#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui -typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); -GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; -#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv -typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); -GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; -#define glNormalP3ui glad_glNormalP3ui -typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); -GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; -#define glNormalP3uiv glad_glNormalP3uiv -typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; -#define glColorP3ui glad_glColorP3ui -typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; -#define glColorP3uiv glad_glColorP3uiv -typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; -#define glColorP4ui glad_glColorP4ui -typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; -#define glColorP4uiv glad_glColorP4uiv -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); -GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; -#define glSecondaryColorP3ui glad_glSecondaryColorP3ui -typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); -GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; -#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv -#endif #define GL_MAP_PERSISTENT_BIT 0x0040 #define GL_MAP_COHERENT_BIT 0x0080 #define GL_DYNAMIC_STORAGE_BIT 0x0100 @@ -2151,6 +1732,21 @@ GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; #define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF #ifndef GL_ARB_buffer_storage #define GL_ARB_buffer_storage 1 GLAPI int GLAD_GL_ARB_buffer_storage; @@ -2174,6 +1770,31 @@ typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei GLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; #define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB #endif +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +GLAPI int GLAD_GL_ARB_sync; +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +#endif #ifdef __cplusplus } diff --git a/src/win/glad.c b/src/win/glad.c index 7bab35d06..8e2e4ce13 100644 --- a/src/win/glad.c +++ b/src/win/glad.c @@ -1,23 +1,24 @@ /* - OpenGL loader generated by glad 0.1.34 on Tue Apr 27 15:16:07 2021. + OpenGL loader generated by glad 0.1.34 on Sat Dec 4 18:46:02 2021. Language/Generator: C/C++ Specification: gl - APIs: gl=3.3 + APIs: gl=3.0 Profile: core Extensions: GL_ARB_buffer_storage, - GL_ARB_debug_output + GL_ARB_debug_output, + GL_ARB_sync Loader: True Local files: False Omit khrplatform: False Reproducible: False Commandline: - --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_debug_output" + --profile="core" --api="gl=3.0" --generator="c" --spec="gl" --extensions="GL_ARB_buffer_storage,GL_ARB_debug_output,GL_ARB_sync" Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_debug_output + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.0&extensions=GL_ARB_buffer_storage&extensions=GL_ARB_debug_output&extensions=GL_ARB_sync */ #include @@ -265,9 +266,6 @@ int GLAD_GL_VERSION_1_5 = 0; int GLAD_GL_VERSION_2_0 = 0; int GLAD_GL_VERSION_2_1 = 0; int GLAD_GL_VERSION_3_0 = 0; -int GLAD_GL_VERSION_3_1 = 0; -int GLAD_GL_VERSION_3_2 = 0; -int GLAD_GL_VERSION_3_3 = 0; PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; @@ -278,10 +276,8 @@ PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; -PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; -PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; @@ -302,13 +298,8 @@ PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; PFNGLCLEARCOLORPROC glad_glClearColor = NULL; PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; -PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; PFNGLCOLORMASKPROC glad_glColorMask = NULL; PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; -PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; -PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; -PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; -PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; @@ -316,7 +307,6 @@ PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; -PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; @@ -330,9 +320,7 @@ PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; -PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; -PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; @@ -343,27 +331,20 @@ PFNGLDISABLEPROC glad_glDisable = NULL; PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; PFNGLDISABLEIPROC glad_glDisablei = NULL; PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; -PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; -PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; -PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; -PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; PFNGLENABLEPROC glad_glEnable = NULL; PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; PFNGLENABLEIPROC glad_glEnablei = NULL; PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; PFNGLENDQUERYPROC glad_glEndQuery = NULL; PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; -PFNGLFENCESYNCPROC glad_glFenceSync = NULL; PFNGLFINISHPROC glad_glFinish = NULL; PFNGLFLUSHPROC glad_glFlush = NULL; PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; @@ -373,21 +354,15 @@ PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; PFNGLGENQUERIESPROC glad_glGenQueries = NULL; PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; -PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; -PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; -PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; -PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; @@ -395,32 +370,21 @@ PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; PFNGLGETERRORPROC glad_glGetError = NULL; PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; -PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; -PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; -PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; -PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; -PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; -PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; -PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; -PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; -PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; -PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; PFNGLGETSTRINGPROC glad_glGetString = NULL; PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; -PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; @@ -429,8 +393,6 @@ PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; -PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; -PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; @@ -449,9 +411,7 @@ PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; PFNGLISPROGRAMPROC glad_glIsProgram = NULL; PFNGLISQUERYPROC glad_glIsQuery = NULL; PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; -PFNGLISSAMPLERPROC glad_glIsSampler = NULL; PFNGLISSHADERPROC glad_glIsShader = NULL; -PFNGLISSYNCPROC glad_glIsSync = NULL; PFNGLISTEXTUREPROC glad_glIsTexture = NULL; PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; @@ -461,17 +421,6 @@ PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; -PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; -PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; -PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; -PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; -PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; -PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; -PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; -PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; -PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; -PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; -PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; @@ -481,24 +430,12 @@ PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; PFNGLPOINTSIZEPROC glad_glPointSize = NULL; PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; -PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; -PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; -PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; PFNGLREADPIXELSPROC glad_glReadPixels = NULL; PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; -PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; -PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; -PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; -PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; -PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; -PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; -PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; PFNGLSCISSORPROC glad_glScissor = NULL; -PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; -PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; @@ -506,20 +443,9 @@ PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; PFNGLSTENCILOPPROC glad_glStencilOp = NULL; PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; -PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; -PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; -PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; -PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; -PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; -PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; -PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; -PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; -PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; -PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; -PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; @@ -554,7 +480,6 @@ PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; -PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; @@ -603,7 +528,6 @@ PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; -PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; @@ -625,30 +549,23 @@ PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; -PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; -PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; -PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; -PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; -PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; -PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; -PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; -PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; -PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; -PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; -PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; -PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; -PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; -PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; PFNGLVIEWPORTPROC glad_glViewport = NULL; -PFNGLWAITSYNCPROC glad_glWaitSync = NULL; int GLAD_GL_ARB_buffer_storage = 0; int GLAD_GL_ARB_debug_output = 0; +int GLAD_GL_ARB_sync = 0; PFNGLBUFFERSTORAGEPROC glad_glBufferStorage = NULL; PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB = NULL; PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB = NULL; PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB = NULL; PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; static void load_GL_VERSION_1_0(GLADloadproc load) { if(!GLAD_GL_VERSION_1_0) return; glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); @@ -961,107 +878,6 @@ static void load_GL_VERSION_3_0(GLADloadproc load) { glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); } -static void load_GL_VERSION_3_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_1) return; - glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); - glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); - glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); - glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); - glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); - glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); - glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); - glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); - glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); - glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); - glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); - glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); -} -static void load_GL_VERSION_3_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_2) return; - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); - glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); - glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); - glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); - glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); - glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); - glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); - glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); - glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); - glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); - glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); - glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); - glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); - glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); -} -static void load_GL_VERSION_3_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_3) return; - glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); - glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); - glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); - glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); - glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); - glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); - glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); - glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); - glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); - glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); - glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); - glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); - glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); - glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); - glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); - glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); - glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); - glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); - glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); - glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); - glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); - glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); - glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); - glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); - glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); - glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); - glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); - glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); - glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); - glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); - glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); - glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); - glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); - glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); - glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); - glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); - glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); - glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); - glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); - glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); - glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); - glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); - glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); - glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); - glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); - glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); - glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); - glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); - glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); - glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); - glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); - glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); - glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); - glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); - glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); - glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); -} static void load_GL_ARB_buffer_storage(GLADloadproc load) { if(!GLAD_GL_ARB_buffer_storage) return; glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); @@ -1073,10 +889,21 @@ static void load_GL_ARB_debug_output(GLADloadproc load) { glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); } +static void load_GL_ARB_sync(GLADloadproc load) { + if(!GLAD_GL_ARB_sync) return; + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); +} static int find_extensionsGL(void) { if (!get_exts()) return 0; GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); + GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); free_exts(); return 1; } @@ -1126,12 +953,9 @@ static void find_coreGL(void) { GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; - GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; - GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; - GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; - if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { + if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 0)) { max_loaded_major = 3; - max_loaded_minor = 3; + max_loaded_minor = 0; } } @@ -1150,13 +974,11 @@ int gladLoadGLLoader(GLADloadproc load) { load_GL_VERSION_2_0(load); load_GL_VERSION_2_1(load); load_GL_VERSION_3_0(load); - load_GL_VERSION_3_1(load); - load_GL_VERSION_3_2(load); - load_GL_VERSION_3_3(load); if (!find_extensionsGL()) return 0; load_GL_ARB_buffer_storage(load); load_GL_ARB_debug_output(load); + load_GL_ARB_sync(load); return GLVersion.major != 0 || GLVersion.minor != 0; } diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc index 9b59a8bd9..200c5c9d4 100644 --- a/src/win/languages/cs-CZ.rc +++ b/src/win/languages/cs-CZ.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index 748fbf715..9f7925854 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3-Kern)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0-Kern)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc index f0c65adab..7ceeeed2b 100644 --- a/src/win/languages/en-GB.rc +++ b/src/win/languages/en-GB.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc index ade2e1ff9..05616379f 100644 --- a/src/win/languages/en-US.rc +++ b/src/win/languages/en-US.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc index 23a1eae81..7f2e2c2e4 100644 --- a/src/win/languages/es-ES.rc +++ b/src/win/languages/es-ES.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc index ff0130d0c..f3e4f10bf 100644 --- a/src/win/languages/fi-FI.rc +++ b/src/win/languages/fi-FI.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (ohjelmistopohjainen)", IDM_VID_SDL_SW MENUITEM "SDL (&laitteistokiihdytetty)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index fe6cdc865..1a212d5cc 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Logiciel)", IDM_VID_SDL_SW MENUITEM "SDL (&Materiel)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index df1402995..0c4f4d38c 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Softver)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardver)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 jezgra)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 jezgra)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc index 2acad9e18..4081389b7 100644 --- a/src/win/languages/hu-HU.rc +++ b/src/win/languages/hu-HU.rc @@ -44,7 +44,7 @@ BEGIN MENUITEM "&SDL (Szoftveres)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardveres)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc index 9cff4e642..1397da930 100644 --- a/src/win/languages/it-IT.rc +++ b/src/win/languages/it-IT.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index f7a8f9770..044f48c3e 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "SDL (ソフトウェア)(&S)", IDM_VID_SDL_SW MENUITEM "SDL (ハードウェア)(&H)", IDM_VID_SDL_HW MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL - MENUITEM "OpenGL (3.3コア)(&G)", IDM_VID_OPENGL_CORE + MENUITEM "OpenGL (3.0コア)(&G)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "VNC(&V)", IDM_VID_VNC #endif diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index 4562fdbce..0c0924b84 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "SDL (소프트웨어)(&S)", IDM_VID_SDL_SW MENUITEM "SDL (하드웨어)(&H)", IDM_VID_SDL_HW MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL - MENUITEM "OpenGL (3.3 코어)(&G)", IDM_VID_OPENGL_CORE + MENUITEM "OpenGL (3.0 코어)(&G)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "VNC(&V)", IDM_VID_VNC #endif diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc index 79c0b51cf..16eb2e48f 100644 --- a/src/win/languages/pt-BR.rc +++ b/src/win/languages/pt-BR.rc @@ -42,7 +42,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc index 9dc41847a..f983fd24e 100644 --- a/src/win/languages/pt-PT.rc +++ b/src/win/languages/pt-PT.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 7f80abe87..9f78a06b3 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Software)", IDM_VID_SDL_SW MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index cdd9ecba3..e2cc77005 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (programsko)", IDM_VID_SDL_SW MENUITEM "SDL (s&trojno)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (Jedro 3.3)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (Jedro 3.0)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc index b1c055ad1..76a14fb1d 100644 --- a/src/win/languages/tr-TR.rc +++ b/src/win/languages/tr-TR.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (Yazılım)", IDM_VID_SDL_SW MENUITEM "SDL (&Donanım)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 047591eb0..c6bf385e6 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -41,7 +41,7 @@ BEGIN MENUITEM "&SDL (软件)", IDM_VID_SDL_SW MENUITEM "SDL (硬件 &H)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE + MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "&VNC", IDM_VID_VNC #endif diff --git a/src/win/win_opengl.c b/src/win/win_opengl.c index 69190b6b1..4a2db844f 100644 --- a/src/win/win_opengl.c +++ b/src/win/win_opengl.c @@ -473,7 +473,7 @@ static void opengl_main(void* param) SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1"); /* Is this actually doing anything...? */ SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); if (GLAD_GL_ARB_debug_output) @@ -526,7 +526,7 @@ static void opengl_main(void* param) SDL_GL_DeleteContext(context); opengl_fail(); } - + if (GLAD_GL_ARB_debug_output) { glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB); @@ -592,14 +592,17 @@ static void opengl_main(void* param) } } - /* Check if commands that use buffers have been completed. */ - for (int i = 0; i < BUFFERCOUNT; i++) + if (GLAD_GL_ARB_sync) { - if (blit_info[i].sync != NULL && glClientWaitSync(blit_info[i].sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0) != GL_TIMEOUT_EXPIRED) + /* Check if commands that use buffers have been completed. */ + for (int i = 0; i < BUFFERCOUNT; i++) { - glDeleteSync(blit_info[i].sync); - blit_info[i].sync = NULL; - atomic_flag_clear(&blit_info[i].in_use); + if (blit_info[i].sync != NULL && glClientWaitSync(blit_info[i].sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0) != GL_TIMEOUT_EXPIRED) + { + glDeleteSync(blit_info[i].sync); + blit_info[i].sync = NULL; + atomic_flag_clear(&blit_info[i].in_use); + } } } @@ -653,8 +656,17 @@ static void opengl_main(void* param) glPixelStorei(GL_UNPACK_ROW_LENGTH, ROW_LENGTH); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, info->w, info->h, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); - /* Add fence to track when above gl commands are complete. */ - info->sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + if (GLAD_GL_ARB_sync) + { + /* Add fence to track when above gl commands are complete. */ + info->sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + } + else + { + /* No sync objects; block until commands are complete. */ + glFinish(); + atomic_flag_clear(&info->in_use); + } read_pos = (read_pos + 1) % BUFFERCOUNT; @@ -788,10 +800,13 @@ static void opengl_main(void* param) SDL_ShowCursor(show_cursor); } - for (int i = 0; i < BUFFERCOUNT; i++) + if (GLAD_GL_ARB_sync) { - if (blit_info[i].sync != NULL) - glDeleteSync(blit_info[i].sync); + for (int i = 0; i < BUFFERCOUNT; i++) + { + if (blit_info[i].sync != NULL) + glDeleteSync(blit_info[i].sync); + } } finalize_glcontext(&gl); diff --git a/src/win/win_opengl_glslp.c b/src/win/win_opengl_glslp.c index 0dff03be9..6734b12ee 100644 --- a/src/win/win_opengl_glslp.c +++ b/src/win/win_opengl_glslp.c @@ -43,7 +43,7 @@ /** * @brief Default vertex shader. */ -static const GLchar* vertex_shader = "#version 330 core\n\ +static const GLchar* vertex_shader = "#version 130\n\ in vec2 VertexCoord;\n\ in vec2 TexCoord;\n\ out vec2 tex;\n\ @@ -55,7 +55,7 @@ void main(){\n\ /** * @brief Default fragment shader. */ -static const GLchar* fragment_shader = "#version 330 core\n\ +static const GLchar* fragment_shader = "#version 130\n\ in vec2 tex;\n\ uniform sampler2D texsampler;\n\ out vec4 color;\n\ @@ -173,8 +173,8 @@ GLuint load_custom_shaders(const char* path) { int success = 1; - const char* vertex_sources[2] = { "#version 330 core\n#define VERTEX\n", shader }; - const char* fragment_sources[2] = { "#version 330 core\n#define FRAGMENT\n", shader }; + const char* vertex_sources[2] = { "#version 130\n#define VERTEX\n", shader }; + const char* fragment_sources[2] = { "#version 130\n#define FRAGMENT\n", shader }; GLuint vertex_id = glCreateShader(GL_VERTEX_SHADER); GLuint fragment_id = glCreateShader(GL_FRAGMENT_SHADER); From 5af55a9cf8d417f6c71b7ed01d7525a7d0432e36 Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sun, 5 Dec 2021 02:05:52 +0200 Subject: [PATCH 32/44] opengl: fix for shaders with version directive If a shaderfile contains a version directive, use that instead of default. --- src/win/win_opengl_glslp.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/win/win_opengl_glslp.c b/src/win/win_opengl_glslp.c index 6734b12ee..7944c14d1 100644 --- a/src/win/win_opengl_glslp.c +++ b/src/win/win_opengl_glslp.c @@ -173,17 +173,47 @@ GLuint load_custom_shaders(const char* path) { int success = 1; - const char* vertex_sources[2] = { "#version 130\n#define VERTEX\n", shader }; - const char* fragment_sources[2] = { "#version 130\n#define FRAGMENT\n", shader }; + const char* vertex_sources[3] = { "#version 130\n", "#define VERTEX\n", shader }; + const char* fragment_sources[3] = { "#version 130\n", "#define FRAGMENT\n", shader }; + + /* Check if the shader program defines version directive */ + char* version_start = strstr(shader, "#version"); + + /* If the shader program contains a version directive, + it must be captured and placed as the first statement. */ + if (version_start != NULL) + { + /* Version directive found, search the line end */ + char* version_end = strchr(version_start, '\n'); + + if (version_end != NULL) + { + char version[30]; + + size_t version_len = MIN(version_end - version_start + 1, 29); + + memcpy(version, version_start, version_len); + + version[version_len] = 0; /* string null terminator */ + + /* replace the default version directive */ + vertex_sources[0] = version; + fragment_sources[0] = version; + } + + /* Comment out the original version directive + as only one is allowed. */ + memset(version_start, '/', 2); + } GLuint vertex_id = glCreateShader(GL_VERTEX_SHADER); GLuint fragment_id = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(vertex_id, 2, vertex_sources, NULL); + glShaderSource(vertex_id, 3, vertex_sources, NULL); glCompileShader(vertex_id); success *= check_status(vertex_id, OPENGL_BUILD_TARGET_VERTEX, path); - glShaderSource(fragment_id, 2, fragment_sources, NULL); + glShaderSource(fragment_id, 3, fragment_sources, NULL); glCompileShader(fragment_id); success *= check_status(fragment_id, OPENGL_BUILD_TARGET_FRAGMENT, path); From f2e6d79de4173eab77bc4137ddd9ed2fbd4740e1 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sun, 5 Dec 2021 12:02:57 +0600 Subject: [PATCH 33/44] Fix building with Wayland --- src/qt/qt_rendererstack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp index 1205632ad..cbc0b5e44 100644 --- a/src/qt/qt_rendererstack.cpp +++ b/src/qt/qt_rendererstack.cpp @@ -62,7 +62,7 @@ void RendererStack::mousePoll() mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0; mouse_buttons = mousedata.mousebuttons; #ifdef WAYLAND - if (wayland) + if (QApplication::platformName().contains("wayland")) wl_mouse_poll(); #endif #endif From 3a52d62283dfb57cea638280ba7d3ffc2cd63a5c Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sun, 5 Dec 2021 15:57:46 +0600 Subject: [PATCH 34/44] Make Escape key work --- src/qt/qt_main.cpp | 8 ++++++++ src/qt/qt_mainwindow.cpp | 42 +++++++++++++++++++++++++++++++++++++++- src/qt/qt_mainwindow.hpp | 4 ++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index f011fd9f7..40d8680eb 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -94,6 +94,14 @@ int main(int argc, char* argv[]) { main_window = new MainWindow(); main_window->show(); + main_window->setFocus(); + app.installEventFilter(main_window); + auto widgetList = app.allWidgets(); + for (auto curWidget : widgetList) + { + curWidget->setFocusPolicy(Qt::NoFocus); + } + main_window->setFocusPolicy(Qt::StrongFocus); pc_init(argc, argv); if (! pc_init_modules()) { diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 6bc350908..3b1957c64 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -13,11 +13,11 @@ extern "C" { }; #include -#include #include #include #include #include +#include #include @@ -28,6 +28,8 @@ extern "C" { #ifdef __unix__ #include #include +#undef KeyPress +#undef KeyRelease #endif extern void qt_mouse_capture(int); @@ -94,6 +96,16 @@ MainWindow::MainWindow(QWidget *parent) : ui->actionKeyboard_requires_capture->setChecked(kbd_req_capture); ui->actionRight_CTRL_is_left_ALT->setChecked(rctrl_is_lalt); + setFocusPolicy(Qt::StrongFocus); + ui->gles->setFocusPolicy(Qt::NoFocus); + ui->sw->setFocusPolicy(Qt::NoFocus); + ui->ogl->setFocusPolicy(Qt::NoFocus); + ui->stackedWidget->setFocusPolicy(Qt::NoFocus); + ui->centralwidget->setFocusPolicy(Qt::NoFocus); + menuBar()->setFocusPolicy(Qt::NoFocus); + menuWidget()->setFocusPolicy(Qt::NoFocus); + statusBar()->setFocusPolicy(Qt::NoFocus); + video_setblit(qt_blit); } @@ -683,6 +695,23 @@ void MainWindow::getTitle(wchar_t *title) } } +bool MainWindow::eventFilter(QObject* receiver, QEvent* event) +{ + if (this->keyboardGrabber() == this) { + if (event->type() == QEvent::KeyPress) { + event->accept(); + this->keyPressEvent((QKeyEvent*)event); + return true; + } + if (event->type() == QEvent::KeyRelease) { + event->accept(); + this->keyReleaseEvent((QKeyEvent*)event); + return true; + } + } + return QMainWindow::eventFilter(receiver, event); +} + void MainWindow::refreshMediaMenu() { mm->refresh(ui->menuMedia); } @@ -715,6 +744,7 @@ void MainWindow::keyPressEvent(QKeyEvent* event) if (keyboard_ismsexit()) { plat_mouse_capture(0); } + event->accept(); } void MainWindow::blitToWidget(int x, int y, int w, int h) @@ -742,3 +772,13 @@ void MainWindow::on_actionHardware_Renderer_OpenGL_triggered() { void MainWindow::on_actionHardware_Renderer_OpenGL_ES_triggered() { ui->stackedWidget->setCurrentIndex(2); } + +void MainWindow::focusInEvent(QFocusEvent* event) +{ + this->grabKeyboard(); +} + +void MainWindow::focusOutEvent(QFocusEvent* event) +{ + this->releaseKeyboard(); +} \ No newline at end of file diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index d59931cbd..6c56cfd6a 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -63,6 +64,9 @@ private slots: protected: void keyPressEvent(QKeyEvent* event) override; void keyReleaseEvent(QKeyEvent* event) override; + void focusInEvent(QFocusEvent* event) override; + void focusOutEvent(QFocusEvent* event) override; + bool eventFilter(QObject* receiver, QEvent* event) override; private: Ui::MainWindow *ui; From 41ba4ee86b8d84ba176dee1fde4e827f55732f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laci=20b=C3=A1?= Date: Sun, 5 Dec 2021 11:48:31 +0100 Subject: [PATCH 35/44] Fix that POST card's message is disappearing when language/iconset change occurs --- src/include/86box/ui.h | 1 + src/unix/unix.c | 6 ++++++ src/win/win_preferences.c | 3 ++- src/win/win_stbar.c | 8 +++++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/include/86box/ui.h b/src/include/86box/ui.h index 8b4e77fcd..256ae6002 100644 --- a/src/include/86box/ui.h +++ b/src/include/86box/ui.h @@ -66,6 +66,7 @@ extern void ui_status_update(void); extern int ui_sb_find_part(int tag); extern void ui_sb_set_ready(int ready); extern void ui_sb_update_panes(void); +extern void ui_sb_update_text(void); extern void ui_sb_update_tip(int meaning); extern void ui_sb_timer_callback(int pane); extern void ui_sb_update_icon(int tag, int val); diff --git a/src/unix/unix.c b/src/unix/unix.c index 2b949ea5f..47a65944d 100644 --- a/src/unix/unix.c +++ b/src/unix/unix.c @@ -453,6 +453,12 @@ ui_sb_update_panes() } +void +ui_sb_update_text() +{ + +} + void plat_get_dirname(char *dest, const char *path) { diff --git a/src/win/win_preferences.c b/src/win/win_preferences.c index 6bec48282..0c3e95892 100644 --- a/src/win/win_preferences.c +++ b/src/win/win_preferences.c @@ -193,8 +193,9 @@ preferences_settings_save(void) /* Update status bar */ config_changed = 1; - ui_sb_set_ready(0); + ui_sb_set_ready(-1); ui_sb_update_panes(); + ui_sb_update_text(); /* Save the language changes */ config_save(); diff --git a/src/win/win_stbar.c b/src/win/win_stbar.c index 17178a6bf..4eb4b98a1 100644 --- a/src/win/win_stbar.c +++ b/src/win/win_stbar.c @@ -485,6 +485,9 @@ StatusBarDestroyTips(void) /* API: mark the status bar as not ready. */ +/* Values: -1 - not ready, but don't clear POST text + 0 - not ready + 1 - ready */ void ui_sb_set_ready(int ready) { @@ -493,6 +496,9 @@ ui_sb_set_ready(int ready) ui_sb_set_text(NULL); } + if (ready == -1) + ready = 0; + sb_ready = ready; } @@ -1022,7 +1028,7 @@ StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst) } -static void +void ui_sb_update_text() { uint8_t part = 0xff; From 28e70abbf3b332322e004d6123e353dda8ba5569 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 5 Dec 2021 16:49:35 +0100 Subject: [PATCH 36/44] Commented out excess W83787F logging. --- src/sio/sio_w83787f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sio/sio_w83787f.c b/src/sio/sio_w83787f.c index ca0bfcc49..6affb7e1c 100644 --- a/src/sio/sio_w83787f.c +++ b/src/sio/sio_w83787f.c @@ -261,7 +261,7 @@ w83787f_write(uint16_t port, uint8_t val, void *priv) switch (dev->cur_reg) { case 0: - pclog("REG 00: %02X\n", val); + w83787_log("REG 00: %02X\n", val); if ((valxor & 0xc0) && (HAS_IDE_FUNCTIONALITY)) w83787f_ide_handler(dev); if (valxor & 0x30) From 983872f33b7540fe1d3838dad2b1ac381b7df07d Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sun, 5 Dec 2021 19:22:46 +0200 Subject: [PATCH 37/44] Fix null termination issue in previous shader version fix --- src/win/win_opengl_glslp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/win/win_opengl_glslp.c b/src/win/win_opengl_glslp.c index 7944c14d1..0537da899 100644 --- a/src/win/win_opengl_glslp.c +++ b/src/win/win_opengl_glslp.c @@ -188,13 +188,11 @@ GLuint load_custom_shaders(const char* path) if (version_end != NULL) { - char version[30]; + char version[30] = ""; size_t version_len = MIN(version_end - version_start + 1, 29); - memcpy(version, version_start, version_len); - - version[version_len] = 0; /* string null terminator */ + strncat(version, version_start, version_len); /* replace the default version directive */ vertex_sources[0] = version; From b9714a0914370b0ef9011d998a423b2628c93196 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Sun, 5 Dec 2021 20:51:59 +0100 Subject: [PATCH 38/44] PR #13 merged manually (EGLFS support by @Cacodemon345) --- src/qt/qt_mainwindow.cpp | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 3b1957c64..773be7cce 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -77,8 +77,10 @@ MainWindow::MainWindow(QWidget *parent) : }); connect(this, &MainWindow::resizeContents, this, [this](int w, int h) { - ui->stackedWidget->resize(w, h); - resize(w, h + menuBar()->height() + statusBar()->height()); + if (!QApplication::platformName().contains("eglfs")) { + ui->stackedWidget->resize(w, h); + resize(w, h + menuBar()->height() + statusBar()->height()); + } }); connect(ui->menubar, &QMenuBar::triggered, this, [] { @@ -629,6 +631,26 @@ std::array darwin_to_xt 0, }; +static std::unordered_map evdev_to_xt = + { + {96, 0x11C}, + {97, 0x11D}, + {98, 0x135}, + {99, 0x71}, + {100, 0x138}, + {101, 0x1C}, + {102, 0x147}, + {103, 0x148}, + {104, 0x149}, + {105, 0x14B}, + {106, 0x14D}, + {107, 0x14F}, + {108, 0x150}, + {109, 0x151}, + {110, 0x152}, + {111, 0x153} +}; + static std::array& selected_keycode = x11_to_xt_base; uint16_t x11_keycode_to_keysym(uint32_t keycode) @@ -641,6 +663,12 @@ uint16_t x11_keycode_to_keysym(uint32_t keycode) { selected_keycode = x11_to_xt_2; } + else if (QApplication::platformName().contains("eglfs")) + { + keycode -= 8; + if (keycode <= 88) return keycode; + else return evdev_to_xt[keycode]; + } else if (!x11display) { x11display = XOpenDisplay(nullptr); @@ -781,4 +809,4 @@ void MainWindow::focusInEvent(QFocusEvent* event) void MainWindow::focusOutEvent(QFocusEvent* event) { this->releaseKeyboard(); -} \ No newline at end of file +} From af512c98ccf2897bf2b000a6c47f39af631b93da Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Sun, 5 Dec 2021 20:56:07 +0100 Subject: [PATCH 39/44] PR #12 merged manually (Take video_filter_method into account when rendering, by @Cacodemon345) --- src/qt/qt_hardwarerenderer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/qt/qt_hardwarerenderer.cpp b/src/qt/qt_hardwarerenderer.cpp index db868ec7e..c18064d07 100644 --- a/src/qt/qt_hardwarerenderer.cpp +++ b/src/qt/qt_hardwarerenderer.cpp @@ -1,5 +1,9 @@ #include "qt_hardwarerenderer.hpp" +extern "C" { +#include <86box/86box.h> +} + void HardwareRenderer::resizeGL(int w, int h) { glViewport(0, 0, w, h); @@ -13,6 +17,7 @@ void HardwareRenderer::initializeGL() void HardwareRenderer::paintGL() { QPainter painter(this); + painter.setRenderHint(QPainter::SmoothPixmapTransform, video_filter_method); painter.drawImage(QRect(0, 0, width(), height()), image, QRect(sx, sy, sw, sh)); // "release" image, reducing it's refcount, so renderstack::blit() // won't have to reallocate From 637f81998b6b709cc1ff2b122b3fd7941ff189c6 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Sun, 5 Dec 2021 21:22:32 +0100 Subject: [PATCH 40/44] fixed disabled/enabled for cassette, cartridge and floppy submenus --- src/qt/qt_mediamenu.cpp | 49 ++++++++++++++++++++++++++++++++++++----- src/qt/qt_mediamenu.hpp | 11 +++++++++ 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp index 6a4406b47..898f79c01 100644 --- a/src/qt/qt_mediamenu.cpp +++ b/src/qt/qt_mediamenu.cpp @@ -41,11 +41,16 @@ void MediaMenu::refresh(QMenu *parentMenu) { cassetteMenu->addAction("Existing Image", [this]() { cassetteSelectImage(false); }); cassetteMenu->addAction("Existing Image (Write Protected)", [this]() { cassetteSelectImage(true); }); cassetteMenu->addSeparator(); - cassetteMenu->addAction("Record")->setCheckable(true); - cassetteMenu->addAction("Play")->setCheckable(true); - cassetteMenu->addAction("Rewing"); - cassetteMenu->addAction("Fast Forward"); + cassetteRecordPos = cassetteMenu->children().count(); + cassetteMenu->addAction("Record", [this] { pc_cas_set_mode(cassette, 1); cassetteUpdateMenu(); })->setCheckable(true); + cassettePlayPos = cassetteMenu->children().count(); + cassetteMenu->addAction("Play", [this] { pc_cas_set_mode(cassette, 0); cassetteUpdateMenu(); })->setCheckable(true); + cassetteRewindPos = cassetteMenu->children().count(); + cassetteMenu->addAction("Rewind", [] { pc_cas_rewind(cassette); }); + cassetteFastFwdPos = cassetteMenu->children().count(); + cassetteMenu->addAction("Fast Forward", [] { pc_cas_append(cassette); }); cassetteMenu->addSeparator(); + cassetteEjectPos = cassetteMenu->children().count(); cassetteMenu->addAction("Eject", [this]() { cassetteEject(); }); cassetteUpdateMenu(); } @@ -56,6 +61,7 @@ void MediaMenu::refresh(QMenu *parentMenu) { auto* menu = parentMenu->addMenu(""); menu->addAction("Image", [this, i]() { cartridgeSelectImage(i); }); menu->addSeparator(); + cartridgeEjectPos = menu->children().count(); menu->addAction("Eject", [this, i]() { cartridgeEject(i); }); cartridgeMenus.append(menu); cartridgeUpdateMenu(i); @@ -70,8 +76,10 @@ void MediaMenu::refresh(QMenu *parentMenu) { menu->addAction("Existing Image", [this, i]() { floppySelectImage(i, false); }); menu->addAction("Existing Image (Write Protected)", [this, i]() { floppySelectImage(i, true); }); menu->addSeparator(); + floppyExportPos = menu->children().count(); menu->addAction("Export to 86F", [this, i]() { floppyExportTo86f(i); }); menu->addSeparator(); + floppyEjectPos = menu->children().count(); menu->addAction("Eject", [this, i]() { floppyEject(i); }); floppyMenus.append(menu); floppyUpdateMenu(i); @@ -169,6 +177,24 @@ void MediaMenu::cassetteEject() { void MediaMenu::cassetteUpdateMenu() { QString name = cassette_fname; + QString mode = cassette_mode; + auto childs = cassetteMenu->children(); + auto* recordMenu = dynamic_cast(childs[cassetteRecordPos]); + auto* playMenu = dynamic_cast(childs[cassettePlayPos]); + auto* rewindMenu = dynamic_cast(childs[cassetteRewindPos]); + auto* fastFwdMenu = dynamic_cast(childs[cassetteFastFwdPos]); + auto* ejectMenu = dynamic_cast(childs[cassetteEjectPos]); + + recordMenu->setEnabled(!name.isEmpty()); + playMenu->setEnabled(!name.isEmpty()); + rewindMenu->setEnabled(!name.isEmpty()); + fastFwdMenu->setEnabled(!name.isEmpty()); + ejectMenu->setEnabled(!name.isEmpty()); + + bool isSaving = mode == QStringLiteral("save"); + recordMenu->setChecked(isSaving); + playMenu->setChecked(! isSaving); + cassetteMenu->setTitle(QString("Cassette: %1").arg(name.isEmpty() ? "(empty)" : name)); } @@ -197,7 +223,11 @@ void MediaMenu::cartridgeEject(int i) { void MediaMenu::cartridgeUpdateMenu(int i) { QString name = cart_fns[i]; - cartridgeMenus[i]->setTitle(QString("Cartridge %1: %2").arg(QString::number(i+1), name.isEmpty() ? "(empty)" : name)); + auto* menu = cartridgeMenus[i]; + auto childs = menu->children(); + auto* ejectMenu = dynamic_cast(childs[cartridgeEjectPos]); + ejectMenu->setEnabled(!name.isEmpty()); + menu->setTitle(QString("Cartridge %1: %2").arg(QString::number(i+1), name.isEmpty() ? "(empty)" : name)); } void MediaMenu::floppyNewImage(int i) { @@ -250,6 +280,15 @@ void MediaMenu::floppyExportTo86f(int i) { void MediaMenu::floppyUpdateMenu(int i) { QString name = floppyfns[i]; + + auto* menu = floppyMenus[i]; + auto childs = menu->children(); + + auto* ejectMenu = dynamic_cast(childs[floppyEjectPos]); + auto* exportMenu = dynamic_cast(childs[floppyExportPos]); + ejectMenu->setEnabled(!name.isEmpty()); + exportMenu->setEnabled(!name.isEmpty()); + int type = fdd_get_type(i); floppyMenus[i]->setTitle(QString("Floppy %1 (%2): %3").arg(QString::number(i+1), fdd_getname(type), name.isEmpty() ? "(empty)" : name)); } diff --git a/src/qt/qt_mediamenu.hpp b/src/qt/qt_mediamenu.hpp index 7a21f288c..2908e8ae9 100644 --- a/src/qt/qt_mediamenu.hpp +++ b/src/qt/qt_mediamenu.hpp @@ -63,6 +63,17 @@ private: QList zipMenus; QList moMenus; + int cassetteRecordPos; + int cassettePlayPos; + int cassetteRewindPos; + int cassetteFastFwdPos; + int cassetteEjectPos; + + int cartridgeEjectPos; + + int floppyExportPos; + int floppyEjectPos; + int cdromMutePos; int cdromEmptyPos; int cdromReloadPos; From c5b6ccb9480cc83b173c7651698d655727b7ff55 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Sun, 5 Dec 2021 21:23:09 +0100 Subject: [PATCH 41/44] continued PR#12 into software renderer as well --- src/qt/qt_hardwarerenderer.cpp | 2 +- src/qt/qt_softwarerenderer.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/qt/qt_hardwarerenderer.cpp b/src/qt/qt_hardwarerenderer.cpp index c18064d07..d9a206238 100644 --- a/src/qt/qt_hardwarerenderer.cpp +++ b/src/qt/qt_hardwarerenderer.cpp @@ -17,7 +17,7 @@ void HardwareRenderer::initializeGL() void HardwareRenderer::paintGL() { QPainter painter(this); - painter.setRenderHint(QPainter::SmoothPixmapTransform, video_filter_method); + painter.setRenderHint(QPainter::SmoothPixmapTransform, video_filter_method > 0 ? true : false); painter.drawImage(QRect(0, 0, width(), height()), image, QRect(sx, sy, sw, sh)); // "release" image, reducing it's refcount, so renderstack::blit() // won't have to reallocate diff --git a/src/qt/qt_softwarerenderer.cpp b/src/qt/qt_softwarerenderer.cpp index 9ecf6208f..cf69ca2fb 100644 --- a/src/qt/qt_softwarerenderer.cpp +++ b/src/qt/qt_softwarerenderer.cpp @@ -1,5 +1,8 @@ #include "qt_softwarerenderer.hpp" +extern "C" { +#include <86box/86box.h> +} #include SoftwareRenderer::SoftwareRenderer(QWidget *parent) : QWidget(parent) {} @@ -8,6 +11,7 @@ void SoftwareRenderer::paintEvent(QPaintEvent *event) { (void) event; QPainter painter(this); + painter.setRenderHint(QPainter::SmoothPixmapTransform, video_filter_method > 0 ? true : false); painter.drawImage(QRect(0, 0, width(), height()), image, QRect(sx, sy, sw, sh)); image = QImage(); } From 07c9da30de732c9dddb065d2fd0db1b523d04fba Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Mon, 6 Dec 2021 10:29:53 +0100 Subject: [PATCH 42/44] configuration fixes * moved CONFIG_MIDI and CONFIG_MIDI_IN to own blocks when constructing comboboxes in deviceconfig * use Models::AddEntry in deviceconfig * sub-handling of CONFIG_HEX16 and CONFIG_HEX20 in CONFIG_SELECTION block when constructing, and use corresponding config_setter * make sure SCSI controller- and ISAMEM-deviceconfig calls up deviceconfig with an instance number * midi input and midi output was mixed when constructing soundsettings when loading prev. settings --- src/qt/qt_deviceconfig.cpp | 120 ++++++++++++++--------- src/qt/qt_deviceconfig.hpp | 2 +- src/qt/qt_settingsotherperipherals.cpp | 8 +- src/qt/qt_settingsotherperipherals.hpp | 18 ---- src/qt/qt_settingssound.cpp | 4 +- src/qt/qt_settingsstoragecontrollers.cpp | 8 +- src/qt/qt_settingsstoragecontrollers.hpp | 30 ------ 7 files changed, 82 insertions(+), 108 deletions(-) diff --git a/src/qt/qt_deviceconfig.cpp b/src/qt/qt_deviceconfig.cpp index a99e1ab26..0cfe14a73 100644 --- a/src/qt/qt_deviceconfig.cpp +++ b/src/qt/qt_deviceconfig.cpp @@ -15,6 +15,7 @@ extern "C" { } #include "qt_filefield.hpp" +#include "qt_models_common.hpp" DeviceConfig::DeviceConfig(QWidget *parent) : QDialog(parent), @@ -28,12 +29,12 @@ DeviceConfig::~DeviceConfig() delete ui; } -void DeviceConfig::ConfigureDevice(const _device_* device) { +void DeviceConfig::ConfigureDevice(const _device_* device, int instance) { DeviceConfig dc; dc.setWindowTitle(QString("%1 Device Configuration").arg(device->name)); device_context_t device_context; - device_set_context(&device_context, device, 0); + device_set_context(&device_context, device, instance); const auto* config = device->config; while (config->type != -1) { @@ -47,9 +48,47 @@ void DeviceConfig::ConfigureDevice(const _device_* device) { dc.ui->formLayout->addRow(config->description, cbox); break; } - case CONFIG_SELECTION: case CONFIG_MIDI: + { + auto* cbox = new QComboBox(); + cbox->setObjectName(config->name); + auto* model = cbox->model(); + int currentIndex = -1; + int selected = config_get_int(device_context.name, const_cast(config->name), config->default_int); + for (int i = 0; i < plat_midi_get_num_devs(); i++) { + char midiName[512] = { 0 }; + plat_midi_get_dev_name(i, midiName); + + Models::AddEntry(model, midiName, i); + if (selected == i) { + currentIndex = i; + } + } + dc.ui->formLayout->addRow(config->description, cbox); + cbox->setCurrentIndex(currentIndex); + break; + } case CONFIG_MIDI_IN: + { + auto* cbox = new QComboBox(); + cbox->setObjectName(config->name); + auto* model = cbox->model(); + int currentIndex = -1; + int selected = config_get_int(device_context.name, const_cast(config->name), config->default_int); + for (int i = 0; i < plat_midi_in_get_num_devs(); i++) { + char midiName[512] = { 0 }; + plat_midi_in_get_dev_name(i, midiName); + + Models::AddEntry(model, midiName, i); + if (selected == i) { + currentIndex = i; + } + } + dc.ui->formLayout->addRow(config->description, cbox); + cbox->setCurrentIndex(currentIndex); + break; + } + case CONFIG_SELECTION: case CONFIG_HEX16: case CONFIG_HEX20: { @@ -57,50 +96,23 @@ void DeviceConfig::ConfigureDevice(const _device_* device) { cbox->setObjectName(config->name); auto* model = cbox->model(); int currentIndex = -1; - int selected = config_get_int(device_context.name, const_cast(config->name), config->default_int); + int selected; + switch (config->type) { + case CONFIG_SELECTION: + selected = config_get_int(device_context.name, const_cast(config->name), config->default_int); + break; + case CONFIG_HEX16: + selected = config_get_hex16(device_context.name, const_cast(config->name), config->default_int); + break; + case CONFIG_HEX20: + selected = config_get_hex20(device_context.name, const_cast(config->name), config->default_int); + break; + } - if (config->type == CONFIG_MIDI) { - for (int i = 0; i < plat_midi_get_num_devs(); i++) { - char midiName[512] = { 0 }; - plat_midi_get_dev_name(i, midiName); - - int rows = model->rowCount(); - model->insertRow(rows); - auto idx = model->index(rows, 0); - - model->setData(idx, midiName, Qt::DisplayRole); - model->setData(idx, i, Qt::UserRole); - if (selected == i) { - currentIndex = idx.row(); - } - } - } else if (config->type == CONFIG_MIDI_IN) { - for (int i = 0; i < plat_midi_in_get_num_devs(); i++) { - char midiName[512] = { 0 }; - plat_midi_in_get_dev_name(i, midiName); - - int rows = model->rowCount(); - model->insertRow(rows); - auto idx = model->index(rows, 0); - - model->setData(idx, midiName, Qt::DisplayRole); - model->setData(idx, i, Qt::UserRole); - if (selected == i) { - currentIndex = idx.row(); - } - } - } else { - for (auto* sel = config->selection; (sel->description != nullptr) && (strlen(sel->description) > 0); ++sel) { - int rows = model->rowCount(); - model->insertRow(rows); - auto idx = model->index(rows, 0); - - model->setData(idx, sel->description, Qt::DisplayRole); - model->setData(idx, sel->value, Qt::UserRole); - - if (selected == sel->value) { - currentIndex = idx.row(); - } + for (auto* sel = config->selection; (sel->description != nullptr) && (strlen(sel->description) > 0); ++sel) { + int row = Models::AddEntry(model, sel->description, sel->value); + if (selected == sel->value) { + currentIndex = row; } } dc.ui->formLayout->addRow(config->description, cbox); @@ -145,16 +157,26 @@ void DeviceConfig::ConfigureDevice(const _device_* device) { config_set_int(device_context.name, const_cast(config->name), cbox->isChecked() ? 1 : 0); break; } - case CONFIG_SELECTION: case CONFIG_MIDI: case CONFIG_MIDI_IN: - case CONFIG_HEX16: - case CONFIG_HEX20: + case CONFIG_SELECTION: { auto* cbox = dc.findChild(config->name); config_set_int(device_context.name, const_cast(config->name), cbox->currentData().toInt()); break; } + case CONFIG_HEX16: + { + auto* cbox = dc.findChild(config->name); + config_set_hex16(device_context.name, const_cast(config->name), cbox->currentData().toInt()); + break; + } + case CONFIG_HEX20: + { + auto* cbox = dc.findChild(config->name); + config_set_hex20(device_context.name, const_cast(config->name), cbox->currentData().toInt()); + break; + } case CONFIG_FNAME: { auto* fbox = dc.findChild(config->name); diff --git a/src/qt/qt_deviceconfig.hpp b/src/qt/qt_deviceconfig.hpp index 3090c96a7..8062c1851 100644 --- a/src/qt/qt_deviceconfig.hpp +++ b/src/qt/qt_deviceconfig.hpp @@ -19,7 +19,7 @@ public: explicit DeviceConfig(QWidget *parent = nullptr); ~DeviceConfig(); - static void ConfigureDevice(const _device_* device); + static void ConfigureDevice(const _device_* device, int instance = 0); static QString DeviceName(const _device_* device, const char* internalName, int bus); private: Ui::DeviceConfig *ui; diff --git a/src/qt/qt_settingsotherperipherals.cpp b/src/qt/qt_settingsotherperipherals.cpp index e52c3ead1..729ebe62e 100644 --- a/src/qt/qt_settingsotherperipherals.cpp +++ b/src/qt/qt_settingsotherperipherals.cpp @@ -96,7 +96,7 @@ void SettingsOtherPeripherals::on_comboBoxCard1_currentIndexChanged(int index) { } void SettingsOtherPeripherals::on_pushButtonConfigureCard1_clicked() { - DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard1->currentData().toInt())); + DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard1->currentData().toInt()), 1); } void SettingsOtherPeripherals::on_comboBoxCard2_currentIndexChanged(int index) { @@ -107,7 +107,7 @@ void SettingsOtherPeripherals::on_comboBoxCard2_currentIndexChanged(int index) { } void SettingsOtherPeripherals::on_pushButtonConfigureCard2_clicked() { - DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard2->currentData().toInt())); + DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard2->currentData().toInt()), 2); } void SettingsOtherPeripherals::on_comboBoxCard3_currentIndexChanged(int index) { @@ -118,7 +118,7 @@ void SettingsOtherPeripherals::on_comboBoxCard3_currentIndexChanged(int index) { } void SettingsOtherPeripherals::on_pushButtonConfigureCard3_clicked() { - DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard3->currentData().toInt())); + DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard3->currentData().toInt()), 3); } void SettingsOtherPeripherals::on_comboBoxCard4_currentIndexChanged(int index) { @@ -129,5 +129,5 @@ void SettingsOtherPeripherals::on_comboBoxCard4_currentIndexChanged(int index) { } void SettingsOtherPeripherals::on_pushButtonConfigureCard4_clicked() { - DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard4->currentData().toInt())); + DeviceConfig::ConfigureDevice(isamem_get_device(ui->comboBoxCard4->currentData().toInt()), 4); } diff --git a/src/qt/qt_settingsotherperipherals.hpp b/src/qt/qt_settingsotherperipherals.hpp index 605b629ba..e32704f1b 100644 --- a/src/qt/qt_settingsotherperipherals.hpp +++ b/src/qt/qt_settingsotherperipherals.hpp @@ -18,32 +18,14 @@ public: void save(); private slots: void on_pushButtonConfigureCard4_clicked(); - -private slots: void on_comboBoxCard4_currentIndexChanged(int index); - -private slots: void on_pushButtonConfigureCard3_clicked(); - -private slots: void on_comboBoxCard3_currentIndexChanged(int index); - -private slots: void on_pushButtonConfigureCard2_clicked(); - -private slots: void on_comboBoxCard2_currentIndexChanged(int index); - -private slots: void on_pushButtonConfigureCard1_clicked(); - -private slots: void on_comboBoxCard1_currentIndexChanged(int index); - -private slots: void on_pushButtonConfigureRTC_clicked(); - -private slots: void on_comboBoxRTC_currentIndexChanged(int index); private: diff --git a/src/qt/qt_settingssound.cpp b/src/qt/qt_settingssound.cpp index 7dd3fc51a..8e686f870 100644 --- a/src/qt/qt_settingssound.cpp +++ b/src/qt/qt_settingssound.cpp @@ -87,7 +87,7 @@ void SettingsSound::onCurrentMachineChanged(int machineId) { if (midi_device_available(c)) { int row = Models::AddEntry(model, name, c); - if (c == midi_input_device_current) { + if (c == midi_device_current) { selectedRow = row - removeRows; } } @@ -110,7 +110,7 @@ void SettingsSound::onCurrentMachineChanged(int machineId) { if (midi_in_device_available(c)) { int row = Models::AddEntry(model, name, c); - if (c == midi_device_current) { + if (c == midi_input_device_current) { selectedRow = row - removeRows; } } diff --git a/src/qt/qt_settingsstoragecontrollers.cpp b/src/qt/qt_settingsstoragecontrollers.cpp index 64bb0e488..fb5dd47cc 100644 --- a/src/qt/qt_settingsstoragecontrollers.cpp +++ b/src/qt/qt_settingsstoragecontrollers.cpp @@ -217,17 +217,17 @@ void SettingsStorageControllers::on_comboBoxSCSI4_currentIndexChanged(int index) void SettingsStorageControllers::on_pushButtonSCSI1_clicked() { - DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI1->currentData().toInt())); + DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI1->currentData().toInt()), 1); } void SettingsStorageControllers::on_pushButtonSCSI2_clicked() { - DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI2->currentData().toInt())); + DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI2->currentData().toInt()), 2); } void SettingsStorageControllers::on_pushButtonSCSI3_clicked() { - DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI3->currentData().toInt())); + DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI3->currentData().toInt()), 3); } void SettingsStorageControllers::on_pushButtonSCSI4_clicked() { - DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI4->currentData().toInt())); + DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI4->currentData().toInt()), 4); } diff --git a/src/qt/qt_settingsstoragecontrollers.hpp b/src/qt/qt_settingsstoragecontrollers.hpp index de2e36646..e4596b567 100644 --- a/src/qt/qt_settingsstoragecontrollers.hpp +++ b/src/qt/qt_settingsstoragecontrollers.hpp @@ -22,50 +22,20 @@ public slots: private slots: void on_pushButtonSCSI4_clicked(); - -private slots: void on_pushButtonSCSI3_clicked(); - -private slots: void on_pushButtonSCSI2_clicked(); - -private slots: void on_pushButtonSCSI1_clicked(); - -private slots: void on_comboBoxSCSI4_currentIndexChanged(int index); - -private slots: void on_comboBoxSCSI3_currentIndexChanged(int index); - -private slots: void on_comboBoxSCSI2_currentIndexChanged(int index); - -private slots: void on_comboBoxSCSI1_currentIndexChanged(int index); - -private slots: void on_pushButtonQuaternaryIDE_clicked(); - -private slots: void on_pushButtonTertiaryIDE_clicked(); - -private slots: void on_pushButtonFD_clicked(); - -private slots: void on_pushButtonHD_clicked(); - -private slots: void on_checkBoxQuaternaryIDE_stateChanged(int arg1); - -private slots: void on_checkBoxTertiaryIDE_stateChanged(int arg1); - -private slots: void on_comboBoxFD_currentIndexChanged(int index); - -private slots: void on_comboBoxHD_currentIndexChanged(int index); private: From 37e29de342d927e67fc959361d14b59656324795 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Mon, 6 Dec 2021 10:41:14 +0100 Subject: [PATCH 43/44] include unordered_map --- src/qt/qt_mainwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 773be7cce..becfd8f9e 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -1,6 +1,5 @@ #include "qt_mainwindow.hpp" #include "ui_qt_mainwindow.h" -#include extern "C" { #include <86box/86box.h> @@ -12,6 +11,7 @@ extern "C" { #include "qt_sdl.h" }; +#include #include #include #include @@ -20,6 +20,7 @@ extern "C" { #include #include +#include #include "qt_settings.hpp" #include "qt_machinestatus.hpp" From 28d1a43af77a29df117bd508c43c2188dc639f50 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Mon, 6 Dec 2021 10:50:58 +0100 Subject: [PATCH 44/44] fixed up qdatastream usage. use writeRawData() when creating hdd images. specify littleendian when creating floppy images --- src/qt/qt_harddiskdialog.cpp | 4 ++-- src/qt/qt_newfloppydialog.cpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qt/qt_harddiskdialog.cpp b/src/qt/qt_harddiskdialog.cpp index 8a9cb7c3b..7a85c754a 100644 --- a/src/qt/qt_harddiskdialog.cpp +++ b/src/qt/qt_harddiskdialog.cpp @@ -371,12 +371,12 @@ void HarddiskDialog::onCreateNewFile() { uint64_t restBlock = size & 0xfffff; if (restBlock) { - stream << QByteArray::fromRawData(buf.data(), restBlock); + stream.writeRawData(buf.data(), restBlock); } if (mibBlocks) { for (uint64_t i = 0; i < mibBlocks; ++i) { - stream << buf; + stream.writeRawData(buf.data(), buf.size()); emit fileProgress(static_cast((i * 100) / mibBlocks)); } } diff --git a/src/qt/qt_newfloppydialog.cpp b/src/qt/qt_newfloppydialog.cpp index 2ffd95950..3be74c64e 100644 --- a/src/qt/qt_newfloppydialog.cpp +++ b/src/qt/qt_newfloppydialog.cpp @@ -271,6 +271,7 @@ bool NewFloppyDialog::create86f(const QString& filename, const disk_size_t& disk return false; } QDataStream stream(&file); + stream.setByteOrder(QDataStream::LittleEndian); stream << magic; stream << version; @@ -314,6 +315,7 @@ bool NewFloppyDialog::createSectorImage(const QString &filename, const disk_size return false; } QDataStream stream(&file); + stream.setByteOrder(QDataStream::LittleEndian); sector_bytes = (128 << disk_size.sector_len); total_sectors = disk_size.sides * disk_size.tracks * disk_size.sectors; @@ -411,6 +413,7 @@ bool NewFloppyDialog::createZipSectorImage(const QString &filename, const disk_s return false; } QDataStream stream(&file); + stream.setByteOrder(QDataStream::LittleEndian); sector_bytes = (128 << disk_size.sector_len); total_sectors = disk_size.sides * disk_size.tracks * disk_size.sectors; @@ -599,6 +602,7 @@ bool NewFloppyDialog::createMoSectorImage(const QString& filename, int8_t disk_s return false; } QDataStream stream(&file); + stream.setByteOrder(QDataStream::LittleEndian); sector_bytes = dp->bytes_per_sector; total_sectors = dp->sectors;