This commit is contained in:
ts-korhonen
2021-12-06 13:53:40 +02:00
56 changed files with 862 additions and 1249 deletions

View File

@@ -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)
@@ -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"

View File

@@ -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

View File

@@ -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: >-
@@ -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

View File

@@ -18,10 +18,12 @@ cmake_minimum_required(VERSION 3.16)
cmake_policy(SET CMP0091 NEW)
cmake_policy(SET CMP0079 NEW)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
if(VCPKG_TOOLCHAIN AND VCPKG_TARGET_TRIPLET MATCHES "static")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
project(86Box
VERSION 3.0
VERSION 3.1
DESCRIPTION "Emulator of x86-based systems"
HOMEPAGE_URL "https://86box.net"
LANGUAGES C CXX)
@@ -52,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)
@@ -77,7 +81,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)

View File

@@ -36,7 +36,7 @@ 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})
if(APPLE)
target_link_libraries(86Box "-framework AppKit")
@@ -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")
@@ -164,6 +164,20 @@ 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 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)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)

View File

@@ -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);

View File

@@ -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
}

View File

@@ -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

View File

@@ -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<char*>(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<char*>(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<char*>(config->name), config->default_int);
int selected;
switch (config->type) {
case CONFIG_SELECTION:
selected = config_get_int(device_context.name, const_cast<char*>(config->name), config->default_int);
break;
case CONFIG_HEX16:
selected = config_get_hex16(device_context.name, const_cast<char*>(config->name), config->default_int);
break;
case CONFIG_HEX20:
selected = config_get_hex20(device_context.name, const_cast<char*>(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<char*>(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<QComboBox*>(config->name);
config_set_int(device_context.name, const_cast<char*>(config->name), cbox->currentData().toInt());
break;
}
case CONFIG_HEX16:
{
auto* cbox = dc.findChild<QComboBox*>(config->name);
config_set_hex16(device_context.name, const_cast<char*>(config->name), cbox->currentData().toInt());
break;
}
case CONFIG_HEX20:
{
auto* cbox = dc.findChild<QComboBox*>(config->name);
config_set_hex20(device_context.name, const_cast<char*>(config->name), cbox->currentData().toInt());
break;
}
case CONFIG_FNAME:
{
auto* fbox = dc.findChild<FileField*>(config->name);

View File

@@ -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;

View File

@@ -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<int>((i * 100) / mibBlocks));
}
}

View File

@@ -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 > 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

View File

@@ -95,6 +95,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()) {

View File

@@ -1,6 +1,5 @@
#include "qt_mainwindow.hpp"
#include "ui_qt_mainwindow.h"
#include <qguiapplication.h>
extern "C" {
#include <86box/86box.h>
@@ -12,14 +11,16 @@ extern "C" {
#include "qt_sdl.h"
};
#include <QGuiApplication>
#include <QWindow>
#include <QDebug>
#include <QTimer>
#include <QThread>
#include <QKeyEvent>
#include <QMessageBox>
#include <QFocusEvent>
#include <array>
#include <unordered_map>
#include "qt_settings.hpp"
#include "qt_machinestatus.hpp"
@@ -28,6 +29,8 @@ extern "C" {
#ifdef __unix__
#include <X11/Xlib.h>
#include <X11/keysym.h>
#undef KeyPress
#undef KeyRelease
#endif
extern void qt_mouse_capture(int);
@@ -75,8 +78,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, [] {
@@ -94,6 +99,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);
}
@@ -617,6 +632,26 @@ std::array<uint32_t, 256> darwin_to_xt
0,
};
static std::unordered_map<uint32_t, uint16_t> 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<uint32_t, 256>& selected_keycode = x11_to_xt_base;
uint16_t x11_keycode_to_keysym(uint32_t keycode)
@@ -631,6 +666,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);
@@ -685,6 +726,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);
}
@@ -717,6 +775,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)
@@ -744,3 +803,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();
}

View File

@@ -4,6 +4,7 @@
#include <QMainWindow>
#include <QLabel>
#include <QEvent>
#include <QFocusEvent>
#include <memory>
@@ -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;

View File

@@ -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<QAction*>(childs[cassetteRecordPos]);
auto* playMenu = dynamic_cast<QAction*>(childs[cassettePlayPos]);
auto* rewindMenu = dynamic_cast<QAction*>(childs[cassetteRewindPos]);
auto* fastFwdMenu = dynamic_cast<QAction*>(childs[cassetteFastFwdPos]);
auto* ejectMenu = dynamic_cast<QAction*>(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<QAction*>(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<QAction*>(childs[floppyEjectPos]);
auto* exportMenu = dynamic_cast<QAction*>(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));
}

View File

@@ -63,6 +63,17 @@ private:
QList<QMenu*> zipMenus;
QList<QMenu*> moMenus;
int cassetteRecordPos;
int cassettePlayPos;
int cassetteRewindPos;
int cassetteFastFwdPos;
int cassetteEjectPos;
int cartridgeEjectPos;
int floppyExportPos;
int floppyEjectPos;
int cdromMutePos;
int cdromEmptyPos;
int cdromReloadPos;

View File

@@ -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;

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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:

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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:

View File

@@ -1,5 +1,8 @@
#include "qt_softwarerenderer.hpp"
extern "C" {
#include <86box/86box.h>
}
#include <QPainter>
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();
}

206
src/rtmidi_midi.cpp Normal file
View File

@@ -0,0 +1,206 @@
/*
* 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, <mgrca8@gmail.com>
* Copyright 2021 jgilje.
* Copyright 2021 Miran Grca.
*/
#if defined __has_include
# if __has_include (<RtMidi.h>)
# include <RtMidi.h>
# endif
# if __has_include (<rtmidi/RtMidi.h>)
# include <rtmidi/RtMidi.h>
# endif
#endif
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
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<unsigned char> *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());
}
}

View File

@@ -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)

View File

@@ -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)
@@ -316,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);
}
@@ -786,6 +790,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;
@@ -1397,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) {

View File

@@ -453,6 +453,12 @@ ui_sb_update_panes()
}
void
ui_sb_update_text()
{
}
void
plat_get_dirname(char *dest, const char *path)
{

View File

@@ -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

View File

@@ -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

View File

@@ -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 <stdio.h>
@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
@@ -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
@@ -148,7 +148,7 @@ BEGIN
# endif
END
#endif
POPUP "&?"
POPUP "&Aide"
BEGIN
MENUITEM "&Documentation...", IDM_DOCS
MENUITEM "&A Propos de 86Box...", IDM_ABOUT
@@ -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&registrer", IDM_CASSETTE_RECORD
MENUITEM "&Jouer", IDM_CASSETTE_PLAY

View File

@@ -15,41 +15,41 @@ 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
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
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 "<reserved>"
IDS_2051 "<rezervirano>"
IDS_2052 "Pritisnite CTRL+ALT+PAGE DOWN za povratak u prozorski način rada."
IDS_2053 "Brzina"
IDS_2054 "ZIP %03i %i (%s): %ls"
@@ -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
@@ -423,13 +423,13 @@ BEGIN
IDS_2067 "Ulazni uređaji"
IDS_2068 "Zvuk"
IDS_2069 "Mreža"
IDS_2070 "Priključci (COM & LPT)"
IDS_2071 "Kontroleri za diskovi"
IDS_2070 "Vrata (COM & LPT)"
IDS_2071 "Kontroleri za diskove"
IDS_2072 "Tvrdi diskovi"
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"
@@ -446,38 +446,38 @@ 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)"
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 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"
@@ -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."
@@ -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 mogu popraviti vremensku oznaku slike VHD."
IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"

View File

@@ -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

View File

@@ -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

View File

@@ -33,22 +33,22 @@ 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
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
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セットを<a href=""https://github.com/86Box/roms/releases/latest"">ダウンロード</a>して、《roms》ディレクトリに解凍してください。"
IDS_2056 "86Boxで使用可能なROMイメージが見つかりませんでした。\n\nROMセットを<a href=""https://github.com/86Box/roms/releases/latest"">ダウンロード</a>して、《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"

View File

@@ -31,24 +31,24 @@ 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
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
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타임스탬프를 수정하시겠습니까?"

View File

@@ -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

View File

@@ -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

View File

@@ -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
@@ -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"

View File

@@ -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
@@ -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"

View File

@@ -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

View File

@@ -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,24 +33,22 @@ 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
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
MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
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
@@ -75,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
@@ -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
/////////////////////////////////////////////////////////////////////////////
@@ -403,7 +399,7 @@ STRINGTABLE DISCARDABLE
BEGIN
2048 "86Box"
IDS_2049 "错误"
IDS_2050 "关键错误"
IDS_2050 "致命错误"
IDS_2051 "<保留>"
IDS_2052 "按 CTRL+ALT+PAGE DOWN 组合键返回窗口模式."
IDS_2053 "速度"
@@ -415,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
@@ -457,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"
@@ -517,7 +513,7 @@ BEGIN
#endif
IDS_2133 "FluidSynth MIDI 输出需要" LIB_NAME_FLUIDSYNTH
IDS_2134 "即将进入全屏模式"
IDS_2135 "请勿显示此提示"
IDS_2135 "请勿显示此提示"
IDS_2136 "不退出"
IDS_2137 "重置"
IDS_2138 "不重置"
@@ -541,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 "添加新硬盘"
@@ -552,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 "磁盘镜像创建完成"
@@ -576,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"
@@ -628,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

View File

@@ -1,241 +0,0 @@
#include <windows.h>
#include <mmsystem.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#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);
}

View File

@@ -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);

View File

@@ -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,17 +173,45 @@ 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[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);
strncat(version, version_start, version_len);
/* 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);

View File

@@ -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();

View File

@@ -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;

View File

@@ -9,6 +9,6 @@
"libpng",
"openal-soft",
"sdl2",
"pthreads"
"rtmidi"
]
}