Merge branch '86Box:master' into patch-1
161
.ci/Jenkinsfile
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Jenkins build pipeline definition.
|
||||
*
|
||||
*
|
||||
*
|
||||
* Authors: RichardG, <richardg867@gmail.com>
|
||||
*
|
||||
* Copyright 2021 RichardG.
|
||||
*/
|
||||
|
||||
/* Run this on /script to get all approvals required to sync build numbers across jobs:
|
||||
|
||||
def approval = org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get()
|
||||
approval.approveSignature('staticMethod jenkins.model.Jenkins getInstance')
|
||||
approval.approveSignature('method hudson.model.ItemGroup getItem java.lang.String')
|
||||
approval.approveSignature('field hudson.model.Job nextBuildNumber')
|
||||
approval.approveSignature('method hudson.model.Job saveNextBuildNumber')
|
||||
|
||||
*/
|
||||
|
||||
def gitClone() {
|
||||
cleanWs()
|
||||
if (env.GIT_COMMIT == null)
|
||||
env.GIT_COMMIT = BRANCH
|
||||
println "[-] Building git tag [${env.GIT_COMMIT}]"
|
||||
def scmVars = checkout scm: [$class: 'GitSCM',
|
||||
branches: [[name: env.GIT_COMMIT]],
|
||||
userRemoteConfigs: [[url: 'https://github.com/86Box/86Box.git']]]
|
||||
env.GIT_COMMIT = scmVars.GIT_COMMIT
|
||||
}
|
||||
|
||||
def windowsBuild() {
|
||||
bat 'C:\\msys64\\msys2_shell.cmd -msys2 -defterm -here -no-start -c "exec .ci/build.sh"'
|
||||
}
|
||||
|
||||
def unixBuild() {
|
||||
sh 'chmod u+x .ci/build.sh && exec .ci/build.sh'
|
||||
}
|
||||
|
||||
def saveArtifacts() {
|
||||
archiveArtifacts artifacts: "${env.JOB_BASE_NAME}-*"
|
||||
}
|
||||
|
||||
def anySuccess = false
|
||||
|
||||
def buildChain = [
|
||||
'86Box': '86Box-Dev',
|
||||
'86Box-Dev': '86Box-DevODR',
|
||||
'86Box-DevODR': '86Box-Debug',
|
||||
'86Box-TestBuildPleaseIgnore': '86Box-TestBuildPleaseIgnore2'
|
||||
]
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
parameters {
|
||||
string(name: 'BUILD_TYPE',
|
||||
defaultValue: 'beta', /* !!! CHANGE HERE !!! for build type */
|
||||
description: "Build type to pass on to CMake. Don't change this, you should instead change the default value on .ci/Jenkinsfile")
|
||||
string(name: 'BRANCH',
|
||||
defaultValue: 'master',
|
||||
description: "Used internally to make sure all downstream builds use the same commit. Don't change this.")
|
||||
}
|
||||
|
||||
environment {
|
||||
DISCORD_WEBHOOK_URL = credentials('discord-webhook-url')
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Build Windows') {
|
||||
steps {
|
||||
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
|
||||
node('windows') {
|
||||
gitClone()
|
||||
windowsBuild()
|
||||
saveArtifacts()
|
||||
}
|
||||
|
||||
script {
|
||||
anySuccess = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build Linux') {
|
||||
steps {
|
||||
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
|
||||
node('debian') {
|
||||
gitClone()
|
||||
unixBuild()
|
||||
saveArtifacts()
|
||||
}
|
||||
|
||||
script {
|
||||
anySuccess = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
if (buildChain[env.JOB_BASE_NAME]) {
|
||||
def nextJob = buildChain[env.JOB_BASE_NAME]
|
||||
|
||||
try {
|
||||
/* Set next build number for this job. */
|
||||
def job = Jenkins.instance.getItem(nextJob)
|
||||
job.nextBuildNumber = env.BUILD_NUMBER as Integer
|
||||
job.saveNextBuildNumber()
|
||||
} catch (Exception e) {
|
||||
println "[!] Could not set next build number for [$nextJob], make sure all required script approvals are in place"
|
||||
}
|
||||
|
||||
/* Trigger this job. */
|
||||
build propagate: false,
|
||||
wait: false,
|
||||
job: nextJob,
|
||||
parameters: [
|
||||
string(name: 'BUILD_TYPE', value: BUILD_TYPE),
|
||||
string(name: 'BRANCH', value: env.GIT_COMMIT)
|
||||
]
|
||||
}
|
||||
|
||||
if (!anySuccess) {
|
||||
println "[!] Failing build because all build stages failed"
|
||||
currentBuild.result = 'FAILURE'
|
||||
}
|
||||
|
||||
if (!env.JOB_BASE_NAME.contains("TestBuildPleaseIgnore")) {
|
||||
try {
|
||||
def result = currentBuild.currentResult.toLowerCase()
|
||||
discordSend webhookURL: DISCORD_WEBHOOK_URL,
|
||||
title: "${env.JOB_BASE_NAME} #${env.BUILD_NUMBER}",
|
||||
link: env.BUILD_URL,
|
||||
result: currentBuild.currentResult,
|
||||
description: "**Status:** ${result}\n\u2060", /* word joiner character forces a blank line */
|
||||
enableArtifactsList: false,
|
||||
showChangeset: true
|
||||
|
||||
node { /* IRC notifications need a node for whatever reason */
|
||||
ircNotify()
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
584
.ci/build.sh
Normal file
@@ -0,0 +1,584 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# Jenkins build script.
|
||||
#
|
||||
#
|
||||
# Authors: RichardG, <richardg867@gmail.com>
|
||||
#
|
||||
# Copyright 2021 RichardG.
|
||||
#
|
||||
|
||||
#
|
||||
# While this script was made for our Jenkins infrastructure, you can run it
|
||||
# to produce Jenkins-like builds on your local machine by following these notes:
|
||||
#
|
||||
# - Run build.sh without parameters to see its usage
|
||||
# - For Windows (MSYS MinGW) builds:
|
||||
# - Packaging requires 7-Zip on Program Files
|
||||
# - Packaging the Ghostscript DLL requires 32-bit and/or 64-bit Ghostscript on Program Files
|
||||
# - Packaging the FluidSynth DLL requires it to be at /home/86Box/dll32/libfluidsynth.dll
|
||||
# and/or /home/86Box/dll64/libfluidsynth64.dll (for 32-bit and 64-bit builds respectively)
|
||||
# - Packaging the Discord DLL requires wget (MSYS should come with it)
|
||||
# - For Linux builds:
|
||||
# - Only Debian and derivatives are supported
|
||||
# - dpkg and apt-get are called through sudo to manage dependencies
|
||||
# - For macOS builds:
|
||||
# - TBD
|
||||
#
|
||||
|
||||
alias is_windows='[ ! -z "$MSYSTEM" ]'
|
||||
alias is_mac='uname -s | grep -q Darwin'
|
||||
|
||||
try_make() {
|
||||
# Try makefiles on two locations. I don't know what causes
|
||||
# CMake to pick ./ instead of build/, but :worksonmymachine:
|
||||
if [ -e "build/Makefile" ]
|
||||
then
|
||||
build_dir="$(pwd)/build"
|
||||
cd build
|
||||
make -j$(nproc) $*
|
||||
local status=$?
|
||||
cd ..
|
||||
return $status
|
||||
elif [ -e "Makefile" ]
|
||||
then
|
||||
build_dir="$(pwd)"
|
||||
make -j$(nproc) $*
|
||||
return $?
|
||||
else
|
||||
echo [!] No makefile found
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
make_tar() {
|
||||
# Install dependencies.
|
||||
if ! which tar xz > /dev/null 2>&1
|
||||
then
|
||||
which apt-get > /dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tar xz-utils
|
||||
fi
|
||||
|
||||
# Determine the best supported compression type.
|
||||
local compression_flag=
|
||||
local compression_ext=
|
||||
if which xz > /dev/null 2>&1
|
||||
then
|
||||
local compression_flag=-J
|
||||
local compression_ext=.xz
|
||||
elif which bzip2 > /dev/null 2>&1
|
||||
then
|
||||
local compression_flag=-j
|
||||
local compression_ext=.bz2
|
||||
elif which gzip > /dev/null 2>&1
|
||||
then
|
||||
local compression_flag=-z
|
||||
local compression_ext=.gz
|
||||
fi
|
||||
|
||||
# Make tar verbose if requested.
|
||||
[ ! -z "$VERBOSE" ] && local compression_flag="$compression_flag -v"
|
||||
|
||||
# tar is notorious for having many diverging implementations. For instance,
|
||||
# the flags we use to strip UID/GID metadata can be --owner/group (GNU),
|
||||
# --uid/gid (bsdtar) or even none at all (MSYS2 bsdtar). Account for such
|
||||
# flag differences by checking if they're mentioned on the help text.
|
||||
local ownership_flags=
|
||||
local tar_help=$(tar --help 2>&1)
|
||||
if echo $tar_help | grep -q -- --owner
|
||||
then
|
||||
local ownership_flags="--owner=0 --group=0"
|
||||
elif echo $tar_help | grep -q -- --uid
|
||||
then
|
||||
local ownership_flags="--uid 0 --gid 0"
|
||||
fi
|
||||
|
||||
# Run tar.
|
||||
tar -c $compression_flag -f "$1$compression_ext" $ownership_flags *
|
||||
return $?
|
||||
}
|
||||
|
||||
build() {
|
||||
# Create a line gap between builds.
|
||||
[ $first_build -eq 0 ] && echo
|
||||
first_build=0
|
||||
|
||||
# Set argument and environment variables.
|
||||
local job_name=$JOB_BASE_NAME
|
||||
local build_type=$BUILD_TYPE
|
||||
local git_hash=$(echo $GIT_COMMIT | cut -c1-8)
|
||||
local arch=$1
|
||||
shift
|
||||
local cmake_flags=$*
|
||||
local cmake_flags_extra=
|
||||
|
||||
# Check if at least the job name was received.
|
||||
if [ -z "$job_name" ]
|
||||
then
|
||||
echo [!] Missing environment variables: received JOB_BASE_NAME=[$JOB_BASE_NAME] BUILD_TYPE=[$BUILD_TYPE] BUILD_NUMBER=[$BUILD_NUMBER] GIT_COMMIT=[$GIT_COMMIT]
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo [-] Building [$job_name] [$build_type] [$build_qualifier] [$git_hash] for [$arch] with flags [$cmake_flags]
|
||||
|
||||
# Switch to the correct directory.
|
||||
cd "$cwd"
|
||||
[ -e "build.sh" ] && cd ..
|
||||
|
||||
# Perform platform-specific setup.
|
||||
if is_windows
|
||||
then
|
||||
# Switch into the correct MSYSTEM if required.
|
||||
local msys=MINGW$arch
|
||||
[ ! -d "/$msys" ] && local msys=CLANG$arch
|
||||
if [ -d "/$msys" ]
|
||||
then
|
||||
if [ "$MSYSTEM" != "$msys" ]
|
||||
then
|
||||
# Call build with the correct MSYSTEM.
|
||||
echo [-] Switching to MSYSTEM [$msys]
|
||||
cd "$cwd"
|
||||
CHERE_INVOKING=yes MSYSTEM="$msys" JOB_BASE_NAME="$JOB_BASE_NAME" BUILD_TYPE="$BUILD_TYPE" BUILD_NUMBER="$BUILD_NUMBER" GIT_COMMIT="$GIT_COMMIT" \
|
||||
bash -lc 'exec "'$0'" -b "'$arch'" '"$cmake_flags" && job_status=0 # make sure the main script exits cleanly on any success
|
||||
return $?
|
||||
fi
|
||||
else
|
||||
echo [!] No MSYSTEM for architecture [$arch]
|
||||
return 2
|
||||
fi
|
||||
echo [-] Using MSYSTEM [$MSYSTEM]
|
||||
elif is_mac
|
||||
then
|
||||
# macOS lacks nproc, but sysctl can do the same job.
|
||||
alias nproc='sysctl -n hw.logicalcpu'
|
||||
else
|
||||
# Determine Debian architecture.
|
||||
case $arch in
|
||||
x86) local arch_deb="i386";;
|
||||
x86_64) local arch_deb="amd64";;
|
||||
arm32) local arch_deb="armhf";;
|
||||
*) local arch_deb="$arch";;
|
||||
esac
|
||||
|
||||
# Establish general and architecture-specific dependencies.
|
||||
local pkgs="cmake git tar xz-utils dpkg-dev rpm"
|
||||
if [ "$(dpkg --print-architecture)" = "$arch_deb" ]
|
||||
then
|
||||
local pkgs="$pkgs build-essential"
|
||||
else
|
||||
sudo dpkg --add-architecture $arch_deb
|
||||
local pkgs="$pkgs crossbuild-essential-$arch_deb"
|
||||
fi
|
||||
local libpkgs=""
|
||||
local longest_libpkg=0
|
||||
for pkg in libc6-dev linux-libc-dev libopenal-dev libfreetype6-dev libsdl2-dev libpng-dev
|
||||
do
|
||||
local libpkgs="$libpkgs $pkg:$arch_deb"
|
||||
local length=$(echo -n $pkg | sed 's/-dev$//g' | wc -c)
|
||||
[ $length -gt $longest_libpkg ] && longest_libpkg=$length
|
||||
done
|
||||
|
||||
# Determine GNU toolchain architecture.
|
||||
case $arch in
|
||||
x86) local arch_gnu="i686-linux-gnu";;
|
||||
arm32) local arch_gnu="arm-linux-gnueabihf";;
|
||||
arm64) local arch_gnu="aarch64-linux-gnu";;
|
||||
*) local arch_gnu="$arch-linux-gnu";;
|
||||
esac
|
||||
|
||||
# Create CMake toolchain file.
|
||||
cat << EOF > toolchain.cmake
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR $arch)
|
||||
|
||||
set(CMAKE_AR $arch_gnu-ar)
|
||||
set(CMAKE_ASM_COMPILER $arch_gnu-gcc)
|
||||
set(CMAKE_C_COMPILER $arch_gnu-gcc)
|
||||
set(CMAKE_CXX_COMPILER $arch_gnu-g++)
|
||||
set(CMAKE_LINKER $arch_gnu-ld)
|
||||
set(CMAKE_OBJCOPY $arch_gnu-objcopy)
|
||||
set(CMAKE_RANLIB $arch_gnu-ranlib)
|
||||
set(CMAKE_SIZE $arch_gnu-size)
|
||||
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)
|
||||
EOF
|
||||
local cmake_flags_extra="$cmake_flags_extra -D CMAKE_TOOLCHAIN_FILE=toolchain.cmake"
|
||||
|
||||
# Install or update dependencies.
|
||||
echo [-] Installing dependencies through apt
|
||||
sudo apt-get update
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install $pkgs $libpkgs
|
||||
sudo apt-get clean
|
||||
fi
|
||||
|
||||
# Clean workspace.
|
||||
echo [-] Cleaning workspace
|
||||
try_make clean > /dev/null
|
||||
rm -rf build
|
||||
find . \( -name Makefile -o -name CMakeCache.txt -o -name CMakeFiles \) -exec rm -rf "{}" \; 2> /dev/null
|
||||
|
||||
# Determine available dynarec types for this architecture, and
|
||||
# also specify ARCH right away to skip the arch_detect process.
|
||||
case $arch in
|
||||
# old dynarec available
|
||||
32 | x86) local cmake_flags_extra="$cmake_flags_extra -D ARCH=i386";;
|
||||
64 | x86_64) local cmake_flags_extra="$cmake_flags_extra -D ARCH=x86_64";;
|
||||
# new dynarec only
|
||||
ARM32 | arm32) local cmake_flags_extra="$cmake_flags_extra -D NEW_DYNAREC=ON -D ARCH=arm";;
|
||||
ARM64 | arm64) local cmake_flags_extra="$cmake_flags_extra -D NEW_DYNAREC=ON -D ARCH=arm64";;
|
||||
# no dynarec
|
||||
*) local cmake_flags_extra="$cmake_flags_extra -D DYNAREC=OFF";;
|
||||
esac
|
||||
|
||||
# Determine additional CMake flags.
|
||||
[ ! -z "$build_type" ] && local cmake_flags_extra="$cmake_flags_extra -D BUILD_TYPE=\"$build_type\""
|
||||
[ ! -z "$build_qualifier" ] && local cmake_flags_extra="$cmake_flags_extra -D EMU_BUILD=\"$build_qualifier\""
|
||||
[ ! -z "$build_number" ] && local cmake_flags_extra="$cmake_flags_extra -D EMU_BUILD_NUM=\"$build_number\""
|
||||
[ ! -z "$git_hash" ] && local cmake_flags_extra="$cmake_flags_extra -D EMU_GIT_HASH=\"$git_hash\""
|
||||
local cmake_flags_extra="$cmake_flags_extra -D EMU_COPYRIGHT_YEAR=\"$(date +%Y)\""
|
||||
|
||||
# Run CMake.
|
||||
echo [-] Running CMake with flags [$cmake_flags $cmake_flags_extra]
|
||||
eval cmake -G \"Unix Makefiles\" $cmake_flags $cmake_flags_extra .
|
||||
local status=$?
|
||||
if [ $? -gt 0 ]
|
||||
then
|
||||
echo [!] CMake failed with status [$status]
|
||||
return 3
|
||||
fi
|
||||
|
||||
# Run actual build.
|
||||
echo [-] Running build
|
||||
try_make
|
||||
local status=$?
|
||||
if [ $status -gt 0 ]
|
||||
then
|
||||
echo [!] Make failed with status [$status]
|
||||
return 4
|
||||
fi
|
||||
|
||||
# Create temporary directory for archival.
|
||||
echo [-] Gathering archive files
|
||||
rm -rf archive_tmp
|
||||
mkdir archive_tmp
|
||||
if [ ! -d "archive_tmp" ]
|
||||
then
|
||||
echo [!] Archive directory creation failed
|
||||
return 5
|
||||
fi
|
||||
|
||||
# Archive the executable and its dependencies.
|
||||
# The executable should always be archived last for the check after this block.
|
||||
local status=$?
|
||||
if is_windows
|
||||
then
|
||||
# Determine Program Files directory for Ghostscript and 7-Zip.
|
||||
# Manual checks because MSYS is bad at passing the ProgramFiles variables.
|
||||
local pf="/c/Program Files"
|
||||
local sevenzip="$pf/7-Zip/7z.exe"
|
||||
[ "$arch" = "32" -a -d "/c/Program Files (x86)" ] && pf="/c/Program Files (x86)"
|
||||
|
||||
# Archive freetype from local MSYS installation.
|
||||
.ci/static2dll.sh -p freetype2 /$MSYSTEM/lib/libfreetype.a archive_tmp/freetype.dll
|
||||
|
||||
# Archive Ghostscript DLL from local official distribution installation.
|
||||
for gs in "$pf"/gs/gs*.*.*
|
||||
do
|
||||
cp -p "$gs"/bin/gsdll*.dll archive_tmp/
|
||||
done
|
||||
|
||||
# Archive Discord Game SDK DLL from their CDN.
|
||||
local discordarch=
|
||||
[ "$arch" = "32" ] && local discordarch=x86
|
||||
[ "$arch" = "64" ] && local discordarch=x86_64
|
||||
if [ ! -z "$discordarch" ]
|
||||
then
|
||||
[ ! -e "discord_game_sdk.zip" ] && wget -qOdiscord_game_sdk.zip https://dl-game-sdk.discordapp.net/2.5.6/discord_game_sdk.zip
|
||||
"$sevenzip" e -y -oarchive_tmp discord_game_sdk.zip lib/$discordarch/discord_game_sdk.dll
|
||||
fi
|
||||
|
||||
# Archive other DLLs from local directory.
|
||||
cp -p /home/$project/dll$arch/* archive_tmp/
|
||||
|
||||
# Archive executable.
|
||||
mv "$build_dir"/src/$project.exe archive_tmp/
|
||||
local status=$?
|
||||
elif is_mac
|
||||
then
|
||||
# TBD
|
||||
:
|
||||
else
|
||||
# Archive readme with library package versions.
|
||||
echo Libraries used to compile this $arch build of $project: > archive_tmp/README
|
||||
dpkg-query -f '${Package} ${Version}\n' -W $libpkgs | sed "s/-dev / /g" | while IFS=" " read pkg version
|
||||
do
|
||||
for i in $(seq $(expr $longest_libpkg - $(echo -n $pkg | wc -c)))
|
||||
do
|
||||
echo -n " " >> archive_tmp/README
|
||||
done
|
||||
echo $pkg $version >> archive_tmp/README
|
||||
done
|
||||
|
||||
# Archive executable.
|
||||
mv "$build_dir"/src/$project archive_tmp/
|
||||
local status=$?
|
||||
fi
|
||||
|
||||
# Check if the executable move succeeded.
|
||||
if [ $status -gt 0 ]
|
||||
then
|
||||
echo [!] Executable move failed with status [$status]
|
||||
return 6
|
||||
fi
|
||||
|
||||
# Produce artifact archive.
|
||||
echo [-] Creating artifact archive
|
||||
cd archive_tmp
|
||||
if is_windows
|
||||
then
|
||||
# Create zip.
|
||||
"$sevenzip" a -y -mx9 "..\\$job_name-Windows-$arch$build_fn.zip" *
|
||||
local status=$?
|
||||
elif is_mac
|
||||
then
|
||||
# TBD
|
||||
:
|
||||
else
|
||||
# Create binary tarball.
|
||||
VERBOSE=1 make_tar ../$job_name-Linux-$arch$build_fn.tar
|
||||
local status=$?
|
||||
fi
|
||||
cd ..
|
||||
|
||||
# Check if the archival succeeded.
|
||||
if [ $status -gt 0 ]
|
||||
then
|
||||
echo [!] Artifact archive creation failed with status [$status]
|
||||
return 7
|
||||
fi
|
||||
|
||||
# All good.
|
||||
echo [-] Build of [$job_name] [$build_type] [$build_qualifier] [$git_hash] for [$arch] with flags [$cmake_flags] successful
|
||||
job_status=0
|
||||
}
|
||||
|
||||
tarball() {
|
||||
# Create a line gap between builds.
|
||||
[ $first_build -eq 0 ] && echo
|
||||
first_build=0
|
||||
|
||||
# Set argument and environment variables.
|
||||
local job_name=$JOB_BASE_NAME
|
||||
|
||||
# Check if the job name was received.
|
||||
if [ -z "$job_name" ]
|
||||
then
|
||||
echo [!] Missing environment variable: received JOB_BASE_NAME=[$JOB_BASE_NAME]
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo [-] Making source tarball for [$job_name]
|
||||
|
||||
# Switch to the correct directory.
|
||||
cd "$cwd"
|
||||
[ -e "build.sh" ] && cd ..
|
||||
|
||||
# Clean local tree of gitignored files.
|
||||
git clean -dfX
|
||||
|
||||
# Save current HEAD commit to VERSION.
|
||||
git log -1 > VERSION || rm -f VERSION
|
||||
|
||||
# Archive source.
|
||||
make_tar $job_name-Source$build_fn.tar
|
||||
|
||||
# Check if the archival succeeded.
|
||||
if [ $? -gt 0 ]
|
||||
then
|
||||
echo [!] Tarball creation failed with status [$status]
|
||||
return 2
|
||||
fi
|
||||
|
||||
echo [-] Source tarball for [$job_name] created successfully
|
||||
}
|
||||
|
||||
# Set common variables.
|
||||
project=86Box
|
||||
cwd=$(pwd)
|
||||
first_build=1
|
||||
job_status=1
|
||||
|
||||
# Parse arguments.
|
||||
single_build=0
|
||||
tarball=0
|
||||
args=0
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
-b)
|
||||
# Execute single build.
|
||||
[ -z "$JOB_BASE_NAME" ] && JOB_BASE_NAME=$project-Custom
|
||||
single_build=1
|
||||
shift
|
||||
break
|
||||
;;
|
||||
|
||||
-t)
|
||||
# Create tarball.
|
||||
[ -z "$JOB_BASE_NAME" ] && JOB_BASE_NAME=$project
|
||||
tarball=1
|
||||
shift
|
||||
;;
|
||||
|
||||
*)
|
||||
# Allow for manually specifying Jenkins variables.
|
||||
if [ $args -eq 0 ]
|
||||
then
|
||||
JOB_BASE_NAME=$1
|
||||
args=1
|
||||
elif [ $args -eq 1 ]
|
||||
then
|
||||
BUILD_TYPE=$1
|
||||
args=2
|
||||
elif [ $args -eq 2 ]
|
||||
then
|
||||
BUILD_NUMBER=$1
|
||||
args=3
|
||||
elif [ $args -eq 3 ]
|
||||
then
|
||||
GIT_COMMIT=$1
|
||||
args=4
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check if at least the job name was specified.
|
||||
if [ -z "$JOB_BASE_NAME" ]
|
||||
then
|
||||
echo [!] Manual usage: build.sh [{job_name} [{build_type} [{build_number'|"'build_qualifier'"'} [git_hash]]]] [-t] [-b {architecture} [cmake_flags...]]
|
||||
exit 100
|
||||
fi
|
||||
|
||||
# Generate build information. Note that variable names are case sensitive.
|
||||
build_number=$BUILD_NUMBER
|
||||
if echo $build_number | grep -q " "
|
||||
then
|
||||
# A full build qualifier was specified.
|
||||
build_qualifier="$build_number"
|
||||
build_fn="-"$(echo "$build_number" | rev | cut -f1 -d" " | rev | tr '\\/:*?"<>|' '_')
|
||||
build_number= # no build number
|
||||
elif [ ! -z "$build_number" ]
|
||||
then
|
||||
# A build number was specified.
|
||||
build_qualifier="build $build_number"
|
||||
build_fn="-b$build_number"
|
||||
build_number=$(echo "$build_number" | sed "s/[^0-9]//g") # remove non-numeric characters from build number
|
||||
else
|
||||
# No build data was specified.
|
||||
build_number=
|
||||
build_qualifier=
|
||||
build_fn=
|
||||
fi
|
||||
|
||||
# Make tarball if requested.
|
||||
if [ $tarball -ne 0 ]
|
||||
then
|
||||
tarball
|
||||
status=$?
|
||||
[ $single_build -eq 0 ] && exit $status
|
||||
fi
|
||||
|
||||
# Run single build if requested.
|
||||
if [ $single_build -ne 0 ]
|
||||
then
|
||||
build $*
|
||||
exit $?
|
||||
fi
|
||||
|
||||
# Run builds according to the Jenkins job name.
|
||||
case $JOB_BASE_NAME in
|
||||
$project | $project-TestBuildPleaseIgnore*)
|
||||
if is_windows
|
||||
then
|
||||
build 32 --preset=regular
|
||||
build 64 --preset=regular
|
||||
elif is_mac
|
||||
then
|
||||
build Universal --preset=regular
|
||||
else
|
||||
tarball
|
||||
build x86 --preset=regular
|
||||
build x86_64 --preset=regular
|
||||
build arm32 --preset=regular
|
||||
build arm64 --preset=regular
|
||||
fi
|
||||
;;
|
||||
|
||||
$project-Debug)
|
||||
if is_windows
|
||||
then
|
||||
build 32 --preset=debug
|
||||
build 64 --preset=debug
|
||||
elif is_mac
|
||||
then
|
||||
build Universal --preset=debug
|
||||
else
|
||||
build x86 --preset=debug
|
||||
build x86_64 --preset=debug
|
||||
build arm32 --preset=debug
|
||||
build arm64 --preset=debug
|
||||
fi
|
||||
;;
|
||||
|
||||
$project-Dev)
|
||||
if is_windows
|
||||
then
|
||||
build 32 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
build 64 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
elif is_mac
|
||||
then
|
||||
build Universal --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
else
|
||||
build x86 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
build x86_64 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
build arm32 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
build arm64 --preset=experimental -D NEW_DYNAREC=ON -D VNC=OFF
|
||||
fi
|
||||
;;
|
||||
|
||||
$project-DevODR)
|
||||
if is_windows
|
||||
then
|
||||
build 32 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
build 64 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
elif is_mac
|
||||
then
|
||||
build Universal --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
else
|
||||
build x86 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
build x86_64 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
build arm32 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
build arm64 --preset=experimental -D NEW_DYNAREC=OFF -D VNC=OFF
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo [!] Unknown job name $JOB_BASE_NAME
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo
|
||||
echo [-] Exiting with status [$job_status]
|
||||
exit $job_status
|
||||
160
.ci/static2dll.sh
Normal file
@@ -0,0 +1,160 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# Script for converting MinGW static libraries into a DLL.
|
||||
#
|
||||
#
|
||||
# Authors: RichardG, <richardg867@gmail.com>
|
||||
#
|
||||
# Copyright 2021 RichardG.
|
||||
#
|
||||
|
||||
def_file="static2dll.def"
|
||||
seen_file="static2dll.seen"
|
||||
libs_file="static2dll.libs"
|
||||
|
||||
find_lib() {
|
||||
# Try to find a static library's file.
|
||||
local msystem_lib="/$(echo $MSYSTEM | tr '[:upper:]' '[:lower:]')/lib/lib"
|
||||
if [ -e "$msystem_lib$1.a" ]
|
||||
then
|
||||
echo "$msystem_lib$1.a"
|
||||
elif [ -e "$msystem_lib$1.dll.a" ]
|
||||
then
|
||||
echo "$msystem_lib$1.dll.a"
|
||||
else
|
||||
# Return dynamic reference to the library.
|
||||
echo "-l$1"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
add_lib() {
|
||||
# Always make sure this lib is listed after the last lib that depends on it.
|
||||
old_libs=$(cat "$libs_file")
|
||||
rm -f "$libs_file"
|
||||
for lib in $old_libs
|
||||
do
|
||||
[ "$lib" != "$*" ] && echo "$lib" >> "$libs_file"
|
||||
done
|
||||
echo "$*" >> "$libs_file"
|
||||
|
||||
# Add libstdc++ in the end if required.
|
||||
if echo "$*" | grep -q "/"
|
||||
then
|
||||
grep -Eq -- "__cxa_|__gxx_" "$1" 2> /dev/null && add_lib -static -lstdc++
|
||||
fi
|
||||
|
||||
# Add libiconv for libintl.
|
||||
if echo "$*" | grep -q "libintl"
|
||||
then
|
||||
add_lib $(find_lib iconv)
|
||||
fi
|
||||
|
||||
# Add libuuid for glib.
|
||||
if echo "$*" | grep -q "libglib"
|
||||
then
|
||||
add_lib $(find_lib uuid)
|
||||
fi
|
||||
}
|
||||
|
||||
run_pkgconfig() {
|
||||
local cache_file="static2dll.$1.cache"
|
||||
if [ -e "$cache_file" ]
|
||||
then
|
||||
cat "$cache_file"
|
||||
else
|
||||
pkg-config --static --libs "$1" 2> /dev/null | tee "$cache_file"
|
||||
fi
|
||||
}
|
||||
|
||||
parse_pkgconfig() {
|
||||
# Parse arguments.
|
||||
local layers=$1
|
||||
shift
|
||||
local input_lib_name=$1
|
||||
shift
|
||||
|
||||
# Don't process the same file again.
|
||||
grep -q '^'$input_lib_name'$' "$seen_file" && return
|
||||
echo $input_lib_name >> "$seen_file"
|
||||
|
||||
echo "$layers" parse_pkgconfig $input_lib_name
|
||||
|
||||
# Parse pkg-config arguments.
|
||||
for arg in $*
|
||||
do
|
||||
local arg_base="$(echo $arg | cut -c1-2)"
|
||||
if [ "x$arg_base" = "x-l" ]
|
||||
then
|
||||
# Don't process the same lib again.
|
||||
local lib_name="$(echo $arg | cut -c3-)"
|
||||
[ "x$lib_name" == "x$input_lib_name" ] && continue
|
||||
|
||||
# Add lib path.
|
||||
add_lib "$(find_lib $lib_name)"
|
||||
|
||||
# Get this lib's dependencies through pkg-config.
|
||||
local pkgconfig="$(run_pkgconfig "$lib_name")"
|
||||
[ $? -eq 0 ] && parse_pkgconfig "$layers"'>' "$lib_name" $pkgconfig || echo $lib_name >> "$seen_file"
|
||||
elif [ "x$(echo $arg_base | cut -c1)" = "x-" ]
|
||||
then
|
||||
# Ignore other arguments.
|
||||
continue
|
||||
else
|
||||
# Add lib path.
|
||||
add_lib "$arg"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Parse arguments.
|
||||
case $1 in
|
||||
-p) # -p pkg_config_name static_lib_path out_dll
|
||||
shift
|
||||
base_pkgconfig=$(run_pkgconfig "$1")
|
||||
base_path="$2"
|
||||
base_name="$1"
|
||||
;;
|
||||
|
||||
*) # pc_path static_lib_path out_dll
|
||||
base_pkgconfig="$(grep ^Libs.private: $1 | cut -d: -f2-)"
|
||||
base_path="$2"
|
||||
base_name="$2"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check arguments.
|
||||
if [ -z "$base_pkgconfig" -o -z "$base_path" -o -z "$base_name" ]
|
||||
then
|
||||
echo Usage:
|
||||
echo static2dll.sh -p {pkgconfig_package_name} {static_lib_path} {out_dll_name}
|
||||
echo static2dll.sh {pc_file_path} {static_lib_path} {out_dll_name}
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Produce .def file.
|
||||
echo LIBRARY $(basename "$3") > "$def_file"
|
||||
echo EXPORTS >> "$def_file"
|
||||
nm "$base_path" | grep " [TC] " | sed "/ _/s// /" | awk '{ print $3 }' >> "$def_file"
|
||||
|
||||
# Parse dependencies recursively.
|
||||
rm -f "$seen_file" "$libs_file" "$libs_file.tmp"
|
||||
touch "$seen_file" "$libs_file"
|
||||
parse_pkgconfig '>' $base_name $base_pkgconfig
|
||||
|
||||
# Produce final DLL.
|
||||
dllwrap --def "$def_file" -o "$3" -Wl,--allow-multiple-definition "$base_path" $(cat "$libs_file")
|
||||
status=$?
|
||||
[ $status -eq 0 ] && rm -f "$def_file" "$seen_file" "$libs_file" "static2dll.*.cache"
|
||||
|
||||
# Update final DLL timestamp.
|
||||
touch -r "$base_path" "$3"
|
||||
|
||||
exit $status
|
||||
13
.github/workflows/c-cpp.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: C/C++ CI
|
||||
name: MinGW64 Makefile
|
||||
|
||||
on:
|
||||
|
||||
@@ -16,7 +16,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: ${{ matrix.environment.msystem }} makefile build (DEV_BUILD=${{ matrix.dev-build }}, NEW_DYNAREC=${{ matrix.new-dynarec }}, CLANG=${{ matrix.clang }})
|
||||
name: ${{ matrix.environment.msystem }} Makefile build (DEV_BUILD=${{ matrix.dev-build }}, NEW_DYNAREC=${{ matrix.new-dynarec }})
|
||||
|
||||
runs-on: windows-latest
|
||||
|
||||
@@ -25,11 +25,10 @@ jobs:
|
||||
shell: msys2 {0}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
fail-fast: true
|
||||
matrix:
|
||||
dev-build: ['y', 'n']
|
||||
new-dynarec: ['y', 'n']
|
||||
clang: ['y', 'n']
|
||||
environment:
|
||||
- msystem: MINGW32
|
||||
prefix: mingw-w64-i686
|
||||
@@ -37,9 +36,6 @@ jobs:
|
||||
- msystem: MINGW64
|
||||
prefix: mingw-w64-x86_64
|
||||
x64: y
|
||||
- msystem: UCRT64
|
||||
prefix: mingw-w64-ucrt-x86_64
|
||||
x64: y
|
||||
|
||||
steps:
|
||||
- uses: msys2/setup-msys2@v2
|
||||
@@ -49,7 +45,6 @@ jobs:
|
||||
install: >-
|
||||
make
|
||||
${{ matrix.environment.prefix }}-gcc
|
||||
${{ matrix.environment.prefix }}-clang
|
||||
${{ matrix.environment.prefix }}-pkg-config
|
||||
${{ matrix.environment.prefix }}-openal
|
||||
${{ matrix.environment.prefix }}-freetype
|
||||
@@ -60,5 +55,5 @@ jobs:
|
||||
${{ matrix.environment.prefix }}-winpthreads
|
||||
- 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 }} CLANG=${{ matrix.clang }} VNC=n
|
||||
run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.dev-build }} NEW_DYNAREC=${{ matrix.new-dynarec }} X64=${{ matrix.environment.x64 }} VNC=n
|
||||
working-directory: ./src
|
||||
|
||||
2
.github/workflows/cmake.yml
vendored
@@ -152,7 +152,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install dependencies
|
||||
run: 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
|
||||
- name: Configure CMake
|
||||
run: >-
|
||||
cmake -S . -B build
|
||||
|
||||
48
.gitignore
vendored
@@ -1,15 +1,39 @@
|
||||
src/*.o
|
||||
src/*.exe
|
||||
src/*.res
|
||||
src/*.d
|
||||
src/*.cfg
|
||||
src/*.log
|
||||
src/*.dll
|
||||
src/*.dmp
|
||||
src/NUL
|
||||
src/nvr/
|
||||
src/roms/
|
||||
/.vs
|
||||
# CMake
|
||||
/CMakeUserPresets.json
|
||||
/CMakeCache.txt
|
||||
/build
|
||||
CMakeFiles
|
||||
Makefile
|
||||
*.a
|
||||
*.cmake
|
||||
/src/*.exe
|
||||
/src/86Box
|
||||
/src/include/86box/version.h
|
||||
|
||||
# Legacy Makefile
|
||||
/src/*.o
|
||||
/src/*.d
|
||||
/src/*.res
|
||||
/src/*.dll
|
||||
/src/NUL
|
||||
|
||||
# State
|
||||
/src/*.cfg
|
||||
/src/*.log
|
||||
/src/*.dmp
|
||||
/src/nvr/
|
||||
/src/printer/
|
||||
/src/roms/
|
||||
/src/screenshots/
|
||||
|
||||
# Build scripts
|
||||
/archive_tmp
|
||||
/static2dll.*
|
||||
/*.zip
|
||||
/*.tar
|
||||
/*.tar.*
|
||||
/VERSION
|
||||
|
||||
# Visual Studio Code
|
||||
/.vs
|
||||
/.vscode
|
||||
|
||||
@@ -23,7 +23,7 @@ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
project(86Box
|
||||
VERSION 3.0
|
||||
DESCRIPTION "Emulator of x86-based systems"
|
||||
HOMEPAGE_URL "https://86box.github.io/"
|
||||
HOMEPAGE_URL "https://86box.net"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
# Detect the target architecture by trying to compile `src/arch_detect.c`
|
||||
@@ -88,6 +88,15 @@ CMAKE_DEPENDENT_OPTION(VNC "VNC renderer" ON "DEV_BRANCH" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(XL24 "ATI VGA Wonder XL24 (ATI-28800-6)" ON "DEV_BRANCH" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(VECT486VL "HP Vectra 486VL" ON "DEV_BRANCH" OFF)
|
||||
|
||||
string(TOLOWER "${BUILD_TYPE}" BUILD_TYPE_LOWER)
|
||||
if(BUILD_TYPE_LOWER STREQUAL "release")
|
||||
add_compile_definitions(RELEASE_BUILD)
|
||||
elseif(BUILD_TYPE_LOWER STREQUAL "beta")
|
||||
add_compile_definitions(BETA_BUILD)
|
||||
elseif(BUILD_TYPE_LOWER STREQUAL "alpha")
|
||||
add_compile_definitions(ALPHA_BUILD)
|
||||
endif()
|
||||
|
||||
# HACK: Avoid a MSVC2019 compiler bug on ARM64 Debug builds
|
||||
if(MSVC_TOOLSET_VERSION GREATER_EQUAL 142 AND ARCH STREQUAL "arm64")
|
||||
# Define a cache option in case somebody wants to disable this workaround
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
"CMAKE_CXX_FLAGS_RELEASE": "-g0 -O3",
|
||||
"CMAKE_C_FLAGS_DEBUG": "-ggdb -Og",
|
||||
"CMAKE_CXX_FLAGS_DEBUG": "-ggdb -Og",
|
||||
"CMAKE_C_FLAGS_OPTIMIZED": "-march=native -mtune=native -O3 -ffp-contract=last -flto",
|
||||
"CMAKE_CXX_FLAGS_OPTIMIZED": "-march=native -mtune=native -O3 -ffp-contract=last -flto"
|
||||
"CMAKE_C_FLAGS_OPTIMIZED": "-march=native -mtune=native -O3 -ffp-contract=fast -flto",
|
||||
"CMAKE_CXX_FLAGS_OPTIMIZED": "-march=native -mtune=native -O3 -ffp-contract=fast -flto"
|
||||
},
|
||||
"hidden": true,
|
||||
"binaryDir": "build"
|
||||
|
||||
10
README.md
@@ -20,7 +20,13 @@ System requirements and recommendations
|
||||
|
||||
Performance may vary depending on both host and guest configuration. Most emulation logic is executed in a single thread, therefore generally systems with better IPC (instructions per clock) should be able to emulate higher clock speeds.
|
||||
|
||||
It is also recommended to use the [86Box Manager](https://github.com/86Box/86BoxManager) by [daviunic](https://github.com/daviunic) (Overdoze) to manage virtual machines. However, it is also possible to use 86Box on its own with the `--vmpath`/`-P` command line option.
|
||||
It is also recommended to use a manager application with 86Box for easier handling of multiple virtual machines.
|
||||
* [WinBox for 86Box](https://github.com/laciba96/WinBox-for-86Box) by [Laci bá'](https://github.com/laciba96)
|
||||
* The new manager with improved new user experience; installer, automatic updates of emulator files and more.
|
||||
* [86Box Manager](https://github.com/86Box/86BoxManager) by [daviunic](https://github.com/daviunic) (Overdoze)
|
||||
* The traditional 86Box manager with simple interface.
|
||||
|
||||
However, it is also possible to use 86Box on its own with the `--vmpath`/`-P` command line option.
|
||||
|
||||
Downloads
|
||||
---------
|
||||
@@ -52,7 +58,7 @@ We operate an IRC channel and a Discord server for discussing 86Box, its develop
|
||||
|
||||
Licensing
|
||||
---------
|
||||
86Box is released under the [GNU General Public License, version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) only. For more information, see the `COPYING` file in the root of the repository.
|
||||
86Box is released under the [GNU General Public License, version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or later. For more information, see the `COPYING` file in the root of the repository.
|
||||
|
||||
The emulator can also optionally make use of [munt](https://github.com/munt/munt), [FluidSynth](https://www.fluidsynth.org/), [Ghostscript](https://www.ghostscript.com/) and [Discord Game SDK](https://discord.com/developers/docs/game-sdk/sdk-starter-guide), which are distributed under their respective licenses.
|
||||
|
||||
|
||||
56
src/86box.c
@@ -17,6 +17,7 @@
|
||||
* Copyright 2008-2020 Sarah Walker.
|
||||
* Copyright 2016-2020 Miran Grca.
|
||||
* Copyright 2017-2020 Fred N. van Kempen.
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
#include <stdarg.h>
|
||||
@@ -196,7 +197,7 @@ int unscaled_size_y = SCREEN_RES_Y; /* current unscaled size Y */
|
||||
int efscrnsz_y = SCREEN_RES_Y;
|
||||
|
||||
|
||||
static wchar_t mouse_msg[2][200];
|
||||
static wchar_t mouse_msg[3][200];
|
||||
|
||||
|
||||
#ifndef RELEASE_BUILD
|
||||
@@ -395,7 +396,8 @@ pc_init(int argc, char *argv[])
|
||||
int c, vmrp = 0;
|
||||
int ng = 0, lvmp = 0;
|
||||
uint32_t *uid, *shwnd;
|
||||
|
||||
uint32_t lang_init = 0;
|
||||
|
||||
/* Grab the executable's full path. */
|
||||
plat_get_exe_name(exe_path, sizeof(exe_path)-1);
|
||||
p = plat_get_filename(exe_path);
|
||||
@@ -432,6 +434,7 @@ usage:
|
||||
printf("-E or --nographic - forces the old behavior\n");
|
||||
#endif
|
||||
printf("-F or --fullscreen - start in fullscreen mode\n");
|
||||
printf("-G or --lang langid - start with specified language (e.g. en-US, or system)\n");
|
||||
#ifdef _WIN32
|
||||
printf("-H or --hwnd id,hwnd - sends back the main dialog's hwnd\n");
|
||||
#endif
|
||||
@@ -512,7 +515,20 @@ usage:
|
||||
uid = (uint32_t *) &unique_id;
|
||||
shwnd = (uint32_t *) &source_hwnd;
|
||||
sscanf(argv[++c], "%08X%08X,%08X%08X", uid + 1, uid, shwnd + 1, shwnd);
|
||||
} else if (!strcasecmp(argv[c], "--lang") ||
|
||||
!strcasecmp(argv[c], "-G")) {
|
||||
|
||||
|
||||
#endif
|
||||
//This function is currently unimplemented for *nix but has placeholders.
|
||||
|
||||
lang_init = plat_language_code(argv[++c]);
|
||||
if (!lang_init)
|
||||
printf("\nWarning: Invalid language code, ignoring --lang parameter.\n\n");
|
||||
|
||||
//The return value of 0 only means that the code is invalid,
|
||||
// not related to that translation is exists or not for the
|
||||
// selected language.
|
||||
} else if (!strcasecmp(argv[c], "--test")) {
|
||||
/* some (undocumented) test function here.. */
|
||||
|
||||
@@ -665,7 +681,7 @@ usage:
|
||||
info = localtime(&now);
|
||||
strftime(temp, sizeof(temp), "%Y/%m/%d %H:%M:%S", info);
|
||||
pclog("#\n# %ls v%ls logfile, created %s\n#\n",
|
||||
EMU_NAME_W, EMU_VERSION_W, temp);
|
||||
EMU_NAME_W, EMU_VERSION_FULL_W, temp);
|
||||
pclog("# VM: %s\n#\n", vm_name);
|
||||
pclog("# Emulator path: %s\n", exe_path);
|
||||
pclog("# Userfiles path: %s\n", usr_path);
|
||||
@@ -689,7 +705,16 @@ usage:
|
||||
|
||||
/* Load the configuration file. */
|
||||
config_load();
|
||||
|
||||
|
||||
/* Load the desired language */
|
||||
if (lang_init)
|
||||
lang_id = lang_init;
|
||||
|
||||
lang_init = lang_id;
|
||||
lang_id = 0;
|
||||
if (lang_init)
|
||||
set_language(lang_init);
|
||||
|
||||
/* All good! */
|
||||
return(1);
|
||||
}
|
||||
@@ -724,6 +749,7 @@ pc_init_modules(void)
|
||||
wchar_t temp[512];
|
||||
char tempc[512];
|
||||
|
||||
#ifdef PRINT_MISSING_MACHINES_AND_VIDEO_CARDS
|
||||
c = m = 0;
|
||||
while (machine_get_internal_name_ex(c) != NULL) {
|
||||
m = machine_available(c);
|
||||
@@ -743,6 +769,7 @@ pc_init_modules(void)
|
||||
pclog("Missing video card: %s\n", tempc);
|
||||
c++;
|
||||
}
|
||||
#endif
|
||||
|
||||
pc_log("Scanning for ROM images:\n");
|
||||
c = m = 0;
|
||||
@@ -914,8 +941,6 @@ pc_reset_hard_close(void)
|
||||
void
|
||||
pc_reset_hard_init(void)
|
||||
{
|
||||
wchar_t wcpufamily[2048], wcpu[2048], wmachine[2048], *wcp;
|
||||
|
||||
/*
|
||||
* First, we reset the modules that are not part of
|
||||
* the actual machine, but which support some of the
|
||||
@@ -1017,7 +1042,14 @@ pc_reset_hard_init(void)
|
||||
pc_full_speed();
|
||||
|
||||
cycles = cycles_main = 0;
|
||||
|
||||
update_mouse_msg();
|
||||
}
|
||||
|
||||
void update_mouse_msg()
|
||||
{
|
||||
wchar_t wcpufamily[2048], wcpu[2048], wmachine[2048], *wcp;
|
||||
|
||||
mbstowcs(wmachine, machine_getname(), strlen(machine_getname())+1);
|
||||
|
||||
if (!cpu_override)
|
||||
@@ -1029,15 +1061,17 @@ pc_reset_hard_init(void)
|
||||
if (wcp) /* remove parentheses */
|
||||
*(wcp - 1) = L'\0';
|
||||
mbstowcs(wcpu, cpu_s->name, strlen(cpu_s->name)+1);
|
||||
|
||||
swprintf(mouse_msg[0], sizeof_w(mouse_msg[0]), L"%ls v%ls - %%i%%%% - %ls - %ls/%ls - %ls",
|
||||
EMU_NAME_W, EMU_VERSION_W, wmachine, wcpufamily, wcpu,
|
||||
EMU_NAME_W, EMU_VERSION_FULL_W, wmachine, wcpufamily, wcpu,
|
||||
plat_get_string(IDS_2077));
|
||||
swprintf(mouse_msg[1], sizeof_w(mouse_msg[1]), L"%ls v%ls - %%i%%%% - %ls - %ls/%ls - %ls",
|
||||
EMU_NAME_W, EMU_VERSION_W, wmachine, wcpufamily, wcpu,
|
||||
EMU_NAME_W, EMU_VERSION_FULL_W, wmachine, wcpufamily, wcpu,
|
||||
(mouse_get_buttons() > 2) ? plat_get_string(IDS_2078) : plat_get_string(IDS_2079));
|
||||
swprintf(mouse_msg[2], sizeof_w(mouse_msg[2]), L"%ls v%ls - %%i%%%% - %ls - %ls/%ls",
|
||||
EMU_NAME_W, EMU_VERSION_FULL_W, wmachine, wcpufamily, wcpu);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
pc_reset_hard(void)
|
||||
{
|
||||
@@ -1121,6 +1155,7 @@ static void _ui_window_title(void *s)
|
||||
void
|
||||
pc_run(void)
|
||||
{
|
||||
int mouse_msg_idx;
|
||||
wchar_t temp[200];
|
||||
|
||||
/* Trigger a hard reset if one is pending. */
|
||||
@@ -1145,7 +1180,8 @@ pc_run(void)
|
||||
}
|
||||
|
||||
if (title_update) {
|
||||
swprintf(temp, sizeof_w(temp), mouse_msg[!!mouse_capture], fps);
|
||||
mouse_msg_idx = (mouse_type == MOUSE_TYPE_NONE) ? 2 : !!mouse_capture;
|
||||
swprintf(temp, sizeof_w(temp), mouse_msg[mouse_msg_idx], fps);
|
||||
#ifdef __APPLE__
|
||||
/* Needed due to modifying the UI on the non-main thread is a big no-no. */
|
||||
dispatch_async_f(dispatch_get_main_queue(), wcsdup((const wchar_t *) temp), _ui_window_title);
|
||||
|
||||
@@ -9,15 +9,32 @@
|
||||
# CMake build script.
|
||||
#
|
||||
# Authors: David Hrdlička, <hrdlickadavid@outlook.com>
|
||||
# dob205
|
||||
#
|
||||
# Copyright 2020,2021 David Hrdlička.
|
||||
# Copyright 2021 dob205.
|
||||
#
|
||||
|
||||
# WIN32 marks us as a GUI app on Windows
|
||||
add_executable(86Box WIN32 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)
|
||||
# Prepare the macOS app bundle icon depending on the release channel
|
||||
if(RELEASE_BUILD)
|
||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/release/86Box.icns)
|
||||
elseif(BETA_BUILD)
|
||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/beta/86Box.icns)
|
||||
elseif(ALPHA_BUILD)
|
||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/dev/86Box.icns)
|
||||
else()
|
||||
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/mac/icons/branch/86Box.icns)
|
||||
endif()
|
||||
|
||||
set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
|
||||
MACOSX_PACKAGE_LOCATION "Resources")
|
||||
|
||||
# WIN32 marks us as a GUI app on Windows
|
||||
# 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})
|
||||
|
||||
if(NEW_DYNAREC)
|
||||
add_compile_definitions(USE_NEW_DYNAREC)
|
||||
endif()
|
||||
@@ -63,13 +80,41 @@ if(MINGW)
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dll.a")
|
||||
endif()
|
||||
|
||||
#some macOS specific configuration steps
|
||||
if(APPLE)
|
||||
# Force using the newest library if it's installed by homebrew
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
# Force using the newest library if it's installed by homebrew
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
|
||||
# prepare stuff for macOS app bundles
|
||||
set(CMAKE_MACOSX_BUNDLE 1)
|
||||
|
||||
# setting our compilation target to macOS Mojave (macOS version 10.14), can be eventually changed to macOS 10.13 High Sierra
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
|
||||
|
||||
# set the Info.plist properly
|
||||
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)
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.0")
|
||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.0.0")
|
||||
set(MACOSX_BUNDLE_ICON_FILE 86Box.icns)
|
||||
set(MACOSX_BUNDLE_INFO_STRING "A emulator of old computers")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "© 2007-2021 Sarah Walker, Miran Grča, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others")
|
||||
|
||||
|
||||
# preparing the code signing for easier distribution, Apple dev certificate needed at one point
|
||||
#set(XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "YES")
|
||||
#set(XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-")
|
||||
#set(XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${CMAKE_CURRENT_SOURCE_DIR}/mac/codesign/dev/app.entitlements)
|
||||
|
||||
endif()
|
||||
|
||||
find_package(Freetype REQUIRED)
|
||||
include_directories(${FREETYPE_INCLUDE_DIRS})
|
||||
if(APPLE)
|
||||
target_link_libraries(86Box Freetype::Freetype) # bundles freetype for the macOS app bundle
|
||||
endif()
|
||||
|
||||
find_package(OpenAL REQUIRED)
|
||||
include_directories(${OPENAL_INCLUDE_DIR})
|
||||
@@ -93,6 +138,15 @@ find_package(PNG REQUIRED)
|
||||
include_directories(${PNG_INCLUDE_DIRS})
|
||||
target_link_libraries(86Box PNG::PNG)
|
||||
|
||||
if(NOT CMAKE_PROJECT_VERSION_PATCH)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 0)
|
||||
endif()
|
||||
if(NOT EMU_BUILD_NUM)
|
||||
set(EMU_BUILD_NUM 0)
|
||||
endif()
|
||||
if(NOT EMU_COPYRIGHT_YEAR)
|
||||
set(EMU_COPYRIGHT_YEAR 2021)
|
||||
endif()
|
||||
configure_file(include/86box/version.h.in include/86box/version.h @ONLY)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
|
||||
|
||||
@@ -119,7 +173,23 @@ if(MINITRACE)
|
||||
target_link_libraries(86Box minitrace)
|
||||
endif()
|
||||
|
||||
install(TARGETS 86Box)
|
||||
if(APPLE)
|
||||
install(TARGETS 86Box DESTINATION "bin")
|
||||
else()
|
||||
install(TARGETS 86Box)
|
||||
endif()
|
||||
|
||||
|
||||
# adjustments for macOS app bundles
|
||||
if(APPLE)
|
||||
set(APPS ${CMAKE_CURRENT_BINARY_DIR}/86Box.app)
|
||||
install(CODE "
|
||||
include(InstallRequiredSystemLibraries)
|
||||
include(BundleUtilities)
|
||||
fixup_bundle(\"${APPS}\" \"\" \"\")"
|
||||
COMPONENT Runtime)
|
||||
endif()
|
||||
|
||||
if(VCPKG_TOOLCHAIN)
|
||||
x_vcpkg_install_local_dependencies(TARGETS 86Box DESTINATION "bin")
|
||||
endif()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#
|
||||
|
||||
add_library(chipset OBJECT 82c100.c acc2168.c cs8230.c ali1429.c ali1489.c ali1531.c ali1541.c ali1543.c
|
||||
ali1621.c ali6117.c headland.c intel_82335.c contaq_82c59x.c cs4031.c intel_420ex.c
|
||||
ali1621.c ali6117.c headland.c ims8848.c intel_82335.c contaq_82c59x.c cs4031.c intel_420ex.c
|
||||
intel_4x0.c intel_i450kx.c intel_sio.c intel_piix.c ../ioapic.c neat.c opti283.c opti291.c opti391.c
|
||||
opti495.c opti822.c opti895.c opti5x7.c scamp.c scat.c sis_85c310.c sis_85c4xx.c
|
||||
sis_85c496.c sis_85c50x.c sis_5511.c sis_5571.c via_vt82c49x.c via_vt82c505.c sis_85c310.c
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <86box/chipset.h>
|
||||
#include <86box/spd.h>
|
||||
#include <86box/machine.h>
|
||||
#include <86box/video.h>
|
||||
|
||||
|
||||
enum
|
||||
@@ -58,6 +59,7 @@ typedef struct
|
||||
uint8_t mem_state[256];
|
||||
int type;
|
||||
smram_t *smram_low, *smram_high;
|
||||
void *agpgart;
|
||||
} i4x0_t;
|
||||
|
||||
|
||||
@@ -204,14 +206,25 @@ i4x0_smram_handler_phase1(i4x0_t *dev)
|
||||
|
||||
|
||||
static void
|
||||
i4x0_mask_bar(uint8_t *regs)
|
||||
i4x0_mask_bar(uint8_t *regs, void *agpgart)
|
||||
{
|
||||
uint32_t bar;
|
||||
|
||||
/* Make sure the aperture's base is aligned to its size. */
|
||||
bar = (regs[0x13] << 24) | (regs[0x12] << 16);
|
||||
bar &= (((uint32_t) regs[0xb4] << 22) | 0xf0000000);
|
||||
regs[0x12] = (bar >> 16) & 0xff;
|
||||
regs[0x13] = (bar >> 24) & 0xff;
|
||||
|
||||
if (!agpgart)
|
||||
return;
|
||||
|
||||
/* Map aperture and GART. */
|
||||
agpgart_set_aperture(agpgart,
|
||||
bar,
|
||||
((uint32_t) (uint8_t) (~regs[0xb4] & 0x3f) + 1) << 22,
|
||||
!!(regs[0x51] & 0x02));
|
||||
agpgart_set_gart(agpgart, (regs[0xb9] << 8) | (regs[0xba] << 16) | (regs[0xbb] << 24));
|
||||
}
|
||||
|
||||
|
||||
@@ -319,7 +332,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
case INTEL_440GX:
|
||||
regs[0x12] = (val & 0xc0);
|
||||
i4x0_mask_bar(regs);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -329,7 +342,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
case INTEL_440GX:
|
||||
regs[0x13] = val;
|
||||
i4x0_mask_bar(regs);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -407,15 +420,19 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case INTEL_440LX:
|
||||
regs[0x51] = (regs[0x51] & 0x40) | (val & 0x87);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
case INTEL_440EX:
|
||||
regs[0x51] = (val & 0x86);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
regs[0x51] = (regs[0x51] & 0x70) | (val & 0x8f);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
case INTEL_440GX:
|
||||
regs[0x51] = (regs[0x51] & 0xb0) | (val & 0x4f);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1070,7 +1087,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
case INTEL_440GX:
|
||||
regs[0xb4] = (val & 0x3f);
|
||||
i4x0_mask_bar(regs);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1080,6 +1097,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
case INTEL_440GX:
|
||||
regs[0xb9] = (val & 0xf0);
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1090,6 +1108,7 @@ i4x0_write(int func, int addr, uint8_t val, void *priv)
|
||||
case INTEL_440BX: case INTEL_440ZX:
|
||||
case INTEL_440GX:
|
||||
regs[addr] = val;
|
||||
i4x0_mask_bar(regs, dev->agpgart);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1589,10 +1608,13 @@ static void
|
||||
|
||||
pci_add_card(PCI_ADD_NORTHBRIDGE, i4x0_read, i4x0_write, dev);
|
||||
|
||||
if ((dev->type >= INTEL_440BX) && !(regs[0x7a] & 0x02))
|
||||
if ((dev->type >= INTEL_440BX) && !(regs[0x7a] & 0x02)) {
|
||||
device_add((dev->type == INTEL_440GX) ? &i440gx_agp_device : &i440bx_agp_device);
|
||||
else if (dev->type >= INTEL_440LX)
|
||||
dev->agpgart = device_add(&agpgart_device);
|
||||
} else if (dev->type >= INTEL_440LX) {
|
||||
device_add(&i440lx_agp_device);
|
||||
dev->agpgart = device_add(&agpgart_device);
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <86box/pci.h>
|
||||
#include <86box/chipset.h>
|
||||
#include <86box/spd.h>
|
||||
#include <86box/video.h>
|
||||
|
||||
#define VIA_585 0x05851000
|
||||
#define VIA_595 0x05950000
|
||||
@@ -50,6 +51,7 @@ typedef struct via_apollo_t
|
||||
uint8_t pci_conf[256];
|
||||
|
||||
smram_t *smram;
|
||||
void *agpgart;
|
||||
} via_apollo_t;
|
||||
|
||||
|
||||
@@ -86,6 +88,25 @@ apollo_smram_map(via_apollo_t *dev, int smm, uint32_t host_base, uint32_t size,
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
apollo_agp_map(via_apollo_t *dev)
|
||||
{
|
||||
/* Make sure the aperture's base is aligned to its size. */
|
||||
dev->pci_conf[0x12] &= dev->pci_conf[0x84] << 4;
|
||||
dev->pci_conf[0x13] &= 0xf0 | (dev->pci_conf[0x84] >> 4);
|
||||
|
||||
if (!dev->agpgart)
|
||||
return;
|
||||
|
||||
/* Map aperture and GART. */
|
||||
agpgart_set_aperture(dev->agpgart,
|
||||
(dev->pci_conf[0x12] << 16) | (dev->pci_conf[0x13] << 24),
|
||||
((uint32_t) (uint8_t) ~dev->pci_conf[0x84] + 1) << 20,
|
||||
!!(dev->pci_conf[0x88] & 0x02));
|
||||
agpgart_set_gart(dev->agpgart, (dev->pci_conf[0x89] << 8) | (dev->pci_conf[0x8a] << 16) | (dev->pci_conf[0x8b] << 24));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
via_apollo_setup(via_apollo_t *dev)
|
||||
{
|
||||
@@ -220,6 +241,8 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
||||
((addr >= 0xaa) && (addr < 0xac)) || ((addr > 0xad) && (addr < 0xf0)) ||
|
||||
((addr >= 0xf8) && (addr < 0xfc)))
|
||||
return;
|
||||
if (((addr == 0x12) || (addr == 0x13)) && (dev->id < VIA_597))
|
||||
return;
|
||||
if (((addr == 0x78) || (addr >= 0xad)) && (dev->id == VIA_597))
|
||||
return;
|
||||
if (((addr == 0x67) || ((addr >= 0xf0) && (addr < 0xfc))) && (dev->id < VIA_691))
|
||||
@@ -259,9 +282,11 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case 0x12: /* Graphics Aperture Base */
|
||||
dev->pci_conf[0x12] = (val & 0xf0);
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
case 0x13: /* Graphics Aperture Base */
|
||||
dev->pci_conf[0x13] = val;
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
|
||||
case 0x50: /* Cache Control 1 */
|
||||
@@ -579,20 +604,23 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
||||
dev->pci_conf[0x84] = val;
|
||||
else
|
||||
dev->pci_conf[0x84] = (dev->pci_conf[0x84] & ~0xf0) | (val & 0xf0);
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
case 0x88:
|
||||
if((dev->id == VIA_693A) || (dev->id == VIA_8601))
|
||||
dev->pci_conf[0x88] = (dev->pci_conf[0x88] & ~0x06) | (val & 0x06);
|
||||
else
|
||||
dev->pci_conf[0x88] = (dev->pci_conf[0x88] & ~0x07) | (val & 0x07);
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
case 0x89:
|
||||
dev->pci_conf[0x89] = val & 0xf0;
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
case 0x8a:
|
||||
case 0x8b:
|
||||
if((dev->id == VIA_693A) || (dev->id == VIA_8601))
|
||||
dev->pci_conf[addr] = val;
|
||||
else
|
||||
dev->pci_conf[0x89] = (dev->pci_conf[0x89] & ~0xf0) | (val & 0xf0);
|
||||
dev->pci_conf[addr] = val;
|
||||
apollo_agp_map(dev);
|
||||
break;
|
||||
|
||||
case 0xa8:
|
||||
@@ -705,6 +733,9 @@ via_apollo_init(const device_t *info)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->id >= VIA_597)
|
||||
dev->agpgart = device_add(&agpgart_device);
|
||||
|
||||
if ((dev->id >= VIA_694) && (dev->id != VIA_8601))
|
||||
dev->drb_unit = 16;
|
||||
else if (dev->id >= VIA_597)
|
||||
|
||||
54
src/config.c
@@ -567,15 +567,12 @@ load_general(void)
|
||||
confirm_exit = config_get_int(cat, "confirm_exit", 1);
|
||||
confirm_save = config_get_int(cat, "confirm_save", 1);
|
||||
|
||||
#ifdef USE_LANGUAGE
|
||||
/*
|
||||
* Currently, 86Box is English (US) only, but in the future
|
||||
* (version 3.0 at the earliest) other languages will be
|
||||
* added, therefore it is better to future-proof the code.
|
||||
*/
|
||||
plat_langid = config_get_hex16(cat, "language", 0x0409);
|
||||
#endif
|
||||
|
||||
p = config_get_string(cat, "language", NULL);
|
||||
if (p != NULL)
|
||||
{
|
||||
lang_id = plat_language_code(p);
|
||||
}
|
||||
|
||||
#if USE_DISCORD
|
||||
enable_discord = !!config_get_int(cat, "enable_discord", 0);
|
||||
#endif
|
||||
@@ -634,6 +631,16 @@ load_machine(void)
|
||||
machine = machine_get_machine_from_internal_name("cmdsl386sx16");
|
||||
else if (! strcmp(p, "cbm_sl386sx25"))
|
||||
machine = machine_get_machine_from_internal_name("cmdsl386sx25");
|
||||
else if (! strcmp(p, "mr586"))
|
||||
machine = machine_get_machine_from_internal_name("p54tp4xe_mr");
|
||||
else if (! strcmp(p, "pcv240"))
|
||||
machine = machine_get_machine_from_internal_name("pcv90");
|
||||
else if (! strcmp(p, "tsunamiatx"))
|
||||
machine = machine_get_machine_from_internal_name("s1846");
|
||||
else if (! strcmp(p, "trinity371"))
|
||||
machine = machine_get_machine_from_internal_name("s1857");
|
||||
else if (! strcmp(p, "63a"))
|
||||
machine = machine_get_machine_from_internal_name("63a1");
|
||||
else if (! strcmp(p, "award386dx")) /* ...merged machines... */
|
||||
machine = machine_get_machine_from_internal_name("award495");
|
||||
else if (! strcmp(p, "ami386dx"))
|
||||
@@ -1048,12 +1055,12 @@ load_ports(void)
|
||||
char temp[512];
|
||||
int c, d;
|
||||
|
||||
for (c = 0; c < 4; c++) {
|
||||
for (c = 0; c < SERIAL_MAX; c++) {
|
||||
sprintf(temp, "serial%d_enabled", c + 1);
|
||||
serial_enabled[c] = !!config_get_int(cat, temp, (c >= 2) ? 0 : 1);
|
||||
}
|
||||
|
||||
for (c = 0; c < 3; c++) {
|
||||
for (c = 0; c < PARALLEL_MAX; c++) {
|
||||
sprintf(temp, "lpt%d_enabled", c + 1);
|
||||
lpt_ports[c].enabled = !!config_get_int(cat, temp, (c == 0) ? 1 : 0);
|
||||
|
||||
@@ -1065,7 +1072,7 @@ load_ports(void)
|
||||
/* Legacy config compatibility. */
|
||||
d = config_get_int(cat, "lpt_enabled", 2);
|
||||
if (d < 2) {
|
||||
for (c = 0; c < 3; c++)
|
||||
for (c = 0; c < PARALLEL_MAX; c++)
|
||||
lpt_ports[c].enabled = d;
|
||||
}
|
||||
config_delete_var(cat, "lpt_enabled");
|
||||
@@ -2008,9 +2015,7 @@ config_load(void)
|
||||
|
||||
cpu_f = (cpu_family_t *) &cpu_families[0];
|
||||
cpu = 0;
|
||||
#ifdef USE_LANGUAGE
|
||||
plat_langid = 0x0409;
|
||||
#endif
|
||||
|
||||
kbd_req_capture = 0;
|
||||
hide_status_bar = 0;
|
||||
scale = 1;
|
||||
@@ -2217,12 +2222,14 @@ save_general(void)
|
||||
else
|
||||
config_delete_var(cat, "confirm_save");
|
||||
|
||||
#ifdef USE_LANGUAGE
|
||||
if (plat_langid == 0x0409)
|
||||
if (lang_id == DEFAULT_LANGUAGE)
|
||||
config_delete_var(cat, "language");
|
||||
else
|
||||
config_set_hex16(cat, "language", plat_langid);
|
||||
#endif
|
||||
{
|
||||
char buffer[512] = {0};
|
||||
plat_language_code_r(lang_id, buffer, 511);
|
||||
config_set_string(cat, "language", buffer);
|
||||
}
|
||||
|
||||
#if USE_DISCORD
|
||||
if (enable_discord)
|
||||
@@ -2333,9 +2340,8 @@ save_machine(void)
|
||||
else
|
||||
config_set_string(cat, "fpu_type", (char *) fpu_get_internal_name(cpu_f, cpu, fpu_type));
|
||||
|
||||
if (mem_size == 4096)
|
||||
//Write the mem_size explicitly to the setttings in order to help managers to display it without having the actual machine table
|
||||
config_delete_var(cat, "mem_size");
|
||||
else
|
||||
config_set_int(cat, "mem_size", mem_size);
|
||||
|
||||
config_set_int(cat, "cpu_use_dynarec", cpu_use_dynarec);
|
||||
@@ -2519,7 +2525,7 @@ save_ports(void)
|
||||
char temp[512];
|
||||
int c, d;
|
||||
|
||||
for (c = 0; c < 4; c++) {
|
||||
for (c = 0; c < SERIAL_MAX; c++) {
|
||||
sprintf(temp, "serial%d_enabled", c + 1);
|
||||
if (((c < 2) && serial_enabled[c]) || ((c >= 2) && !serial_enabled[c]))
|
||||
config_delete_var(cat, temp);
|
||||
@@ -2527,7 +2533,7 @@ save_ports(void)
|
||||
config_set_int(cat, temp, serial_enabled[c]);
|
||||
}
|
||||
|
||||
for (c = 0; c < 3; c++) {
|
||||
for (c = 0; c < PARALLEL_MAX; c++) {
|
||||
sprintf(temp, "lpt%d_enabled", c + 1);
|
||||
d = (c == 0) ? 1 : 0;
|
||||
if (lpt_ports[c].enabled == d)
|
||||
@@ -2947,7 +2953,7 @@ save_other_removable_devices(void)
|
||||
|
||||
void
|
||||
config_save(void)
|
||||
{
|
||||
{
|
||||
save_general(); /* General */
|
||||
save_machine(); /* Machine */
|
||||
save_video(); /* Video */
|
||||
|
||||
@@ -2294,7 +2294,7 @@ amd_k_invalid_rdmsr:
|
||||
EDX = tsc >> 32;
|
||||
break;
|
||||
}
|
||||
pclog("RDMSR: ECX = %08X, val = %08X%08X\n", ECX, EDX, EAX);
|
||||
cpu_log("RDMSR: ECX = %08X, val = %08X%08X\n", ECX, EDX, EAX);
|
||||
break;
|
||||
|
||||
case CPU_PENTIUMPRO:
|
||||
@@ -2700,7 +2700,7 @@ amd_k_invalid_wrmsr:
|
||||
case CPU_CxGX1:
|
||||
case CPU_Cx6x86MX:
|
||||
#endif
|
||||
pclog("WRMSR: ECX = %08X, val = %08X%08X\n", ECX, EDX, EAX);
|
||||
cpu_log("WRMSR: ECX = %08X, val = %08X%08X\n", ECX, EDX, EAX);
|
||||
switch (ECX) {
|
||||
case 0x10:
|
||||
tsc = EAX | ((uint64_t)EDX << 32);
|
||||
|
||||
@@ -774,6 +774,9 @@ const cpu_family_t cpu_families[] = {
|
||||
.name = "K6 (Model 7)",
|
||||
.internal_name = "k6_m7",
|
||||
.cpus = (const CPU[]) {
|
||||
{"100", CPU_K6, fpus_internal, 100000000, 1.5, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 9, 9, 4, 4, 12}, /* out of spec */
|
||||
{"133", CPU_K6, fpus_internal, 133333333, 2.0, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12,12, 6, 6, 16}, /* out of spec */
|
||||
{"166", CPU_K6, fpus_internal, 166666666, 2.5, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15,15, 7, 7, 20}, /* out of spec */
|
||||
{"200", CPU_K6, fpus_internal, 200000000, 3.0, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18,18, 9, 9, 24},
|
||||
{"233", CPU_K6, fpus_internal, 233333333, 3.5, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21,21,10,10, 28},
|
||||
{"266", CPU_K6, fpus_internal, 266666666, 4.0, 2200, 0x570, 0x570, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24,24,12,12, 32},
|
||||
@@ -786,6 +789,10 @@ const cpu_family_t cpu_families[] = {
|
||||
.name = "K6-2",
|
||||
.internal_name = "k6_2",
|
||||
.cpus = (const CPU[]) {
|
||||
{"100", CPU_K6_2, fpus_internal, 100000000, 1.5, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 9, 9, 4, 4, 12}, /* out of spec */
|
||||
{"133", CPU_K6_2, fpus_internal, 133333333, 2.0, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12, 12, 6, 6, 16}, /* out of spec */
|
||||
{"166", CPU_K6_2, fpus_internal, 166666666, 2.5, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15, 15, 7, 7, 20}, /* out of spec */
|
||||
{"200", CPU_K6_2, fpus_internal, 200000000, 3.0, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18, 18, 9, 9, 24}, /* out of spec */
|
||||
{"233", CPU_K6_2, fpus_internal, 233333333, 3.5, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21, 21, 10, 10, 28},
|
||||
{"266", CPU_K6_2, fpus_internal, 266666666, 4.0, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24, 24, 12, 12, 32},
|
||||
{"300", CPU_K6_2, fpus_internal, 300000000, 3.0, 2200, 0x580, 0x580, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27, 27, 9, 9, 36},
|
||||
@@ -808,11 +815,24 @@ const cpu_family_t cpu_families[] = {
|
||||
.name = "K6-2+",
|
||||
.internal_name = "k6_2p",
|
||||
.cpus = (const CPU[]) {
|
||||
{"450", CPU_K6_2P, fpus_internal, 450000000, 4.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 41, 41, 14, 14, 54},
|
||||
{"475", CPU_K6_2P, fpus_internal, 475000000, 5.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 43, 43, 15, 15, 57},
|
||||
{"500", CPU_K6_2P, fpus_internal, 500000000, 5.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 45, 45, 15, 15, 60},
|
||||
{"533", CPU_K6_2P, fpus_internal, 533333333, 5.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 48, 48, 17, 17, 64},
|
||||
{"550", CPU_K6_2P, fpus_internal, 550000000, 5.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 50, 50, 17, 17, 66},
|
||||
{"100", CPU_K6_2P, fpus_internal, 100000000, 1.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 9, 9, 4, 4, 12}, /* out of spec */
|
||||
{"133", CPU_K6_2P, fpus_internal, 133333333, 2.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12, 12, 6, 6, 16}, /* out of spec */
|
||||
{"166", CPU_K6_2P, fpus_internal, 166666666, 2.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15, 15, 7, 7, 20}, /* out of spec */
|
||||
{"200", CPU_K6_2P, fpus_internal, 200000000, 3.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18, 18, 9, 9, 24}, /* out of spec */
|
||||
{"233", CPU_K6_2P, fpus_internal, 233333333, 3.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21, 21, 10, 10, 28}, /* out of spec */
|
||||
{"266", CPU_K6_2P, fpus_internal, 266666666, 4.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24, 24, 12, 12, 32}, /* out of spec */
|
||||
{"300", CPU_K6_2P, fpus_internal, 300000000, 3.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27, 27, 9, 9, 36}, /* out of spec */
|
||||
{"333", CPU_K6_2P, fpus_internal, 332500000, 3.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 30, 30, 11, 11, 40}, /* out of spec */
|
||||
{"350", CPU_K6_2P, fpus_internal, 350000000, 3.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 32, 32, 11, 11, 42}, /* out of spec */
|
||||
{"366", CPU_K6_2P, fpus_internal, 366666666, 5.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 33, 33, 17, 17, 44}, /* out of spec */
|
||||
{"380", CPU_K6_2P, fpus_internal, 380000000, 4.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 34, 34, 12, 12, 46}, /* out of spec */
|
||||
{"400/66", CPU_K6_2P, fpus_internal, 400000000, 6.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 36, 36, 12, 12, 48}, /* out of spec */
|
||||
{"400/100", CPU_K6_2P, fpus_internal, 400000000, 4.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 36, 36, 12, 12, 48}, /* out of spec */
|
||||
{"450", CPU_K6_2P, fpus_internal, 450000000, 4.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 41, 41, 14, 14, 54},
|
||||
{"475", CPU_K6_2P, fpus_internal, 475000000, 5.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 43, 43, 15, 15, 57},
|
||||
{"500", CPU_K6_2P, fpus_internal, 500000000, 5.0, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 45, 45, 15, 15, 60},
|
||||
{"533", CPU_K6_2P, fpus_internal, 533333333, 5.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 48, 48, 17, 17, 64},
|
||||
{"550", CPU_K6_2P, fpus_internal, 550000000, 5.5, 2000, 0x5d4, 0x5d4, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 50, 50, 17, 17, 66},
|
||||
{"", 0}
|
||||
}
|
||||
}, {
|
||||
@@ -821,6 +841,17 @@ const cpu_family_t cpu_families[] = {
|
||||
.name = "K6-III",
|
||||
.internal_name = "k6_3",
|
||||
.cpus = (const CPU[]) {
|
||||
{"100", CPU_K6_3, fpus_internal, 100000000, 1.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 9, 9, 4, 4, 12}, /* out of spec */
|
||||
{"133", CPU_K6_3, fpus_internal, 133333333, 2.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12, 12, 6, 6, 16}, /* out of spec */
|
||||
{"166", CPU_K6_3, fpus_internal, 166666666, 2.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15, 15, 7, 7, 20}, /* out of spec */
|
||||
{"200", CPU_K6_3, fpus_internal, 200000000, 3.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18, 18, 9, 9, 24}, /* out of spec */
|
||||
{"233", CPU_K6_3, fpus_internal, 233333333, 3.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21, 21, 10, 10, 28}, /* out of spec */
|
||||
{"266", CPU_K6_3, fpus_internal, 266666666, 4.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24, 24, 12, 12, 32}, /* out of spec */
|
||||
{"300", CPU_K6_3, fpus_internal, 300000000, 3.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27, 27, 9, 9, 36}, /* out of spec */
|
||||
{"333", CPU_K6_3, fpus_internal, 332500000, 3.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 30, 30, 11, 11, 40}, /* out of spec */
|
||||
{"350", CPU_K6_3, fpus_internal, 350000000, 3.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 32, 32, 11, 11, 42}, /* out of spec */
|
||||
{"366", CPU_K6_3, fpus_internal, 366666666, 5.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 33, 33, 17, 17, 44}, /* out of spec */
|
||||
{"380", CPU_K6_3, fpus_internal, 380000000, 4.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 34, 34, 12, 12, 46}, /* out of spec */
|
||||
{"400", CPU_K6_3, fpus_internal, 400000000, 4.0, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 36, 36, 12, 12, 48},
|
||||
{"450", CPU_K6_3, fpus_internal, 450000000, 4.5, 2200, 0x591, 0x591, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 41, 41, 14, 14, 54},
|
||||
{"", 0}
|
||||
@@ -831,7 +862,17 @@ const cpu_family_t cpu_families[] = {
|
||||
.name = "K6-III+",
|
||||
.internal_name = "k6_3p",
|
||||
.cpus = (const CPU[]) {
|
||||
{"100", CPU_K6_3P, fpus_internal, 100000000, 1.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 7, 7, 4, 4, 9},
|
||||
{"100", CPU_K6_3P, fpus_internal, 100000000, 1.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 7, 7, 4, 4, 9}, /* out of spec */
|
||||
{"133", CPU_K6_3P, fpus_internal, 133333333, 2.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 12, 12, 6, 6, 16}, /* out of spec */
|
||||
{"166", CPU_K6_3P, fpus_internal, 166666666, 2.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 15, 15, 7, 7, 20}, /* out of spec */
|
||||
{"200", CPU_K6_3P, fpus_internal, 200000000, 3.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 18, 18, 9, 9, 24}, /* out of spec */
|
||||
{"233", CPU_K6_3P, fpus_internal, 233333333, 3.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 21, 21, 10, 10, 28}, /* out of spec */
|
||||
{"266", CPU_K6_3P, fpus_internal, 266666666, 4.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 24, 24, 12, 12, 32}, /* out of spec */
|
||||
{"300", CPU_K6_3P, fpus_internal, 300000000, 3.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 27, 27, 9, 9, 36}, /* out of spec */
|
||||
{"333", CPU_K6_3P, fpus_internal, 332500000, 3.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 30, 30, 11, 11, 40}, /* out of spec */
|
||||
{"350", CPU_K6_3P, fpus_internal, 350000000, 3.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 32, 32, 11, 11, 42}, /* out of spec */
|
||||
{"366", CPU_K6_3P, fpus_internal, 366666666, 5.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 33, 33, 17, 17, 44}, /* out of spec */
|
||||
{"380", CPU_K6_3P, fpus_internal, 380000000, 4.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 34, 34, 12, 12, 46}, /* out of spec */
|
||||
{"400", CPU_K6_3P, fpus_internal, 400000000, 4.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 36, 36, 12, 12, 48},
|
||||
{"450", CPU_K6_3P, fpus_internal, 450000000, 4.5, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 41, 41, 14, 14, 54},
|
||||
{"475", CPU_K6_3P, fpus_internal, 475000000, 5.0, 2000, 0x5d0, 0x5d0, 0, CPU_SUPPORTS_DYNAREC | CPU_REQUIRES_DYNAREC, 43, 43, 15, 15, 57},
|
||||
@@ -1522,11 +1563,18 @@ static const cpu_legacy_table_t cpus_K56[] = {
|
||||
{"k6_m6", 166666666, 2.5},
|
||||
{"k6_m6", 200000000, 3.0},
|
||||
{"k6_m6", 233333333, 3.5},
|
||||
{"k6_m7", 200000000, 3.0},
|
||||
{"k6_m7", 100000000, 1.5},
|
||||
{"k6_m7", 133333333, 2.0},
|
||||
{"k6_m7", 166666666, 2.5},
|
||||
{"k6_m7", 200000000, 3.0},
|
||||
{"k6_m7", 233333333, 3.5},
|
||||
{"k6_m7", 266666666, 4.0},
|
||||
{"k6_m7", 300000000, 4.5},
|
||||
{"k6_2", 233333333, 3.5},
|
||||
{"k6_2", 100000000, 1.5},
|
||||
{"k6_2", 133333333, 2.0},
|
||||
{"k6_2", 166666666, 2.5},
|
||||
{"k6_2", 200000000, 3.0},
|
||||
{"k6_2", 233333333, 3.5},
|
||||
{"k6_2", 266666666, 4.0},
|
||||
{"k6_2", 300000000, 4.5},
|
||||
{"k6_2", 366666666, 5.5},
|
||||
@@ -1534,14 +1582,24 @@ static const cpu_legacy_table_t cpus_K56[] = {
|
||||
};
|
||||
|
||||
static const cpu_legacy_table_t cpus_K56_SS7[] = {
|
||||
{"k6_m6", 166666666, 2.5},
|
||||
{"k6_m6", 66666666, 1.0},
|
||||
{"k6_m6", 100000000, 1.5},
|
||||
{"k6_m6", 133333333, 2.0},
|
||||
{"k6_m6", 166666666, 2.5},
|
||||
{"k6_m6", 200000000, 3.0},
|
||||
{"k6_m6", 233333333, 3.5},
|
||||
{"k6_m7", 200000000, 3.0},
|
||||
{"k6_m7", 100000000, 1.5},
|
||||
{"k6_m7", 133333333, 2.0},
|
||||
{"k6_m7", 166666666, 2.5},
|
||||
{"k6_m7", 200000000, 3.0},
|
||||
{"k6_m7", 233333333, 3.5},
|
||||
{"k6_m7", 266666666, 4.0},
|
||||
{"k6_m7", 300000000, 4.5},
|
||||
{"k6_2", 233333333, 3.5},
|
||||
{"k6_2", 100000000, 1.5},
|
||||
{"k6_2", 133333333, 2.0},
|
||||
{"k6_2", 166666666, 2.5},
|
||||
{"k6_2", 200000000, 3.0},
|
||||
{"k6_2", 233333333, 3.5},
|
||||
{"k6_2", 266666666, 4.0},
|
||||
{"k6_2", 300000000, 3.0},
|
||||
{"k6_2", 332500000, 3.5},
|
||||
@@ -1554,15 +1612,49 @@ static const cpu_legacy_table_t cpus_K56_SS7[] = {
|
||||
{"k6_2", 500000000, 5.0},
|
||||
{"k6_2", 533333333, 5.5},
|
||||
{"k6_2", 550000000, 5.5},
|
||||
{"k6_2p", 450000000, 4.5},
|
||||
{"k6_2p", 100000000, 1.5},
|
||||
{"k6_2p", 133333333, 2.0},
|
||||
{"k6_2p", 166666666, 2.5},
|
||||
{"k6_2p", 200000000, 3.0},
|
||||
{"k6_2p", 233333333, 3.5},
|
||||
{"k6_2p", 266666666, 4.0},
|
||||
{"k6_2p", 300000000, 3.0},
|
||||
{"k6_2p", 332500000, 3.5},
|
||||
{"k6_2p", 350000000, 3.5},
|
||||
{"k6_2p", 366666666, 5.5},
|
||||
{"k6_2p", 380000000, 4.0},
|
||||
{"k6_2p", 400000000, 4.0},
|
||||
{"k6_2p", 450000000, 4.5},
|
||||
{"k6_2p", 475000000, 5.0},
|
||||
{"k6_2p", 500000000, 5.0},
|
||||
{"k6_2p", 533333333, 5.5},
|
||||
{"k6_2p", 550000000, 5.5},
|
||||
{"k6_3", 400000000, 4.0},
|
||||
{"k6_3", 100000000, 1.5},
|
||||
{"k6_3", 133333333, 2.0},
|
||||
{"k6_3", 166666666, 2.5},
|
||||
{"k6_3", 200000000, 3.0},
|
||||
{"k6_3", 233333333, 3.5},
|
||||
{"k6_3", 266666666, 4.0},
|
||||
{"k6_3", 300000000, 3.0},
|
||||
{"k6_3", 332500000, 3.5},
|
||||
{"k6_3", 350000000, 3.5},
|
||||
{"k6_3", 366666666, 5.5},
|
||||
{"k6_3", 380000000, 4.0},
|
||||
{"k6_3", 400000000, 4.0},
|
||||
{"k6_3", 450000000, 4.5},
|
||||
{"k6_3p", 75000000, 1.5},
|
||||
{"k6_3p", 400000000, 4.0},
|
||||
{"k6_3p", 100000000, 1.5},
|
||||
{"k6_3p", 133333333, 2.0},
|
||||
{"k6_3p", 166666666, 2.5},
|
||||
{"k6_3p", 200000000, 3.0},
|
||||
{"k6_3p", 233333333, 3.5},
|
||||
{"k6_3p", 266666666, 4.0},
|
||||
{"k6_3p", 300000000, 3.0},
|
||||
{"k6_3p", 332500000, 3.5},
|
||||
{"k6_3p", 350000000, 3.5},
|
||||
{"k6_3p", 366666666, 5.5},
|
||||
{"k6_3p", 380000000, 4.0},
|
||||
{"k6_3p", 400000000, 4.0},
|
||||
{"k6_3p", 450000000, 4.5},
|
||||
{"k6_3p", 475000000, 5.0},
|
||||
{"k6_3p", 500000000, 5.0},
|
||||
|
||||
284
src/cpu/x86seg.c
@@ -942,173 +942,173 @@ void loadcscall(uint16_t seg)
|
||||
segdat[2] = (segdat[2] & ~(3 << (5+8))) | (CPL << (5+8));
|
||||
} else /* On non-conforming segments, set RPL = CPL */
|
||||
seg = (seg & 0xfffc) | CPL;
|
||||
CS = seg;
|
||||
do_seg_load(&cpu_state.seg_cs, segdat);
|
||||
if ((CPL == 3) && (oldcpl != 3))
|
||||
flushmmucache_cr3();
|
||||
CS = seg;
|
||||
do_seg_load(&cpu_state.seg_cs, segdat);
|
||||
if ((CPL == 3) && (oldcpl != 3))
|
||||
flushmmucache_cr3();
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
oldcpl = CPL;
|
||||
oldcpl = CPL;
|
||||
#endif
|
||||
#ifdef ENABLE_X86SEG_LOG
|
||||
x86seg_log("Complete\n");
|
||||
x86seg_log("Complete\n");
|
||||
#endif
|
||||
cycles -= timing_call_pm;
|
||||
} else {
|
||||
type = segdat[2] & 0x0f00;
|
||||
x86seg_log("Type %03X\n", type);
|
||||
switch (type) {
|
||||
case 0x0400: /* Call gate */
|
||||
case 0x0c00: /* 386 Call gate */
|
||||
x86seg_log("Callgate %08X\n", cpu_state.pc);
|
||||
cgate32 = (type & 0x0800);
|
||||
cgate16 = !cgate32;
|
||||
cycles -= timing_call_pm;
|
||||
} else {
|
||||
type = segdat[2] & 0x0f00;
|
||||
x86seg_log("Type %03X\n", type);
|
||||
switch (type) {
|
||||
case 0x0400: /* Call gate */
|
||||
case 0x0c00: /* 386 Call gate */
|
||||
x86seg_log("Callgate %08X\n", cpu_state.pc);
|
||||
cgate32 = (type & 0x0800);
|
||||
cgate16 = !cgate32;
|
||||
#ifndef USE_NEW_DYNAREC
|
||||
oldcs = CS;
|
||||
oldcs = CS;
|
||||
#endif
|
||||
count = segdat[2] & 0x001f;
|
||||
if (DPL < CPL) {
|
||||
x86gpf("loadcscall(): ex DPL < CPL",seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (DPL < (seg & 0x0003)) {
|
||||
x86gpf("loadcscall(): ex DPL < RPL", seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat[2] & 0x8000)) {
|
||||
x86np("Call gate not present", seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
seg2 = segdat[1];
|
||||
count = segdat[2] & 0x001f;
|
||||
if (DPL < CPL) {
|
||||
x86gpf("loadcscall(): ex DPL < CPL",seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (DPL < (seg & 0x0003)) {
|
||||
x86gpf("loadcscall(): ex DPL < RPL", seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat[2] & 0x8000)) {
|
||||
x86np("Call gate not present", seg & 0xfffc);
|
||||
return;
|
||||
}
|
||||
seg2 = segdat[1];
|
||||
|
||||
x86seg_log("New address : %04X:%08X\n", seg2, newpc);
|
||||
x86seg_log("New address : %04X:%08X\n", seg2, newpc);
|
||||
|
||||
if (!(seg2 & 0xfffc)) {
|
||||
x86gpf("loadcscall(): ex selector is NULL", 0);
|
||||
return;
|
||||
}
|
||||
addr = seg2 & 0xfff8;
|
||||
dt = (seg2 & 0x0004) ? &ldt : &gdt;
|
||||
if ((addr + 7) > dt->limit) {
|
||||
x86gpf("loadcscall(): ex Selector > DT limit", seg2 & 0xfff8);
|
||||
return;
|
||||
}
|
||||
addr += dt->base;
|
||||
read_descriptor(addr, segdat, segdat32, 1);
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
if (!(seg2 & 0xfffc)) {
|
||||
x86gpf("loadcscall(): ex selector is NULL", 0);
|
||||
return;
|
||||
}
|
||||
addr = seg2 & 0xfff8;
|
||||
dt = (seg2 & 0x0004) ? &ldt : &gdt;
|
||||
if ((addr + 7) > dt->limit) {
|
||||
x86gpf("loadcscall(): ex Selector > DT limit", seg2 & 0xfff8);
|
||||
return;
|
||||
}
|
||||
addr += dt->base;
|
||||
read_descriptor(addr, segdat, segdat32, 1);
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
|
||||
x86seg_log("Code seg2 call - %04X - %04X %04X %04X\n", seg2, segdat[0], segdat[1], segdat[2]);
|
||||
|
||||
if (DPL > CPL) {
|
||||
x86gpf("loadcscall(): ex DPL > CPL", seg2 & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat[2] & 0x8000)) {
|
||||
x86seg_log("Call gate CS not present %04X\n", seg2);
|
||||
x86np("Call gate CS not present", seg2 & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (DPL > CPL) {
|
||||
x86gpf("loadcscall(): ex DPL > CPL", seg2 & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat[2] & 0x8000)) {
|
||||
x86seg_log("Call gate CS not present %04X\n", seg2);
|
||||
x86np("Call gate CS not present", seg2 & 0xfffc);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (segdat[2] & 0x1f00) {
|
||||
case 0x1800: case 0x1900: case 0x1a00: case 0x1b00: /* Non-conforming code */
|
||||
if (DPL < CPL) {
|
||||
switch (segdat[2] & 0x1f00) {
|
||||
case 0x1800: case 0x1900: case 0x1a00: case 0x1b00: /* Non-conforming code */
|
||||
if (DPL < CPL) {
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
uint16_t oldcs = CS;
|
||||
uint16_t oldcs = CS;
|
||||
#endif
|
||||
oaddr = addr;
|
||||
/* Load new stack */
|
||||
oldss = SS;
|
||||
oldsp = oldsp2 = ESP;
|
||||
cpl_override = 1;
|
||||
if (tr.access & 8) {
|
||||
addr = 4 + tr.base + (DPL << 3);
|
||||
newss = readmemw(0, addr + 4);
|
||||
if (cpu_16bitbus) {
|
||||
newsp = readmemw(0, addr);
|
||||
newsp |= (readmemw(0, addr + 2) << 16);
|
||||
} else
|
||||
newsp = readmeml(0, addr);
|
||||
} else {
|
||||
addr = 2 + tr.base + (DPL * 4);
|
||||
newss = readmemw(0, addr + 2);
|
||||
oaddr = addr;
|
||||
/* Load new stack */
|
||||
oldss = SS;
|
||||
oldsp = oldsp2 = ESP;
|
||||
cpl_override = 1;
|
||||
if (tr.access & 8) {
|
||||
addr = 4 + tr.base + (DPL << 3);
|
||||
newss = readmemw(0, addr + 4);
|
||||
if (cpu_16bitbus) {
|
||||
newsp = readmemw(0, addr);
|
||||
}
|
||||
cpl_override = 0;
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
x86seg_log("New stack %04X:%08X\n", newss, newsp);
|
||||
if (!(newss & 0xfffc)) {
|
||||
x86ts(NULL, newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
addr = newss & 0xfff8;
|
||||
dt = (newss & 0x0004) ? &ldt : &gdt;
|
||||
if ((addr + 7) > dt->limit) {
|
||||
fatal("Bigger than DT limit %04X %08X %04X CSC SS\n", newss, addr, dt->limit);
|
||||
x86ts(NULL, newss & ~3);
|
||||
return;
|
||||
}
|
||||
addr += dt->base;
|
||||
x86seg_log("Read stack seg\n");
|
||||
read_descriptor(addr, segdat2, segdat232, 1);
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
x86seg_log("Read stack seg done!\n");
|
||||
if (((newss & 0x0003) != DPL) || (DPL2 != DPL)) {
|
||||
x86ts(NULL, newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if ((segdat2[2] & 0x1a00) != 0x1200) {
|
||||
x86ts("Call gate loading SS unknown type", newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat2[2] & 0x8000)) {
|
||||
x86ss("Call gate loading SS not present", newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!stack32)
|
||||
oldsp &= 0xffff;
|
||||
SS = newss;
|
||||
set_stack32((segdat2[3] & 0x0040) ? 1 : 0);
|
||||
if (stack32)
|
||||
ESP = newsp;
|
||||
else
|
||||
SP = newsp;
|
||||
newsp |= (readmemw(0, addr + 2) << 16);
|
||||
} else
|
||||
newsp = readmeml(0, addr);
|
||||
} else {
|
||||
addr = 2 + tr.base + (DPL * 4);
|
||||
newss = readmemw(0, addr + 2);
|
||||
newsp = readmemw(0, addr);
|
||||
}
|
||||
cpl_override = 0;
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
x86seg_log("New stack %04X:%08X\n", newss, newsp);
|
||||
if (!(newss & 0xfffc)) {
|
||||
x86ts(NULL, newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
addr = newss & 0xfff8;
|
||||
dt = (newss & 0x0004) ? &ldt : &gdt;
|
||||
if ((addr + 7) > dt->limit) {
|
||||
fatal("Bigger than DT limit %04X %08X %04X CSC SS\n", newss, addr, dt->limit);
|
||||
x86ts(NULL, newss & ~3);
|
||||
return;
|
||||
}
|
||||
addr += dt->base;
|
||||
x86seg_log("Read stack seg\n");
|
||||
read_descriptor(addr, segdat2, segdat232, 1);
|
||||
if (cpu_state.abrt)
|
||||
return;
|
||||
x86seg_log("Read stack seg done!\n");
|
||||
if (((newss & 0x0003) != DPL) || (DPL2 != DPL)) {
|
||||
x86ts(NULL, newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if ((segdat2[2] & 0x1a00) != 0x1200) {
|
||||
x86ts("Call gate loading SS unknown type", newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!(segdat2[2] & 0x8000)) {
|
||||
x86ss("Call gate loading SS not present", newss & 0xfffc);
|
||||
return;
|
||||
}
|
||||
if (!stack32)
|
||||
oldsp &= 0xffff;
|
||||
SS = newss;
|
||||
set_stack32((segdat2[3] & 0x0040) ? 1 : 0);
|
||||
if (stack32)
|
||||
ESP = newsp;
|
||||
else
|
||||
SP = newsp;
|
||||
|
||||
do_seg_load(&cpu_state.seg_ss, segdat2);
|
||||
do_seg_load(&cpu_state.seg_ss, segdat2);
|
||||
|
||||
x86seg_log("Set access 1\n");
|
||||
cpl_override = 1;
|
||||
writememw(0, addr + 4, segdat2[2] | 0x100); /* Set accessed bit */
|
||||
cpl_override = 0;
|
||||
x86seg_log("Set access 1\n");
|
||||
cpl_override = 1;
|
||||
writememw(0, addr + 4, segdat2[2] | 0x100); /* Set accessed bit */
|
||||
cpl_override = 0;
|
||||
|
||||
CS = seg2;
|
||||
do_seg_load(&cpu_state.seg_cs, segdat);
|
||||
if ((CPL == 3) && (oldcpl != 3))
|
||||
flushmmucache_cr3();
|
||||
CS = seg2;
|
||||
do_seg_load(&cpu_state.seg_cs, segdat);
|
||||
if ((CPL == 3) && (oldcpl != 3))
|
||||
flushmmucache_cr3();
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
oldcpl = CPL;
|
||||
oldcpl = CPL;
|
||||
#endif
|
||||
set_use32(segdat[3] & 0x0040);
|
||||
cpu_state.pc = newpc;
|
||||
set_use32(segdat[3] & 0x0040);
|
||||
cpu_state.pc = newpc;
|
||||
|
||||
x86seg_log("Set access 2\n");
|
||||
x86seg_log("Set access 2\n");
|
||||
|
||||
cpl_override = 1;
|
||||
writememw(0, oaddr + 4, segdat[2] | 0x100); /* Set accessed bit */
|
||||
cpl_override = 0;
|
||||
cpl_override = 1;
|
||||
writememw(0, oaddr + 4, segdat[2] | 0x100); /* Set accessed bit */
|
||||
cpl_override = 0;
|
||||
|
||||
x86seg_log("Type %04X\n", type);
|
||||
if (type == 0x0c00) {
|
||||
PUSHL(oldss);
|
||||
PUSHL(oldsp2);
|
||||
if (cpu_state.abrt) {
|
||||
SS = oldss;
|
||||
ESP = oldsp2;
|
||||
x86seg_log("Type %04X\n", type);
|
||||
if (type == 0x0c00) {
|
||||
PUSHL(oldss);
|
||||
PUSHL(oldsp2);
|
||||
if (cpu_state.abrt) {
|
||||
SS = oldss;
|
||||
ESP = oldsp2;
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
CS = oldcs;
|
||||
CS = oldcs;
|
||||
#endif
|
||||
return;
|
||||
return;
|
||||
}
|
||||
if (count) {
|
||||
while (count--) {
|
||||
|
||||
2324
src/device/kbc_at.c
1162
src/device/kbd_at.c
@@ -93,8 +93,6 @@ ps2_write(uint8_t val, void *priv)
|
||||
mouse_t *dev = (mouse_t *)priv;
|
||||
uint8_t temp;
|
||||
|
||||
pclog("ps2_write(%02X)\n", val);
|
||||
|
||||
if (dev->flags & FLAG_CTRLDAT) {
|
||||
dev->flags &= ~FLAG_CTRLDAT;
|
||||
|
||||
@@ -104,16 +102,16 @@ ps2_write(uint8_t val, void *priv)
|
||||
switch (dev->command) {
|
||||
case 0xe8: /* set mouse resolution */
|
||||
dev->resolution = val;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xf3: /* set sample rate */
|
||||
dev->sample_rate = val;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa); /* Command response */
|
||||
keyboard_at_adddata_mouse(0xfa); /* Command response */
|
||||
break;
|
||||
|
||||
default:
|
||||
keyboard_at_adddata_mouse_cmd(0xfc);
|
||||
keyboard_at_adddata_mouse(0xfc);
|
||||
}
|
||||
} else {
|
||||
dev->command = val;
|
||||
@@ -121,21 +119,21 @@ ps2_write(uint8_t val, void *priv)
|
||||
switch (dev->command) {
|
||||
case 0xe6: /* set scaling to 1:1 */
|
||||
dev->flags &= ~FLAG_SCALED;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xe7: /* set scaling to 2:1 */
|
||||
dev->flags |= FLAG_SCALED;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xe8: /* set mouse resolution */
|
||||
dev->flags |= FLAG_CTRLDAT;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xe9: /* status request */
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
temp = (dev->flags & 0x30);
|
||||
if (mouse_buttons & 0x01)
|
||||
temp |= 0x01;
|
||||
@@ -143,13 +141,13 @@ ps2_write(uint8_t val, void *priv)
|
||||
temp |= 0x02;
|
||||
if (mouse_buttons & 0x04)
|
||||
temp |= 0x03;
|
||||
keyboard_at_adddata_mouse_cmd(temp);
|
||||
keyboard_at_adddata_mouse_cmd(dev->resolution);
|
||||
keyboard_at_adddata_mouse_cmd(dev->sample_rate);
|
||||
keyboard_at_adddata_mouse(temp);
|
||||
keyboard_at_adddata_mouse(dev->resolution);
|
||||
keyboard_at_adddata_mouse(dev->sample_rate);
|
||||
break;
|
||||
|
||||
case 0xeb: /* Get mouse data */
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
|
||||
temp = 0;
|
||||
if (dev->x < 0)
|
||||
@@ -162,36 +160,36 @@ ps2_write(uint8_t val, void *priv)
|
||||
temp |= 2;
|
||||
if ((mouse_buttons & 4) && (dev->flags & FLAG_INTELLI))
|
||||
temp |= 4;
|
||||
keyboard_at_adddata_mouse_cmd(temp);
|
||||
keyboard_at_adddata_mouse_cmd(dev->x & 0xff);
|
||||
keyboard_at_adddata_mouse_cmd(dev->y & 0xff);
|
||||
keyboard_at_adddata_mouse(temp);
|
||||
keyboard_at_adddata_mouse(dev->x & 0xff);
|
||||
keyboard_at_adddata_mouse(dev->y & 0xff);
|
||||
if (dev->flags & FLAG_INTMODE)
|
||||
keyboard_at_adddata_mouse_cmd(dev->z);
|
||||
keyboard_at_adddata_mouse(dev->z);
|
||||
break;
|
||||
|
||||
case 0xf2: /* read ID */
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
if (dev->flags & FLAG_INTMODE)
|
||||
keyboard_at_adddata_mouse_cmd(0x03);
|
||||
keyboard_at_adddata_mouse(0x03);
|
||||
else
|
||||
keyboard_at_adddata_mouse_cmd(0x00);
|
||||
keyboard_at_adddata_mouse(0x00);
|
||||
break;
|
||||
|
||||
case 0xf3: /* set command mode */
|
||||
dev->flags |= FLAG_CTRLDAT;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa); /* ACK for command byte */
|
||||
keyboard_at_adddata_mouse(0xfa); /* ACK for command byte */
|
||||
break;
|
||||
|
||||
case 0xf4: /* enable */
|
||||
dev->flags |= FLAG_ENABLED;
|
||||
mouse_scan = 1;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xf5: /* disable */
|
||||
dev->flags &= ~FLAG_ENABLED;
|
||||
mouse_scan = 0;
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
break;
|
||||
|
||||
case 0xf6: /* set defaults */
|
||||
@@ -201,15 +199,15 @@ mouse_reset:
|
||||
dev->flags &= 0x88;
|
||||
mouse_scan = 1;
|
||||
keyboard_at_mouse_reset();
|
||||
keyboard_at_adddata_mouse_cmd(0xfa);
|
||||
keyboard_at_adddata_mouse(0xfa);
|
||||
if (dev->command == 0xff) {
|
||||
keyboard_at_adddata_mouse_cmd(0xaa);
|
||||
keyboard_at_adddata_mouse_cmd(0x00);
|
||||
keyboard_at_adddata_mouse(0xaa);
|
||||
keyboard_at_adddata_mouse(0x00);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
keyboard_at_adddata_mouse_cmd(0xfe);
|
||||
keyboard_at_adddata_mouse(0xfe);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,9 +239,6 @@ ps2_poll(int x, int y, int z, int b, void *priv)
|
||||
return(0xff);
|
||||
#endif
|
||||
|
||||
if ((keyboard_at_fixed_channel() & 0xf00) == 0x200)
|
||||
return(0xff);
|
||||
|
||||
if (!mouse_scan)
|
||||
return(0xff);
|
||||
|
||||
|
||||
@@ -717,20 +717,8 @@ serial_set_next_inst(int ni)
|
||||
|
||||
void
|
||||
serial_standalone_init(void) {
|
||||
if (next_inst == 0) {
|
||||
device_add_inst(&i8250_device, 1);
|
||||
device_add_inst(&i8250_device, 2);
|
||||
device_add_inst(&i8250_device, 3);
|
||||
device_add_inst(&i8250_device, 4);
|
||||
} else if (next_inst == 1) {
|
||||
device_add_inst(&i8250_device, 2);
|
||||
device_add_inst(&i8250_device, 3);
|
||||
device_add_inst(&i8250_device, 4);
|
||||
} else if (next_inst == 2) {
|
||||
device_add_inst(&i8250_device, 3);
|
||||
device_add_inst(&i8250_device, 4);
|
||||
} else
|
||||
device_add_inst(&i8250_device, 4);
|
||||
for ( ; next_inst < 4; )
|
||||
device_add_inst(&i8250_device, next_inst + 1);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ fdd_load(int drive, char *fn)
|
||||
while (loaders[c].ext) {
|
||||
if (!strcasecmp(p, (char *) loaders[c].ext) && (size == loaders[c].size || loaders[c].size == -1)) {
|
||||
driveloaders[drive] = c;
|
||||
strcpy(floppyfns[drive], fn);
|
||||
if (floppyfns[drive] != fn) strcpy(floppyfns[drive], fn);
|
||||
d86f_setup(drive);
|
||||
loaders[c].load(drive, floppyfns[drive]);
|
||||
drive_empty[drive] = 0;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*
|
||||
* Copyright 2016-2020 Miran Grca.
|
||||
* Copyright 2017-2020 Fred N. van Kempen.
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#ifndef EMU_86BOX_H
|
||||
# define EMU_86BOX_H
|
||||
@@ -32,6 +33,9 @@
|
||||
#define SCREENSHOT_PATH "screenshots"
|
||||
|
||||
|
||||
/* Default language 0xFFFF = from system, 0x409 = en-US */
|
||||
#define DEFAULT_LANGUAGE 0x0409
|
||||
|
||||
#if defined(ENABLE_BUSLOGIC_LOG) || \
|
||||
defined(ENABLE_CDROM_LOG) || \
|
||||
defined(ENABLE_D86F_LOG) || \
|
||||
@@ -64,6 +68,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Global variables. */
|
||||
extern uint32_t lang_sys; /* (-) system language code */
|
||||
|
||||
extern int dump_on_exit; /* (O) dump regs on exit*/
|
||||
extern int do_dump_config; /* (O) dump cfg after load */
|
||||
extern int start_in_fullscreen; /* (O) start in fullscreen */
|
||||
@@ -90,6 +96,7 @@ extern int window_w, window_h, /* (C) window size and */
|
||||
vid_resize, /* (C) allow resizing */
|
||||
invert_display, /* (C) invert the display */
|
||||
suppress_overscan; /* (C) suppress overscans */
|
||||
extern uint32_t lang_id; /* (C) language code identifier */
|
||||
extern int scale; /* (C) screen scale factor */
|
||||
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
|
||||
extern int vid_api; /* (C) video renderer */
|
||||
@@ -169,6 +176,7 @@ extern void fatal(const char *fmt, ...);
|
||||
extern void set_screen_size(int x, int y);
|
||||
extern void reset_screen_size(void);
|
||||
extern void set_screen_size_natural(void);
|
||||
extern void update_mouse_msg();
|
||||
#if 0
|
||||
extern void pc_reload(wchar_t *fn);
|
||||
#endif
|
||||
|
||||
@@ -110,9 +110,9 @@ typedef struct {
|
||||
/* Ports category */
|
||||
char parallel_devices[3][32]; /* LPT device names */
|
||||
#ifdef USE_SERIAL_DEVICES
|
||||
char serial_devices[2][32]; /* Serial device names */
|
||||
char serial_devices[4][32]; /* Serial device names */
|
||||
#endif
|
||||
int serial_enabled[2], /* Serial ports 1 and 2 enabled */
|
||||
int serial_enabled[4], /* Serial ports 1 and 2 enabled */
|
||||
parallel_enabled[3]; /* LPT1, LPT2, LPT3 enabled */
|
||||
|
||||
/* Other peripherals category */
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
#define IDS_6146 6146 // "1.5%% below perfect RPM"
|
||||
#define IDS_6147 6147 // "2%% below perfect RPM"
|
||||
|
||||
#define IDS_7168 7168 // "English (United States)"
|
||||
#define IDS_7168 7168 // "(System Default)"
|
||||
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
|
||||
@@ -408,7 +408,7 @@ extern void machine_at_award_common_init(const machine_t *);
|
||||
|
||||
extern void machine_at_sp4_common_init(const machine_t *model);
|
||||
|
||||
extern int machine_at_excalibur_pci_init(const machine_t *);
|
||||
extern int machine_at_excaliburpci_init(const machine_t *);
|
||||
extern int machine_at_p5mp3_init(const machine_t *);
|
||||
extern int machine_at_dellxp60_init(const machine_t *);
|
||||
extern int machine_at_opti560l_init(const machine_t *);
|
||||
@@ -422,7 +422,7 @@ extern int machine_at_excalibur_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p5vl_init(const machine_t *);
|
||||
|
||||
extern int machine_at_excalibur_pci_2_init(const machine_t *);
|
||||
extern int machine_at_excaliburpci2_init(const machine_t *);
|
||||
extern int machine_at_p5sp4_init(const machine_t *);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
@@ -437,7 +437,6 @@ extern int machine_at_430nx_init(const machine_t *);
|
||||
extern int machine_at_acerv30_init(const machine_t *);
|
||||
extern int machine_at_apollo_init(const machine_t *);
|
||||
extern int machine_at_exp8551_init(const machine_t *);
|
||||
extern int machine_at_vectra54_init(const machine_t *);
|
||||
extern int machine_at_zappa_init(const machine_t *);
|
||||
extern int machine_at_powermatev_init(const machine_t *);
|
||||
extern int machine_at_mb500n_init(const machine_t *);
|
||||
@@ -450,13 +449,10 @@ extern int machine_at_hot543_init(const machine_t *);
|
||||
extern int machine_at_p54sp4_init(const machine_t *);
|
||||
extern int machine_at_sq588_init(const machine_t *);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
#define at_vectra54_get_device at_endeavor_get_device
|
||||
#endif
|
||||
|
||||
/* m_at_socket7_3v.c */
|
||||
extern int machine_at_p54tp4xe_init(const machine_t *);
|
||||
extern int machine_at_mr586_init(const machine_t *);
|
||||
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
|
||||
extern int machine_at_gw2katx_init(const machine_t *);
|
||||
extern int machine_at_thor_init(const machine_t *);
|
||||
extern int machine_at_mrthor_init(const machine_t *);
|
||||
@@ -474,9 +470,11 @@ extern int machine_at_p5vxb_init(const machine_t *);
|
||||
extern int machine_at_gw2kte_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ap5s_init(const machine_t *);
|
||||
extern int machine_at_vectra54_init(const machine_t *);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *at_endeavor_get_device(void);
|
||||
#define at_vectra54_get_device at_endeavor_get_device
|
||||
extern const device_t *at_thor_get_device(void);
|
||||
#define at_mrthor_get_device at_thor_get_device
|
||||
extern const device_t *at_pb640_get_device(void);
|
||||
@@ -488,7 +486,7 @@ extern int machine_at_p55t2p4_init(const machine_t *);
|
||||
extern int machine_at_m7shi_init(const machine_t *);
|
||||
extern int machine_at_tc430hx_init(const machine_t *);
|
||||
extern int machine_at_equium5200_init(const machine_t *);
|
||||
extern int machine_at_pcv240_init(const machine_t *);
|
||||
extern int machine_at_pcv90_init(const machine_t *);
|
||||
extern int machine_at_p65up5_cp55t2d_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ap5vm_init(const machine_t *);
|
||||
@@ -546,7 +544,7 @@ extern int machine_at_v60n_init(const machine_t *);
|
||||
extern int machine_at_vs440fx_init(const machine_t *);
|
||||
extern int machine_at_ap440fx_init(const machine_t *);
|
||||
extern int machine_at_mb600n_init(const machine_t *);
|
||||
extern int machine_at_8500ttc_init(const machine_t *);
|
||||
extern int machine_at_8600ttc_init(const machine_t *);
|
||||
extern int machine_at_m6mi_init(const machine_t *);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge);
|
||||
@@ -570,7 +568,7 @@ extern int machine_at_bf6_init(const machine_t *);
|
||||
extern int machine_at_ax6bc_init(const machine_t *);
|
||||
extern int machine_at_atc6310bxii_init(const machine_t *);
|
||||
extern int machine_at_686bx_init(const machine_t *);
|
||||
extern int machine_at_tsunamiatx_init(const machine_t *);
|
||||
extern int machine_at_s1846_init(const machine_t *);
|
||||
extern int machine_at_p6sba_init(const machine_t *);
|
||||
extern int machine_at_ficka6130_init(const machine_t *);
|
||||
extern int machine_at_p3v133_init(const machine_t *);
|
||||
@@ -582,7 +580,11 @@ extern int machine_at_borapro_init(const machine_t *);
|
||||
extern int machine_at_ms6168_init(const machine_t *);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *at_tsunamiatx_get_device(void);
|
||||
extern const device_t *at_s1846_get_device(void);
|
||||
#define at_s1857_get_device at_s1846_get_device
|
||||
#define at_gt694va_get_device at_s1846_get_device
|
||||
extern const device_t *at_ms6168_get_device(void);
|
||||
#define at_borapro_get_device at_ms6168_get_device
|
||||
#endif
|
||||
|
||||
/* m_at_slot2.c */
|
||||
@@ -597,13 +599,13 @@ extern int machine_at_cubx_init(const machine_t *);
|
||||
extern int machine_at_atc7020bxii_init(const machine_t *);
|
||||
extern int machine_at_ambx133_init(const machine_t *);
|
||||
extern int machine_at_awo671r_init(const machine_t *);
|
||||
extern int machine_at_63a_init(const machine_t *);
|
||||
extern int machine_at_63a1_init(const machine_t *);
|
||||
extern int machine_at_s370sba_init(const machine_t *);
|
||||
extern int machine_at_apas3_init(const machine_t *);
|
||||
extern int machine_at_gt694va_init(const machine_t *);
|
||||
extern int machine_at_cuv4xls_init(const machine_t *);
|
||||
extern int machine_at_6via90ap_init(const machine_t *);
|
||||
extern int machine_at_trinity371_init(const machine_t *);
|
||||
extern int machine_at_s1857_init(const machine_t *);
|
||||
extern int machine_at_p6bap_init(const machine_t *);
|
||||
|
||||
/* m_at_misc.c */
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*
|
||||
* Copyright 2016-2019 Miran Grca.
|
||||
* Copyright 2017-2019 Fred N. van Kempen.
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#ifndef EMU_PLAT_H
|
||||
# define EMU_PLAT_H
|
||||
@@ -121,9 +122,11 @@ extern void plat_setfullscreen(int on);
|
||||
extern void plat_resize(int x, int y);
|
||||
extern void plat_vidapi_enable(int enabled);
|
||||
extern void plat_vid_reload_options(void);
|
||||
extern uint32_t plat_language_code(char* langcode);
|
||||
extern void plat_language_code_r(uint32_t lcid, char* outbuf, int len);
|
||||
|
||||
/* Resource management. */
|
||||
extern void set_language(int id);
|
||||
extern void set_language(uint32_t id);
|
||||
extern wchar_t *plat_get_string(int id);
|
||||
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#define DLG_SND_GAIN 103 /* top-level dialog */
|
||||
#define DLG_NEW_FLOPPY 104 /* top-level dialog */
|
||||
#define DLG_SPECIFY_DIM 105 /* top-level dialog */
|
||||
#define DLG_PROG_SETT 106 /* top-level dialog */
|
||||
#define DLG_CONFIG 110 /* top-level dialog */
|
||||
#define DLG_CFG_MACHINE 111 /* sub-dialog of config */
|
||||
#define DLG_CFG_VIDEO 112 /* sub-dialog of config */
|
||||
@@ -122,10 +123,6 @@
|
||||
#define IDC_RADIO_TS_DISABLED 1006
|
||||
#define IDC_RADIO_TS_LOCAL 1007
|
||||
#define IDC_RADIO_TS_UTC 1008
|
||||
/* Leave this as is until we finally get into localization in 86Box 3.00(?). */
|
||||
#if 0
|
||||
#define IDC_COMBO_LANG 1009
|
||||
#endif
|
||||
|
||||
#define IDC_COMBO_MACHINE_TYPE 1010
|
||||
#define IDC_COMBO_MACHINE 1011 /* machine/cpu config */
|
||||
@@ -267,6 +264,10 @@
|
||||
#define IDC_COMBO_DISK_SIZE 1201
|
||||
#define IDC_COMBO_RPM_MODE 1202
|
||||
|
||||
#define IDC_COMBO_LANG 1009 /* change language dialog */
|
||||
#define IDC_CHECKBOX_GLOBAL 1300
|
||||
#define IDC_BUTTON_DEFAULT 1302
|
||||
|
||||
/* For the DeviceConfig code, re-do later. */
|
||||
#define IDC_CONFIG_BASE 1300
|
||||
#define IDC_CONFIGURE_VID 1300
|
||||
@@ -354,6 +355,8 @@
|
||||
#define IDM_DISCORD 40090
|
||||
#endif
|
||||
|
||||
#define IDM_VID_PROG_SETT 40091
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
#define IDM_VID_GL_FPS_BLITTER 40100
|
||||
#define IDM_VID_GL_FPS_25 40101
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#define SERIAL_NS16450 2
|
||||
#define SERIAL_NS16550 3
|
||||
|
||||
#define SERIAL_FIFO_SIZE 16
|
||||
|
||||
/* Default settings for the standard ports. */
|
||||
#define SERIAL1_ADDR 0x03f8
|
||||
#define SERIAL1_IRQ 4
|
||||
@@ -37,6 +39,8 @@
|
||||
#define SERIAL4_ADDR 0x02e8
|
||||
#define SERIAL4_IRQ 3
|
||||
|
||||
#define MAX_SERIAL 4
|
||||
|
||||
|
||||
struct serial_device_s;
|
||||
struct serial_s;
|
||||
@@ -54,7 +58,7 @@ typedef struct serial_s
|
||||
|
||||
uint8_t rcvr_fifo_pos, xmit_fifo_pos,
|
||||
pad0, pad1,
|
||||
rcvr_fifo[16], xmit_fifo[16];
|
||||
rcvr_fifo[SERIAL_FIFO_SIZE], xmit_fifo[SERIAL_FIFO_SIZE];
|
||||
|
||||
pc_timer_t transmit_timer, timeout_timer;
|
||||
double clock_src, transmit_period;
|
||||
|
||||
@@ -18,14 +18,97 @@
|
||||
# define EMU_SND_AC97_H
|
||||
|
||||
|
||||
#define AC97_VENDOR_ID(f, s, t, dev) ((((f) & 0xff) << 24) | (((s) & 0xff) << 16) | (((t) & 0xff) << 8) | ((dev) & 0xff))
|
||||
|
||||
/* Misc support bits (misc_flags). Most of these are not part of any
|
||||
registers, but control enabling/disabling of registers and bits. */
|
||||
#define AC97_MASTER_6B (1 << 0) /* register 02 bits [13,5] (ML5/MR5) */
|
||||
#define AC97_AUXOUT (1 << 1) /* register 04 */
|
||||
#define AC97_AUXOUT_6B (1 << 2) /* register 04 bits [13,5] (ML5/MR5) */
|
||||
#define AC97_MONOOUT (1 << 3) /* register 06 */
|
||||
#define AC97_MONOOUT_6B (1 << 4) /* register 06 bit 5 (MM5) */
|
||||
#define AC97_PCBEEP (1 << 5) /* register 0A */
|
||||
#define AC97_PCBEEP_GEN (1 << 6) /* register 0A bits [12:5] (F[7:0]) */
|
||||
#define AC97_PHONE (1 << 9) /* register 0C */
|
||||
#define AC97_VIDEO (1 << 10) /* register 14 */
|
||||
#define AC97_AUXIN (1 << 11) /* register 16 */
|
||||
#define AC97_POP (1 << 15) /* register 20 bit 15 (POP) - definition shared with General Purpose bits */
|
||||
#define AC97_MS (1 << 8) /* register 20 bit 8 (MS) - definition shared with General Purpose bits */
|
||||
#define AC97_LPBK (1 << 7) /* register 20 bit 7 (LPBK) - definition shared with General Purpose bits */
|
||||
#define AC97_DSA (1 << 12) /* register 28 bits [5:4] (DSA[1:0]) */
|
||||
#define AC97_LFE_6B (1 << 13) /* register 36 bit 13 (LFE5) */
|
||||
#define AC97_CENTER_6B (1 << 14) /* register 36 bit 5 (CNT5) */
|
||||
#define AC97_SURR_6B (1 << 16) /* register 38 bits [13,5] (LSR5/RSR5) */
|
||||
|
||||
/* Reset bits (reset_flags), register 00. */
|
||||
#define AC97_MICPCM (1 << 0)
|
||||
#define AC97_MODEMLINE (1 << 1)
|
||||
#define AC97_TONECTL (1 << 2)
|
||||
#define AC97_SIMSTEREO (1 << 3)
|
||||
#define AC97_HPOUT (1 << 4)
|
||||
#define AC97_LOUDNESS (1 << 5)
|
||||
#define AC97_DAC_18B (1 << 6)
|
||||
#define AC97_DAC_20B (1 << 7)
|
||||
#define AC97_ADC_18B (1 << 8)
|
||||
#define AC97_ADC_20B (1 << 9)
|
||||
#define AC97_3D_SHIFT 10
|
||||
|
||||
/* Extended Audio ID bits (extid_flags), register 28. */
|
||||
#define AC97_VRA (1 << 0)
|
||||
#define AC97_DRA (1 << 1)
|
||||
#define AC97_SPDIF (1 << 2)
|
||||
#define AC97_VRM (1 << 3)
|
||||
#define AC97_CDAC (1 << 6)
|
||||
#define AC97_SDAC (1 << 7)
|
||||
#define AC97_LDAC (1 << 8)
|
||||
#define AC97_AMAP (1 << 9)
|
||||
#define AC97_REV_2_1 (0 << 10)
|
||||
#define AC97_REV_2_2 (1 << 10)
|
||||
#define AC97_REV_2_3 (2 << 10)
|
||||
#define AC97_REV_MASK (3 << 10)
|
||||
|
||||
/* Volume bits. */
|
||||
#define AC97_MUTE (1 << 15)
|
||||
#define AC97_MUTE_L (1 << 15)
|
||||
#define AC97_MUTE_R (1 << 7)
|
||||
|
||||
/* General Purpose bits, register 20. */
|
||||
/* POP already defined */
|
||||
#define AC97_ST (1 << 14)
|
||||
#define AC97_3D (1 << 13)
|
||||
#define AC97_LD (1 << 12)
|
||||
#define AC97_DRSS_MASK (3 << 10)
|
||||
#define AC97_MIX (1 << 9)
|
||||
/* MS already defined */
|
||||
/* LPBK already defined */
|
||||
|
||||
/* Extended Audio Status/Control bits, register 2A. */
|
||||
#define AC97_SPSA_SHIFT 4
|
||||
#define AC97_SPSA_MASK 3
|
||||
#define AC97_MADC (1 << 9)
|
||||
#define AC97_SPCV (1 << 10)
|
||||
#define AC97_PRI (1 << 11)
|
||||
#define AC97_PRJ (1 << 12)
|
||||
#define AC97_PRK (1 << 13)
|
||||
#define AC97_PRL (1 << 14)
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32_t vendor_id;
|
||||
uint8_t codec_id, regs[128];
|
||||
const uint16_t index, value, write_mask;
|
||||
} ac97_vendor_reg_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t vendor_id, max_rate, misc_flags;
|
||||
uint16_t reset_flags, extid_flags,
|
||||
powerdown_mask, regs[64];
|
||||
uint8_t codec_id, vendor_reg_page_max;
|
||||
const ac97_vendor_reg_t *vendor_regs;
|
||||
uint16_t *vendor_reg_pages;
|
||||
} ac97_codec_t;
|
||||
|
||||
|
||||
extern uint8_t ac97_codec_read(ac97_codec_t *dev, uint8_t reg);
|
||||
extern void ac97_codec_write(ac97_codec_t *dev, uint8_t reg, uint8_t val);
|
||||
extern uint16_t ac97_codec_readw(ac97_codec_t *dev, uint8_t reg);
|
||||
extern void ac97_codec_writew(ac97_codec_t *dev, uint8_t reg, uint16_t val);
|
||||
extern void ac97_codec_reset(void *priv);
|
||||
extern void ac97_codec_getattn(void *priv, uint8_t reg, int *l, int *r);
|
||||
extern uint32_t ac97_codec_getrate(void *priv, uint8_t reg);
|
||||
|
||||
@@ -13,19 +13,43 @@
|
||||
* Copyright 2020 Miran Grca.
|
||||
*/
|
||||
|
||||
#define _LSTR(s) L ## s
|
||||
#define LSTR(s) _LSTR(s)
|
||||
|
||||
/* Version info. */
|
||||
#define EMU_NAME "@CMAKE_PROJECT_NAME@"
|
||||
#define EMU_NAME_W L"@CMAKE_PROJECT_NAME@"
|
||||
#define EMU_NAME_W LSTR(EMU_NAME)
|
||||
|
||||
#define EMU_VERSION "@CMAKE_PROJECT_VERSION@"
|
||||
#define EMU_VERSION_W L"@CMAKE_PROJECT_VERSION@"
|
||||
#define EMU_VERSION_EX "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@0"
|
||||
#define EMU_VERSION_W LSTR(EMU_VERSION)
|
||||
#define EMU_VERSION_EX "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@@CMAKE_PROJECT_VERSION_PATCH@"
|
||||
#define EMU_VERSION_MAJ @CMAKE_PROJECT_VERSION_MAJOR@
|
||||
#define EMU_VERSION_MIN @CMAKE_PROJECT_VERSION_MINOR@
|
||||
#define EMU_VERSION_PATCH @CMAKE_PROJECT_VERSION_PATCH@
|
||||
|
||||
#define COPYRIGHT_YEAR "2020"
|
||||
#cmakedefine EMU_BUILD "@EMU_BUILD@"
|
||||
#define EMU_BUILD_NUM @EMU_BUILD_NUM@
|
||||
#cmakedefine EMU_GIT_HASH "@EMU_GIT_HASH@"
|
||||
|
||||
#ifdef EMU_BUILD
|
||||
# define EMU_BUILD_W LSTR(EMU_BUILD)
|
||||
# define EMU_VERSION_FULL EMU_VERSION " [" EMU_BUILD "]"
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W L" [" EMU_BUILD_W L"]"
|
||||
#else
|
||||
# define EMU_VERSION_FULL EMU_VERSION
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W
|
||||
#endif
|
||||
#ifdef EMU_GIT_HASH
|
||||
# define EMU_GIT_HASH_W LSTR(EMU_GIT_HASH)
|
||||
#endif
|
||||
|
||||
#define COPYRIGHT_YEAR "@EMU_COPYRIGHT_YEAR@"
|
||||
|
||||
/* Web URL info. */
|
||||
#define EMU_SITE L"@CMAKE_PROJECT_HOMEPAGE_URL@"
|
||||
#define EMU_SITE L"86box.net"
|
||||
#define EMU_ROMS_URL L"https://github.com/86Box/roms/releases/latest"
|
||||
#define EMU_DOCS_URL L"https://86box.readthedocs.io"
|
||||
#ifdef RELEASE_BUILD
|
||||
# define EMU_DOCS_URL L"https://86box.readthedocs.io/en/v@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@/"
|
||||
#else
|
||||
# define EMU_DOCS_URL L"https://86box.readthedocs.io"
|
||||
#endif
|
||||
|
||||
@@ -3361,12 +3361,6 @@ voodoo_recomp++;
|
||||
void voodoo_codegen_init(voodoo_t *voodoo)
|
||||
{
|
||||
int c;
|
||||
#if defined(__linux__) || defined(__APPLE__)
|
||||
void *start;
|
||||
size_t len;
|
||||
long pagesize = sysconf(_SC_PAGESIZE);
|
||||
long pagemask = ~(pagesize - 1);
|
||||
#endif
|
||||
|
||||
voodoo->codegen_data = plat_mmap(sizeof(voodoo_x86_data_t) * BLOCK_NUM*4, 1);
|
||||
|
||||
|
||||
@@ -194,6 +194,9 @@ extern void svga_dump_vram(void);
|
||||
|
||||
extern uint32_t video_color_transform(uint32_t color);
|
||||
|
||||
extern void agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable);
|
||||
extern void agpgart_set_gart(void *handle, uint32_t base);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -432,6 +435,9 @@ extern const device_t velocity_100_agp_device;
|
||||
|
||||
/* Wyse 700 */
|
||||
extern const device_t wy700_device;
|
||||
|
||||
/* AGP GART */
|
||||
extern const device_t agpgart_device;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
* Copyright 2008-2019 Sarah Walker.
|
||||
* Copyright 2016-2019 Miran Grca.
|
||||
* Copyright 2017-2019 Fred N. van Kempen.
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#ifndef PLAT_WIN_H
|
||||
# define PLAT_WIN_H
|
||||
@@ -105,7 +106,6 @@ extern HINSTANCE hinstance;
|
||||
extern HWND hwndMain,
|
||||
hwndRender;
|
||||
extern HANDLE ghMutex;
|
||||
extern LCID lang_id;
|
||||
extern HICON hIcon[256];
|
||||
extern RECT oldclip;
|
||||
extern int sbar_height, user_resize;
|
||||
@@ -129,7 +129,8 @@ extern void do_start(void);
|
||||
extern void do_stop(void);
|
||||
|
||||
/* Internal platform support functions. */
|
||||
extern void set_language(int id);
|
||||
extern int has_language_changed(uint32_t id);
|
||||
extern void set_language(uint32_t id);
|
||||
extern int get_vidpause(void);
|
||||
extern void show_cursor(int);
|
||||
|
||||
@@ -183,6 +184,9 @@ extern void NewFloppyDialogCreate(HWND hwnd, int id, int part);
|
||||
/* Functions in win_specify_dim.c: */
|
||||
extern void SpecifyDimensionsDialogCreate(HWND hwnd);
|
||||
|
||||
/* Functions in win_lang.c: */
|
||||
extern void ProgSettDlgCreate(HWND hwnd);
|
||||
|
||||
|
||||
/* Functions in win_settings.c: */
|
||||
#define SETTINGS_PAGE_MACHINE 0
|
||||
|
||||
@@ -13,19 +13,32 @@
|
||||
* Copyright 2020 Miran Grca.
|
||||
*/
|
||||
|
||||
#define _LSTR(s) L ## s
|
||||
#define LSTR(s) _LSTR(s)
|
||||
|
||||
/* Version info. */
|
||||
#define EMU_NAME "86Box"
|
||||
#define EMU_NAME_W L"86Box"
|
||||
#define EMU_NAME_W LSTR(EMU_NAME)
|
||||
|
||||
#define EMU_VERSION "3.0"
|
||||
#define EMU_VERSION_W L"3.0"
|
||||
#define EMU_VERSION_W LSTR(EMU_VERSION)
|
||||
#define EMU_VERSION_EX "3.00"
|
||||
#define EMU_VERSION_MAJ 3
|
||||
#define EMU_VERSION_MIN 0
|
||||
#define EMU_VERSION_PATCH 0
|
||||
|
||||
#define COPYRIGHT_YEAR "2020"
|
||||
#define EMU_BUILD_NUM 0
|
||||
|
||||
#define EMU_VERSION_FULL EMU_VERSION
|
||||
#define EMU_VERSION_FULL_W EMU_VERSION_W
|
||||
|
||||
#define COPYRIGHT_YEAR "2021"
|
||||
|
||||
/* Web URL info. */
|
||||
#define EMU_SITE L"86box.net"
|
||||
#define EMU_ROMS_URL L"https://github.com/86Box/roms/releases/latest"
|
||||
#define EMU_DOCS_URL L"https://86box.readthedocs.io"
|
||||
#ifdef RELEASE_BUILD
|
||||
# define EMU_DOCS_URL L"https://86box.readthedocs.io/en/v3.0/"
|
||||
#else
|
||||
# define EMU_DOCS_URL L"https://86box.readthedocs.io"
|
||||
#endif
|
||||
|
||||
38
src/mac/Info.plist.in
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<string>True</string>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
src/mac/icons/beta/86Box.icns
Normal file
BIN
src/mac/icons/branch/86Box.icns
Normal file
BIN
src/mac/icons/dev/86Box.icns
Normal file
BIN
src/mac/icons/release/86Box.icns
Normal file
@@ -24,10 +24,6 @@ add_library(mch OBJECT machine.c machine_table.c m_xt.c m_xt_compaq.c
|
||||
m_at_sockets7.c m_at_socket8.c m_at_slot1.c m_at_slot2.c m_at_socket370.c
|
||||
m_at_misc.c)
|
||||
|
||||
if(HEDAKA)
|
||||
target_compile_definitions(mch PRIVATE USE_HEDAKA)
|
||||
endif()
|
||||
|
||||
if(LASERXT)
|
||||
target_sources(mch PRIVATE m_xt_laserxt.c)
|
||||
target_compile_definitions(mch PRIVATE USE_LASERXT)
|
||||
|
||||
@@ -444,11 +444,11 @@ machine_at_p6sba_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_tsunamiatx_init(const machine_t *model)
|
||||
machine_at_s1846_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/tsunamiatx/bx46200f.rom",
|
||||
ret = bios_load_linear("roms/machines/s1846/bx46200f.rom",
|
||||
0x000c0000, 262144, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
@@ -468,23 +468,22 @@ machine_at_tsunamiatx_init(const machine_t *model)
|
||||
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
||||
device_add(&i440bx_device);
|
||||
device_add(&piix4e_device);
|
||||
device_add(&pc87309_device);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
|
||||
}
|
||||
|
||||
device_add(&pc87309_device);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
const device_t *
|
||||
at_tsunamiatx_get_device(void)
|
||||
at_s1846_get_device(void)
|
||||
{
|
||||
return &es1371_onboard_device;
|
||||
}
|
||||
@@ -660,13 +659,16 @@ machine_at_ms6168_common_init(const machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
const device_t *
|
||||
at_ms6168_get_device(void)
|
||||
{
|
||||
return &voodoo_3_2000_agp_onboard_8m_device;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_borapro_init(const machine_t *model)
|
||||
{
|
||||
/* AMI 440ZX Board. Packard Bell OEM of the MSI MS-6168
|
||||
MIGHT REQUIRE MORE EXCESSIVE TESTING!
|
||||
Reports emmersive amounts of RAM like few Intel OEM boards
|
||||
we have. */
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/borapro/MS6168V2.50",
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "cpu.h"
|
||||
#include <86box/machine.h>
|
||||
#include <86box/clock.h>
|
||||
#include <86box/sound.h>
|
||||
#include <86box/snd_ac97.h>
|
||||
|
||||
|
||||
@@ -76,11 +77,11 @@ machine_at_s370slm_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_trinity371_init(const machine_t *model)
|
||||
machine_at_s1857_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/trinity371/BX57200A.ROM",
|
||||
ret = bios_load_linear("roms/machines/s1857/BX57200A.ROM",
|
||||
0x000c0000, 262144, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
@@ -104,6 +105,11 @@ machine_at_trinity371_init(const machine_t *model)
|
||||
device_add(&w83977ef_370_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -278,7 +284,7 @@ machine_at_awo671r_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_63a_init(const machine_t *model)
|
||||
machine_at_63a1_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -376,6 +382,11 @@ machine_at_gt694va_init(const machine_t *model)
|
||||
hwm_values.fans[2] = 0; /* unused */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* assumed */
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -452,7 +463,8 @@ machine_at_6via90ap_init(const machine_t *model)
|
||||
hwm_values.temperatures[1] += 2; /* System offset */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */
|
||||
if (sound_card_current == SOUND_INTERNAL)
|
||||
device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -112,11 +112,11 @@ machine_at_sp4_common_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_excalibur_pci_init(const machine_t *model)
|
||||
machine_at_excaliburpci_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear_inverted("roms/machines/excalibur_pci/S701P.ROM",
|
||||
ret = bios_load_linear_inverted("roms/machines/excaliburpci/S701P.ROM",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
@@ -423,11 +423,11 @@ machine_at_p5vl_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_excalibur_pci_2_init(const machine_t *model)
|
||||
machine_at_excaliburpci2_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear_inverted("roms/machines/excalibur_pci-2/S722P.ROM",
|
||||
ret = bios_load_linear_inverted("roms/machines/excaliburpci2/S722P.ROM",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
|
||||
@@ -468,37 +468,6 @@ machine_at_430nx_init(const machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_p54tp4xe_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
/* Award BIOS, SMC FDC37C665. */
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
device_add(&keyboard_ps2_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&fdc37c665_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_endeavor_init(const machine_t *model)
|
||||
{
|
||||
@@ -631,40 +600,6 @@ machine_at_apollo_init(const machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_vectra54_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/vectra54/GT0724.22",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init_ex(model, 2);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
|
||||
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
|
||||
if (gfxcard == VID_INTERNAL)
|
||||
device_add(&s3_phoenix_trio64_onboard_pci_device);
|
||||
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&fdc37c931apm_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_powermatev_init(const machine_t *model)
|
||||
{
|
||||
|
||||
@@ -194,40 +194,6 @@ machine_at_exp8551_init(const machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_vectra54_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/vectra54/GT0724.22",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init_ex(model, 2);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
|
||||
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
|
||||
if (gfxcard == VID_INTERNAL)
|
||||
device_add(&s3_phoenix_trio64_onboard_pci_device);
|
||||
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&fdc37c931apm_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_zappa_init(const machine_t *model)
|
||||
{
|
||||
|
||||
@@ -246,15 +246,15 @@ machine_at_equium5200_init(const machine_t *model)
|
||||
|
||||
|
||||
int
|
||||
machine_at_pcv240_init(const machine_t *model)
|
||||
machine_at_pcv90_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear_combined2("roms/machines/pcv240/1010DD04.BIO",
|
||||
"roms/machines/pcv240/1010DD04.BI1",
|
||||
"roms/machines/pcv240/1010DD04.BI2",
|
||||
"roms/machines/pcv240/1010DD04.BI3",
|
||||
"roms/machines/pcv240/1010DD04.RCV",
|
||||
ret = bios_load_linear_combined2("roms/machines/pcv90/1010DD04.BIO",
|
||||
"roms/machines/pcv90/1010DD04.BI1",
|
||||
"roms/machines/pcv90/1010DD04.BI2",
|
||||
"roms/machines/pcv90/1010DD04.BI3",
|
||||
"roms/machines/pcv90/1010DD04.RCV",
|
||||
0x3a000, 128);
|
||||
|
||||
if (bios_only || !ret)
|
||||
|
||||
@@ -72,20 +72,11 @@ machine_at_thor_common_init(const machine_t *model, int mr)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_p54tp4xe_init(const machine_t *model)
|
||||
static void
|
||||
machine_at_p54tp4xe_common_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
/* Award BIOS, SMC FDC37C665. */
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
@@ -98,37 +89,38 @@ machine_at_p54tp4xe_init(const machine_t *model)
|
||||
device_add(&piix_device);
|
||||
device_add(&fdc37c665_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_p54tp4xe_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/p54tp4xe/t15i0302.awd",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_p54tp4xe_common_init(model);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_mr586_init(const machine_t *model)
|
||||
machine_at_p54tp4xe_mr_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/mr586/TRITON.BIO",
|
||||
ret = bios_load_linear("roms/machines/p54tp4xe_mr/TRITON.BIO",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&fdc37c665_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
machine_at_p54tp4xe_common_init(model);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -552,3 +544,37 @@ machine_at_ap5s_init(const machine_t *model)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_at_vectra54_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/vectra54/GT0724.22",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init_ex(model, 2);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
|
||||
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
|
||||
if (gfxcard == VID_INTERNAL)
|
||||
device_add(&s3_phoenix_trio64_onboard_pci_device);
|
||||
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&fdc37c931apm_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -232,11 +232,11 @@ machine_at_ap440fx_init(const machine_t *model)
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_8500ttc_init(const machine_t *model)
|
||||
machine_at_8600ttc_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/8500ttc/TTC0715B.ROM",
|
||||
ret = bios_load_linear("roms/machines/8600ttc/TTC0715B.ROM",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <86box/video.h>
|
||||
#include "cpu.h"
|
||||
#include <86box/machine.h>
|
||||
#include <86box/sound.h>
|
||||
#include <86box/snd_ac97.h>
|
||||
#include <86box/clock.h>
|
||||
|
||||
@@ -280,7 +281,8 @@ machine_at_ficva503a_init(const machine_t *model)
|
||||
hwm_values.temperatures[1] += 2; /* System offset */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
device_add(&wm9701a_device); /* on daughtercard */
|
||||
if (sound_card_current == SOUND_INTERNAL)
|
||||
device_add(&wm9701a_device); /* on daughtercard */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -867,7 +867,7 @@ machine_pcjr_init(const machine_t *model)
|
||||
device_add(&fdc_pcjr_device);
|
||||
|
||||
device_add(&i8250_pcjr_device);
|
||||
serial_set_next_inst(2); /* So that serial_standalone_init() won't do anything. */
|
||||
serial_set_next_inst(MAX_SERIAL); /* So that serial_standalone_init() won't do anything. */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1361,30 +1361,6 @@ machine_ps2_model_70_type3_init(const machine_t *model)
|
||||
}
|
||||
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_PS2M70T4)
|
||||
int
|
||||
machine_ps2_model_70_type4_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_interleaved("roms/machines/ibmps2_m70_type4/70-b_even.bin",
|
||||
"roms/machines/ibmps2_m70_type4/70-b_odd.bin",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_ps2_common_init(model);
|
||||
|
||||
ps2.planar_id = 0xfcff;
|
||||
|
||||
ps2_mca_board_model_70_type34_init(1, 4);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int
|
||||
machine_ps2_model_80_init(const machine_t *model)
|
||||
{
|
||||
|
||||
@@ -154,7 +154,7 @@ machine_xt_z184_init(const machine_t *model)
|
||||
lpt2_remove();
|
||||
lpt1_init(0x278);
|
||||
device_add(&i8250_device);
|
||||
serial_set_next_inst(2); /* So that serial_standalone_init() won't do anything. */
|
||||
serial_set_next_inst(MAX_SERIAL); /* So that serial_standalone_init() won't do anything. */
|
||||
|
||||
device_add(&cga_device);
|
||||
|
||||
|
||||
@@ -420,14 +420,14 @@ const machine_t machines[] = {
|
||||
/* Has an ALi M5042 keyboard controller with Phoenix MultiKey/42 v1.40 firmware. */
|
||||
{ "[ALi M1489] ESA TF-486", "tf-486", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 65536, 1024, 255, machine_at_tf_486_init, NULL },
|
||||
/* Has IBM PS/2 Type 1 KBC firmware. */
|
||||
{ "[OPTi 802G] IBM PC 330 (type 6573)", "pc330_6573", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3_PC330, 0, 25000000, 33333333, 0, 0, 2.0, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 65536, 1024, 127, machine_at_pc330_6573_init, NULL },
|
||||
{ "[OPTi 802G] IBM PC 330 (type 6573)", "pc330_6573", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3_PC330, 0, 25000000, 33333333, 0, 0, 2.0, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 65536, 1024, 127, machine_at_pc330_6573_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[i420EX] ASUS PVI-486AP4", "486ap4", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_IDE_DUAL, 1024, 131072, 1024, 127, machine_at_486ap4_init, NULL },
|
||||
{ "[i420EX] ASUS PVI-486AP4", "486ap4", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 131072, 1024, 127, machine_at_486ap4_init, NULL },
|
||||
/* This has the Phoenix MultiKey KBC firmware. */
|
||||
{ "[i420EX] Intel Classic/PCI ED", "ninja", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 131072, 1024, 127, machine_at_ninja_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. Also has a
|
||||
SST 29EE010 Flash chip. */
|
||||
{ "[i420ZX] ASUS PCI/I-486SP3G", "486sp3g", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL | MACHINE_SCSI, 1024, 131072, 1024, 127, machine_at_486sp3g_init, NULL },
|
||||
{ "[i420ZX] ASUS PCI/I-486SP3G", "486sp3g", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SCSI, 1024, 131072, 1024, 127, machine_at_486sp3g_init, NULL },
|
||||
/* I'm going to assume this as an AMIKey-2 like the other two 486SP3's. */
|
||||
{ "[i420TX] ASUS PCI/I-486SP3", "486sp3", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL | MACHINE_SCSI, 1024, 131072, 1024, 127, machine_at_486sp3_init, NULL },
|
||||
/* This has the Phoenix MultiKey KBC firmware. */
|
||||
@@ -437,7 +437,7 @@ const machine_t machines[] = {
|
||||
/* This has a standalone AMI Megakey 1993, which is type 'P'. */
|
||||
{ "[IMS 8848] Tekram G486IP", "g486ip", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2048, 131072, 2048, 127, machine_at_g486ip_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[SiS 496] ASUS PVI-486SP3C", "486sp3c", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_IDE_DUAL, 1024, 261120, 1024, 255, machine_at_486sp3c_init, NULL },
|
||||
{ "[SiS 496] ASUS PVI-486SP3C", "486sp3c", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 261120, 1024, 255, machine_at_486sp3c_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[SiS 496] Lucky Star LS-486E", "ls486e", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_ls486e_init, NULL },
|
||||
/* The BIOS does not send a single non-standard KBC command, so it has a standard PS/2 KBC. */
|
||||
@@ -449,20 +449,20 @@ const machine_t machines[] = {
|
||||
{ "[SiS 496] Soyo 4SA2", "4sa2", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, CPU_BLOCK(CPU_i486SX, CPU_i486DX, CPU_Am486SX, CPU_Am486DX), 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 261120, 1024, 255, machine_at_4sa2_init, NULL },
|
||||
/* According to MrKsoft, his real 4DPS has an AMIKey-2, which is an updated version
|
||||
of type 'H'. */
|
||||
{ "[SiS 496] Zida Tomato 4DP", "4dps", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 261120, 1024, 255, machine_at_4dps_init, NULL },
|
||||
{ "[SiS 496] Zida Tomato 4DP", "4dps", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 261120, 1024, 255, machine_at_4dps_init, NULL },
|
||||
/* This has the UMC 88xx on-chip KBC. */
|
||||
{ "[UMC 888x] A-Trend ATC-1415", "atc1415", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 65536, 1024, 255, machine_at_atc1415_init, NULL },
|
||||
{ "[UMC 8881] A-Trend ATC-1415", "atc1415", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 65536, 1024, 255, machine_at_atc1415_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[UMC 888x] ECS Elite UM8810PAIO", "ecs486", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_ecs486_init, NULL },
|
||||
{ "[UMC 8881] ECS Elite UM8810PAIO", "ecs486", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_ecs486_init, NULL },
|
||||
/* Has AMIKey Z(!) KBC firmware. */
|
||||
{ "[UMC 888x] Epson Action PC 2600", "actionpc2600", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 262144, 1024, 255, machine_at_actionpc2600_init, NULL },
|
||||
{ "[UMC 8881] Epson Action PC 2600", "actionpc2600", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 262144, 1024, 255, machine_at_actionpc2600_init, NULL },
|
||||
/* This has the UMC 88xx on-chip KBC. All the copies of the BIOS string I can find, end in
|
||||
in -H, so the UMC on-chip KBC likely emulates the AMI 'H' KBC firmware. */
|
||||
{ "[UMC 888x] PC Chips M919", "m919", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_VLB | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_m919_init, NULL },
|
||||
{ "[UMC 8881] PC Chips M919", "m919", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_VLB | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_m919_init, NULL },
|
||||
/* Has IBM PS/2 Type 1 KBC firmware. Uses a mysterious I/O port C05. */
|
||||
{ "[UMC 888x] Samsung SPC7700P-LW", "spc7700p-lw", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_spc7700p_lw_init, NULL },
|
||||
{ "[UMC 8881] Samsung SPC7700P-LW", "spc7700p-lw", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_spc7700p_lw_init, NULL },
|
||||
/* This has a Holtek KBC. */
|
||||
{ "[UMC 888x] Shuttle HOT-433A", "hot433", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 262144, 1024, 255, machine_at_hot433_init, NULL },
|
||||
{ "[UMC 8881] Shuttle HOT-433A", "hot433", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCI | MACHINE_IDE_DUAL, 1024, 262144, 1024, 255, machine_at_hot433_init, NULL },
|
||||
/* Has a VIA VT82C406 KBC+RTC that likely has identical commands to the VT82C42N. */
|
||||
{ "[VIA VT82C496G] DFI G486VPA", "g486vpa", MACHINE_TYPE_486_S3, CPU_PKG_SOCKET3, 0, 0, 0, 0, 0, 0, 0, MACHINE_PCIV | MACHINE_IDE_DUAL, 1024, 131072, 1024, 255, machine_at_g486vpa_init, NULL },
|
||||
/* Has a VIA VT82C42N KBC. */
|
||||
@@ -493,7 +493,7 @@ const machine_t machines[] = {
|
||||
connector.
|
||||
The boot block for BIOS recovery requires an unknown bit on port 805h
|
||||
to be clear. */
|
||||
{ "[i430LX] AMI Excalibur PCI Pentium", "excalibur_pci", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2048, 131072, 2048, 127, machine_at_excalibur_pci_init, NULL },
|
||||
{ "[i430LX] AMI Excalibur PCI Pentium", "excaliburpci", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 2048, 131072, 2048, 127, machine_at_excaliburpci_init, NULL },
|
||||
/* Has AMIKey F KBC firmware (AMIKey). */
|
||||
{ "[i430LX] ASUS P/I-P5MP3", "p5mp3", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE, 2048, 196608, 2048, 127, machine_at_p5mp3_init, NULL },
|
||||
/* Has IBM PS/2 Type 1 KBC firmware. */
|
||||
@@ -517,7 +517,7 @@ const machine_t machines[] = {
|
||||
/* This uses an AMI KBC firmware in PS/2 mode (it sends command A5 with the
|
||||
PS/2 "Load Security" meaning), most likely MegaKey as it sends command AF
|
||||
(Set Extended Controller RAM) just like the later Intel AMI BIOS'es. */
|
||||
{ "[OPTi 597] AMI Excalibur VLB", "excalibur", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_VLB | MACHINE_IDE, 2048, 65536, 2048, 127, machine_at_excalibur_init, NULL },
|
||||
{ "[OPTi 597] AMI Excalibur VLB", "excalibur", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 60000000, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_VLB | MACHINE_BUS_PS2 | MACHINE_IDE, 2048, 65536, 2048, 127, machine_at_excalibur_init, NULL },
|
||||
|
||||
/* OPTi 596/597/822 */
|
||||
/* This has AMIKey 'F' KBC firmware. */
|
||||
@@ -525,9 +525,9 @@ const machine_t machines[] = {
|
||||
|
||||
/* SiS 50x */
|
||||
/* This has an unknown AMI KBC firmware, most likely AMIKey / type 'F'. */
|
||||
{ "[SiS 50x] AMI Excalibur PCI-II Pentium ISA","excalibur_pci-2", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_excalibur_pci_2_init, NULL },
|
||||
{ "[SiS 501] AMI Excalibur PCI-II Pentium ISA","excaliburpci2", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_excaliburpci2_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[SiS 50x] ASUS PCI/I-P5SP4", "p5sp4", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p5sp4_init, NULL },
|
||||
{ "[SiS 501] ASUS PCI/I-P5SP4", "p5sp4", MACHINE_TYPE_SOCKET4, CPU_PKG_SOCKET4, 0, 60000000, 66666667, 5000, 5000, MACHINE_MULTIPLIER_FIXED, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p5sp4_init, NULL },
|
||||
|
||||
/* Socket 5 machines */
|
||||
/* 430NX */
|
||||
@@ -546,9 +546,6 @@ const machine_t machines[] = {
|
||||
{ "[i430FX] AMI Apollo", "apollo", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_apollo_init, NULL },
|
||||
/* Has AMIKey H KBC firmware. */
|
||||
{ "[i430FX] Dataexpert EXP8551", "exp8551", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_exp8551_init, NULL },
|
||||
/* The BIOS does not send a single non-standard KBC command, but the board has a SMC Super I/O
|
||||
chip with on-chip KBC and AMI MegaKey KBC firmware. */
|
||||
{ "[i430FX] HP Vectra VL 5 Series 4", "vectra54", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8192, 131072, 8192, 511, machine_at_vectra54_init, at_vectra54_get_device },
|
||||
/* According to tests from real hardware: This has AMI MegaKey KBC firmware on the
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
@@ -567,24 +564,27 @@ const machine_t machines[] = {
|
||||
{ "[OPTi 597] TMC PAT54PV", "pat54pv", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_K5, CPU_5K86), 50000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_VLB, 2048, 65536, 2048, 127, machine_at_pat54pv_init, NULL },
|
||||
|
||||
/* OPTi 596/597/822 */
|
||||
{ "[OPTi 597] Shuttle HOT-543", "hot543", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_VLB, 8192, 131072, 8192, 127, machine_at_hot543_init, NULL },
|
||||
{ "[OPTi 597] Shuttle HOT-543", "hot543", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3520, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_VLB, 8192, 131072, 8192, 127, machine_at_hot543_init, NULL },
|
||||
|
||||
/* SiS 85C50x */
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[SiS 85C50x] ASUS PCI/I-P54SP4", "p54sp4", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_K5, CPU_5K86), 40000000, 66666667, 3380, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p54sp4_init, NULL },
|
||||
{ "[SiS 501] ASUS PCI/I-P54SP4", "p54sp4", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_K5, CPU_5K86), 40000000, 66666667, 3380, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p54sp4_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[SiS 85C50x] BCM SQ-588", "sq588", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_PENTIUMMMX), 50000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_sq588_init, NULL },
|
||||
{ "[SiS 501] BCM SQ-588", "sq588", MACHINE_TYPE_SOCKET5, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_PENTIUMMMX), 50000000, 66666667, 3520, 3520, 1.5, 1.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_sq588_init, NULL },
|
||||
|
||||
/* Socket 7 (Single Voltage) machines */
|
||||
/* 430FX */
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[i430FX] ASUS P/I-P54TP4XE", "p54tp4xe", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3600, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p54tp4xe_init, NULL },
|
||||
/* This has an AMIKey-2, which is an updated version of type 'H'. */
|
||||
{ "[i430FX] ASUS P/I-P54TP4XE (MR BIOS)", "mr586", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3600, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_mr586_init, NULL },
|
||||
{ "[i430FX] ASUS P/I-P54TP4XE (MR BIOS)", "p54tp4xe_mr", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3600, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_p54tp4xe_mr_init, NULL },
|
||||
/* According to tests from real hardware: This has AMI MegaKey KBC firmware on the
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
{ "[i430FX] Gateway 2000 Thor", "gw2katx", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_gw2katx_init, NULL },
|
||||
/* The BIOS does not send a single non-standard KBC command, but the board has a SMC Super I/O
|
||||
chip with on-chip KBC and AMI MegaKey KBC firmware. */
|
||||
{ "[i430FX] HP Vectra VL 5 Series 4", "vectra54", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 2.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8192, 131072, 8192, 511, machine_at_vectra54_init, at_vectra54_get_device },
|
||||
/* According to tests from real hardware: This has AMI MegaKey KBC firmware on the
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
@@ -603,7 +603,7 @@ const machine_t machines[] = {
|
||||
Super I/O chip (that has the KBC firmware on it) as eg. the Advanced/EV. */
|
||||
{ "[i430FX] Packard Bell PB640", "pb640", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO, 8192, 131072, 8192, 127, machine_at_pb640_init, at_pb640_get_device },
|
||||
/* Has an AMI 'H' KBC firmware (1992). */
|
||||
{ "[i430FX] QDI FMB", "fmb", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_fmb_init, NULL },
|
||||
{ "[i430FX] QDI FMB", "fmb", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 131072, 8192, 127, machine_at_fmb_init, NULL },
|
||||
|
||||
/* 430HX */
|
||||
/* I can't determine what KBC firmware this has, but given that the Acer V35N and
|
||||
@@ -616,7 +616,7 @@ const machine_t machines[] = {
|
||||
{ "[i430HX] Biostar MB-8500TUC", "8500tuc", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3380, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 524288, 8192, 127, machine_at_8500tuc_init, NULL },
|
||||
/* [TEST] Unable to determine what KBC this has. A list on a Danish site shows
|
||||
the BIOS as having a -0 string, indicating non-AMI KBC firmware. */
|
||||
{ "[i430HX] SuperMicro Super P55T2S", "p55t2s", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3300, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 127, machine_at_p55t2s_init, NULL },
|
||||
{ "[i430HX] Supermicro P55T2S", "p55t2s", MACHINE_TYPE_SOCKET7_3V, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 3300, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 127, machine_at_p55t2s_init, NULL },
|
||||
|
||||
/* 430VX */
|
||||
/* Has AMIKey H KBC firmware (AMIKey-2). */
|
||||
@@ -650,7 +650,7 @@ const machine_t machines[] = {
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI .
|
||||
Yes, this is an Intel AMI BIOS with a fancy splash screen. */
|
||||
{ "[i430HX] Sony Vaio PCV-240", "pcv240", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 196608, 8192, 127, machine_at_pcv240_init, NULL },
|
||||
{ "[i430HX] Sony Vaio PCV-90", "pcv90", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2800, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 196608, 8192, 127, machine_at_pcv90_init, NULL },
|
||||
/* The base board has AMIKey-2 (updated 'H') KBC firmware. */
|
||||
{ "[i430HX] ASUS P/I-P65UP5 (C-P55T2D)", "p65up5_cp55t2d", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2500, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 524288, 8192, 127, machine_at_p65up5_cp55t2d_init, NULL },
|
||||
|
||||
@@ -698,7 +698,7 @@ const machine_t machines[] = {
|
||||
/* The BIOS sends KBC command BB and expects it to output a byte, which is AMI KBC behavior. */
|
||||
{ "[i430TX] PC Partner MB540N", "mb540n", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 60000000, 66666667, 2700, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 262144, 8192, 255, machine_at_mb540n_init, NULL },
|
||||
/* [TEST] Has AMIKey 'H' KBC firmware. */
|
||||
{ "[i430TX] SuperMicro Super P5MMS98", "p5mms98", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2100, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 262144, 8192, 255, machine_at_p5mms98_init, NULL },
|
||||
{ "[i430TX] Supermicro P5MMS98", "p5mms98", MACHINE_TYPE_SOCKET7, CPU_PKG_SOCKET5_7, 0, 50000000, 66666667, 2100, 3520, 1.5, 3.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 262144, 8192, 255, machine_at_p5mms98_init, NULL },
|
||||
|
||||
/* Apollo VPX */
|
||||
/* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA
|
||||
@@ -760,7 +760,7 @@ const machine_t machines[] = {
|
||||
{ "[i440FX] ASUS P/I-P65UP5 (C-P6ND)", "p65up5_cp6nd", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 1.5, 8.0, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192,1048576, 8192, 127, machine_at_p65up5_cp6nd_init, NULL },
|
||||
/* The MB-8600TTX has an AMIKey 'F' KBC firmware, so I'm going to assume so does
|
||||
the MB-8600TTC until someone can actually identify it. */
|
||||
{ "[i440FX] Biostar MB-8600TTC", "8600ttc", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 50000000, 66666667, 2900, 3300, 2.0, 5.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192,1048576, 8192, 127, machine_at_8500ttc_init, NULL },
|
||||
{ "[i440FX] Biostar MB-8600TTC", "8600ttc", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 50000000, 66666667, 2900, 3300, 2.0, 5.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192,1048576, 8192, 127, machine_at_8600ttc_init, NULL },
|
||||
{ "[i440FX] Gigabyte GA-686NX", "686nx", MACHINE_TYPE_SOCKET8, CPU_PKG_SOCKET8, 0, 60000000, 66666667, 2100, 3500, 2.0, 5.5, MACHINE_PCI | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 524288, 8192, 127, machine_at_686nx_init, NULL },
|
||||
/* According to tests from real hardware: This has AMI MegaKey KBC firmware on the
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
@@ -823,18 +823,18 @@ const machine_t machines[] = {
|
||||
{ "[i440BX] HP Vectra VEi 8", "vei8", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192,1048576, 8192, 255, machine_at_vei8_init, NULL },
|
||||
/* Has a National Semiconductors PC87309 Super I/O chip with on-chip KBC
|
||||
with most likely AMIKey-2 KBC firmware. */
|
||||
{ "[i440BX] Tyan Tsunami ATX", "tsunamiatx", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SOUND, 8192,1048576, 8192, 255, machine_at_tsunamiatx_init, at_tsunamiatx_get_device },
|
||||
{ "[i440BX] Tyan Tsunami ATX", "s1846", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 112121212, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_SOUND, 8192,1048576, 8192, 255, machine_at_s1846_init, at_s1846_get_device },
|
||||
/* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440BX] SuperMicro Super P6SBA", "p6sba", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_p6sba_init, NULL },
|
||||
{ "[i440BX] Supermicro P6SBA", "p6sba", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_p6sba_init, NULL },
|
||||
|
||||
/* 440ZX */
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440ZX] MSI MS-6168", "ms6168", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND,8192, 524288, 8192, 255, machine_at_ms6168_init, NULL },
|
||||
{ "[i440ZX] MSI MS-6168", "ms6168", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND,8192, 524288, 8192, 255, machine_at_ms6168_init, at_ms6168_get_device },
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440ZX] Packard Bell Bora Pro", "borapro", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 66666667, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND,8192, 524288, 8192, 255, machine_at_borapro_init, NULL },
|
||||
{ "[i440ZX] Packard Bell Bora Pro", "borapro", MACHINE_TYPE_SLOT1, CPU_PKG_SLOT1, 0, 66666667, 66666667, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_SOUND,8192, 524288, 8192, 255, machine_at_borapro_init, at_borapro_get_device },
|
||||
|
||||
/* SMSC VictoryBX-66 */
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
@@ -865,13 +865,13 @@ const machine_t machines[] = {
|
||||
{ "[i440GX] Gigabyte GA-6GXU", "6gxu", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 100000000, 133333333, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16384,2097152,16384, 511, machine_at_6gxu_init, NULL },
|
||||
/* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440GX] SuperMicro Super S2DGE", "s2dge", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16384,2097152,16384, 511, machine_at_s2dge_init, NULL },
|
||||
{ "[i440GX] Supermicro S2DGE", "s2dge", MACHINE_TYPE_SLOT2, CPU_PKG_SLOT2, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16384,2097152,16384, 511, machine_at_s2dge_init, NULL },
|
||||
|
||||
/* PGA370 machines */
|
||||
/* 440LX */
|
||||
/* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440LX] SuperMicro Super 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_s370slm_init, NULL },
|
||||
{ "[i440LX] Supermicro 370SLM", "s370slm", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, MACHINE_MULTIPLIER_FIXED, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_s370slm_init, NULL },
|
||||
|
||||
/* 440BX */
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
@@ -885,12 +885,12 @@ const machine_t machines[] = {
|
||||
{ "[i440BX] AmazePC AM-BX133", "ambx133", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1300, 3500, 1.5, 8.0, /* limits assumed */ MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_ambx133_init, NULL },
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440BX] Tyan Trinity 371", "trinity371", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1300, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_trinity371_init, NULL },
|
||||
{ "[i440BX] Tyan Trinity 371", "s1857", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1300, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 786432, 8192, 255, machine_at_s1857_init, at_s1857_get_device },
|
||||
|
||||
/* 440ZX */
|
||||
/* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[i440ZX] Soltek SL-63A1", "63a", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 524288, 8192, 255, machine_at_63a_init, NULL },
|
||||
{ "[i440ZX] Soltek SL-63A1", "63a1", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 100000000, 1800, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 8192, 524288, 8192, 255, machine_at_63a1_init, NULL },
|
||||
|
||||
/* SMSC VictoryBX-66 */
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
@@ -912,7 +912,7 @@ const machine_t machines[] = {
|
||||
{ "[VIA Apollo Pro133A] ASUS CUV4X-LS", "cuv4xls", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 150000000, 1300, 3500, 1.5, 8.0, (MACHINE_AGP & ~MACHINE_AT) | MACHINE_BUS_PS2 | MACHINE_BUS_AC97 | MACHINE_IDE_DUAL,16384,4194304, 8192, 255, machine_at_cuv4xls_init, NULL },
|
||||
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
firmware. */
|
||||
{ "[VIA Apollo Pro133A] BCM GT694VA", "gt694va", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1300, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16384,3145728, 8192, 255, machine_at_gt694va_init, NULL },
|
||||
{ "[VIA Apollo Pro133A] BCM GT694VA", "gt694va", MACHINE_TYPE_SOCKET370, CPU_PKG_SOCKET370, 0, 66666667, 133333333, 1300, 3500, 1.5, 8.0, MACHINE_AGP | MACHINE_BUS_PS2 | MACHINE_IDE_DUAL, 16384,3145728, 8192, 255, machine_at_gt694va_init, at_gt694va_get_device },
|
||||
|
||||
/* Miscellaneous/Fake/Hypervisor machines */
|
||||
/* Has a Winbond W83977F Super I/O chip with on-chip KBC with AMIKey-2 KBC
|
||||
|
||||
@@ -44,11 +44,15 @@
|
||||
#define gs_error_Quit -101
|
||||
|
||||
#ifdef _WIN32
|
||||
#define PATH_GHOSTSCRIPT_DLL "gsdll32.dll"
|
||||
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
|
||||
# define PATH_GHOSTSCRIPT_DLL "gsdll32.dll"
|
||||
#else
|
||||
# define PATH_GHOSTSCRIPT_DLL "gsdll64.dll"
|
||||
#endif
|
||||
#elif defined __APPLE__
|
||||
#define PATH_GHOSTSCRIPT_DLL "libgs.dylib"
|
||||
#else
|
||||
#define PATH_GHOSTSCRIPT_DLL "libgs.so"
|
||||
#define PATH_GHOSTSCRIPT_DLL "libgs.so.9"
|
||||
#endif
|
||||
|
||||
#define POSTSCRIPT_BUFFER_LENGTH 65536
|
||||
@@ -344,8 +348,6 @@ ps_init(void *lpt)
|
||||
dev->ctrl = 0x04;
|
||||
dev->lpt = lpt;
|
||||
|
||||
reset_ps(dev);
|
||||
|
||||
/* Try loading the DLL. */
|
||||
ghostscript_handle = dynld_module(PATH_GHOSTSCRIPT_DLL, ghostscript_imports);
|
||||
if (ghostscript_handle == NULL)
|
||||
@@ -369,6 +371,8 @@ ps_init(void *lpt)
|
||||
timer_add(&dev->pulse_timer, pulse_timer, dev, 0);
|
||||
timer_add(&dev->timeout_timer, timeout_timer, dev, 0);
|
||||
|
||||
reset_ps(dev);
|
||||
|
||||
return(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -224,11 +224,15 @@ void* fluidsynth_init(const device_t *info)
|
||||
|
||||
/* Try loading the DLL. */
|
||||
#ifdef _WIN32
|
||||
# if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
|
||||
fluidsynth_handle = dynld_module("libfluidsynth.dll", fluidsynth_imports);
|
||||
# else
|
||||
fluidsynth_handle = dynld_module("libfluidsynth64.dll", fluidsynth_imports);
|
||||
# endif
|
||||
#elif defined __APPLE__
|
||||
fluidsynth_handle = dynld_module("libfluidsynth.dylib", fluidsynth_imports);
|
||||
#else
|
||||
fluidsynth_handle = dynld_module("libfluidsynth.so", fluidsynth_imports);
|
||||
fluidsynth_handle = dynld_module("libfluidsynth.so.3", fluidsynth_imports);
|
||||
#endif
|
||||
if (fluidsynth_handle == NULL)
|
||||
{
|
||||
|
||||
@@ -25,15 +25,63 @@
|
||||
#include <86box/io.h>
|
||||
#include <86box/snd_ac97.h>
|
||||
|
||||
#define AC97_VENDOR_ID(f, s, t, dev) ((((f) & 0xff) << 24) | (((s) & 0xff) << 16) | (((t) & 0xff) << 8) | ((dev) & 0xff))
|
||||
|
||||
|
||||
enum {
|
||||
AC97_CODEC_AD1881 = AC97_VENDOR_ID('A', 'D', 'S', 0x40),
|
||||
AC97_CODEC_ALC100 = AC97_VENDOR_ID('A', 'L', 'C', 0x20),
|
||||
AC97_CODEC_CS4297 = AC97_VENDOR_ID('C', 'R', 'Y', 0x03),
|
||||
AC97_CODEC_CS4297A = AC97_VENDOR_ID('C', 'R', 'Y', 0x11),
|
||||
AC97_CODEC_WM9701A = AC97_VENDOR_ID('W', 'M', 'L', 0x00)
|
||||
AC97_CODEC_AD1881,
|
||||
AC97_CODEC_ALC100,
|
||||
AC97_CODEC_CS4297,
|
||||
AC97_CODEC_CS4297A,
|
||||
AC97_CODEC_WM9701A
|
||||
};
|
||||
|
||||
static const struct {
|
||||
const uint32_t vendor_id, max_rate, misc_flags; /* definitions for misc_flags in snd_ac97.h */
|
||||
const uint16_t reset_flags, extid_flags, /* definitions in snd_ac97.h */
|
||||
powerdown_mask; /* bits [7:0] => register 26 bits [15:8]; bits [11:8] => register 2A bits [14:11] */
|
||||
const ac97_vendor_reg_t *vendor_regs; /* bits [11:8] of index are the page number if applicable (registers [60:6F]) */
|
||||
} ac97_codecs[] = {
|
||||
[AC97_CODEC_AD1881] = {
|
||||
.vendor_id = AC97_VENDOR_ID('A', 'D', 'S', 0x40),
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (1 << AC97_3D_SHIFT), /* datasheet contradicts itself on AC97_HPOUT */
|
||||
.extid_flags = AC97_VRA,
|
||||
.powerdown_mask = 0x0bf
|
||||
},
|
||||
[AC97_CODEC_ALC100] = {
|
||||
.vendor_id = AC97_VENDOR_ID('A', 'L', 'C', 0x20),
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (22 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.powerdown_mask = 0x0bf
|
||||
},
|
||||
[AC97_CODEC_CS4297] = {
|
||||
.vendor_id = AC97_VENDOR_ID('C', 'R', 'Y', 0x03),
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_AUXOUT_6B | AC97_MONOOUT | AC97_MONOOUT_6B | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.powerdown_mask = 0x07f,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0x05a, 0x0301, 0x0000}, {0}}
|
||||
},
|
||||
[AC97_CODEC_CS4297A] = {
|
||||
.vendor_id = AC97_VENDOR_ID('C', 'R', 'Y', 0x11),
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_20B | AC97_ADC_18B | (6 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.powerdown_mask = 0x0ff,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0x05e, 0x0000, 0x01b0}, {0x060, 0x0023, 0x0001}, {0x068, 0x0000, 0xdfff}, {0}}
|
||||
},
|
||||
[AC97_CODEC_WM9701A] = {
|
||||
.vendor_id = AC97_VENDOR_ID('W', 'M', 'L', 0x00),
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.powerdown_mask = 0x03f
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -56,6 +104,8 @@ ac97_codec_log(const char *fmt, ...)
|
||||
#endif
|
||||
|
||||
static const int32_t codec_attn[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20,
|
||||
25, 32, 41, 51, 65, 82, 103, 130, 164, 206, 260, 327, 412, 519, 653, 822,
|
||||
1036, 1304, 1641, 2067, 2602, 3276, 4125, 5192, 6537, 8230, 10362, 13044, 16422, 20674, 26027, 32767,
|
||||
41305, 52068, 65636, 82739, 104299, 131477, 165737, 208925
|
||||
@@ -66,147 +116,296 @@ int ac97_codec_count = 0, ac97_modem_codec_count = 0,
|
||||
ac97_codec_id = 0, ac97_modem_codec_id = 0;
|
||||
|
||||
|
||||
uint8_t
|
||||
ac97_codec_read(ac97_codec_t *dev, uint8_t reg)
|
||||
uint16_t
|
||||
ac97_codec_readw(ac97_codec_t *dev, uint8_t reg)
|
||||
{
|
||||
uint8_t ret = dev->regs[reg & 0x7f];
|
||||
/* Redirect a read from extended pages 1+ to the right array. */
|
||||
reg &= 0x7e;
|
||||
uint16_t ret = dev->regs[0x24 >> 1] & 0x000f;
|
||||
if ((ret > 0) && (reg >= 0x60) && (reg < 0x6f))
|
||||
ret = (ret <= dev->vendor_reg_page_max) ? dev->vendor_reg_pages[(ret << 3) | ((reg & 0x0e) >> 1)] : 0;
|
||||
else
|
||||
ret = dev->regs[reg >> 1];
|
||||
|
||||
ac97_codec_log("AC97 Codec %d: read(%02X) = %02X\n", dev->codec_id, reg, ret);
|
||||
ac97_codec_log("AC97 Codec %d: readw(%02X) = %04X\n", dev->codec_id, reg, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ac97_codec_write(ac97_codec_t *dev, uint8_t reg, uint8_t val)
|
||||
ac97_codec_writew(ac97_codec_t *dev, uint8_t reg, uint16_t val)
|
||||
{
|
||||
uint8_t i;
|
||||
ac97_codec_log("AC97 Codec %d: writew(%02X, %04X)\n", dev->codec_id, reg, val);
|
||||
|
||||
ac97_codec_log("AC97 Codec %d: write(%02X, %02X)\n", dev->codec_id, reg, val);
|
||||
|
||||
reg &= 0x7f;
|
||||
reg &= 0x7e;
|
||||
uint16_t i = 0, prev = dev->regs[reg >> 1];
|
||||
int j;
|
||||
|
||||
switch (reg) {
|
||||
case 0x00: case 0x01: /* Reset / ID code */
|
||||
case 0x00: /* Reset / ID code */
|
||||
ac97_codec_reset(dev);
|
||||
return;
|
||||
|
||||
case 0x08: case 0x09: /* Master Tone Control (optional) */
|
||||
case 0x0d: /* Phone Volume MSB */
|
||||
case 0x0f: /* Mic Volume MSB */
|
||||
case 0x1e: case 0x1f: /* Record Gain Mic (optional) */
|
||||
case 0x22: case 0x23: /* 3D Control (optional) */
|
||||
case 0x24: case 0x25: /* Audio Interrupt and Paging Mechanism (optional) */
|
||||
case 0x26: /* Powerdown Ctrl/Stat LSB */
|
||||
case 0x28: case 0x29: /* Extended Audio ID */
|
||||
case 0x2b: /* Extended Audio Status/Control MSB */
|
||||
//case 0x36 ... 0x59: /* Linux tests for audio capability by writing to 38-39 */
|
||||
case 0x5a ... 0x5f: /* Vendor Reserved */
|
||||
//case 0x60 ... 0x6f:
|
||||
case 0x70 ... 0x7f: /* Vendor Reserved */
|
||||
/* Read-only registers. */
|
||||
return;
|
||||
case 0x02: /* Master Volume */
|
||||
val &= 0xbf3f;
|
||||
|
||||
case 0x02: /* Master Volume LSB */
|
||||
case 0x04: /* Aux Out Volume LSB */
|
||||
case 0x06: /* Mono Volume LSB */
|
||||
val &= 0x3f;
|
||||
/* fall-through */
|
||||
|
||||
case 0x03: /* Master Volume MSB */
|
||||
case 0x05: /* Aux Out Volume MSB */
|
||||
val &= 0xbf;
|
||||
|
||||
/* Limit level to a maximum of 011111. */
|
||||
if (val & 0x20) {
|
||||
val &= ~0x20;
|
||||
val |= 0x1f;
|
||||
/* Convert 1xxxxx to 011111 where unsupported, per specification. */
|
||||
if (!(dev->misc_flags & AC97_MASTER_6B)) {
|
||||
clamp_5b: if (val & 0x2000)
|
||||
val = (val & ~0x2000) | 0x1f00;
|
||||
clamp_5b_r: if (val & 0x0020)
|
||||
val = (val & ~0x0020) | 0x001f;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07: /* Mono Volume MSB */
|
||||
case 0x0b: /* PC Beep Volume MSB */
|
||||
case 0x20: /* General Purpose LSB */
|
||||
val &= 0x80;
|
||||
case 0x04: /* Aux Out Volume */
|
||||
if (!(dev->misc_flags & AC97_AUXOUT))
|
||||
return;
|
||||
val &= 0xbf3f;
|
||||
|
||||
/* Convert 1xxxxx to 011111 where unsupported, per specification. */
|
||||
if (!(dev->misc_flags & AC97_AUXOUT_6B))
|
||||
goto clamp_5b;
|
||||
break;
|
||||
|
||||
case 0x0a: /* PC Beep Volume LSB */
|
||||
val &= 0x1e;
|
||||
case 0x06: /* Mono Out Volume */
|
||||
if (!(dev->misc_flags & AC97_MONOOUT))
|
||||
return;
|
||||
val &= 0x803f;
|
||||
|
||||
/* Convert 1xxxxx to 011111 where unsupported, per specification. */
|
||||
if (!(dev->misc_flags & AC97_MONOOUT_6B))
|
||||
goto clamp_5b_r;
|
||||
break;
|
||||
|
||||
case 0x0c: /* Phone Volume LSB */
|
||||
case 0x10: /* Line In Volume LSB */
|
||||
case 0x12: /* CD Volume LSB */
|
||||
case 0x14: /* Video Volume LSB */
|
||||
case 0x16: /* Aux In Volume LSB */
|
||||
case 0x18: /* PCM Out Volume LSB */
|
||||
val &= 0x1f;
|
||||
case 0x08: /* Master Tone Control */
|
||||
if (!(dev->reset_flags & AC97_TONECTL))
|
||||
return;
|
||||
val &= 0x0f0f;
|
||||
break;
|
||||
|
||||
case 0x0e: /* Mic Volume LSB */
|
||||
val &= 0x5f;
|
||||
case 0x0a: /* PC Beep Volume */
|
||||
if (dev->misc_flags & AC97_PCBEEP)
|
||||
i |= 0x801e;
|
||||
if (dev->misc_flags & AC97_PCBEEP_GEN)
|
||||
i |= 0x1fe0;
|
||||
val &= i;
|
||||
break;
|
||||
|
||||
case 0x11: /* Line In Volume MSB */
|
||||
case 0x13: /* CD Volume MSB */
|
||||
case 0x15: /* Video Volume MSB */
|
||||
case 0x17: /* Aux In Volume MSB */
|
||||
case 0x19: /* PCM Out Volume MSB */
|
||||
val &= 0x9f;
|
||||
case 0x0c: /* Phone Volume */
|
||||
if (!(dev->misc_flags & AC97_PHONE))
|
||||
return;
|
||||
val &= 0x801f;
|
||||
break;
|
||||
|
||||
case 0x1a: case 0x1b: /* Record Select */
|
||||
val &= 0x07;
|
||||
case 0x0e: /* Mic Volume */
|
||||
val &= 0x805f;
|
||||
break;
|
||||
|
||||
case 0x1c: /* Record Gain LSB */
|
||||
val &= 0x0f;
|
||||
case 0x10: /* Line In Volume */
|
||||
case 0x12: /* CD Volume */
|
||||
case 0x18: /* PCM Out Volume */
|
||||
line_gain: val &= 0x9f1f;
|
||||
break;
|
||||
|
||||
case 0x1d: /* Record Gain MSB */
|
||||
val &= 0x8f;
|
||||
case 0x14: /* Video Volume */
|
||||
if (!(dev->misc_flags & AC97_VIDEO))
|
||||
return;
|
||||
goto line_gain;
|
||||
|
||||
case 0x16: /* Aux In Volume */
|
||||
if (!(dev->misc_flags & AC97_AUXIN))
|
||||
return;
|
||||
goto line_gain;
|
||||
|
||||
case 0x1a: /* Record Select Control */
|
||||
val &= 0x0707;
|
||||
break;
|
||||
|
||||
case 0x21: /* General Purpose MSB */
|
||||
val &= 0x83;
|
||||
case 0x1c: /* Record Gain */
|
||||
val &= 0x8f0f;
|
||||
break;
|
||||
|
||||
case 0x2a: /* Extended Audio Status/Control LSB */
|
||||
#ifdef AC97_CODEC_FULL_RATE_RANGE /* enable DRA (double rate) support */
|
||||
val &= 0x0b;
|
||||
#else
|
||||
val &= 0x09;
|
||||
#endif
|
||||
case 0x1e: /* Record Gain Mic */
|
||||
if (!(dev->reset_flags & AC97_MICPCM))
|
||||
return;
|
||||
val &= 0x800f;
|
||||
break;
|
||||
|
||||
case 0x20: /* General Purpose */
|
||||
i = AC97_MIX | (dev->misc_flags & (AC97_POP | AC97_MS | AC97_LPBK));
|
||||
if (dev->reset_flags >> AC97_3D_SHIFT)
|
||||
i |= AC97_3D;
|
||||
if (dev->reset_flags & AC97_SIMSTEREO)
|
||||
i |= AC97_ST;
|
||||
if (dev->reset_flags & AC97_LOUDNESS)
|
||||
i |= AC97_LD;
|
||||
if (dev->extid_flags & AC97_DRA)
|
||||
i |= AC97_DRSS_MASK;
|
||||
val &= i;
|
||||
break;
|
||||
|
||||
case 0x22: /* 3D Control */
|
||||
switch (dev->reset_flags >> AC97_3D_SHIFT) {
|
||||
case 1: /* Analog Devices */
|
||||
case 6: /* Crystal */
|
||||
val &= 0x000f;
|
||||
break;
|
||||
|
||||
case 22: /* Avance Logic / Realtek */
|
||||
val &= 0x0003;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x24: /* Audio Interrupt and Paging Mechanism */
|
||||
if ((dev->extid_flags & AC97_REV_MASK) < AC97_REV_2_3)
|
||||
return;
|
||||
val &= 0x000f;
|
||||
break;
|
||||
|
||||
case 0x26: /* Powerdown Control/Status */
|
||||
i = dev->powerdown_mask << 8;
|
||||
val = (val & i) | (prev & ~i);
|
||||
break;
|
||||
|
||||
case 0x28: /* Extended Audio ID */
|
||||
if (dev->misc_flags & AC97_DSA)
|
||||
i |= 0x0030;
|
||||
val = (val & i) | (prev & ~i);
|
||||
break;
|
||||
|
||||
case 0x2a: /* Extended Audio Status/Control */
|
||||
i = dev->extid_flags & (AC97_VRA | AC97_DRA | AC97_SPDIF | AC97_VRM);
|
||||
if (dev->extid_flags & AC97_SPDIF)
|
||||
i |= AC97_SPSA_MASK << AC97_SPSA_SHIFT;
|
||||
i |= (dev->powerdown_mask << 3) & 0x7800; /* multichannel powerdowns */
|
||||
val = (val & i) | (prev & ~i);
|
||||
|
||||
/* Reset DAC sample rates to 48 KHz (96 KHz with DRA) if VRA is being cleared. */
|
||||
if (!(val & 0x01)) {
|
||||
if (!(val & AC97_VRA)) {
|
||||
for (i = 0x2c; i <= 0x30; i += 2)
|
||||
*((uint16_t *) &dev->regs[i]) = 48000;
|
||||
dev->regs[i >> 1] = 48000;
|
||||
}
|
||||
|
||||
/* Reset ADC sample rates to 48 KHz if VRM is being cleared. */
|
||||
if (!(val & 0x08)) {
|
||||
if (!(val & AC97_VRM)) {
|
||||
for (i = 0x32; i <= 0x34; i += 2)
|
||||
*((uint16_t *) &dev->regs[i]) = 48000;
|
||||
dev->regs[i >> 1] = 48000;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x2c ... 0x35: /* DAC/ADC Rates */
|
||||
/* Writable only if VRA/VRM is set. */
|
||||
i = (reg >= 0x32) ? 0x08 : 0x01;
|
||||
if (!(dev->regs[0x2a] & i))
|
||||
case 0x2c: /* PCM Front DAC Rate */
|
||||
case 0x32: /* PCM L/R ADC Rate */
|
||||
rate: /* Writable only if VRA/VRM is set. */
|
||||
i = (reg >= 0x32) ? AC97_VRM : AC97_VRA;
|
||||
if (!(dev->extid_flags & i))
|
||||
return;
|
||||
|
||||
#ifndef AC97_CODEC_FULL_RATE_RANGE
|
||||
/* Limit to 48 KHz on MSB write. */
|
||||
if ((reg & 1) && (((val << 8) | dev->regs[reg & 0x7e]) > 48000)) {
|
||||
*((uint16_t *) &dev->regs[reg & 0x7e]) = 48000;
|
||||
/* Limit to maximum rate. */
|
||||
if (val > dev->max_rate)
|
||||
val = dev->max_rate;
|
||||
break;
|
||||
|
||||
case 0x2e: /* PCM Surround DAC Rate */
|
||||
if (!(dev->extid_flags & AC97_SDAC))
|
||||
return;
|
||||
goto rate;
|
||||
|
||||
case 0x30: /* PCM LFE DAC Rate */
|
||||
if (!(dev->extid_flags & AC97_LDAC))
|
||||
return;
|
||||
goto rate;
|
||||
|
||||
case 0x34: /* Mic ADC Rate */
|
||||
if (!(dev->reset_flags & AC97_MICPCM))
|
||||
return;
|
||||
goto rate;
|
||||
|
||||
case 0x36: /* Center/LFE Volume */
|
||||
if (dev->extid_flags & AC97_LDAC)
|
||||
i |= 0xbf00;
|
||||
if (dev->extid_flags & AC97_CDAC)
|
||||
i |= 0x00bf;
|
||||
val &= i;
|
||||
|
||||
/* Convert 1xxxxx to 011111 where unsupported, per specification. */
|
||||
if (!(dev->misc_flags & AC97_LFE_6B) && (val & 0x2000))
|
||||
val = (val & ~0x2000) | 0x1f00;
|
||||
if (!(dev->misc_flags & AC97_CENTER_6B))
|
||||
goto clamp_5b_r;
|
||||
break;
|
||||
|
||||
case 0x38: /* Surround Volume */
|
||||
if (!(dev->extid_flags & AC97_SDAC))
|
||||
return;
|
||||
val &= 0xbfbf;
|
||||
|
||||
/* Convert 1xxxxx to 011111 where unsupported, per specification. */
|
||||
if (!(dev->misc_flags & AC97_SURR_6B))
|
||||
goto clamp_5b;
|
||||
break;
|
||||
|
||||
case 0x3a: /* S/PDIF Control */
|
||||
if (!(dev->extid_flags & AC97_SPDIF))
|
||||
return;
|
||||
break;
|
||||
|
||||
case 0x60 ... 0x6e: /* Extended */
|
||||
/* Get extended register page. */
|
||||
i = dev->regs[0x24 >> 1] & 0x000f;
|
||||
|
||||
/* Redirect a write to page 1+ to the right array, part 1. */
|
||||
if (i > 0) {
|
||||
/* Don't overflow the pages. */
|
||||
if (i > dev->vendor_reg_page_max)
|
||||
return;
|
||||
|
||||
/* Get actual previous value. */
|
||||
prev = dev->vendor_reg_pages[(i << 3) | ((reg & 0x0e) >> 1)];
|
||||
}
|
||||
|
||||
i <<= 8;
|
||||
/* fall-through */
|
||||
|
||||
case 0x5a ... 0x5e: /* Vendor Reserved */
|
||||
case 0x70 ... 0x7a:
|
||||
/* Stop if no vendor-specific registers are defined. */
|
||||
if (!dev->vendor_regs)
|
||||
return;
|
||||
|
||||
/* Look for a matching vendor-specific register. */
|
||||
i |= reg;
|
||||
for (j = 0; dev->vendor_regs[j].index; j++) {
|
||||
/* If a match was found, inject written bits. */
|
||||
if (dev->vendor_regs[j].index == i) {
|
||||
val = (val & dev->vendor_regs[j].write_mask) | (prev & ~dev->vendor_regs[j].write_mask);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* No match found. */
|
||||
if (!dev->vendor_regs[j].index)
|
||||
return;
|
||||
|
||||
/* Redirect a write to page 1+ to the right array, part 2. */
|
||||
i >>= 8;
|
||||
if (i > 0) {
|
||||
dev->vendor_reg_pages[(i << 3) | ((reg & 0x0e) >> 1)] = val;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 0x7c: /* Vendor ID1 */
|
||||
case 0x7e: /* Vendor ID2 */
|
||||
return;
|
||||
}
|
||||
|
||||
dev->regs[reg] = val;
|
||||
dev->regs[reg >> 1] = val;
|
||||
}
|
||||
|
||||
|
||||
@@ -214,38 +413,59 @@ void
|
||||
ac97_codec_reset(void *priv)
|
||||
{
|
||||
ac97_codec_t *dev = (ac97_codec_t *) priv;
|
||||
uint8_t i;
|
||||
uint16_t i, j;
|
||||
|
||||
ac97_codec_log("AC97 Codec %d: reset()\n", dev->codec_id);
|
||||
|
||||
memset(dev->regs, 0, sizeof(dev->regs));
|
||||
|
||||
/* Set default level and gain values. */
|
||||
for (i = 0x02; i <= 0x18; i += 2) {
|
||||
if (i == 0x08)
|
||||
continue;
|
||||
if (i >= 0x0c)
|
||||
dev->regs[i] = 0x08;
|
||||
dev->regs[i | 1] = (i >= 0x10) ? 0x88 : 0x80;
|
||||
dev->regs[0x02 >> 1] = AC97_MUTE;
|
||||
if (dev->misc_flags & AC97_AUXOUT)
|
||||
dev->regs[0x04 >> 1] = AC97_MUTE;
|
||||
if (dev->misc_flags & AC97_MONOOUT)
|
||||
dev->regs[0x06 >> 1] = AC97_MUTE;
|
||||
if (dev->misc_flags & AC97_PHONE)
|
||||
dev->regs[0x0c >> 1] = AC97_MUTE | 0x0008;
|
||||
dev->regs[0x0e >> 1] = AC97_MUTE | 0x0008; /* mic */
|
||||
dev->regs[0x10 >> 1] = dev->regs[0x12 >> 1] = dev->regs[0x18 >> 1] = AC97_MUTE | 0x0808; /* line in, CD, PCM out */
|
||||
if (dev->misc_flags & AC97_VIDEO)
|
||||
dev->regs[0x14 >> 1] = AC97_MUTE | 0x0808;
|
||||
if (dev->misc_flags & AC97_AUXIN)
|
||||
dev->regs[0x14 >> 1] = AC97_MUTE | 0x0808;
|
||||
if (dev->misc_flags & AC97_LDAC)
|
||||
dev->regs[0x36 >> 1] = AC97_MUTE_L;
|
||||
if (dev->misc_flags & AC97_CDAC)
|
||||
dev->regs[0x36 >> 1] |= AC97_MUTE_R;
|
||||
if (dev->misc_flags & AC97_SDAC)
|
||||
dev->regs[0x38 >> 1] = AC97_MUTE_L | AC97_MUTE_R;
|
||||
|
||||
/* Set flags. */
|
||||
dev->regs[0x00 >> 1] = dev->reset_flags;
|
||||
dev->regs[0x26 >> 1] = 0x000f; /* codec ready */
|
||||
dev->regs[0x28 >> 1] = (dev->codec_id << 14) | dev->extid_flags;
|
||||
ac97_codec_writew(dev, 0x2a, 0x0000); /* reset variable DAC/ADC sample rates */
|
||||
i = dev->extid_flags & (AC97_CDAC | AC97_SDAC | AC97_LDAC);
|
||||
dev->regs[0x2a >> 1] |= i | (i << 5); /* any additional DACs are ready but powered down */
|
||||
if (dev->extid_flags & AC97_SPDIF)
|
||||
dev->regs[0x2a >> 1] |= AC97_SPCV;
|
||||
if (dev->reset_flags & AC97_MICPCM)
|
||||
dev->regs[0x2a >> 1] |= AC97_MADC | AC97_PRL;
|
||||
|
||||
/* Set vendor ID. */
|
||||
dev->regs[0x7c >> 1] = dev->vendor_id >> 16;
|
||||
dev->regs[0x7e >> 1] = dev->vendor_id;
|
||||
|
||||
/* Set vendor-specific registers. */
|
||||
if (dev->vendor_regs) {
|
||||
for (j = 0; dev->vendor_regs[j].index; j++) {
|
||||
i = (dev->vendor_regs[j].index >> 8) & 0x000f;
|
||||
if (i > 0)
|
||||
dev->vendor_reg_pages[(i << 3) | (dev->vendor_regs[j].index >> 1)] = dev->vendor_regs[j].value;
|
||||
else
|
||||
dev->regs[dev->vendor_regs[j].index >> 1] = dev->vendor_regs[j].value;
|
||||
}
|
||||
}
|
||||
|
||||
/* Flag codec as ready. */
|
||||
dev->regs[0x26] = 0x0f;
|
||||
|
||||
/* Set up variable sample rate support. */
|
||||
#ifdef AC97_CODEC_FULL_RATE_RANGE /* enable DRA (double rate) support */
|
||||
dev->regs[0x28] = 0x0b;
|
||||
#else
|
||||
dev->regs[0x28] = 0x09;
|
||||
#endif
|
||||
ac97_codec_write(dev, 0x2a, 0x00); /* reset DAC/ADC sample rates */
|
||||
|
||||
/* Set codec and vendor IDs. */
|
||||
dev->regs[0x29] = (dev->codec_id << 6) | 0x02;
|
||||
dev->regs[0x7c] = dev->vendor_id >> 16;
|
||||
dev->regs[0x7d] = dev->vendor_id >> 24;
|
||||
dev->regs[0x7e] = dev->vendor_id;
|
||||
dev->regs[0x7f] = dev->vendor_id >> 8;
|
||||
}
|
||||
|
||||
|
||||
@@ -253,24 +473,38 @@ void
|
||||
ac97_codec_getattn(void *priv, uint8_t reg, int *l, int *r)
|
||||
{
|
||||
ac97_codec_t *dev = (ac97_codec_t *) priv;
|
||||
uint8_t r_val = dev->regs[reg],
|
||||
l_val = dev->regs[reg | 1];
|
||||
uint16_t val = dev->regs[reg >> 1];
|
||||
|
||||
if (l_val & 0x80) { /* mute */
|
||||
/* Apply full mute and powerdowns. */
|
||||
int full_mute = (reg < 0x36);
|
||||
if ((full_mute && (val & AC97_MUTE)) || /* full mute */
|
||||
(dev->regs[0x26 >> 1] & 0x3e00) || /* DAC powerdown */
|
||||
((reg == 0x38) && (dev->regs[0x2a >> 1] & AC97_PRJ))) { /* surround DAC powerdown */
|
||||
*l = 0;
|
||||
*r = 0;
|
||||
return;
|
||||
} else { /* per-channel mute */
|
||||
/* Determine attenuation value. */
|
||||
uint8_t l_val = val >> 8, r_val = val;
|
||||
if (reg <= 0x06) { /* 6-bit level */
|
||||
*l = codec_attn[0x3f - (l_val & 0x3f)];
|
||||
*r = codec_attn[0x3f - (r_val & 0x3f)];
|
||||
} else { /* 5-bit gain */
|
||||
*l = codec_attn[0x47 - (l_val & 0x1f)];
|
||||
*r = codec_attn[0x47 - (r_val & 0x1f)];
|
||||
}
|
||||
|
||||
/* Apply per-channel mute and center/LFE powerdowns where applicable. */
|
||||
if (!full_mute) {
|
||||
if ((val & AC97_MUTE_L) || /* left mute */
|
||||
((reg == 0x36) && (dev->regs[0x2a >> 1] & AC97_PRK))) /* LFE DAC powerdown */
|
||||
*l = 0;
|
||||
if ((val & AC97_MUTE_R) || /* right mute */
|
||||
((reg == 0x36) && (dev->regs[0x2a >> 1] & AC97_PRI))) /* center DAC powerdown */
|
||||
*r = 0;
|
||||
}
|
||||
}
|
||||
|
||||
l_val &= 0x1f;
|
||||
r_val &= 0x1f;
|
||||
if (reg < 0x10) { /* 5-bit level (converted from 6-bit on register write) */
|
||||
*l = codec_attn[0x1f - l_val];
|
||||
*r = codec_attn[0x1f - r_val];
|
||||
} else { /* 5-bit gain */
|
||||
*l = codec_attn[0x27 - l_val];
|
||||
*r = codec_attn[0x27 - r_val];
|
||||
}
|
||||
ac97_codec_log("AC97 Codec %d: getattn(%02X) = %d %d\n", dev->codec_id, reg, *l, *r);
|
||||
}
|
||||
|
||||
|
||||
@@ -280,13 +514,11 @@ ac97_codec_getrate(void *priv, uint8_t reg)
|
||||
ac97_codec_t *dev = (ac97_codec_t *) priv;
|
||||
|
||||
/* Get configured sample rate, which is always 48000 if VRA/VRM is not set. */
|
||||
uint32_t ret = *((uint16_t *) &dev->regs[reg]);
|
||||
uint32_t ret = dev->regs[reg >> 1];
|
||||
|
||||
#ifdef AC97_CODEC_FULL_RATE_RANGE
|
||||
/* If this is a DAC, double sample rate if DRA is set. */
|
||||
if ((reg < 0x32) && (dev->regs[0x2a] & 0x02))
|
||||
/* If this is the PCM DAC, double sample rate if DRA is set. */
|
||||
if ((reg == 0x2c) && (dev->regs[0x2a >> 1] & AC97_DRA))
|
||||
ret <<= 1;
|
||||
#endif
|
||||
|
||||
ac97_codec_log("AC97 Codec %d: getrate(%02X) = %d\n", dev->codec_id, reg, ret);
|
||||
|
||||
@@ -300,7 +532,12 @@ ac97_codec_init(const device_t *info)
|
||||
ac97_codec_t *dev = malloc(sizeof(ac97_codec_t));
|
||||
memset(dev, 0, sizeof(ac97_codec_t));
|
||||
|
||||
dev->vendor_id = info->local;
|
||||
dev->vendor_id = ac97_codecs[info->local].vendor_id;
|
||||
dev->max_rate = ac97_codecs[info->local].max_rate;
|
||||
dev->extid_flags = ac97_codecs[info->local].extid_flags;
|
||||
dev->misc_flags = ac97_codecs[info->local].misc_flags;
|
||||
dev->powerdown_mask = ac97_codecs[info->local].powerdown_mask;
|
||||
dev->vendor_regs = ac97_codecs[info->local].vendor_regs;
|
||||
ac97_codec_log("AC97 Codec %d: init(%c%c%c%02X)\n", ac97_codec_id, (dev->vendor_id >> 24) & 0xff, (dev->vendor_id >> 16) & 0xff, (dev->vendor_id >> 8) & 0xff, dev->vendor_id & 0xff);
|
||||
|
||||
/* Associate this codec to the current controller. */
|
||||
@@ -315,6 +552,26 @@ ac97_codec_init(const device_t *info)
|
||||
ac97_codec += sizeof(ac97_codec_t *);
|
||||
dev->codec_id = ac97_codec_id++;
|
||||
|
||||
/* Allocate vendor-specific register pages if required. */
|
||||
if (dev->vendor_regs) {
|
||||
/* Get the highest vendor-specific register page number. */
|
||||
int i, j;
|
||||
dev->vendor_reg_page_max = 0;
|
||||
for (j = 0; dev->vendor_regs[j].index; j++) {
|
||||
i = (dev->vendor_regs[j].index >> 8) & 0x000f;
|
||||
if (i > dev->vendor_reg_page_max)
|
||||
dev->vendor_reg_page_max = i;
|
||||
}
|
||||
|
||||
/* Allocate pages 1+. */
|
||||
if (dev->vendor_reg_page_max > 0) {
|
||||
ac97_codec_log("AC97 Codec %d: Allocating %d vendor-specific register pages\n", dev->codec_id, dev->vendor_reg_page_max);
|
||||
i = 16 * dev->vendor_reg_page_max;
|
||||
dev->vendor_reg_pages = (uint16_t *) malloc(i);
|
||||
memset(dev->vendor_reg_pages, 0, i);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize codec registers. */
|
||||
ac97_codec_reset(dev);
|
||||
|
||||
@@ -329,6 +586,8 @@ ac97_codec_close(void *priv)
|
||||
|
||||
ac97_codec_log("AC97 Codec %d: close()\n", dev->codec_id);
|
||||
|
||||
if (dev->vendor_reg_pages)
|
||||
free(dev->vendor_reg_pages);
|
||||
free(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,12 @@ typedef struct {
|
||||
int32_t sample_count;
|
||||
uint8_t entry_flags, fifo[32], restart;
|
||||
|
||||
pc_timer_t timer;
|
||||
int16_t out_l, out_r;
|
||||
int vol_l, vol_r, pos;
|
||||
int32_t buffer[SOUNDBUFLEN * 2];
|
||||
uint64_t timer_latch;
|
||||
|
||||
pc_timer_t dma_timer, poll_timer;
|
||||
} ac97_via_sgd_t;
|
||||
|
||||
typedef struct _ac97_via_ {
|
||||
@@ -56,12 +61,7 @@ typedef struct _ac97_via_ {
|
||||
ac97_codec_t *codec[2][2];
|
||||
ac97_via_sgd_t sgd[6];
|
||||
|
||||
pc_timer_t timer_count, timer_count_fm;
|
||||
uint64_t timer_latch, timer_latch_fm;
|
||||
int16_t out_l, out_r, fm_out_l, fm_out_r;
|
||||
int master_vol_l, master_vol_r, pcm_vol_l, pcm_vol_r, cd_vol_l, cd_vol_r;
|
||||
int32_t buffer[SOUNDBUFLEN * 2], fm_buffer[SOUNDBUFLEN * 2];
|
||||
int pos, fm_pos;
|
||||
int master_vol_l, master_vol_r, cd_vol_l, cd_vol_r;
|
||||
} ac97_via_t;
|
||||
|
||||
|
||||
@@ -142,13 +142,13 @@ ac97_via_write_control(void *priv, uint8_t modem, uint8_t val)
|
||||
/* Start or stop PCM playback. */
|
||||
i = (val & 0xf4) == 0xc4;
|
||||
if (i && !dev->pcm_enabled)
|
||||
timer_advance_u64(&dev->timer_count, dev->timer_latch);
|
||||
timer_advance_u64(&dev->sgd[0].poll_timer, dev->sgd[0].timer_latch);
|
||||
dev->pcm_enabled = i;
|
||||
|
||||
/* Start or stop FM playback. */
|
||||
i = (val & 0xf2) == 0xc2;
|
||||
if (i && !dev->fm_enabled)
|
||||
timer_advance_u64(&dev->timer_count_fm, dev->timer_latch);
|
||||
timer_advance_u64(&dev->sgd[2].poll_timer, dev->sgd[2].timer_latch);
|
||||
dev->fm_enabled = i;
|
||||
|
||||
/* Update primary audio codec state. */
|
||||
@@ -176,13 +176,14 @@ ac97_via_update_irqs(ac97_via_t *dev)
|
||||
|
||||
|
||||
static void
|
||||
ac97_via_update_codec(ac97_via_t *dev) {
|
||||
ac97_via_update_codec(ac97_via_t *dev)
|
||||
{
|
||||
/* Get primary audio codec. */
|
||||
ac97_codec_t *codec = dev->codec[0][0];
|
||||
|
||||
/* Update volumes according to codec registers. */
|
||||
ac97_codec_getattn(codec, 0x02, &dev->master_vol_l, &dev->master_vol_r);
|
||||
ac97_codec_getattn(codec, 0x18, &dev->pcm_vol_l, &dev->pcm_vol_r);
|
||||
ac97_codec_getattn(codec, 0x18, &dev->sgd[0].vol_l, &dev->sgd[0].vol_r);
|
||||
ac97_codec_getattn(codec, 0x12, &dev->cd_vol_l, &dev->cd_vol_r);
|
||||
|
||||
/* Update sample rate according to codec registers and the variable sample rate flag. */
|
||||
@@ -375,19 +376,18 @@ ac97_via_sgd_write(uint16_t addr, uint8_t val, void *priv)
|
||||
if (codec) {
|
||||
/* Read from or write to codec. */
|
||||
if (val & 0x80) {
|
||||
if (val & 1) { /* return 0x00 on unaligned reads */
|
||||
if (val & 1) { /* return 0x0000 on unaligned reads (real 686B behavior) */
|
||||
dev->sgd_regs[0x80] = dev->sgd_regs[0x81] = 0x00;
|
||||
} else {
|
||||
dev->sgd_regs[0x80] = dev->codec_shadow[modem].regs_codec[i][val] = ac97_codec_read(codec, val);
|
||||
dev->sgd_regs[0x81] = dev->codec_shadow[modem].regs_codec[i][val | 1] = ac97_codec_read(codec, val | 1);
|
||||
*((uint16_t *) &dev->codec_shadow[modem].regs_codec[i][val & 0x7f]) = *((uint16_t *) &dev->sgd_regs[0x80]) =
|
||||
ac97_codec_readw(codec, val);
|
||||
}
|
||||
|
||||
/* Flag data/status/index for this codec as valid. */
|
||||
if (val & 0x80)
|
||||
dev->sgd_regs[0x83] |= 0x02 << (i << 1);
|
||||
dev->sgd_regs[0x83] |= 0x02 << (i << 1);
|
||||
} else if (!(val & 1)) { /* do nothing on unaligned writes */
|
||||
ac97_codec_write(codec, val, dev->codec_shadow[modem].regs_codec[i][val] = dev->sgd_regs[0x80]);
|
||||
ac97_codec_write(codec, val | 1, dev->codec_shadow[modem].regs_codec[i][val | 1] = dev->sgd_regs[0x81]);
|
||||
ac97_codec_writew(codec, val,
|
||||
*((uint16_t *) &dev->codec_shadow[modem].regs_codec[i][val & 0x7f]) = *((uint16_t *) &dev->sgd_regs[0x80]));
|
||||
|
||||
/* Update primary audio codec state if that codec was written to. */
|
||||
if (!modem && !i)
|
||||
@@ -503,10 +503,10 @@ ac97_via_remap_modem_codec(void *priv, uint16_t new_io_base, uint8_t enable)
|
||||
|
||||
|
||||
static void
|
||||
ac97_via_update(ac97_via_t *dev)
|
||||
ac97_via_update_stereo(ac97_via_t *dev, ac97_via_sgd_t *sgd)
|
||||
{
|
||||
int32_t l = (((dev->out_l * dev->pcm_vol_l) >> 15) * dev->master_vol_l) >> 15,
|
||||
r = (((dev->out_r * dev->pcm_vol_r) >> 15) * dev->master_vol_r) >> 15;
|
||||
int32_t l = (((sgd->out_l * sgd->vol_l) >> 15) * dev->master_vol_l) >> 15,
|
||||
r = (((sgd->out_r * sgd->vol_r) >> 15) * dev->master_vol_r) >> 15;
|
||||
|
||||
if (l < -32768)
|
||||
l = -32768;
|
||||
@@ -517,19 +517,9 @@ ac97_via_update(ac97_via_t *dev)
|
||||
else if (r > 32767)
|
||||
r = 32767;
|
||||
|
||||
for (; dev->pos < sound_pos_global; dev->pos++) {
|
||||
dev->buffer[dev->pos*2] = l;
|
||||
dev->buffer[dev->pos*2 + 1] = r;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ac97_via_update_fm(ac97_via_t *dev)
|
||||
{
|
||||
for (; dev->fm_pos < sound_pos_global; dev->fm_pos++) {
|
||||
dev->fm_buffer[dev->fm_pos*2] = dev->fm_out_l;
|
||||
dev->fm_buffer[dev->fm_pos*2 + 1] = dev->fm_out_r;
|
||||
for (; sgd->pos < sound_pos_global; sgd->pos++) {
|
||||
sgd->buffer[sgd->pos*2] = l;
|
||||
sgd->buffer[sgd->pos*2 + 1] = r;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,7 +536,7 @@ ac97_via_sgd_process(void *priv)
|
||||
return;
|
||||
|
||||
/* Schedule next run. */
|
||||
timer_on_auto(&sgd->timer, 10.0);
|
||||
timer_on_auto(&sgd->dma_timer, 10.0);
|
||||
|
||||
/* Process SGD if it's active, and the FIFO has room or is disabled. */
|
||||
if ((sgd_status == 0x80) && (sgd->always_run || ((sgd->fifo_end - sgd->fifo_pos) <= (sizeof(sgd->fifo) - 4)))) {
|
||||
@@ -652,38 +642,38 @@ ac97_via_sgd_process(void *priv)
|
||||
|
||||
|
||||
static void
|
||||
ac97_via_poll(void *priv)
|
||||
ac97_via_poll_stereo(void *priv)
|
||||
{
|
||||
ac97_via_t *dev = (ac97_via_t *) priv;
|
||||
ac97_via_sgd_t *sgd = &dev->sgd[0]; /* Audio Read */
|
||||
|
||||
/* Schedule next run if PCM playback is enabled. */
|
||||
if (dev->pcm_enabled)
|
||||
timer_advance_u64(&dev->timer_count, dev->timer_latch);
|
||||
timer_advance_u64(&sgd->poll_timer, sgd->timer_latch);
|
||||
|
||||
/* Update audio buffer. */
|
||||
ac97_via_update(dev);
|
||||
/* Update stereo audio buffer. */
|
||||
ac97_via_update_stereo(dev, sgd);
|
||||
|
||||
/* Feed next sample from the FIFO. */
|
||||
switch (dev->sgd_regs[0x02] & 0x30) {
|
||||
switch (dev->sgd_regs[sgd->id | 0x2] & 0x30) {
|
||||
case 0x00: /* Mono, 8-bit PCM */
|
||||
if ((sgd->fifo_end - sgd->fifo_pos) >= 1) {
|
||||
dev->out_l = dev->out_r = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
sgd->out_l = sgd->out_r = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x10: /* Stereo, 8-bit PCM */
|
||||
if ((sgd->fifo_end - sgd->fifo_pos) >= 2) {
|
||||
dev->out_l = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
dev->out_r = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
sgd->out_l = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
sgd->out_r = (sgd->fifo[sgd->fifo_pos++ & (sizeof(sgd->fifo) - 1)] ^ 0x80) << 8;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x20: /* Mono, 16-bit PCM */
|
||||
if ((sgd->fifo_end - sgd->fifo_pos) >= 2) {
|
||||
dev->out_l = dev->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->out_l = sgd->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->fifo_pos += 2;
|
||||
return;
|
||||
}
|
||||
@@ -691,9 +681,9 @@ ac97_via_poll(void *priv)
|
||||
|
||||
case 0x30: /* Stereo, 16-bit PCM */
|
||||
if ((sgd->fifo_end - sgd->fifo_pos) >= 4) {
|
||||
dev->out_l = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->out_l = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->fifo_pos += 2;
|
||||
dev->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->fifo_pos += 2;
|
||||
return;
|
||||
}
|
||||
@@ -701,7 +691,7 @@ ac97_via_poll(void *priv)
|
||||
}
|
||||
|
||||
/* Feed silence if the FIFO is empty. */
|
||||
dev->out_l = dev->out_r = 0;
|
||||
sgd->out_l = sgd->out_r = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -713,23 +703,23 @@ ac97_via_poll_fm(void *priv)
|
||||
|
||||
/* Schedule next run if FM playback is enabled. */
|
||||
if (dev->fm_enabled)
|
||||
timer_advance_u64(&dev->timer_count_fm, dev->timer_latch_fm);
|
||||
timer_advance_u64(&sgd->poll_timer, sgd->timer_latch);
|
||||
|
||||
/* Update FM audio buffer. */
|
||||
ac97_via_update_fm(dev);
|
||||
ac97_via_update_stereo(dev, sgd);
|
||||
|
||||
/* Feed next sample from the FIFO.
|
||||
The data format is not documented, but it probes as 16-bit stereo at 24 KHz. */
|
||||
if ((sgd->fifo_end - sgd->fifo_pos) >= 4) {
|
||||
dev->out_l = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->out_l = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->fifo_pos += 2;
|
||||
dev->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->out_r = *((uint16_t *) &sgd->fifo[sgd->fifo_pos & (sizeof(sgd->fifo) - 1)]);
|
||||
sgd->fifo_pos += 2;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Feed silence if the FIFO is empty. */
|
||||
dev->fm_out_l = dev->fm_out_r = 0;
|
||||
sgd->out_l = sgd->out_r = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -738,15 +728,15 @@ ac97_via_get_buffer(int32_t *buffer, int len, void *priv)
|
||||
{
|
||||
ac97_via_t *dev = (ac97_via_t *) priv;
|
||||
|
||||
ac97_via_update(dev);
|
||||
ac97_via_update_fm(dev);
|
||||
ac97_via_update_stereo(dev, &dev->sgd[0]);
|
||||
ac97_via_update_stereo(dev, &dev->sgd[2]);
|
||||
|
||||
for (int c = 0; c < len * 2; c++) {
|
||||
buffer[c] += dev->buffer[c] / 2;
|
||||
buffer[c] += dev->fm_buffer[c] / 2;
|
||||
buffer[c] += dev->sgd[0].buffer[c] / 2;
|
||||
buffer[c] += dev->sgd[2].buffer[c] / 2;
|
||||
}
|
||||
|
||||
dev->pos = dev->fm_pos = 0;
|
||||
dev->sgd[0].pos = dev->sgd[2].pos = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -773,8 +763,8 @@ ac97_via_speed_changed(void *priv)
|
||||
else
|
||||
freq = 48000.0;
|
||||
|
||||
dev->timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / freq));
|
||||
dev->timer_latch_fm = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 24000.0));
|
||||
dev->sgd[0].timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / freq));
|
||||
dev->sgd[2].timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 24000.0));
|
||||
}
|
||||
|
||||
|
||||
@@ -801,12 +791,16 @@ ac97_via_init(const device_t *info)
|
||||
if ((i != 0) && (i != 2))
|
||||
dev->sgd[i].always_run = 1;
|
||||
|
||||
timer_add(&dev->sgd[i].timer, ac97_via_sgd_process, &dev->sgd[i], 0);
|
||||
/* No volume control on FM SGD that I know of. */
|
||||
if (i == 2)
|
||||
dev->sgd[i].vol_l = dev->sgd[i].vol_r = 32767;
|
||||
|
||||
timer_add(&dev->sgd[i].dma_timer, ac97_via_sgd_process, &dev->sgd[i], 0);
|
||||
}
|
||||
|
||||
/* Set up playback pollers. */
|
||||
timer_add(&dev->timer_count, ac97_via_poll, dev, 0);
|
||||
timer_add(&dev->timer_count_fm, ac97_via_poll_fm, dev, 0);
|
||||
timer_add(&dev->sgd[0].poll_timer, ac97_via_poll_stereo, dev, 0);
|
||||
timer_add(&dev->sgd[2].poll_timer, ac97_via_poll_fm, dev, 0);
|
||||
ac97_via_speed_changed(dev);
|
||||
|
||||
/* Set up playback handler. */
|
||||
|
||||
@@ -1013,13 +1013,10 @@ es1371_outl(uint16_t port, uint32_t val, void *p)
|
||||
case 0x14:
|
||||
if (val & CODEC_READ) {
|
||||
dev->codec_ctrl &= 0x00ff0000;
|
||||
val = (val >> 16) & 0x7e;
|
||||
dev->codec_ctrl |= ac97_codec_read(dev->codec, val);
|
||||
dev->codec_ctrl |= ac97_codec_read(dev->codec, val | 1) << 8;
|
||||
dev->codec_ctrl |= ac97_codec_readw(dev->codec, val >> 16);
|
||||
} else {
|
||||
dev->codec_ctrl = val & 0x00ffffff;
|
||||
ac97_codec_write(dev->codec, (val >> 16) & 0x7e, val & 0xff);
|
||||
ac97_codec_write(dev->codec, ((val >> 16) & 0x7e) | 1, val >> 8);
|
||||
ac97_codec_writew(dev->codec, val >> 16, val);
|
||||
|
||||
ac97_codec_getattn(dev->codec, 0x02, &dev->master_vol_l, &dev->master_vol_r);
|
||||
ac97_codec_getattn(dev->codec, 0x12, &dev->cd_vol_l, &dev->cd_vol_r);
|
||||
@@ -1703,24 +1700,17 @@ es1371_poll(void *p)
|
||||
But if anything sets MIDI Input and Output together we'd have to take account
|
||||
of the MIDI Output case, and disable IRQ's and RX bits when MIDI Input is
|
||||
enabled as well but not in the MIDI Output portion */
|
||||
if (dev->uart_ctrl & UART_CTRL_TXINTEN)
|
||||
dev->int_status |= INT_STATUS_UART;
|
||||
else
|
||||
dev->int_status &= ~INT_STATUS_UART;
|
||||
dev->int_status &= ~INT_STATUS_UART;
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
} else if (!(dev->uart_ctrl & UART_CTRL_RXINTEN) && ((dev->uart_ctrl & UART_CTRL_TXINTEN))) {
|
||||
/* Or enable the UART IRQ and the respective TX bits only when the MIDI Output is
|
||||
enabled */
|
||||
dev->int_status |= INT_STATUS_UART;
|
||||
} else {
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
}
|
||||
|
||||
if (dev->uart_ctrl & UART_CTRL_RXINTEN) {
|
||||
if (dev->uart_ctrl & UART_CTRL_TXINTEN)
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
else
|
||||
dev->uart_status &= ~(UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
} else
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
|
||||
audiopci_log("UART control = %02x\n", dev->uart_ctrl & (UART_CTRL_RXINTEN | UART_CTRL_TXINTEN));
|
||||
es1371_update_irqs(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -108,12 +108,10 @@ timer_control(opl_t *dev, int tmr, int start)
|
||||
timer_on_auto(&dev->timers[tmr], (tmr == 1) ? 320.0 : 80.0);
|
||||
} else {
|
||||
opl_log("Timer %i stopped\n", tmr);
|
||||
if (!(dev->flags & FLAG_OPL3)) {
|
||||
if (tmr == 1) {
|
||||
dev->status &= ~STAT_TMR2_OVER;
|
||||
} else
|
||||
dev->status &= ~STAT_TMR1_OVER;
|
||||
}
|
||||
if (tmr == 1) {
|
||||
dev->status &= ~STAT_TMR2_OVER;
|
||||
} else
|
||||
dev->status &= ~STAT_TMR1_OVER;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@ static const SOUND_CARD sound_cards[] =
|
||||
{ "sbmcv", &sb_mcv_device },
|
||||
{ "sbpromcv", &sb_pro_mcv_device },
|
||||
{ "es1371", &es1371_device },
|
||||
{ "ad1881", &ad1881_device },
|
||||
{ "cs4297a", &cs4297a_device },
|
||||
{ "", NULL }
|
||||
};
|
||||
|
||||
@@ -50,6 +50,7 @@ SDL_mutex *blitmtx;
|
||||
SDL_threadID eventthread;
|
||||
static int exit_event = 0;
|
||||
static int fullscreen_pending = 0;
|
||||
uint32_t lang_id = 0x0409, lang_sys = 0x0409; // Multilangual UI variables, for now all set to LCID of en-US
|
||||
|
||||
static const uint16_t sdl_to_xt[0x200] =
|
||||
{
|
||||
@@ -1220,6 +1221,30 @@ char* plat_vidapi_name(int i)
|
||||
{
|
||||
return "default";
|
||||
}
|
||||
|
||||
void
|
||||
set_language(uint32_t id)
|
||||
{
|
||||
lang_id = id;
|
||||
}
|
||||
|
||||
|
||||
/* Sets up the program language before initialization. */
|
||||
uint32_t plat_language_code(char* langcode)
|
||||
{
|
||||
/* or maybe not */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Converts back the language code to LCID */
|
||||
void
|
||||
plat_language_code_r(uint32_t lcid, char* outbuf, int len)
|
||||
{
|
||||
/* or maybe not */
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void joystick_init(void) {}
|
||||
void joystick_close(void) {}
|
||||
void joystick_process(void) {}
|
||||
|
||||
@@ -101,11 +101,7 @@ thread_wait_event(event_t *handle, int timeout)
|
||||
event_pthread_t *event = (event_pthread_t *)handle;
|
||||
struct timespec abstime;
|
||||
|
||||
#ifdef HAS_TIMESPEC_GET
|
||||
timespec_get(&abstime, TIME_UTC);
|
||||
#else
|
||||
clock_gettime(CLOCK_REALTIME, &abstime);
|
||||
#endif
|
||||
abstime.tv_nsec += (timeout % 1000) * 1000000;
|
||||
abstime.tv_sec += (timeout / 1000);
|
||||
if (abstime.tv_nsec > 1000000000) {
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
# Copyright 2020,2021 David Hrdlička.
|
||||
#
|
||||
|
||||
add_library(vid OBJECT video.c vid_table.c vid_cga.c vid_cga_comp.c
|
||||
add_library(vid OBJECT agpgart.c video.c vid_table.c vid_cga.c vid_cga_comp.c
|
||||
vid_compaq_cga.c vid_mda.c vid_hercules.c vid_herculesplus.c
|
||||
vid_incolor.c vid_colorplus.c vid_genius.c vid_pgc.c vid_im1024.c
|
||||
vid_sigma.c vid_wy700.c vid_ega.c vid_ega_render.c vid_svga.c
|
||||
vid_svga_render.c vid_ddc.c vid_vga.c vid_ati_eeprom.c vid_ati18800.c
|
||||
vid_ati28800.c vid_ati_mach64.c vid_ati68860_ramdac.c vid_bt48x_ramdac.c
|
||||
vid_av9194.c vid_icd2061.c vid_ics2494.c vid_ics2595.c vid_cl54xx.c
|
||||
vid_et3000.c vid_et4000.c vid_sc1148x_ramdac.c vid_sc1502x_ramdac.c
|
||||
vid_et4000w32.c vid_stg_ramdac.c vid_ht216.c vid_oak_oti.c vid_paradise.c vid_rtg310x.c
|
||||
vid_et4000.c vid_sc1148x_ramdac.c vid_sc1502x_ramdac.c vid_et4000w32.c
|
||||
vid_stg_ramdac.c vid_ht216.c vid_oak_oti.c vid_paradise.c vid_rtg310x.c
|
||||
vid_f82c425.c vid_ti_cf62011.c vid_tvga.c vid_tgui9440.c vid_tkd8001_ramdac.c
|
||||
vid_att20c49x_ramdac.c vid_s3.c vid_s3_virge.c vid_ibm_rgb528_ramdac.c
|
||||
vid_sdac_ramdac.c vid_ogc.c vid_nga.c vid_tvp3026_ramdac.c)
|
||||
|
||||
193
src/video/agpgart.c
Normal file
@@ -0,0 +1,193 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* AGP Graphics Address Remapping Table remapping emulation.
|
||||
*
|
||||
*
|
||||
*
|
||||
* Authors: RichardG, <richardg867@gmail.com>
|
||||
*
|
||||
* Copyright 2021 RichardG.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define HAVE_STDARG_H
|
||||
#include <86box/86box.h>
|
||||
#include <86box/device.h>
|
||||
#include <86box/mem.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
int aperture_enable;
|
||||
uint32_t aperture_base, aperture_size, aperture_mask, gart_base;
|
||||
mem_mapping_t aperture_mapping;
|
||||
} agpgart_t;
|
||||
|
||||
|
||||
#ifdef ENABLE_AGPGART_LOG
|
||||
int agpgart_do_log = ENABLE_AGPGART_LOG;
|
||||
|
||||
static void
|
||||
agpgart_log(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (agpgart_do_log) {
|
||||
va_start(ap, fmt);
|
||||
pclog_ex(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define agpgart_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) handle;
|
||||
|
||||
agpgart_log("AGP GART: set_aperture(%08X, %d, %d)\n", base, size, enable);
|
||||
|
||||
/* Disable old aperture mapping. */
|
||||
mem_mapping_disable(&dev->aperture_mapping);
|
||||
|
||||
/* Set new aperture base address, size and mask. */
|
||||
dev->aperture_base = base;
|
||||
dev->aperture_size = size;
|
||||
dev->aperture_mask = size - 1;
|
||||
|
||||
/* Enable new aperture mapping if requested. */
|
||||
if (dev->aperture_base && dev->aperture_size && dev->aperture_enable) {
|
||||
mem_mapping_set_addr(&dev->aperture_mapping, dev->aperture_base, dev->aperture_size);
|
||||
mem_mapping_enable(&dev->aperture_mapping);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
agpgart_set_gart(void *handle, uint32_t base)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) handle;
|
||||
|
||||
agpgart_log("AGP GART: set_gart(%08X)\n", base);
|
||||
|
||||
/* Set GART base address. */
|
||||
dev->gart_base = base;
|
||||
}
|
||||
|
||||
|
||||
static uint32_t
|
||||
agpgart_translate(uint32_t addr, agpgart_t *dev)
|
||||
{
|
||||
/* Extract the bits we care about. */
|
||||
addr &= dev->aperture_mask;
|
||||
|
||||
/* Get the GART pointer for this page. */
|
||||
register uint32_t gart_ptr = mem_readl_phys(dev->gart_base + ((addr >> 10) & 0xfffffffc)) & 0xfffff000;
|
||||
|
||||
/* Return remapped address with the page offset. */
|
||||
return gart_ptr | (addr & 0x00000fff);
|
||||
}
|
||||
|
||||
|
||||
static uint8_t
|
||||
agpgart_aperture_readb(uint32_t addr, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
return mem_readb_phys(agpgart_translate(addr, dev));
|
||||
}
|
||||
|
||||
|
||||
static uint16_t
|
||||
agpgart_aperture_readw(uint32_t addr, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
return mem_readw_phys(agpgart_translate(addr, dev));
|
||||
}
|
||||
|
||||
|
||||
static uint32_t
|
||||
agpgart_aperture_readl(uint32_t addr, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
return mem_readl_phys(agpgart_translate(addr, dev));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
agpgart_aperture_writeb(uint32_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
mem_writeb_phys(agpgart_translate(addr, dev), val);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
agpgart_aperture_writew(uint32_t addr, uint16_t val, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
mem_writew_phys(agpgart_translate(addr, dev), val);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
agpgart_aperture_writel(uint32_t addr, uint32_t val, void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
mem_writel_phys(agpgart_translate(addr, dev), val);
|
||||
}
|
||||
|
||||
|
||||
static void *
|
||||
agpgart_init(const device_t *info)
|
||||
{
|
||||
agpgart_t *dev = malloc(sizeof(agpgart_t));
|
||||
memset(dev, 0, sizeof(agpgart_t));
|
||||
|
||||
agpgart_log("AGP GART: init()\n");
|
||||
|
||||
/* Create aperture mapping. */
|
||||
mem_mapping_add(&dev->aperture_mapping, 0, 0,
|
||||
agpgart_aperture_readb, agpgart_aperture_readw, agpgart_aperture_readl,
|
||||
agpgart_aperture_writeb, agpgart_aperture_writew, agpgart_aperture_writel,
|
||||
NULL, MEM_MAPPING_EXTERNAL, dev);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
agpgart_close(void *priv)
|
||||
{
|
||||
agpgart_t *dev = (agpgart_t *) priv;
|
||||
|
||||
agpgart_log("AGP GART: close()\n");
|
||||
|
||||
/* Disable aperture. */
|
||||
mem_mapping_disable(&dev->aperture_mapping);
|
||||
|
||||
free(dev);
|
||||
}
|
||||
|
||||
|
||||
const device_t agpgart_device =
|
||||
{
|
||||
"AGP Graphics Address Remapping Table",
|
||||
DEVICE_PCI,
|
||||
0,
|
||||
agpgart_init, agpgart_close, NULL,
|
||||
{ NULL },
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -1780,28 +1780,6 @@ gd54xx_recalctimings(svga_t *svga)
|
||||
}
|
||||
|
||||
svga->vram_display_mask = (svga->crtc[0x1b] & 2) ? gd54xx->vram_mask : 0x3ffff;
|
||||
|
||||
pclog("svga->crtc[0x1a] = %02X\n", svga->crtc[0x1a]);
|
||||
pclog("svga->crtc[0x1b] = %02X\n", svga->crtc[0x1b]);
|
||||
pclog("svga->crtc[0x1c] = %02X\n", svga->crtc[0x1c]);
|
||||
|
||||
if (svga->crtc[0x27] >= CIRRUS_ID_CLGD5430)
|
||||
svga->htotal += ((svga->crtc[0x1c] >> 3) & 0x07);
|
||||
|
||||
if (svga->crtc[0x1b] & ((svga->crtc[0x27] >= CIRRUS_ID_CLGD5424) ? 0xa0 : 0x20)) {
|
||||
/* Special blanking mode: the blank start and end become components of the window generator,
|
||||
and the actual blanking comes from the display enable signal. */
|
||||
/* Start blanking at the first character clock after the last active one. */
|
||||
svga->hblankstart = svga->crtc[1] + 1;
|
||||
svga->hblank_end_val = (svga->htotal + 6) & 0x3f;
|
||||
/* In this mode, the dots per clock are always 8 or 16, never 9 or 18. */
|
||||
if (!svga->scrblank && svga->attr_palette_enable)
|
||||
svga->dots_per_clock = (svga->seqregs[1] & 8) ? 16 : 8;
|
||||
/* No overscan in this mode. */
|
||||
svga->hblank_overscan = 0;
|
||||
/* Also make sure vertical blanking starts on display end. */
|
||||
svga->vblankstart = svga->dispend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1168,6 +1168,9 @@ static const device_config_t ega_config[] =
|
||||
{
|
||||
"memory", "Memory size", CONFIG_SELECTION, "", 256, "", { 0 },
|
||||
{
|
||||
{
|
||||
"32 kB", 32
|
||||
},
|
||||
{
|
||||
"64 kB", 64
|
||||
},
|
||||
|
||||
@@ -1,308 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Emulation of the Tseng Labs ET3000.
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2016-2018 Miran Grca.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include <86box/86box.h>
|
||||
#include <86box/io.h>
|
||||
#include <86box/mca.h>
|
||||
#include <86box/mem.h>
|
||||
#include <86box/rom.h>
|
||||
#include <86box/device.h>
|
||||
#include <86box/timer.h>
|
||||
#include <86box/video.h>
|
||||
#include <86box/vid_svga.h>
|
||||
#include <86box/vid_svga_render.h>
|
||||
|
||||
|
||||
#define BIOS_ROM_PATH "roms/video/et3000/Tseng ET3000AX ISA VGA-VGA ULTRA.bin"
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
int type;
|
||||
|
||||
svga_t svga;
|
||||
|
||||
rom_t bios_rom;
|
||||
|
||||
uint8_t banking;
|
||||
} et3000_t;
|
||||
|
||||
|
||||
static video_timings_t timing_et3000_isa = {VIDEO_ISA, 3, 3, 6, 5, 5, 10};
|
||||
|
||||
static uint8_t et3000_in(uint16_t addr, void *priv);
|
||||
static void et3000_out(uint16_t addr, uint8_t val, void *priv);
|
||||
|
||||
|
||||
static uint8_t
|
||||
et3000_in(uint16_t addr, void *priv)
|
||||
{
|
||||
et3000_t *dev = (et3000_t *)priv;
|
||||
svga_t *svga = &dev->svga;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 ||
|
||||
(addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1)) addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3cd: /*Banking*/
|
||||
return dev->banking;
|
||||
|
||||
case 0x3d4:
|
||||
return svga->crtcreg;
|
||||
|
||||
case 0x3d5:
|
||||
return svga->crtc[svga->crtcreg];
|
||||
}
|
||||
|
||||
return svga_in(addr, svga);
|
||||
}
|
||||
|
||||
static void
|
||||
et3000_out(uint16_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
et3000_t *dev = (et3000_t *)priv;
|
||||
svga_t *svga = &dev->svga;
|
||||
uint8_t old;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 ||
|
||||
(addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1)) addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3c0:
|
||||
case 0x3c1:
|
||||
if (svga->attrff && (svga->attraddr == 0x16)) {
|
||||
svga->attrregs[0x16] = val;
|
||||
svga->chain4 &= ~0x10;
|
||||
if (svga->gdcreg[5] & 0x40)
|
||||
svga->chain4 |= (svga->attrregs[0x16] & 0x10);
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x3c5:
|
||||
if (svga->seqaddr == 4) {
|
||||
svga->seqregs[4] = val;
|
||||
|
||||
svga->chain2_write = !(val & 4);
|
||||
svga->chain4 = (svga->chain4 & ~8) | (val & 8);
|
||||
svga->fast = (svga->gdcreg[8] == 0xff && !(svga->gdcreg[3] & 0x18) &&
|
||||
!svga->gdcreg[1]) && svga->chain4 && !(svga->adv_flags & FLAG_ADDR_BY8);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x3cf:
|
||||
if ((svga->gdcaddr & 15) == 5) {
|
||||
svga->chain4 &= ~0x10;
|
||||
if (val & 0x40)
|
||||
svga->chain4 |= (svga->attrregs[0x16] & 0x10);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x3cd: /*Banking*/
|
||||
dev->banking = val;
|
||||
if (!(svga->crtc[0x23] & 0x80) && !(svga->gdcreg[6] & 0x08)) {
|
||||
switch ((val >> 6) & 3) {
|
||||
case 0: /*128K segments*/
|
||||
svga->write_bank = (val & 7) << 17;
|
||||
svga->read_bank = ((val >> 3) & 7) << 17;
|
||||
break;
|
||||
case 1: /*64K segments*/
|
||||
svga->write_bank = (val & 7) << 16;
|
||||
svga->read_bank = ((val >> 3) & 7) << 16;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
case 0x3d4:
|
||||
svga->crtcreg = val & 0x3f;
|
||||
return;
|
||||
|
||||
case 0x3d5:
|
||||
if ((svga->crtcreg < 7) && (svga->crtc[0x11] & 0x80))
|
||||
return;
|
||||
if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80))
|
||||
val = (svga->crtc[7] & ~0x10) | (val & 0x10);
|
||||
old = svga->crtc[svga->crtcreg];
|
||||
svga->crtc[svga->crtcreg] = val;
|
||||
|
||||
if (old != val) {
|
||||
if (svga->crtcreg < 0x0e || svga->crtcreg > 0x10) {
|
||||
svga->fullchange = changeframecount;
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
svga_out(addr, val, svga);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
et3000_recalctimings(svga_t *svga)
|
||||
{
|
||||
svga->ma_latch |= (svga->crtc[0x23] & 2) << 15;
|
||||
if (svga->crtc[0x25] & 1) svga->vblankstart |= 0x400;
|
||||
if (svga->crtc[0x25] & 2) svga->vtotal |= 0x400;
|
||||
if (svga->crtc[0x25] & 4) svga->dispend |= 0x400;
|
||||
if (svga->crtc[0x25] & 8) svga->vsyncstart |= 0x400;
|
||||
if (svga->crtc[0x25] & 0x10) svga->split |= 0x400;
|
||||
|
||||
svga->interlace = !!(svga->crtc[0x25] & 0x80);
|
||||
|
||||
if (svga->attrregs[0x16] & 0x10) {
|
||||
svga->ma_latch <<= (1 << 0);
|
||||
svga->rowoffset <<= (1 << 0);
|
||||
switch (svga->gdcreg[5] & 0x60) {
|
||||
case 0x00:
|
||||
svga->render = svga_render_4bpp_highres;
|
||||
svga->hdisp *= 2;
|
||||
break;
|
||||
case 0x20:
|
||||
svga->render = svga_render_2bpp_highres;
|
||||
break;
|
||||
case 0x40: case 0x60:
|
||||
svga->render = svga_render_8bpp_highres;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* pclog("HDISP = %i, HTOTAL = %i, ROWOFFSET = %i, INTERLACE = %i\n",
|
||||
svga->hdisp, svga->htotal, svga->rowoffset, svga->interlace); */
|
||||
|
||||
switch (((svga->miscout >> 2) & 3) | ((svga->crtc[0x24] << 1) & 4)) {
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
svga->clock = (cpuclock * (double)(1ull << 32)) / 40000000.0;
|
||||
break;
|
||||
case 5:
|
||||
svga->clock = (cpuclock * (double)(1ull << 32)) / 65000000.0;
|
||||
break;
|
||||
default:
|
||||
svga->clock = (cpuclock * (double)(1ull << 32)) / 36000000.0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void *
|
||||
et3000_init(const device_t *info)
|
||||
{
|
||||
const char *fn;
|
||||
et3000_t *dev;
|
||||
|
||||
dev = (et3000_t *)malloc(sizeof(et3000_t));
|
||||
memset(dev, 0x00, sizeof(et3000_t));
|
||||
dev->name = info->name;
|
||||
dev->type = info->local;
|
||||
fn = BIOS_ROM_PATH;
|
||||
|
||||
switch(dev->type) {
|
||||
case 0: /* ISA ET3000AX */
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_et3000_isa);
|
||||
svga_init(info, &dev->svga, dev, device_get_config_int("memory") << 10,
|
||||
et3000_recalctimings, et3000_in, et3000_out,
|
||||
NULL, NULL);
|
||||
io_sethandler(0x03c0, 32,
|
||||
et3000_in,NULL,NULL, et3000_out,NULL,NULL, dev);
|
||||
break;
|
||||
}
|
||||
|
||||
rom_init(&dev->bios_rom, (char *) fn,
|
||||
0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
dev->svga.bpp = 8;
|
||||
dev->svga.miscout = 1;
|
||||
|
||||
return(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
et3000_close(void *priv)
|
||||
{
|
||||
et3000_t *dev = (et3000_t *)priv;
|
||||
|
||||
svga_close(&dev->svga);
|
||||
|
||||
free(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
et3000_speed_changed(void *priv)
|
||||
{
|
||||
et3000_t *dev = (et3000_t *)priv;
|
||||
|
||||
svga_recalctimings(&dev->svga);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
et3000_force_redraw(void *priv)
|
||||
{
|
||||
et3000_t *dev = (et3000_t *)priv;
|
||||
|
||||
dev->svga.fullchange = changeframecount;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
et3000_available(void)
|
||||
{
|
||||
return rom_present(BIOS_ROM_PATH);
|
||||
}
|
||||
|
||||
static const device_config_t et3000_config[] =
|
||||
{
|
||||
{
|
||||
"memory", "Memory size", CONFIG_SELECTION, "", 512, "", { 0 },
|
||||
{
|
||||
{
|
||||
"256 KB", 256
|
||||
},
|
||||
{
|
||||
"512 KB", 512
|
||||
},
|
||||
{
|
||||
"1 MB", 1024
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
const device_t et3000_isa_device = {
|
||||
"Tseng Labs ET3000AX (ISA)",
|
||||
DEVICE_ISA,
|
||||
0,
|
||||
et3000_init, et3000_close, NULL,
|
||||
{ et3000_available },
|
||||
et3000_speed_changed,
|
||||
et3000_force_redraw,
|
||||
et3000_config
|
||||
};
|
||||
@@ -55,7 +55,6 @@
|
||||
|
||||
|
||||
#define BIOS_ROM_PATH "roms/video/et4000/et4000.bin"
|
||||
#define TC6058AF_BIOS_ROM_PATH "roms/video/et4000/Tseng_Labs_VGA-4000_BIOS_V1.1.bin"
|
||||
#define KOREAN_BIOS_ROM_PATH "roms/video/et4000/tgkorvga.bin"
|
||||
#define KOREAN_FONT_ROM_PATH "roms/video/et4000/tg_ksc5601.rom"
|
||||
#define KASAN_BIOS_ROM_PATH "roms/video/et4000/et4000_kasan16.bin"
|
||||
@@ -110,14 +109,13 @@ et4000_in(uint16_t addr, void *priv)
|
||||
{
|
||||
et4000_t *dev = (et4000_t *)priv;
|
||||
svga_t *svga = &dev->svga;
|
||||
uint8_t ret;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 ||
|
||||
(addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1)) addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3c2:
|
||||
if (dev->type == 2) {
|
||||
if (dev->type == 1) {
|
||||
if ((svga->vgapal[0].r + svga->vgapal[0].g + svga->vgapal[0].b) >= 0x4e)
|
||||
return 0;
|
||||
else
|
||||
@@ -134,9 +132,7 @@ et4000_in(uint16_t addr, void *priv)
|
||||
case 0x3c7:
|
||||
case 0x3c8:
|
||||
case 0x3c9:
|
||||
if (dev->type >= 1)
|
||||
return sc1502x_ramdac_in(addr, svga->ramdac, svga);
|
||||
break;
|
||||
return sc1502x_ramdac_in(addr, svga->ramdac, svga);
|
||||
|
||||
case 0x3cd: /*Banking*/
|
||||
return dev->banking;
|
||||
@@ -146,26 +142,6 @@ et4000_in(uint16_t addr, void *priv)
|
||||
|
||||
case 0x3d5:
|
||||
return svga->crtc[svga->crtcreg];
|
||||
|
||||
case 0x3da:
|
||||
svga->attrff = 0;
|
||||
|
||||
if (svga->cgastat & 0x01)
|
||||
svga->cgastat &= ~0x30;
|
||||
else
|
||||
svga->cgastat ^= 0x30;
|
||||
|
||||
ret = svga->cgastat;
|
||||
|
||||
if ((svga->fcr & 0x08) && svga->dispon)
|
||||
ret |= 0x08;
|
||||
|
||||
if (ret & 0x08)
|
||||
ret &= 0x7f;
|
||||
else
|
||||
ret |= 0x80;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
return svga_in(addr, svga);
|
||||
@@ -247,34 +223,12 @@ et4000_out(uint16_t addr, uint8_t val, void *priv)
|
||||
(addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1)) addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3c5:
|
||||
if (svga->seqaddr == 4) {
|
||||
svga->seqregs[4] = val;
|
||||
|
||||
svga->chain2_write = !(val & 4);
|
||||
svga->chain4 = (svga->chain4 & ~8) | (val & 8);
|
||||
svga->fast = (svga->gdcreg[8] == 0xff && !(svga->gdcreg[3] & 0x18) &&
|
||||
!svga->gdcreg[1]) && svga->chain4 && !(svga->adv_flags & FLAG_ADDR_BY8);
|
||||
return;
|
||||
} else if (svga->seqaddr == 0x0e) {
|
||||
svga->seqregs[0x0e] = val;
|
||||
svga->chain4 &= ~0x02;
|
||||
if (svga->gdcreg[5] & 0x40)
|
||||
svga->chain4 |= (svga->seqregs[0x0e] & 0x02);
|
||||
svga_recalctimings(svga);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x3c6:
|
||||
case 0x3c7:
|
||||
case 0x3c8:
|
||||
case 0x3c9:
|
||||
if (dev->type >= 1) {
|
||||
sc1502x_ramdac_out(addr, val, svga->ramdac, svga);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
sc1502x_ramdac_out(addr, val, svga->ramdac, svga);
|
||||
return;
|
||||
|
||||
case 0x3cd: /*Banking*/
|
||||
if (!(svga->crtc[0x36] & 0x10) && !(svga->gdcreg[6] & 0x08)) {
|
||||
@@ -285,11 +239,7 @@ et4000_out(uint16_t addr, uint8_t val, void *priv)
|
||||
return;
|
||||
|
||||
case 0x3cf:
|
||||
if ((svga->gdcaddr & 15) == 5) {
|
||||
svga->chain4 &= ~0x02;
|
||||
if (val & 0x40)
|
||||
svga->chain4 |= (svga->seqregs[0x0e] & 0x02);
|
||||
} else if ((svga->gdcaddr & 15) == 6) {
|
||||
if ((svga->gdcaddr & 15) == 6) {
|
||||
if (!(svga->crtc[0x36] & 0x10) && !(val & 0x08)) {
|
||||
svga->write_bank = (dev->banking & 0x0f) * 0x10000;
|
||||
svga->read_bank = ((dev->banking >> 4) & 0x0f) * 0x10000;
|
||||
@@ -470,8 +420,7 @@ et4000_kasan_out(uint16_t addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
if ((et4000->kasan_cfg_index - 0xF0) <= 16)
|
||||
et4000->kasan_cfg_regs[et4000->kasan_cfg_index - 0xF0] = val;
|
||||
et4000->kasan_cfg_regs[et4000->kasan_cfg_index - 0xF0] = val;
|
||||
io_removehandler(et4000->kasan_access_addr, 0x0008, et4000_kasan_in, NULL, NULL, et4000_kasan_out, NULL, NULL, et4000);
|
||||
et4000->kasan_access_addr = (et4000->kasan_cfg_regs[2] << 8) | et4000->kasan_cfg_regs[1];
|
||||
io_sethandler(et4000->kasan_access_addr, 0x0008, et4000_kasan_in, NULL, NULL, et4000_kasan_out, NULL, NULL, et4000);
|
||||
@@ -514,10 +463,8 @@ et4000_kasan_out(uint16_t addr, uint8_t val, void *priv)
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
if (et4000->kasan_cfg_regs[0] & 1) {
|
||||
if ((addr - (((et4000->kasan_cfg_regs[2] << 8) | (et4000->kasan_cfg_regs[1])) + 3)) <= 4)
|
||||
et4000->kasan_font_data[addr - (((et4000->kasan_cfg_regs[2] << 8) | (et4000->kasan_cfg_regs[1])) + 3)] = val;
|
||||
}
|
||||
if (et4000->kasan_cfg_regs[0] & 1)
|
||||
et4000->kasan_font_data[addr - (((et4000->kasan_cfg_regs[2] << 8) | (et4000->kasan_cfg_regs[1])) + 3)] = val;
|
||||
break;
|
||||
case 6:
|
||||
if ((et4000->kasan_cfg_regs[0] & 1) && (et4000->kasan_font_data[3] & !(val & 0x80)) && (et4000->get_korean_font_base & 0x7F) >= 0x20 && (et4000->get_korean_font_base & 0x7F) < 0x7F) {
|
||||
@@ -601,13 +548,13 @@ et4000_recalctimings(svga_t *svga)
|
||||
et4000_t *dev = (et4000_t *)svga->p;
|
||||
|
||||
svga->ma_latch |= (svga->crtc[0x33] & 3) << 16;
|
||||
if (svga->crtc[0x35] & 1) svga->vblankstart |= 0x400;
|
||||
if (svga->crtc[0x35] & 2) svga->vtotal |= 0x400;
|
||||
if (svga->crtc[0x35] & 4) svga->dispend |= 0x400;
|
||||
if (svga->crtc[0x35] & 8) svga->vsyncstart |= 0x400;
|
||||
if (svga->crtc[0x35] & 0x10) svga->split |= 0x400;
|
||||
if (svga->crtc[0x35] & 1) svga->vblankstart += 0x400;
|
||||
if (svga->crtc[0x35] & 2) svga->vtotal += 0x400;
|
||||
if (svga->crtc[0x35] & 4) svga->dispend += 0x400;
|
||||
if (svga->crtc[0x35] & 8) svga->vsyncstart += 0x400;
|
||||
if (svga->crtc[0x35] & 0x10) svga->split += 0x400;
|
||||
if (!svga->rowoffset) svga->rowoffset = 0x100;
|
||||
if (svga->crtc[0x3f] & 1) svga->htotal |= 0x100;
|
||||
if (svga->crtc[0x3f] & 1) svga->htotal += 256;
|
||||
if (svga->attrregs[0x16] & 0x20) svga->hdisp <<= 1;
|
||||
|
||||
switch (((svga->miscout >> 2) & 3) | ((svga->crtc[0x34] << 1) & 4)) {
|
||||
@@ -636,7 +583,7 @@ et4000_recalctimings(svga_t *svga)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->type == 3 || dev->type == 4 || dev->type == 5) {
|
||||
if (dev->type == 2 || dev->type == 3 || dev->type == 4) {
|
||||
if ((svga->render == svga_render_text_80) && ((svga->crtc[0x37] & 0x0A) == 0x0A)) {
|
||||
if (dev->port_32cb_val & 0x80) {
|
||||
svga->ma_latch -= 2;
|
||||
@@ -647,19 +594,6 @@ et4000_recalctimings(svga_t *svga)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((svga->seqregs[0x0e] & 0x02) && ((svga->gdcreg[5] & 0x60) >= 0x40)) {
|
||||
svga->ma_latch <<= (1 << 0);
|
||||
svga->rowoffset <<= (1 << 0);
|
||||
svga->render = svga_render_8bpp_highres;
|
||||
}
|
||||
|
||||
if (dev->type == 0) {
|
||||
if (svga->render == svga_render_8bpp_lowres)
|
||||
svga->render = svga_render_8bpp_tseng_lowres;
|
||||
else if (svga->render == svga_render_8bpp_highres)
|
||||
svga->render = svga_render_8bpp_tseng_highres;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -673,7 +607,6 @@ et4000_kasan_recalctimings(svga_t *svga)
|
||||
svga->ma_latch -= 3;
|
||||
svga->ca_adj = (et4000->kasan_cfg_regs[0] >> 6) - 3;
|
||||
svga->ksc5601_sbyte_mask = (et4000->kasan_cfg_regs[0] & 4) << 5;
|
||||
/* TODO: Are we sure this doesn't use Attribute register 16h bit 6 (two-byte character code enable)? */
|
||||
if((et4000->kasan_cfg_regs[0] & 0x23) == 0x20 && (et4000->kasan_cfg_regs[4] & 0x80) && ((svga->crtc[0x37] & 0x0B) == 0x0A))
|
||||
svga->render = svga_render_text_80_ksc5601;
|
||||
}
|
||||
@@ -722,8 +655,7 @@ et4000_init(const device_t *info)
|
||||
fn = BIOS_ROM_PATH;
|
||||
|
||||
switch(dev->type) {
|
||||
case 0: /* ISA ET4000AX (TC6058AF) */
|
||||
case 1: /* ISA ET4000AX */
|
||||
case 0: /* ISA ET4000AX */
|
||||
dev->vram_size = device_get_config_int("memory") << 10;
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_et4000_isa);
|
||||
svga_init(info, &dev->svga, dev, dev->vram_size,
|
||||
@@ -731,11 +663,9 @@ et4000_init(const device_t *info)
|
||||
NULL, NULL);
|
||||
io_sethandler(0x03c0, 32,
|
||||
et4000_in,NULL,NULL, et4000_out,NULL,NULL, dev);
|
||||
if (dev->type == 0)
|
||||
fn = TC6058AF_BIOS_ROM_PATH;
|
||||
break;
|
||||
|
||||
case 2: /* MCA ET4000AX */
|
||||
case 1: /* MCA ET4000AX */
|
||||
dev->vram_size = 1024 << 10;
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_et4000_mca);
|
||||
svga_init(info, &dev->svga, dev, dev->vram_size,
|
||||
@@ -748,8 +678,8 @@ et4000_init(const device_t *info)
|
||||
mca_add(et4000_mca_read, et4000_mca_write, et4000_mca_feedb, NULL, dev);
|
||||
break;
|
||||
|
||||
case 3: /* Korean ET4000 */
|
||||
case 4: /* Trigem 286M ET4000 */
|
||||
case 2: /* Korean ET4000 */
|
||||
case 3: /* Trigem 286M ET4000 */
|
||||
dev->vram_size = device_get_config_int("memory") << 10;
|
||||
dev->port_22cb_val = 0x60;
|
||||
dev->port_32cb_val = 0;
|
||||
@@ -773,7 +703,7 @@ et4000_init(const device_t *info)
|
||||
loadfont(KOREAN_FONT_ROM_PATH, 6);
|
||||
fn = KOREAN_BIOS_ROM_PATH;
|
||||
break;
|
||||
case 5: /* Kasan ET4000 */
|
||||
case 4: /* Kasan ET4000 */
|
||||
dev->vram_size = device_get_config_int("memory") << 10;
|
||||
dev->svga.ksc5601_sbyte_mask = 0;
|
||||
dev->svga.ksc5601_udc_area_msb[0] = 0xC9;
|
||||
@@ -809,8 +739,7 @@ et4000_init(const device_t *info)
|
||||
|
||||
}
|
||||
|
||||
if (dev->type >= 1)
|
||||
dev->svga.ramdac = device_add(&sc1502x_ramdac_device);
|
||||
dev->svga.ramdac = device_add(&sc1502x_ramdac_device);
|
||||
|
||||
dev->vram_mask = dev->vram_size - 1;
|
||||
|
||||
@@ -854,13 +783,6 @@ et4000_force_redraw(void *priv)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
et4000_tc6058af_available(void)
|
||||
{
|
||||
return rom_present(TC6058AF_BIOS_ROM_PATH);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
et4000_available(void)
|
||||
{
|
||||
@@ -882,27 +804,6 @@ et4000_kasan_available(void)
|
||||
rom_present(KASAN_FONT_ROM_PATH);
|
||||
}
|
||||
|
||||
static const device_config_t et4000_tc6058af_config[] =
|
||||
{
|
||||
{
|
||||
"memory", "Memory size", CONFIG_SELECTION, "", 1024, "", { 0 },
|
||||
{
|
||||
{
|
||||
"256 KB", 256
|
||||
},
|
||||
{
|
||||
"512 KB", 512
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_config_t et4000_config[] =
|
||||
{
|
||||
{
|
||||
@@ -927,21 +828,10 @@ static const device_config_t et4000_config[] =
|
||||
}
|
||||
};
|
||||
|
||||
const device_t et4000_tc6058af_isa_device = {
|
||||
"Tseng Labs ET4000AX (TC6058AF) (ISA)",
|
||||
DEVICE_ISA,
|
||||
0,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000_tc6058af_available },
|
||||
et4000_speed_changed,
|
||||
et4000_force_redraw,
|
||||
et4000_tc6058af_config
|
||||
};
|
||||
|
||||
const device_t et4000_isa_device = {
|
||||
"Tseng Labs ET4000AX (ISA)",
|
||||
DEVICE_ISA,
|
||||
1,
|
||||
0,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000_available },
|
||||
et4000_speed_changed,
|
||||
@@ -952,7 +842,7 @@ const device_t et4000_isa_device = {
|
||||
const device_t et4000_mca_device = {
|
||||
"Tseng Labs ET4000AX (MCA)",
|
||||
DEVICE_MCA,
|
||||
2,
|
||||
1,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000_available },
|
||||
et4000_speed_changed,
|
||||
@@ -963,7 +853,7 @@ const device_t et4000_mca_device = {
|
||||
const device_t et4000k_isa_device = {
|
||||
"Trigem Korean VGA (Tseng Labs ET4000AX Korean)",
|
||||
DEVICE_ISA,
|
||||
3,
|
||||
2,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000k_available },
|
||||
et4000_speed_changed,
|
||||
@@ -974,7 +864,7 @@ const device_t et4000k_isa_device = {
|
||||
const device_t et4000k_tg286_isa_device = {
|
||||
"Trigem Korean VGA (Trigem 286M)",
|
||||
DEVICE_ISA,
|
||||
4,
|
||||
3,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000k_available },
|
||||
et4000_speed_changed,
|
||||
@@ -985,7 +875,7 @@ const device_t et4000k_tg286_isa_device = {
|
||||
const device_t et4000_kasan_isa_device = {
|
||||
"Kasan Hangulmadang-16 VGA (Tseng Labs ET4000AX Korean)",
|
||||
DEVICE_ISA,
|
||||
5,
|
||||
4,
|
||||
et4000_init, et4000_close, NULL,
|
||||
{ et4000_kasan_available },
|
||||
et4000_speed_changed,
|
||||
|
||||
@@ -169,7 +169,7 @@ et4000w32p_out(uint16_t addr, uint8_t val, void *p)
|
||||
uint32_t add2addr = 0;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 || (addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1))
|
||||
addr ^= 0x60;
|
||||
addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3c2:
|
||||
@@ -311,7 +311,7 @@ et4000w32p_in(uint16_t addr, void *p)
|
||||
svga_t *svga = &et4000->svga;
|
||||
|
||||
if (((addr & 0xfff0) == 0x3d0 || (addr & 0xfff0) == 0x3b0) && !(svga->miscout & 1))
|
||||
addr ^= 0x60;
|
||||
addr ^= 0x60;
|
||||
|
||||
switch (addr) {
|
||||
case 0x3c5:
|
||||
@@ -335,13 +335,25 @@ et4000w32p_in(uint16_t addr, void *p)
|
||||
case 0x3d5:
|
||||
return svga->crtc[svga->crtcreg];
|
||||
|
||||
case 0x3da:
|
||||
svga->attrff = 0;
|
||||
|
||||
/*Bit 1 of the Input Status Register is required by OS/2 ET4000W32/I drivers to be set otherwise
|
||||
the guest will loop infinitely upon reaching the GUI*/
|
||||
if (svga->cgastat & 0x01)
|
||||
svga->cgastat &= ~0x32;
|
||||
else
|
||||
svga->cgastat ^= 0x32;
|
||||
return svga->cgastat;
|
||||
|
||||
case 0x210a: case 0x211a: case 0x212a: case 0x213a:
|
||||
case 0x214a: case 0x215a: case 0x216a: case 0x217a:
|
||||
return et4000->index;
|
||||
case 0x210B: case 0x211B: case 0x212B: case 0x213B:
|
||||
case 0x214B: case 0x215B: case 0x216B: case 0x217B:
|
||||
if (et4000->index == 0xec)
|
||||
case 0x210B: case 0x211B: case 0x212B: case 0x213B:
|
||||
case 0x214B: case 0x215B: case 0x216B: case 0x217B:
|
||||
if (et4000->index == 0xec) {
|
||||
return (et4000->regs[0xec] & 0xf) | (et4000->rev << 4);
|
||||
}
|
||||
if (et4000->index == 0xee) {
|
||||
if (svga->bpp == 8) {
|
||||
if ((svga->gdcreg[5] & 0x60) >= 0x40)
|
||||
@@ -385,7 +397,6 @@ et4000w32p_recalctimings(svga_t *svga)
|
||||
|
||||
svga->clock = (cpuclock * (double)(1ull << 32)) / svga->getclock((svga->miscout >> 2) & 3, svga->clock_gen);
|
||||
|
||||
#if 0
|
||||
if (svga->adv_flags & FLAG_NOSKEW) {
|
||||
/* On the Cardex ET4000/W32p-based cards, adjust text mode clocks by 1. */
|
||||
if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /* Text mode */
|
||||
@@ -402,10 +413,10 @@ et4000w32p_recalctimings(svga_t *svga)
|
||||
svga->hdisp += (svga->seqregs[1] & 1) ? 16 : 18;
|
||||
else
|
||||
svga->hdisp += (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
}
|
||||
} else if ((svga->gdcreg[5] & 0x40) == 0)
|
||||
svga->hdisp += (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (et4000->type == ET4000W32) {
|
||||
if ((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1)) {
|
||||
@@ -452,10 +463,8 @@ et4000w32p_recalctimings(svga_t *svga)
|
||||
else
|
||||
svga->render = svga_render_text_80;
|
||||
} else {
|
||||
#if 0
|
||||
if (svga->adv_flags & FLAG_NOSKEW)
|
||||
svga->ma_latch--;
|
||||
#endif
|
||||
|
||||
switch (svga->gdcreg[5] & 0x60) {
|
||||
case 0x00:
|
||||
@@ -764,7 +773,7 @@ et4000w32p_mmu_read(uint32_t addr, void *p)
|
||||
svga_t *svga = &et4000->svga;
|
||||
int bank;
|
||||
uint8_t temp;
|
||||
|
||||
|
||||
switch (addr & 0x6000) {
|
||||
case 0x0000: /* MMU 0 */
|
||||
case 0x2000: /* MMU 1 */
|
||||
@@ -786,7 +795,7 @@ et4000w32p_mmu_read(uint32_t addr, void *p)
|
||||
|
||||
if ((addr&0x1fff) + et4000->mmu.base[bank] >= svga->vram_max)
|
||||
return 0xff;
|
||||
|
||||
|
||||
return svga->vram[(addr&0x1fff) + et4000->mmu.base[bank]];
|
||||
|
||||
case 0x6000:
|
||||
@@ -892,7 +901,10 @@ et4000w32_blit_start(et4000w32p_t *et4000)
|
||||
}
|
||||
et4000->acl.pattern_back = et4000->acl.pattern_addr;
|
||||
if (!(et4000->acl.internal.pattern_wrap & 0x40)) {
|
||||
et4000->acl.pattern_y = (et4000->acl.pattern_addr / (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1);
|
||||
if ((et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1) == 0x00)
|
||||
et4000->acl.pattern_y = (et4000->acl.pattern_addr / (0x7f + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1);
|
||||
else
|
||||
et4000->acl.pattern_y = (et4000->acl.pattern_addr / (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1);
|
||||
et4000->acl.pattern_back &= ~(((et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1) * et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7]) - 1);
|
||||
}
|
||||
et4000->acl.pattern_x_back = et4000->acl.pattern_x;
|
||||
@@ -905,7 +917,10 @@ et4000w32_blit_start(et4000w32p_t *et4000)
|
||||
et4000->acl.source_back = et4000->acl.source_addr;
|
||||
|
||||
if (!(et4000->acl.internal.source_wrap & 0x40)) {
|
||||
et4000->acl.source_y = (et4000->acl.source_addr / (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1);
|
||||
if ((et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1) == 0x00)
|
||||
et4000->acl.source_y = (et4000->acl.source_addr / (0x7f + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1);
|
||||
else
|
||||
et4000->acl.source_y = (et4000->acl.source_addr / (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1)) & (et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1);
|
||||
et4000->acl.source_back &= ~(((et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1) * et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7]) - 1);
|
||||
}
|
||||
et4000->acl.source_x_back = et4000->acl.source_x;
|
||||
@@ -1658,7 +1673,7 @@ static const device_config_t et4000w32p_config[] =
|
||||
|
||||
const device_t et4000w32_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32",
|
||||
"Tseng Labs ET4000/w32 ISA",
|
||||
DEVICE_ISA | DEVICE_AT, ET4000W32,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32_available },
|
||||
@@ -1669,7 +1684,7 @@ const device_t et4000w32_device =
|
||||
|
||||
const device_t et4000w32_onboard_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32 (On-board)",
|
||||
"Tseng Labs ET4000/w32 (ISA) (On-Board)",
|
||||
DEVICE_ISA | DEVICE_AT, ET4000W32,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32_available },
|
||||
@@ -1680,7 +1695,7 @@ const device_t et4000w32_onboard_device =
|
||||
|
||||
const device_t et4000w32i_isa_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32i ISA",
|
||||
"Tseng Labs ET4000/w32i Rev. B ISA",
|
||||
DEVICE_ISA | DEVICE_AT, ET4000W32I,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32i_isa_available },
|
||||
@@ -1691,7 +1706,7 @@ const device_t et4000w32i_isa_device =
|
||||
|
||||
const device_t et4000w32i_vlb_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32i VLB",
|
||||
"Tseng Labs ET4000/w32i Rev. B VLB",
|
||||
DEVICE_VLB, ET4000W32I,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32i_vlb_available },
|
||||
@@ -1724,7 +1739,7 @@ const device_t et4000w32p_revc_pci_device =
|
||||
|
||||
const device_t et4000w32p_noncardex_vlb_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p VLB",
|
||||
"Tseng Labs ET4000/w32p Rev. D VLB",
|
||||
DEVICE_VLB, ET4000W32P,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_noncardex_available },
|
||||
@@ -1735,7 +1750,7 @@ const device_t et4000w32p_noncardex_vlb_device =
|
||||
|
||||
const device_t et4000w32p_noncardex_pci_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p PCI",
|
||||
"Tseng Labs ET4000/w32p Rev. D PCI",
|
||||
DEVICE_PCI, ET4000W32P,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_noncardex_available },
|
||||
@@ -1746,7 +1761,7 @@ const device_t et4000w32p_noncardex_pci_device =
|
||||
|
||||
const device_t et4000w32p_cardex_vlb_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p VLB (Cardex)",
|
||||
"Tseng Labs ET4000/w32p Rev. D VLB (Cardex)",
|
||||
DEVICE_VLB, ET4000W32P_CARDEX,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_cardex_available },
|
||||
@@ -1757,7 +1772,7 @@ const device_t et4000w32p_cardex_vlb_device =
|
||||
|
||||
const device_t et4000w32p_cardex_pci_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p PCI (Cardex)",
|
||||
"Tseng Labs ET4000/w32p Rev. D PCI (Cardex)",
|
||||
DEVICE_PCI, ET4000W32P_CARDEX,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_cardex_available },
|
||||
@@ -1768,7 +1783,7 @@ const device_t et4000w32p_cardex_pci_device =
|
||||
|
||||
const device_t et4000w32p_vlb_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p VLB (Diamond)",
|
||||
"Tseng Labs ET4000/w32p Rev. D VLB (Diamond Stealth32)",
|
||||
DEVICE_VLB, ET4000W32P_DIAMOND,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_available },
|
||||
@@ -1779,7 +1794,7 @@ const device_t et4000w32p_vlb_device =
|
||||
|
||||
const device_t et4000w32p_pci_device =
|
||||
{
|
||||
"Tseng Labs ET4000/w32p PCI (Diamond)",
|
||||
"Tseng Labs ET4000/w32p Rev. D PCI (Diamond Stealth32)",
|
||||
DEVICE_PCI, ET4000W32P_DIAMOND,
|
||||
et4000w32p_init, et4000w32p_close, NULL,
|
||||
{ et4000w32p_available },
|
||||
|
||||
@@ -31,7 +31,9 @@
|
||||
#include <86box/vid_svga_render.h>
|
||||
|
||||
#define BIOS_037C_PATH "roms/video/oti/bios.bin"
|
||||
#define BIOS_067_AMA932J_PATH "roms/machines/ama932j/oti067.bin"
|
||||
#define BIOS_067_AMA932J_PATH "roms/machines/ama932j/oti067.bin"
|
||||
#define BIOS_067_M300_08_PATH "roms/machines/olivetti_m300_08/EVC_BIOS.ROM"
|
||||
#define BIOS_067_M300_15_PATH "roms/machines/olivetti_m300_15/EVC_BIOS.ROM"
|
||||
#define BIOS_077_PATH "roms/video/oti/oti077.vbi"
|
||||
|
||||
|
||||
@@ -39,6 +41,7 @@ enum {
|
||||
OTI_037C,
|
||||
OTI_067 = 2,
|
||||
OTI_067_AMA932J,
|
||||
OTI_067_M300 = 4,
|
||||
OTI_077 = 5
|
||||
};
|
||||
|
||||
@@ -394,6 +397,16 @@ oti_init(const device_t *info)
|
||||
io_sethandler(0x46e8, 1, oti_pos_in, NULL, NULL, oti_pos_out, NULL, NULL, oti);
|
||||
break;
|
||||
|
||||
case OTI_067_M300:
|
||||
if (rom_present(BIOS_067_M300_15_PATH))
|
||||
romfn = BIOS_067_M300_15_PATH;
|
||||
else
|
||||
romfn = BIOS_067_M300_08_PATH;
|
||||
oti->vram_size = device_get_config_int("memory");
|
||||
oti->pos = 0x08; /* Tell the BIOS the I/O ports are already enabled to avoid a double I/O handler mess. */
|
||||
io_sethandler(0x46e8, 1, oti_pos_in, NULL, NULL, oti_pos_out, NULL, NULL, oti);
|
||||
break;
|
||||
|
||||
case OTI_067:
|
||||
case OTI_077:
|
||||
romfn = BIOS_077_PATH;
|
||||
@@ -463,20 +476,27 @@ oti037c_available(void)
|
||||
return(rom_present(BIOS_037C_PATH));
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
oti067_ama932j_available(void)
|
||||
{
|
||||
return(rom_present(BIOS_067_AMA932J_PATH));
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
oti067_077_available(void)
|
||||
{
|
||||
return(rom_present(BIOS_077_PATH));
|
||||
}
|
||||
|
||||
static int
|
||||
oti067_m300_available(void)
|
||||
{
|
||||
if (rom_present(BIOS_067_M300_15_PATH))
|
||||
return(rom_present(BIOS_067_M300_15_PATH));
|
||||
else
|
||||
return(rom_present(BIOS_067_M300_08_PATH));
|
||||
}
|
||||
|
||||
|
||||
static const device_config_t oti067_config[] =
|
||||
{
|
||||
@@ -569,6 +589,18 @@ const device_t oti067_device =
|
||||
oti067_config
|
||||
};
|
||||
|
||||
const device_t oti067_m300_device =
|
||||
{
|
||||
"Oak OTI-067 (Olivetti M300-08/15)",
|
||||
DEVICE_ISA,
|
||||
4,
|
||||
oti_init, oti_close, NULL,
|
||||
{ oti067_m300_available },
|
||||
oti_speed_changed,
|
||||
oti_force_redraw,
|
||||
oti067_config
|
||||
};
|
||||
|
||||
const device_t oti067_ama932j_device =
|
||||
{
|
||||
"Oak OTI-067 (AMA-932J)",
|
||||
|
||||
@@ -231,7 +231,7 @@ uint8_t paradise_in(uint16_t addr, void *p)
|
||||
|
||||
case 0x3cf:
|
||||
if (svga->gdcaddr >= 9 && svga->gdcaddr <= 0x0e) {
|
||||
if ((paradise->pr5 & 7) != 5)
|
||||
if (paradise->pr5 & 0x10)
|
||||
return 0xff;
|
||||
}
|
||||
switch (svga->gdcaddr) {
|
||||
@@ -354,8 +354,11 @@ void paradise_recalctimings(svga_t *svga)
|
||||
}
|
||||
|
||||
if (paradise->type < WD90C30) {
|
||||
if (svga->bpp >= 8 && !svga->lowres)
|
||||
if (svga->bpp >= 8 && !svga->lowres) {
|
||||
if ((svga->crtc[0x17] == 0xc2) && (svga->crtc[0x14] & 0x40))
|
||||
paradise->check = 1;
|
||||
svga->render = svga_render_8bpp_highres;
|
||||
}
|
||||
} else {
|
||||
if (svga->bpp >= 8 && !svga->lowres) {
|
||||
if (svga->bpp == 16) {
|
||||
|
||||
@@ -2801,8 +2801,6 @@ static void s3_recalctimings(svga_t *svga)
|
||||
s3_t *s3 = (s3_t *)svga->p;
|
||||
int clk_sel = (svga->miscout >> 2) & 3;
|
||||
|
||||
svga->hdisp = svga->hdisp_old;
|
||||
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
if ((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1)) {
|
||||
if (svga->crtc[0x3a] & 0x10) { /*256+ color register*/
|
||||
@@ -2812,12 +2810,13 @@ static void s3_recalctimings(svga_t *svga)
|
||||
}
|
||||
|
||||
svga->ma_latch |= (s3->ma_ext << 16);
|
||||
|
||||
if (s3->chip >= S3_86C928) {
|
||||
svga->hdisp = svga->hdisp_old;
|
||||
|
||||
if (svga->crtc[0x5d] & 0x01) svga->htotal |= 0x100;
|
||||
if (svga->crtc[0x5d] & 0x02) {
|
||||
svga->hdisp_time |= 0x100;
|
||||
svga->hdisp |= 0x100 * svga->dots_per_clock;
|
||||
svga->hdisp |= 0x100 * ((svga->seqregs[1] & 8) ? 16 : 8);
|
||||
}
|
||||
if (svga->crtc[0x5e] & 0x01) svga->vtotal |= 0x400;
|
||||
if (svga->crtc[0x5e] & 0x02) svga->dispend |= 0x400;
|
||||
@@ -2826,7 +2825,7 @@ static void s3_recalctimings(svga_t *svga)
|
||||
if (svga->crtc[0x5e] & 0x40) svga->split |= 0x400;
|
||||
if (svga->crtc[0x51] & 0x30) svga->rowoffset |= (svga->crtc[0x51] & 0x30) << 4;
|
||||
else if (svga->crtc[0x43] & 0x04) svga->rowoffset |= 0x100;
|
||||
} else if (svga->crtc[0x43] & 0x04) svga->rowoffset |= 0x100;
|
||||
}
|
||||
if (!svga->rowoffset) svga->rowoffset = 256;
|
||||
|
||||
if ((s3->chip == S3_VISION964) || (s3->chip == S3_86C928)) {
|
||||
@@ -3066,28 +3065,6 @@ static void s3_recalctimings(svga_t *svga)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (s3->chip >= S3_86C801) {
|
||||
if (!svga->scrblank && svga->attr_palette_enable && (svga->crtc[0x43] & 0x80)) {
|
||||
/* TODO: In case of bug reports, disable 9-dots-wide character clocks in graphics modes. */
|
||||
svga->dots_per_clock = ((svga->seqregs[1] & 1) ? 16 : 18);
|
||||
}
|
||||
|
||||
if (svga->crtc[0x5d] & 0x04)
|
||||
svga->hblankstart += 0x100;
|
||||
if (s3->chip >= S3_VISION964) {
|
||||
/* NOTE: The S3 Trio64V+ datasheet says this is bit 7, but then where is bit 6?
|
||||
The datasheets for the pre-Trio64V+ cards say +64, which implies bit 6,
|
||||
and, contrary to VGADOC, it also exists on Trio32, Trio64, Vision868,
|
||||
and Vision968. */
|
||||
// pclog("svga->crtc[0x5d] = %02X\n", svga->crtc[0x5d]);
|
||||
if (svga->crtc[0x5d] & 0x08)
|
||||
svga->hblank_ext = 0x40;
|
||||
svga->hblank_end_len = 0x00000040;
|
||||
}
|
||||
}
|
||||
|
||||
svga->hblank_overscan = !(svga->crtc[0x33] & 0x20);
|
||||
}
|
||||
|
||||
static void s3_trio64v_recalctimings(svga_t *svga)
|
||||
@@ -8138,3 +8115,4 @@ const device_t s3_trio64v2_dx_onboard_pci_device =
|
||||
s3_force_redraw,
|
||||
s3_standard_config
|
||||
};
|
||||
|
||||
|
||||
@@ -20,13 +20,11 @@
|
||||
* Copyright 2016-2019 Miran Grca.
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#define HAVE_STDARG_H
|
||||
#include <86box/86box.h>
|
||||
#include "cpu.h"
|
||||
#include <86box/device.h>
|
||||
@@ -55,27 +53,6 @@ uint8_t svga_rotate[8][256];
|
||||
static svga_t *svga_pri;
|
||||
|
||||
|
||||
// #define ENABLE_SVGA_LOG 1
|
||||
#ifdef ENABLE_SVGA_LOG
|
||||
int svga_do_log = ENABLE_SVGA_LOG;
|
||||
|
||||
|
||||
static void
|
||||
svga_log(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (svga_do_log) {
|
||||
va_start(ap, fmt);
|
||||
pclog_ex(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define svga_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
|
||||
svga_t
|
||||
*svga_get_pri()
|
||||
{
|
||||
@@ -199,7 +176,7 @@ svga_out(uint16_t addr, uint8_t val, void *p)
|
||||
break;
|
||||
case 4:
|
||||
svga->chain2_write = !(val & 4);
|
||||
svga->chain4 = (svga->chain4 & ~8) | (val & 8);
|
||||
svga->chain4 = val & 8;
|
||||
svga->fast = (svga->gdcreg[8] == 0xff && !(svga->gdcreg[3] & 0x18) &&
|
||||
!svga->gdcreg[1]) && ((svga->chain4 && svga->packed_chain4) || svga->fb_only) && !(svga->adv_flags & FLAG_ADDR_BY8);
|
||||
break;
|
||||
@@ -260,7 +237,7 @@ svga_out(uint16_t addr, uint8_t val, void *p)
|
||||
break;
|
||||
case 6:
|
||||
if ((svga->gdcreg[6] & 0xc) != (val & 0xc)) {
|
||||
switch (val & 0xc) {
|
||||
switch (val&0xC) {
|
||||
case 0x0: /*128k at A0000*/
|
||||
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x20000);
|
||||
svga->banked_mask = 0xffff;
|
||||
@@ -291,9 +268,6 @@ svga_out(uint16_t addr, uint8_t val, void *p)
|
||||
((svga->gdcaddr & 15) == 6 && (val ^ o) & 1))
|
||||
svga_recalctimings(svga);
|
||||
break;
|
||||
case 0x3da:
|
||||
svga->fcr = val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,9 +335,6 @@ svga_in(uint16_t addr, void *p)
|
||||
if (svga->adv_flags & FLAG_RAMDAC_SHIFT)
|
||||
ret >>= 2;
|
||||
break;
|
||||
case 0x3ca:
|
||||
ret = svga->fcr;
|
||||
break;
|
||||
case 0x3cc:
|
||||
ret = svga->miscout;
|
||||
break;
|
||||
@@ -397,11 +368,7 @@ svga_in(uint16_t addr, void *p)
|
||||
svga->cgastat &= ~0x30;
|
||||
else
|
||||
svga->cgastat ^= 0x30;
|
||||
|
||||
ret = svga->cgastat;
|
||||
|
||||
if ((svga->fcr & 0x08) && svga->dispon)
|
||||
ret |= 0x08;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -433,10 +400,6 @@ void
|
||||
svga_recalctimings(svga_t *svga)
|
||||
{
|
||||
double crtcconst, _dispontime, _dispofftime, disptime;
|
||||
#ifdef ENABLE_SVGA_LOG
|
||||
int vsyncend, vblankend;
|
||||
int hdispstart, hdispend, hsyncstart, hsyncend;
|
||||
#endif
|
||||
|
||||
svga->vtotal = svga->crtc[6];
|
||||
svga->dispend = svga->crtc[0x12];
|
||||
@@ -474,9 +437,12 @@ svga_recalctimings(svga_t *svga)
|
||||
svga->vblankstart |= 0x200;
|
||||
svga->vblankstart++;
|
||||
|
||||
svga->hdisp = svga->crtc[1] - ((svga->crtc[3] & 0x60) >> 5);
|
||||
svga->hdisp = svga->crtc[1] - ((svga->crtc[5] & 0x60) >> 5);
|
||||
svga->hdisp++;
|
||||
|
||||
svga->htotal = svga->crtc[0];
|
||||
svga->htotal += 6; /*+6 is required for Tyrian*/
|
||||
|
||||
svga->rowoffset = svga->crtc[0x13];
|
||||
|
||||
svga->clock = (svga->vidclock) ? VGACONST2 : VGACONST1;
|
||||
@@ -493,19 +459,20 @@ svga_recalctimings(svga_t *svga)
|
||||
svga->hdisp_time = svga->hdisp;
|
||||
svga->render = svga_render_blank;
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
/* TODO: In case of bug reports, disable 9-dots-wide character clocks in graphics modes. */
|
||||
if (svga->seqregs[1] & 8)
|
||||
svga->hdisp *= (svga->seqregs[1] & 1) ? 16 : 18;
|
||||
else
|
||||
svga->hdisp *= (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
|
||||
if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/
|
||||
if (svga->seqregs[1] & 8) /*40 column*/
|
||||
if (svga->seqregs[1] & 8) /*40 column*/ {
|
||||
svga->render = svga_render_text_40;
|
||||
else
|
||||
svga->hdisp *= (svga->seqregs[1] & 1) ? 16 : 18;
|
||||
/* Character clock is off by 1 now in 40-line modes, on all cards. */
|
||||
svga->ma_latch--;
|
||||
svga->hdisp += (svga->seqregs[1] & 1) ? 16 : 18;
|
||||
} else {
|
||||
svga->render = svga_render_text_80;
|
||||
svga->hdisp *= (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
}
|
||||
svga->hdisp_old = svga->hdisp;
|
||||
} else {
|
||||
svga->hdisp *= (svga->seqregs[1] & 8) ? 16 : 8;
|
||||
svga->hdisp_old = svga->hdisp;
|
||||
|
||||
switch (svga->gdcreg[5] & 0x60) {
|
||||
@@ -567,7 +534,7 @@ svga_recalctimings(svga_t *svga)
|
||||
}
|
||||
|
||||
svga->linedbl = svga->crtc[9] & 0x80;
|
||||
svga->char_width = (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
svga->char_width = (svga->seqregs[1] & 1) ? 8 : 9;
|
||||
|
||||
if (enable_overscan) {
|
||||
overscan_y = (svga->rowcount + 1) << 1;
|
||||
@@ -584,41 +551,9 @@ svga_recalctimings(svga_t *svga)
|
||||
} else
|
||||
overscan_x = 16;
|
||||
|
||||
svga->htotal = svga->crtc[0];
|
||||
svga->hblankstart = svga->crtc[4] + 1;
|
||||
svga->hblank_end_val = (svga->crtc[3] & 0x1f) | ((svga->crtc[5] & 0x80) ? 0x20 : 0x00);
|
||||
// pclog("htotal = %i, hblankstart = %i, hblank_end_val = %02X\n", svga->htotal, svga->hblankstart, svga->hblank_end_val);
|
||||
svga->hblank_end_len = 0x00000040;
|
||||
svga->hblank_overscan = 1;
|
||||
|
||||
if (!svga->scrblank && svga->attr_palette_enable) {
|
||||
/* TODO: In case of bug reports, disable 9-dots-wide character clocks in graphics modes. */
|
||||
if (svga->seqregs[1] & 8)
|
||||
svga->dots_per_clock = ((svga->seqregs[1] & 1) ? 16 : 18);
|
||||
else
|
||||
svga->dots_per_clock = ((svga->seqregs[1] & 1) ? 8 : 9);
|
||||
} else
|
||||
svga->dots_per_clock = 1;
|
||||
|
||||
/* Do svga->recalctimings_ex() here so that the above five variables can be
|
||||
updated by said function. */
|
||||
if (svga->recalctimings_ex)
|
||||
svga->recalctimings_ex(svga);
|
||||
|
||||
svga->htotal += 6; /*+6 is required for Tyrian*/
|
||||
svga->hblankend = (svga->hblankstart & ~(svga->hblank_end_len - 1)) | svga->hblank_end_val;
|
||||
if (svga->hblankend <= svga->hblankstart)
|
||||
svga->hblankend += svga->hblank_end_len;
|
||||
svga->hblankend += svga->hblank_ext;
|
||||
|
||||
svga->hblank_sub = 0;
|
||||
if (svga->hblankend > svga->htotal) {
|
||||
svga->hblankend &= (svga->hblank_end_len - 1);
|
||||
svga->hblank_sub = svga->hblankend + svga->hblank_overscan;
|
||||
|
||||
svga->hdisp -= (svga->hblank_sub * svga->dots_per_clock);
|
||||
}
|
||||
|
||||
svga->y_add = (overscan_y >> 1) - (svga->crtc[8] & 0x1f);
|
||||
svga->x_add = (overscan_x >> 1);
|
||||
|
||||
@@ -627,44 +562,6 @@ svga_recalctimings(svga_t *svga)
|
||||
|
||||
crtcconst = svga->clock * svga->char_width;
|
||||
|
||||
#ifdef ENABLE_SVGA_LOG
|
||||
vsyncend = (svga->vsyncstart & 0xfffffff0) | (svga->crtc[0x11] & 0x0f);
|
||||
if (vsyncend <= svga->vsyncstart)
|
||||
vsyncend += 0x00000010;
|
||||
vblankend = (svga->vblankstart & 0xffffff80) | (svga->crtc[0x16] & 0x7f);
|
||||
if (vblankend <= svga->vblankstart)
|
||||
vblankend += 0x00000080;
|
||||
|
||||
hdispstart = ((svga->crtc[3] >> 5) & 3);
|
||||
hdispend = svga->crtc[1] + 1;
|
||||
hsyncstart = svga->crtc[4] + ((svga->crtc[5] >> 5) & 3) + 1;
|
||||
hsyncend = (hsyncstart & 0xffffffe0) | (svga->crtc[5] & 0x1f);
|
||||
if (hsyncend <= hsyncstart)
|
||||
hsyncend += 0x00000020;
|
||||
#endif
|
||||
|
||||
svga_log("Last scanline in the vertical period: %i\n"
|
||||
"First scanline after the last of active display: %i\n"
|
||||
"First scanline with vertical retrace asserted: %i\n"
|
||||
"First scanline after the last with vertical retrace asserted: %i\n"
|
||||
"First scanline of blanking: %i\n"
|
||||
"First scanline after the last of blanking: %i\n"
|
||||
"\n"
|
||||
"Last character in the horizontal period: %i\n"
|
||||
"First character of active display: %i\n"
|
||||
"First character after the last of active display: %i\n"
|
||||
"First character with horizontal retrace asserted: %i\n"
|
||||
"First character after the last with horizontal retrace asserted: %i\n"
|
||||
"First character of blanking: %i\n"
|
||||
"First character after the last of blanking: %i\n"
|
||||
"\n"
|
||||
"\n",
|
||||
svga->vtotal, svga->dispend, svga->vsyncstart, vsyncend,
|
||||
svga->vblankstart, vblankend,
|
||||
svga->htotal, hdispstart, hdispend, hsyncstart, hsyncend,
|
||||
svga->hblankstart, svga->hblankend
|
||||
);
|
||||
|
||||
disptime = svga->htotal;
|
||||
_dispontime = svga->hdisp_time;
|
||||
|
||||
@@ -750,8 +647,6 @@ svga_poll(void *p)
|
||||
uint32_t x, blink_delay;
|
||||
int wx, wy;
|
||||
int ret, old_ma;
|
||||
// int lines_num = (svga->vtotal > svga->vsyncstart) ? svga->vtotal : svga->vsyncstart;
|
||||
// int lines_num = svga->vsyncstart + 3 + 19;
|
||||
|
||||
if (!svga->linepos) {
|
||||
if (svga->displine == svga->hwcursor_latch.y && svga->hwcursor_latch.ena) {
|
||||
@@ -830,7 +725,7 @@ svga_poll(void *p)
|
||||
svga->displine++;
|
||||
if (svga->interlace)
|
||||
svga->displine++;
|
||||
if ((svga->cgastat & 8) && ((svga->displine & 15) == (svga->crtc[0x11] & 15)))
|
||||
if ((svga->cgastat & 8) && ((svga->displine & 15) == (svga->crtc[0x11] & 15)) && svga->vslines)
|
||||
svga->cgastat &= ~8;
|
||||
svga->vslines++;
|
||||
if (svga->displine > 1500)
|
||||
@@ -882,12 +777,11 @@ svga_poll(void *p)
|
||||
|
||||
if (ret) {
|
||||
if (svga->interlace && svga->oddeven)
|
||||
svga->ma = svga->maback = (svga->rowoffset << 1) + ((svga->crtc[3] & 0x60) >> 5) + svga->hblank_sub;
|
||||
svga->ma = svga->maback = (svga->rowoffset << 1) + ((svga->crtc[5] & 0x60) >> 5);
|
||||
else
|
||||
svga->ma = svga->maback = ((svga->crtc[3] & 0x60) >> 5) + svga->hblank_sub;
|
||||
svga->ma = svga->maback = ((svga->crtc[5] & 0x60) >> 5);
|
||||
svga->ma = (svga->ma << 2);
|
||||
svga->maback = (svga->maback << 2);
|
||||
|
||||
svga->sc = 0;
|
||||
if (svga->attrregs[0x10] & 0x20) {
|
||||
svga->scrollcache = 0;
|
||||
@@ -952,9 +846,9 @@ svga_poll(void *p)
|
||||
svga->vslines = 0;
|
||||
|
||||
if (svga->interlace && svga->oddeven)
|
||||
svga->ma = svga->maback = svga->ma_latch + (svga->rowoffset << 1) + ((svga->crtc[3] & 0x60) >> 5) + svga->hblank_sub;
|
||||
svga->ma = svga->maback = svga->ma_latch + (svga->rowoffset << 1) + ((svga->crtc[5] & 0x60) >> 5);
|
||||
else
|
||||
svga->ma = svga->maback = svga->ma_latch + ((svga->crtc[3] & 0x60) >> 5) + svga->hblank_sub;
|
||||
svga->ma = svga->maback = svga->ma_latch + ((svga->crtc[5] & 0x60) >> 5);
|
||||
svga->ca = ((svga->crtc[0xe] << 8) | svga->crtc[0xf]) + ((svga->crtc[0xb] & 0x60) >> 5) + svga->ca_adj;
|
||||
|
||||
svga->ma = (svga->ma << 2);
|
||||
@@ -964,7 +858,6 @@ svga_poll(void *p)
|
||||
if (svga->vsync_callback)
|
||||
svga->vsync_callback(svga);
|
||||
}
|
||||
// if (svga->vc == lines_num) {
|
||||
if (svga->vc == svga->vtotal) {
|
||||
svga->vc = 0;
|
||||
svga->sc = 0;
|
||||
@@ -1084,7 +977,6 @@ svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
|
||||
svga->ramdac_type = RAMDAC_6BIT;
|
||||
|
||||
svga->map8 = svga->pallook;
|
||||
svga->hblank_overscan = 1; /* Do at least 1 character of overscan after horizontal blanking. */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -112,8 +112,6 @@ video_cards[] = {
|
||||
{ "tvga9000b", &tvga9000b_device },
|
||||
{ "tgkorvga", &et4000k_isa_device },
|
||||
{ "et2000", &et2000_device },
|
||||
{ "et3000ax", &et3000_isa_device },
|
||||
{ "et4000ax_tc6058af", &et4000_tc6058af_isa_device },
|
||||
{ "et4000ax", &et4000_isa_device },
|
||||
{ "et4000w32", &et4000w32_device },
|
||||
{ "et4000w32i", &et4000w32i_isa_device },
|
||||
|
||||
@@ -483,6 +483,10 @@ tgui_out(uint16_t addr, uint8_t val, void *p)
|
||||
tgui_recalcmapping(tgui);
|
||||
break;
|
||||
|
||||
case 0x37:
|
||||
i2c_gpio_set(tgui->i2c, (val & 0x02) || !(val & 0x04), (val & 0x01) || !(val & 0x08));
|
||||
break;
|
||||
|
||||
case 0x40: case 0x41: case 0x42: case 0x43:
|
||||
case 0x44: case 0x45: case 0x46: case 0x47:
|
||||
if (tgui->type >= TGUI_9440) {
|
||||
@@ -581,7 +585,7 @@ tgui_in(uint16_t addr, void *p)
|
||||
return svga->seqregs[0x0e];
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 0x3C6:
|
||||
if (tgui->type == TGUI_9400CXI)
|
||||
return tkd8001_ramdac_in(addr, svga->ramdac, svga);
|
||||
@@ -589,13 +593,13 @@ tgui_in(uint16_t addr, void *p)
|
||||
return tgui->ramdac_ctrl;
|
||||
tgui->ramdac_state++;
|
||||
break;
|
||||
|
||||
|
||||
case 0x3C7: case 0x3C8: case 0x3C9:
|
||||
if (tgui->type == TGUI_9400CXI)
|
||||
return tkd8001_ramdac_in(addr, svga->ramdac, svga);
|
||||
tgui->ramdac_state = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 0x3CF:
|
||||
if (tgui->type == TGUI_9400CXI && svga->gdcaddr >= 16 && svga->gdcaddr < 32)
|
||||
return tgui->ext_gdc_regs[svga->gdcaddr & 15];
|
||||
@@ -605,7 +609,19 @@ tgui_in(uint16_t addr, void *p)
|
||||
case 0x3D4:
|
||||
return svga->crtcreg;
|
||||
case 0x3D5:
|
||||
temp = svga->crtc[svga->crtcreg];
|
||||
temp = svga->crtc[svga->crtcreg];
|
||||
if (svga->crtcreg == 0x37) {
|
||||
if (!(temp & 0x04)) {
|
||||
temp &= ~0x02;
|
||||
if (i2c_gpio_get_scl(tgui->i2c))
|
||||
temp |= 0x02;
|
||||
}
|
||||
if (!(temp & 0x08)) {
|
||||
temp &= ~0x01;
|
||||
if (i2c_gpio_get_sda(tgui->i2c))
|
||||
temp |= 0x01;
|
||||
}
|
||||
}
|
||||
return temp;
|
||||
case 0x3d8:
|
||||
return tgui->tgui_3d8;
|
||||
@@ -3000,7 +3016,7 @@ static void *tgui_init(const device_t *info)
|
||||
|
||||
if (tgui->pci && (tgui->type >= TGUI_9440)) {
|
||||
if (tgui->has_bios)
|
||||
tgui->card = pci_add_card(PCI_ADD_VIDEO, tgui_pci_read, tgui_pci_write, tgui);
|
||||
tgui->card = pci_add_card(PCI_ADD_VIDEO, tgui_pci_read, tgui_pci_write, tgui);
|
||||
else
|
||||
tgui->card = pci_add_card(PCI_ADD_VIDEO | PCI_ADD_STRICT, tgui_pci_read, tgui_pci_write, tgui);
|
||||
}
|
||||
@@ -3013,10 +3029,9 @@ static void *tgui_init(const device_t *info)
|
||||
tgui->pci_regs[0x33] = 0x00;
|
||||
}
|
||||
|
||||
if (tgui->type >= TGUI_9440)
|
||||
if (tgui->type >= TGUI_9440) {
|
||||
svga->packed_chain4 = 1;
|
||||
|
||||
if (tgui->type >= TGUI_9660) {
|
||||
tgui->i2c = i2c_gpio_init("ddc_tgui");
|
||||
tgui->ddc = ddc_init(i2c_gpio_get_bus(tgui->i2c));
|
||||
}
|
||||
@@ -3045,6 +3060,9 @@ void tgui_close(void *p)
|
||||
|
||||
svga_close(&tgui->svga);
|
||||
|
||||
ddc_close(tgui->ddc);
|
||||
i2c_gpio_close(tgui->i2c);
|
||||
|
||||
free(tgui);
|
||||
}
|
||||
|
||||
|
||||
993
src/win/86Box.rc
@@ -20,7 +20,7 @@ add_library(plat OBJECT win.c win_dynld.c win_cdrom.c win_thread.c
|
||||
|
||||
add_library(ui OBJECT win_ui.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
|
||||
win_jsconf.c win_media_menu.c 86Box.rc)
|
||||
win_jsconf.c win_media_menu.c win_lang.c 86Box.rc)
|
||||
|
||||
if(MSVC)
|
||||
# MSVC complains when we include the manifest from 86Box.rc...
|
||||
|
||||
@@ -42,9 +42,6 @@ ifeq ($(DEV_BUILD), y)
|
||||
ifndef GUSMAX
|
||||
GUSMAX := y
|
||||
endif
|
||||
ifndef HEDAKA
|
||||
HEDAKA := y
|
||||
endif
|
||||
ifndef LASERXT
|
||||
LASERXT := y
|
||||
endif
|
||||
@@ -63,9 +60,6 @@ ifeq ($(DEV_BUILD), y)
|
||||
ifndef PAS16
|
||||
PAS16 := n
|
||||
endif
|
||||
ifndef PS2M70T4
|
||||
PS2M70T4 := y
|
||||
endif
|
||||
ifndef SIO_DETECT
|
||||
SIO_DETECT := y
|
||||
endif
|
||||
@@ -78,9 +72,6 @@ ifeq ($(DEV_BUILD), y)
|
||||
ifndef XL24
|
||||
XL24 := y
|
||||
endif
|
||||
ifndef VECT486VL
|
||||
VECT486VL := y
|
||||
endif
|
||||
ifndef OLIVETTI
|
||||
OLIVETTI := y
|
||||
endif
|
||||
@@ -103,9 +94,6 @@ else
|
||||
ifndef GUSMAX
|
||||
GUSMAX := n
|
||||
endif
|
||||
ifndef HEDAKA
|
||||
HEDAKA := n
|
||||
endif
|
||||
ifndef LASERXT
|
||||
LASERXT := n
|
||||
endif
|
||||
@@ -124,9 +112,6 @@ else
|
||||
ifndef PAS16
|
||||
PAS16 := n
|
||||
endif
|
||||
ifndef PS2M70T4
|
||||
PS2M70T4 := n
|
||||
endif
|
||||
ifndef SIO_DETECT
|
||||
SIO_DETECT := n
|
||||
endif
|
||||
@@ -139,9 +124,6 @@ else
|
||||
ifndef XL24
|
||||
XL24 := n
|
||||
endif
|
||||
ifndef VECT486VL
|
||||
VECT486VL := n
|
||||
endif
|
||||
ifndef OLIVETTI
|
||||
OLIVETTI := n
|
||||
endif
|
||||
@@ -426,7 +408,7 @@ else
|
||||
UIOBJ := win_ui.o win_stbar.o \
|
||||
win_sdl.o \
|
||||
win_dialog.o win_about.o \
|
||||
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o \
|
||||
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o win_lang.o \
|
||||
win_new_floppy.o win_jsconf.o win_media_menu.o
|
||||
endif
|
||||
|
||||
@@ -491,10 +473,6 @@ ifeq ($(GUSMAX), y)
|
||||
OPTS += -DUSE_GUSMAX
|
||||
endif
|
||||
|
||||
ifeq ($(HEDAKA), y)
|
||||
OPTS += -DUSE_HEDAKA
|
||||
endif
|
||||
|
||||
ifeq ($(LASERXT), y)
|
||||
OPTS += -DUSE_LASERXT
|
||||
DEVBROBJ += m_xt_laserxt.o
|
||||
@@ -524,10 +502,6 @@ OPTS += -DUSE_PAS16
|
||||
DEVBROBJ += snd_pas16.o
|
||||
endif
|
||||
|
||||
ifeq ($(PS2M70T4), y)
|
||||
OPTS += -DUSE_PS2M70T4
|
||||
endif
|
||||
|
||||
ifeq ($(SIO_DETECT), y)
|
||||
OPTS += -DUSE_SIO_DETECT
|
||||
DEVBROBJ += sio_detect.o
|
||||
@@ -723,7 +697,7 @@ SNDOBJ := sound.o \
|
||||
snd_wss.o \
|
||||
snd_ym7128.o
|
||||
|
||||
VIDOBJ := video.o \
|
||||
VIDOBJ := agpgart.o video.o \
|
||||
vid_table.o \
|
||||
vid_cga.o vid_cga_comp.o \
|
||||
vid_compaq_cga.o \
|
||||
@@ -744,7 +718,6 @@ VIDOBJ := video.o \
|
||||
vid_bt48x_ramdac.o \
|
||||
vid_av9194.o vid_icd2061.o vid_ics2494.o vid_ics2595.o \
|
||||
vid_cl54xx.o \
|
||||
vid_et3000.o \
|
||||
vid_et4000.o vid_sc1148x_ramdac.o \
|
||||
vid_sc1502x_ramdac.o \
|
||||
vid_et4000w32.o vid_stg_ramdac.o \
|
||||
|
||||
BIN
src/win/assets/86Box-green.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
src/win/assets/86box-rb.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
src/win/assets/86box-red.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
src/win/assets/86box-yellow.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
src/win/assets/86box.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
src/win/assets/status-paused.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
src/win/assets/status-running.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
640
src/win/languages/cs-CZ.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Akce"
|
||||
BEGIN
|
||||
MENUITEM "&Klávesnice vyžaduje záběr", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&Pravý Ctrl je levý Alt", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Resetovat", 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 "P&ozastavit", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ukončit", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Zobrazení"
|
||||
BEGIN
|
||||
MENUITEM "&Schovat stavový řádek", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Měnitelná velikost okna", IDM_VID_RESIZE
|
||||
MENUITEM "&Pamatovat velikost a pozici", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Renderer"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Zadat velikost...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&Dodržovat poměr stran 4:3", IDM_VID_FORCE43
|
||||
POPUP "&Násobek zvětšení okna"
|
||||
BEGIN
|
||||
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Metoda filtrování"
|
||||
BEGIN
|
||||
MENUITEM "&Nejbližší", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Lineární", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Š&kálování HiDPI", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Celá obrazovka\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Fullscreen &stretch mode"
|
||||
BEGIN
|
||||
MENUITEM "&Roztáhnout", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Zachovat poměr stran", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Integer scale", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "Nastavení pro E&GA a (S)VGA"
|
||||
BEGIN
|
||||
MENUITEM "&Převrátit barvy", IDM_VID_INVERT
|
||||
POPUP "&Typ VGA monitoru"
|
||||
BEGIN
|
||||
MENUITEM "RGB &barevný", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB odstíny šedi", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Jantarová obrazovka", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Zelená obrazovka", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&Bílá obrazovka", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Převod na &odstíny šedi"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Průměr", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
|
||||
MENUITEM "&Upravit kontrast černobílých obrazovek", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Média", IDM_MEDIA
|
||||
POPUP "&Nástroje"
|
||||
BEGIN
|
||||
MENUITEM "&Nastavení...", IDM_CONFIG
|
||||
MENUITEM "&Aktualizovat ikony stavového řádku", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Změnit jazyk zobrazení...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Pořídit s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Zesílení zvuku", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Začít trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Zastavit trace\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 "Enable BusLogic logs\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Enable CD-ROM logs\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Enable floppy (86F) logs\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Enable floppy controller logs\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Enable IDE logs\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Enable Serial Port logs\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Enable Network logs\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Log breakpoint\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Dump &video RAM\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "Ná&pověda"
|
||||
BEGIN
|
||||
MENUITEM "&Dokumentace", IDM_DOCS
|
||||
MENUITEM "&O programu 86Box", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nový obraz...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existující obraz...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Existující obraz (&ochrana proti zápisu)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Nahrávat", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Přehrát", IDM_CASSETTE_PLAY
|
||||
MENUITEM "Přetočit na &začátek", IDM_CASSETTE_REWIND
|
||||
MENUITEM "Přetočit na &konec", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nový obraz...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existující obraz...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Existující obraz (&ochrana proti zápisu)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xportovat do 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Ztišit", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Načíst znova předchozí obraz", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Obraz...", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nový obraz...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existující obraz...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Existující obraz (&ochrana proti zápisu)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_ZIP_EJECT
|
||||
MENUITEM "&Načíst znova předchozí obraz", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nový obraz...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existující obraz...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Existující obraz (&ochrana proti zápisu)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vyjmout", IDM_MO_EJECT
|
||||
MENUITEM "&Načíst znova předchozí obraz", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Cílová snímková frekvence"
|
||||
BEGIN
|
||||
MENUITEM "&Synchronizovat s obrazem", 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
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Zvolit shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Odebrat shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Změnit jazyk zobrazení"
|
||||
#define STR_SND_GAIN "Zesílení zvuku"
|
||||
#define STR_NEW_FLOPPY "Nový obraz"
|
||||
#define STR_CONFIG "Nastavení emulátoru 86Box"
|
||||
#define STR_SPECIFY_DIM "Zadat rozměry hlavního okna"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Storno"
|
||||
#define STR_GLOBAL "Uložit toto nastavení jako &globální výchozí stav"
|
||||
#define STR_DEFAULT "&Výchozí"
|
||||
#define STR_LANGUAGE "Jazyk:"
|
||||
|
||||
#define STR_GAIN "Zesílení"
|
||||
|
||||
#define STR_FILE_NAME "Název souboru:"
|
||||
#define STR_DISK_SIZE "Velikost disku:"
|
||||
#define STR_RPM_MODE "Režím ot./m:"
|
||||
#define STR_PROGRESS "Průběh:"
|
||||
|
||||
#define STR_WIDTH "Šířka:"
|
||||
#define STR_HEIGHT "Výška:"
|
||||
#define STR_LOCK_TO_SIZE "Uzamknout na tyto rozměry"
|
||||
|
||||
#define STR_MACHINE_TYPE "Typ počítače:"
|
||||
#define STR_MACHINE "Počítač:"
|
||||
#define STR_CONFIGURE "Konfigurovat"
|
||||
#define STR_CPU_TYPE "Procesor:"
|
||||
#define STR_SPEED "Rychlost:"
|
||||
#define STR_FPU "Koprocesor:"
|
||||
#define STR_WAIT_STATES "Čekací stavy:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Pamět:"
|
||||
#define STR_TIME_SYNC "Synchronizace času"
|
||||
#define STR_DISABLED "Vypnuta"
|
||||
#define STR_ENABLED_LOCAL "Zapnuta (místní čas)"
|
||||
#define STR_ENABLED_UTC "Zapnuta (UTC)"
|
||||
#define STR_DYNAREC "Dynamický překladač"
|
||||
|
||||
#define STR_VIDEO "Grafika:"
|
||||
#define STR_VOODOO "Použít grafický akcelerátor Voodoo"
|
||||
|
||||
#define STR_MOUSE "Myš:"
|
||||
#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_SOUND "Zvuková karta:"
|
||||
#define STR_MIDI "MIDI výstup:"
|
||||
#define STR_MIDI_IN "MIDI vstup:"
|
||||
#define STR_MPU401 "Samostatný MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Použít zvuk FLOAT32"
|
||||
|
||||
#define STR_NET_TYPE "Druh sítě:"
|
||||
#define STR_PCAP "PCap zařízení:"
|
||||
#define STR_NET "Síťový adaptér:"
|
||||
|
||||
#define STR_LPT1 "Zařízení na LPT1"
|
||||
#define STR_LPT2 "Zařízení na LPT2"
|
||||
#define STR_LPT3 "Zařízení na LPT3"
|
||||
#define STR_SERIAL1 "Povolit port COM1"
|
||||
#define STR_SERIAL2 "Povolit port COM2"
|
||||
#define STR_SERIAL3 "Povolit port COM3"
|
||||
#define STR_SERIAL4 "Povolit port COM4"
|
||||
#define STR_PARALLEL1 "Povolit port LPT1"
|
||||
#define STR_PARALLEL2 "Povolit port LPT2"
|
||||
#define STR_PARALLEL3 "Povolit port LPT3"
|
||||
|
||||
#define STR_HDC "Řadič disku:"
|
||||
#define STR_FDC "Disketový řadič:"
|
||||
#define STR_IDE_TER "Třetí řadič IDE"
|
||||
#define STR_IDE_QUA "Čtvrtý řadič IDE"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Řadič 1:"
|
||||
#define STR_SCSI_2 "Řadič 2:"
|
||||
#define STR_SCSI_3 "Řadič 3:"
|
||||
#define STR_SCSI_4 "Řadič 4:"
|
||||
#define STR_CASSETTE "Kazeta"
|
||||
|
||||
#define STR_HDD "Pevné disky:"
|
||||
#define STR_NEW "&Nový..."
|
||||
#define STR_EXISTING "&Existující..."
|
||||
#define STR_REMOVE "&Odebrat"
|
||||
#define STR_BUS "Sběrnice:"
|
||||
#define STR_CHANNEL "Kanál:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Zadat..."
|
||||
#define STR_SECTORS "Sektory:"
|
||||
#define STR_HEADS "Hlavy:"
|
||||
#define STR_CYLS "Cylindry:"
|
||||
#define STR_SIZE_MB "Velikost (MB):"
|
||||
#define STR_TYPE "Typ:"
|
||||
#define STR_IMG_FORMAT "Formát obrazu:"
|
||||
#define STR_BLOCK_SIZE "Velikost bloků:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Disketové mechaniky:"
|
||||
#define STR_TURBO "Turbo časování"
|
||||
#define STR_CHECKBPB "Kontrola BPB"
|
||||
#define STR_CDROM_DRIVES "Mechaniky CD-ROM:"
|
||||
|
||||
#define STR_MO_DRIVES "Magnetooptické mechaniky:"
|
||||
#define STR_ZIP_DRIVES "Mechaniky ZIP:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA hodiny:"
|
||||
#define STR_ISAMEM "ISA rozšíření paměti"
|
||||
#define STR_ISAMEM_1 "Karta 1:"
|
||||
#define STR_ISAMEM_2 "Karta 2:"
|
||||
#define STR_ISAMEM_3 "Karta 3:"
|
||||
#define STR_ISAMEM_4 "Karta 4:"
|
||||
#define STR_BUGGER "Zařízení ISABugger"
|
||||
#define STR_POSTCARD "Karta pro kódy POST"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Chyba"
|
||||
IDS_2050 "Závažná chyba"
|
||||
IDS_2051 "<rezervováno>"
|
||||
IDS_2052 "Stiskněte Ctrl+Alt+Page Down pro návrat z režimu celé obrazovky."
|
||||
IDS_2053 "Rychlost"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box nenalezl žádné použitelné image pamětí ROM.\n\n<a href=""https://github.com/86Box/roms/releases/latest"">Stáhněte</a> sadu obrazů ROM a extrahujte ji do složky ""roms""."
|
||||
IDS_2057 "(prázdné)"
|
||||
IDS_2058 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Zap."
|
||||
IDS_2061 "Vyp."
|
||||
IDS_2062 "Všechny obrazy disků (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Základní sektorové obrazy (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Povrchové obrazy (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Počítač ""%hs"" není dostupný, jelikož chybí obraz jeho paměti ROM ve složce ""roms/machines"". Konfigurace se přepne na jiný dostupný počítač."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Video adaptér ""%hs"" není dostupný, jelikož chybí obraz jeho paměti ROM ve složce ""roms/video"". Konfigurace se přepne na jiný dostupný adaptér."
|
||||
IDS_2065 "Počítač"
|
||||
IDS_2066 "Obraz"
|
||||
IDS_2067 "Vstupní zařízení"
|
||||
IDS_2068 "Zvuk"
|
||||
IDS_2069 "Síť"
|
||||
IDS_2070 "COM a LPT porty"
|
||||
IDS_2071 "Řadiče úložiště"
|
||||
IDS_2072 "Pevné disky"
|
||||
IDS_2073 "Disketové a CD-ROM mechaniky"
|
||||
IDS_2074 "Další vyměnitelná zařízení"
|
||||
IDS_2075 "Jiné příslušenství"
|
||||
IDS_2076 "Image povrchu (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Klikněte pro zabraní myši"
|
||||
IDS_2078 "Stiskněte F8+F12 pro uvolnění myši"
|
||||
IDS_2079 "Stiskněte F8+F12 nebo prostřední tlačítko pro uvolnění myši"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Nebylo možné spustit FluidSynth."
|
||||
IDS_2081 "Sběrnice"
|
||||
IDS_2082 "Soubor"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "H"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Kontrola BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Nebylo možné spustit video renderer."
|
||||
IDS_2090 "Výchozí"
|
||||
IDS_2091 "%i čekací stav(y)"
|
||||
IDS_2092 "Typ"
|
||||
IDS_2093 "Nebylo možné spustit PCap"
|
||||
IDS_2094 "Nebyla nalezena žádná PCap zařízení"
|
||||
IDS_2095 "Neplatné PCap zařízení"
|
||||
IDS_2096 "Standardní 2tlačítkový joystick"
|
||||
IDS_2097 "Standardní 4tlačítkový joystick"
|
||||
IDS_2098 "Standardní 6tlačítkový joystick"
|
||||
IDS_2099 "Standardní 8tlačítkový joystick"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Žadný"
|
||||
IDS_2104 "Nebylo možné nahrát klávesnicové zkratky."
|
||||
IDS_2105 "Nebylo možné zaregistrovat raw input."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Disketová mechanika %i (%s): %ls"
|
||||
IDS_2109 "Všechny obrazy (*.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\0Rozšířené sektorové obrazy (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Základní sektorové obrazy (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Obrazy magnetického toku (*.FDI)\0*.FDI\0Obrazy povrchu (*.86F;*.MFM)\0*.86F;*.MFM\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_2110 "Nebylo možné spustit FreeType"
|
||||
IDS_2111 "Nebylo možné spustit SDL, je potřeba SDL2.dll"
|
||||
IDS_2112 "Opravdu chcete resetovat emulovaný počítač?"
|
||||
IDS_2113 "Opravdu chcete ukončit 86Box?"
|
||||
IDS_2114 "Nebylo možné spustit Ghostscript"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_2117 "Vítejte v emulátoru 86Box!"
|
||||
IDS_2118 "Vestavěný řadič"
|
||||
IDS_2119 "Ukončit"
|
||||
IDS_2120 "Nebyly nalezeny žádné obrazy ROM"
|
||||
IDS_2121 "Chcete uložit nastavení?"
|
||||
IDS_2122 "Pokračováním se resetuje emulovaný počítač."
|
||||
IDS_2123 "Uložit"
|
||||
IDS_2124 "O programu 86Box"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
|
||||
IDS_2126 "Emulátor starých počítačů\n\nAutoři: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nZveřejněno pod licencí GNU General Public License verze 2 nebo novější. Viz soubor LICENSE pro více informací."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware není dostupný"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Ujistěte se, že je nainstalován " LIB_NAME_PCAP " a používáte síťové připojení s ním kompatibilní."
|
||||
IDS_2130 "Neplatná konfigurace"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " je potřeba pro emulaci ESC/P tiskárny."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " je potřeba pro automatický převod PostScript dokumentů do PDF.\n\nJakékoliv dokumenty vytisknuté přes obecnou PostScriptovou tiskárnu budou uloženy jako PostScript (.ps) soubory."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " je potřeba pro MIDI výstup přes knihovnu FluidSynth."
|
||||
IDS_2134 "Vstup do režimu celé obrazovky"
|
||||
IDS_2135 "Nezobrazovat dále tuto zprávu"
|
||||
IDS_2136 "Neukončovat"
|
||||
IDS_2137 "Resetovat"
|
||||
IDS_2138 "Neresetovat"
|
||||
IDS_2139 "Obraz magnetooptického disku (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_2140 "Obraz CD-ROM disku (*.ISO;*.CUE)\0*.ISO;*.CUE\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_2141 "Konfigurace zařízení %hs"
|
||||
IDS_2142 "Monitor je v režimu spánku"
|
||||
IDS_2143 "Shadery OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
|
||||
IDS_2144 "Možnosti OpenGL"
|
||||
IDS_2145 "Pokoušíte se spustit nepodporovanou konfiguraci"
|
||||
IDS_2146 "Pro tuto konfiguraci bylo vypnuto filtrování procesorů podle zvoleného počítače.\n\nToto umožňuje zvolit procesor, který by jinak se zvoleným počítačem nebyl kompatibilní. Můžou však nastat potíže s BIOSem nebo jiným softwarem.\n\nPovolení tohoto nastavení není oficiálně podporováno a jakákoliv hlášení o chybách mohou být uzavřeny jako neplatné."
|
||||
IDS_2147 "Pokračovat"
|
||||
IDS_2148 "Kazeta: %s"
|
||||
IDS_2149 "Kazetové nahrávky (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_2150 "Cartridge %i: %ls"
|
||||
IDS_2151 "Obrazy cartridge (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Všechny soubory (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Pevný disk (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "CD-ROM mechaniky pro rozhraní MFM/RLL nebo ESDI nikdy neexistovaly"
|
||||
IDS_4100 "Vlastní..."
|
||||
IDS_4101 "Vlastní (velký)..."
|
||||
IDS_4102 "Přidat nový pevný disk"
|
||||
IDS_4103 "Přidat existující pevný disk"
|
||||
IDS_4104 "Obraz disku formátu HDI nemůžou být větší než 4 GB."
|
||||
IDS_4105 "Obraz disku nemůžou být větší než 127 GB."
|
||||
IDS_4106 "Obrazy pevného disku (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_4107 "Nebylo možné přečíst soubor"
|
||||
IDS_4108 "Nebylo možné zapisovat do souboru"
|
||||
IDS_4109 "Obraz disku ve formátu HDI nebo HDX s velikostí sektoru jinou než 512 bajtů nejsou podporovány."
|
||||
IDS_4110 "USB zatím není podporováno."
|
||||
IDS_4111 "Soubor obrazu disku již existuje"
|
||||
IDS_4112 "Zadejte platný název souboru."
|
||||
IDS_4113 "Obraz disku byl vytvořen"
|
||||
IDS_4114 "Ujistěte se, že soubor existuje a lze jej přečíst."
|
||||
IDS_4115 "Ujistěte se, že se do složky, kde se má soubor uložit, dá zapisovat."
|
||||
IDS_4116 "Obraz disku je příliš velký"
|
||||
IDS_4117 "Nezapomeňte nově vytvořený disk rozdělit a naformátovat."
|
||||
IDS_4118 "Zvolený soubor bude přepsán. Opravdu jej chcete použít?"
|
||||
IDS_4119 "Nepodporovaný obraz disku"
|
||||
IDS_4120 "Přepsat"
|
||||
IDS_4121 "Nepřepisovat"
|
||||
IDS_4122 "Surový obraz (.img)"
|
||||
IDS_4123 "HDI obraz (.hdi)"
|
||||
IDS_4124 "HDX obraz (.hdx)"
|
||||
IDS_4125 "VHD s pevnou velikostí (.vhd)"
|
||||
IDS_4126 "VHD s dynamickou velikostí (.vhd)"
|
||||
IDS_4127 "Rozdílový VHD (.vhd)"
|
||||
IDS_4128 "Velké bloky (2 MB)"
|
||||
IDS_4129 "Malé bloky (512 KB)"
|
||||
IDS_4130 "Soubory VHD (*.VHD)\0*.VHD\0Všechny soubory (*.*)\0*.*\0"
|
||||
IDS_4131 "Vyberte nadřazený virtuální disk"
|
||||
IDS_4132 "To může znamenat, že se obsahy nadřazeného disku změnily po vytvoření rozdílového disku.\n\nTato chyba také může nastat, pokud byl soubor s image disku kopírován nebo přesunut, nebo kvůli chybě v programu, který tento disk vytvořil.\n\nChcete časová razítka opravit?"
|
||||
IDS_4133 "Časová razítka nadřazeného a podřazeného disku nesouhlasí"
|
||||
IDS_4134 "Nebylo možné opravit časové razítko VHD."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Vypnuto"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Vypnuto"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (cluster 1024)"
|
||||
IDS_5898 "DMF (cluster 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "Dokonalé ot./m"
|
||||
IDS_6145 "1%% pod dokonalými ot./m"
|
||||
IDS_6146 "1.5%% pod dokonalými ot./m"
|
||||
IDS_6147 "2%% pod dokonalými ot./m"
|
||||
|
||||
IDS_7168 "(výchozí nastavení systému)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Czech (Czech Republic) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
640
src/win/languages/de-DE.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// German (de-DE) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Aktionen"
|
||||
BEGIN
|
||||
MENUITEM "&Tastatur benötigt das Einfangen des Mauszeigers", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&Die rechte Strg-Taste ist die Linke Alt-Taste", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hard-Reset...", IDM_ACTION_HRESET
|
||||
MENUITEM "&Strg+Alt+Entf\tStrg+F12", IDM_ACTION_RESET_CAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Strg+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Pause", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Be&enden...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Ansicht"
|
||||
BEGIN
|
||||
MENUITEM "&Statusleiste ausblenden", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Größenverstellbares Fenster", IDM_VID_RESIZE
|
||||
MENUITEM "&Größe && Position merken", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Re&nderer"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3-Kern)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Dimensionen spezifizieren...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FORCE43
|
||||
POPUP "&Fensterskalierungsfaktor"
|
||||
BEGIN
|
||||
MENUITEM "&0,5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1,&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Filteringmethode"
|
||||
BEGIN
|
||||
MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Hi&DPI-Skalierung", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vollbild\tStrg+Alt+BildAuf", IDM_VID_FULLSCREEN
|
||||
POPUP "&Stretching-Modus im Vollbildmodus"
|
||||
BEGIN
|
||||
MENUITEM "&Vollbild-Stretching", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FS_43
|
||||
MENUITEM "&Quadratische Pixel (Seitenverhältnis beibehalten)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Integer-Skalierung", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "E&GA/(S)VGA-Einstellungen"
|
||||
BEGIN
|
||||
MENUITEM "&Invertierte VGA-Anzeige", IDM_VID_INVERT
|
||||
POPUP "&VGA-Bildschirmtyp"
|
||||
BEGIN
|
||||
MENUITEM "&RGB-Farbe", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB-Graustufen", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Bernstein-Monitor", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Grüner Monitor", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&Weißer Monitor", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Methode zur &Graustufenkonversion"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Durchschnittsmethode", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Overscan für CGA/PCjr/Tandy/E&GA/(S)VGA-Displays", IDM_VID_OVERSCAN
|
||||
MENUITEM "Kontrast für &monochrome Displays ändern", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Medien", IDM_MEDIA
|
||||
POPUP "&Werkzeuge"
|
||||
BEGIN
|
||||
MENUITEM "&Einstellungen...", IDM_CONFIG
|
||||
MENUITEM "&Statusleistenicons aktualisieren", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Anzeigesprache ändern...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Schallverstärkung...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Tracing starten\tStrg+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Tracing beenden\tStrg+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Logging"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "BusLogic-Logs aktivieren\tStrg+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "CD-ROM-Logs aktivieren\tStrg+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Disketten (86F)-Logs aktivieren\tStrg+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Diskettencontroller-Logs aktivieren\tStrg+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "IDE-Logs aktivieren\tStrg+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Seriell-Port-Logs aktivieren\tStrg+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Netzwerk-Logs aktivieren\tStrg+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Breakpoint für die Log-Datei\tStrg+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "&Video-RAM dumpen\tStrg+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Hilfe"
|
||||
BEGIN
|
||||
MENUITEM "&Dokumentation...", IDM_DOCS
|
||||
MENUITEM "&Über 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Neues Image...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bestehendes Image...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Aufnehmen", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Abspielen", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&An den Anfang zurückspulen", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&An das Ende vorspulen", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "A&uswerfen", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Steckmodulimage...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "A&uswerfen", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Neues Image...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bestehendes Image...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&In das 86F-Format e&xportieren...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Auswerfen", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Stummschalten", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "L&eer", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Voriges Image neu laden", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Image", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Neues Image...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bestehendes Image...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "A&uswerfen", IDM_ZIP_EJECT
|
||||
MENUITEM "&Voriges Image neu laden", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Neues Image...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bestehendes Image...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_MO_EJECT
|
||||
MENUITEM "&Bestehendes Image erneut laden", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Ziel&framerate"
|
||||
BEGIN
|
||||
MENUITEM "&Mit Videoausgabe synchronisieren", 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
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Shader auswählen...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Shader entfernen", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Anzeigesprache ändern"
|
||||
#define STR_SND_GAIN "Klangverstärkung"
|
||||
#define STR_NEW_FLOPPY "Neues Image"
|
||||
#define STR_CONFIG "86Box-Einstellungen"
|
||||
#define STR_SPECIFY_DIM "Abmessungen des Hauptfensters einstellen"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Abbrechen"
|
||||
#define STR_GLOBAL "Einstellungen als &globalen Standard speichern"
|
||||
#define STR_DEFAULT "&Standard"
|
||||
#define STR_LANGUAGE "Sprache:"
|
||||
|
||||
#define STR_GAIN "Verstärkung"
|
||||
|
||||
#define STR_FILE_NAME "Dateiname:"
|
||||
#define STR_DISK_SIZE "Plattengröße:"
|
||||
#define STR_RPM_MODE "Drehzahlmodus:"
|
||||
#define STR_PROGRESS "Fortschritt:"
|
||||
|
||||
#define STR_WIDTH "Breite:"
|
||||
#define STR_HEIGHT "Höhe:"
|
||||
#define STR_LOCK_TO_SIZE "Auf diese Größe festlegen"
|
||||
|
||||
#define STR_MACHINE_TYPE "Maschinentyp:"
|
||||
#define STR_MACHINE "Maschine:"
|
||||
#define STR_CONFIGURE "Konfigurieren"
|
||||
#define STR_CPU_TYPE "CPU-Typ:"
|
||||
#define STR_SPEED "Takt:"
|
||||
#define STR_FPU "FPU-Einheit:"
|
||||
#define STR_WAIT_STATES "Wartezustände:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Hauptspeicher:"
|
||||
#define STR_TIME_SYNC "Zeitsynchronisierung"
|
||||
#define STR_DISABLED "Deaktiviert"
|
||||
#define STR_ENABLED_LOCAL "Aktiviert (Lokalzeit)"
|
||||
#define STR_ENABLED_UTC "Aktiviert (UTC)"
|
||||
#define STR_DYNAREC "Dynamischer Recompiler"
|
||||
|
||||
#define STR_VIDEO "Videokarte:"
|
||||
#define STR_VOODOO "Voodoo Graphics"
|
||||
|
||||
#define STR_MOUSE "Maus:"
|
||||
#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_SOUND "Soundkarte:"
|
||||
#define STR_MIDI "MIDI Out-Gerät:"
|
||||
#define STR_MIDI_IN "MIDI In-Gerät:"
|
||||
#define STR_MPU401 "Standalone-MPU-401-Gerät"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32-Wiedergabe benutzen"
|
||||
|
||||
#define STR_NET_TYPE "Netzwerktyp:"
|
||||
#define STR_PCAP "PCap-Gerät:"
|
||||
#define STR_NET "Netzwerkadapter:"
|
||||
|
||||
#define STR_LPT1 "LPT1-Gerät"
|
||||
#define STR_LPT2 "LPT2-Gerät"
|
||||
#define STR_LPT3 "LPT3-Gerät"
|
||||
#define STR_SERIAL1 "Serielle Schnittstelle 1"
|
||||
#define STR_SERIAL2 "Serielle Schnittstelle 2"
|
||||
#define STR_SERIAL3 "Serielle Schnittstelle 3"
|
||||
#define STR_SERIAL4 "Serielle Schnittstelle 4"
|
||||
#define STR_PARALLEL1 "Parallelport 1"
|
||||
#define STR_PARALLEL2 "Parallelport 2"
|
||||
#define STR_PARALLEL3 "Parallelport 3"
|
||||
|
||||
#define STR_HDC "HDD-Controller:"
|
||||
#define STR_FDC "FD-Controller:"
|
||||
#define STR_IDE_TER "Tertiärer IDE-Controller"
|
||||
#define STR_IDE_QUA "Quartärer IDE-Controller"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Controller 1:"
|
||||
#define STR_SCSI_2 "Controller 2:"
|
||||
#define STR_SCSI_3 "Controller 3:"
|
||||
#define STR_SCSI_4 "Controller 4:"
|
||||
#define STR_CASSETTE "Kassette"
|
||||
|
||||
#define STR_HDD "Festplatten:"
|
||||
#define STR_NEW "&Neu..."
|
||||
#define STR_EXISTING "&Vorhanden..."
|
||||
#define STR_REMOVE "&Entfernen"
|
||||
#define STR_BUS "Bus:"
|
||||
#define STR_CHANNEL "Kanal:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Festlegen..."
|
||||
#define STR_SECTORS "Sektoren:"
|
||||
#define STR_HEADS "Köpfe:"
|
||||
#define STR_CYLS "Zylinder:"
|
||||
#define STR_SIZE_MB "Größe (MB):"
|
||||
#define STR_TYPE "Typ:"
|
||||
#define STR_IMG_FORMAT "Imageformat:"
|
||||
#define STR_BLOCK_SIZE "Blockgröße:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Diskettenlaufwerke:"
|
||||
#define STR_TURBO "Turbo-Timings"
|
||||
#define STR_CHECKBPB "BPB überprüfen"
|
||||
#define STR_CDROM_DRIVES "CD-ROM-Laufwerke:"
|
||||
|
||||
#define STR_MO_DRIVES "MO-Laufwerke:"
|
||||
#define STR_ZIP_DRIVES "ZIP-Laufwerke:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA-Echtzeituhr:"
|
||||
#define STR_ISAMEM "ISA-Speichererweiterung"
|
||||
#define STR_ISAMEM_1 "Steckkarte 1:"
|
||||
#define STR_ISAMEM_2 "Steckkarte 2:"
|
||||
#define STR_ISAMEM_3 "Steckkarte 3:"
|
||||
#define STR_ISAMEM_4 "Steckkarte 4:"
|
||||
#define STR_BUGGER "ISABugger-Gerät"
|
||||
#define STR_POSTCARD "POST-Code-Karte"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Fehler"
|
||||
IDS_2050 "Fataler Fehler"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Bitte Strg+Alt+Bild ab zur Rückkehr in den Fenstermodus drücken."
|
||||
IDS_2053 "Geschwindigkeit"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box konnte keine nutzbaren ROM-Images finden.\n\nBitte besuchen Sie <a href=""https://github.com/86Box/roms/releases/latest"">download</a>, laden ein ROM-Set herunter und extrahieren dies in das ""roms""-Verzeichnis."
|
||||
IDS_2057 "(leer)"
|
||||
IDS_2058 "ZIP-Imagedateien (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "An"
|
||||
IDS_2061 "Aus"
|
||||
IDS_2062 "Alle Imagedateien (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basissektorimages (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Oberflächenimages (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Die Maschine ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/machines nicht verfügbar. Es wird auf eine verfügbare Maschine gewechselt."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Die Videokarte ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/video nicht verfügbar. Es wird auf eine verfügbare Videokarte gewechselt."
|
||||
IDS_2065 "Maschine"
|
||||
IDS_2066 "Anzeige"
|
||||
IDS_2067 "Eingabegeräte"
|
||||
IDS_2068 "Multimedia"
|
||||
IDS_2069 "Netzwerk"
|
||||
IDS_2070 "Anschlüsse (COM & LPT)"
|
||||
IDS_2071 "Speichercontroller"
|
||||
IDS_2072 "Festplatten"
|
||||
IDS_2073 "Disketten- & CD-ROM-Laufwerke"
|
||||
IDS_2074 "Andere Wechsellaufwerke"
|
||||
IDS_2075 "Andere Peripheriegeräte"
|
||||
IDS_2076 "Oberflächenimages (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Zum Einfangen des Mauszeigers bitte klicken"
|
||||
IDS_2078 "Bitte F8+F12 zur Mausfreigabe drücken"
|
||||
IDS_2079 "Bitte F8+F12 oder die mittlere Maustaste zur Mausfreigabe drücken"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "FluidSynth konnte nicht initialisiert werden"
|
||||
IDS_2081 "Bus"
|
||||
IDS_2082 "Datei"
|
||||
IDS_2083 "Z"
|
||||
IDS_2084 "K"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "BPB prüfen"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Der Videorenderer konnte nicht initialisiert werden."
|
||||
IDS_2090 "Standard"
|
||||
IDS_2091 "%i Wartezustände"
|
||||
IDS_2092 "Typ"
|
||||
IDS_2093 "PCap konnte nicht eingerichtet werden"
|
||||
IDS_2094 "Keine PCap-Geräte gefunden"
|
||||
IDS_2095 "Ungültiges PCap-Gerät"
|
||||
IDS_2096 "Standard 2-Tasten-Joystick(s)"
|
||||
IDS_2097 "Standard 4-Tasten-Joystick"
|
||||
IDS_2098 "Standard 6-Tasten-Joystick"
|
||||
IDS_2099 "Standard 8-Tasten-Joystick"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Kein(es)"
|
||||
IDS_2104 "Tastaturbeschleuniger konnten nicht geladen werden."
|
||||
IDS_2105 "Roheingaben konnten nicht registriert werden."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (ZKS: %i, %i, %i)"
|
||||
IDS_2108 "Diskette %i (%s): %ls"
|
||||
IDS_2109 "Alle Images (*.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\0Fortgeschrittene Sektorimages (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basissektorimages (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Fluximages (*.FDI)\0*.FDI\0Oberflächenimages (*.86F;*.MFM)\0*.86F;*.MFM\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2110 "FreeType konnte nicht initialisiert werden"
|
||||
IDS_2111 "SDL konnte nicht initialisiert werden, die Datei SDL2.dll wird benötigt"
|
||||
IDS_2112 "Sind Sie sich sicher, dass Sie einen Hard-Reset für die emulierte Maschine durchführen wollen?"
|
||||
IDS_2113 "Sind Sie sich sicher, dass Sie 86Box beenden wollen?"
|
||||
IDS_2114 "Ghostscript konnte nicht initialisiert werden"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "MO-Images (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2117 "Willkommen bei 86Box!"
|
||||
IDS_2118 "Interner Controller"
|
||||
IDS_2119 "Beenden"
|
||||
IDS_2120 "Keine ROMs gefunden"
|
||||
IDS_2121 "Möchten Sie die Einstellungen speichern?"
|
||||
IDS_2122 "Dies wird zu einem Hard-Reset der emulierten Maschine führen."
|
||||
IDS_2123 "Speichern"
|
||||
IDS_2124 "Über 86Box"
|
||||
IDS_2125 "86Box Version " EMU_VERSION
|
||||
|
||||
IDS_2126 "Ein Emulator für alte Computer\n\nAutoren: Sarah Walker, Miran Grča, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho sowie andere.\n\nÜbersetzt von: dob205\n\nVeröffentlicht unter der GNU General Public License in der Version 2 oder neuer. Siehe LICENSE für mehr Informationen."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware nicht verfügbar"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Bitte stellen Sie sicher, dass " LIB_NAME_PCAP " installiert ist und sie eine " LIB_NAME_PCAP "-kompatible Netzwerkverbindung nutzen."
|
||||
IDS_2130 "Ungültige Konfiguration"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " wird für die ESC/P-Druckeremulation benötigt."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " wird zur automatischen Konversion von PostScript-Dateien in das PDF-Format benötigt.\n\nSämtliche an den generischen PostScript-Drucker gesendete Dateien werden als PostScript (.ps)-Dateien gesichert."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " wird für die FluidSynth-MIDI-Ausgabe benötigt."
|
||||
IDS_2134 "Vollbildmodus wird aktiviert"
|
||||
IDS_2135 "Diese Nachricht nicht mehr anzeigen"
|
||||
IDS_2136 "Nicht beenden"
|
||||
IDS_2137 "Resetten"
|
||||
IDS_2138 "Nicht Resetten"
|
||||
IDS_2139 "MO-Imagedateien (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2140 "CD-ROM-Imagedateien (*.ISO;*.CUE)\0*.ISO;*.CUE\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2141 "%hs-Gerätekonfiguration"
|
||||
IDS_2142 "Monitor im Standby"
|
||||
IDS_2143 "OpenGL-Shader (*.GLSL)\0*.GLSL\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2144 "OpenGL-Optionen"
|
||||
IDS_2145 "Sie laden gerade eine nicht unterstützte Konfiguration"
|
||||
IDS_2146 "Das Filtern der CPU-Typen basierend auf der ausgewählten Maschine ist für diese Maschine deaktiviert.\n\nDies ermöglicht es, dass man eine sonst nicht mit der ausgewählten Maschine inkompatible CPU auswählen kann. Allerdings kann dies zu Inkompatiblilitäten mit dem BIOS der Maschine oder anderen Programmen kommen.\n\nDas Aktivieren dieser Einstellung wird nicht unterstützt und sämtliche Bugreports können als ""invalid"" geschlossen werden."
|
||||
IDS_2147 "Fortfahren"
|
||||
IDS_2148 "Kassette: %s"
|
||||
IDS_2149 "Kassettenimages (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_2150 "Steckmodul %i: %ls"
|
||||
IDS_2151 "Steckmodulimages (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Alle Dateien (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Festplatte (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "MFM/RLL- oder ESDI CD-ROM-Laufwerke sind nicht existent"
|
||||
IDS_4100 "Angepasst..."
|
||||
IDS_4101 "Angepasst (Groß)..."
|
||||
IDS_4102 "Neue Festplatte hinzufügen"
|
||||
IDS_4103 "Bestehende Festplatte hinzufügen"
|
||||
IDS_4104 "HDI-Diskimages können nicht größer als 4 GB groß sein."
|
||||
IDS_4105 "Festplattenimages können nicht größer als 127 GB groß sein."
|
||||
IDS_4106 "Festplattenimages (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_4107 "Die Datei konnte nicht gelesen werden"
|
||||
IDS_4108 "Die Datei konnte nicht beschrieben werden"
|
||||
IDS_4109 "HDI- oder HDX-Images mit einer Sektorgröße größer als 512 kB werden nicht unterstützt."
|
||||
IDS_4110 "USB wird noch nicht unterstützt"
|
||||
IDS_4111 "Die Festplattenimagedatei existiert bereits"
|
||||
IDS_4112 "Bitte geben Sie einen gültigen Dateinamen ein."
|
||||
IDS_4113 "Disk-Image wurde erstellt"
|
||||
IDS_4114 "Bitte stellen Sie sicher, dass die Datei existiert und lesbar ist."
|
||||
IDS_4115 "Bitte stellen Sie sicher, dass die Datei in ein Verzeichnis mit Schreibberechtigungen gespeichert wird."
|
||||
IDS_4116 "Festplattenimage ist zu groß"
|
||||
IDS_4117 "Bitte denken Sie an das Partitionieren und Formatieren des neu erstellten Laufwerks."
|
||||
IDS_4118 "Die ausgewählte Datei wird überschrieben. Möchten Sie diese Datei nutzen?"
|
||||
IDS_4119 "Nicht unterstütztes Disk-Image"
|
||||
IDS_4120 "Überschreiben"
|
||||
IDS_4121 "Nicht überschreiben"
|
||||
IDS_4122 "Rohdatenimagedateien (.img)"
|
||||
IDS_4123 "HDI-Imagedateien (.hdi)"
|
||||
IDS_4124 "HDX-Imagedateien (.hdx)"
|
||||
IDS_4125 "VHD mit fester Größe (.vhd)"
|
||||
IDS_4126 "VHD mit dynamischer Größe (.vhd)"
|
||||
IDS_4127 "Differenzierende VHD (.vhd)"
|
||||
IDS_4128 "Große Blöcke (2 MB)"
|
||||
IDS_4129 "Kleine Blöcke (512 KB)"
|
||||
IDS_4130 "VHD-Dateien (*.VHD)\0*.VHD\0Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_4131 "Eltern-VHD-Datei bitte auswählen"
|
||||
IDS_4132 "Dies bedeutet, dass das Elternimage nach der Erstellung des differenzierenden Images erzeugt wurde.\n\nDies kann auch passieren, falls die Image-Dateien verschoben oder kopiert wurden. Ebenso kann auch dies durch einen Bug im Programm, welches das Image erstellt hat, passieren.\n\nMöchten Sie die Zeitstempel korrigieren?"
|
||||
IDS_4133 "Die Zeitstempel der Eltern- und der Kindesplatte stimmen nicht überein"
|
||||
IDS_4134 "Der Zeitstempel der VHD konnte nicht korrigiert werden."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Deaktiviert"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Deaktiviert"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1,2 MB"
|
||||
IDS_5895 "1,25 MB"
|
||||
IDS_5896 "1,44 MB"
|
||||
IDS_5897 "DMF (1024 Cluster)"
|
||||
IDS_5898 "DMF (2048 Cluster)"
|
||||
IDS_5899 "2,88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3,5-Zoll 128 MB M.O. (ISO 10090)"
|
||||
IDS_5903 "3,5-Zoll 230 MB M.O. (ISO 13963)"
|
||||
IDS_5904 "3,5-Zoll 540 MB M.O. (ISO 15498)"
|
||||
IDS_5905 "3,5-Zoll 640 MB M.O. (ISO 15498)"
|
||||
IDS_5906 "3,5-Zoll 1,3 GB M.O. (GigaMO)"
|
||||
IDS_5907 "3,5-Zoll 2,3 GB M.O. (GigaMO 2)"
|
||||
IDS_5908 "5,25-Zoll 600 MB M.O."
|
||||
IDS_5909 "5,25-Zoll 650 MB M.O."
|
||||
IDS_5910 "5,25-Zoll 1 GB M.O."
|
||||
IDS_5911 "5,25-Zoll 1,3 GB M.O."
|
||||
|
||||
IDS_6144 "Perfekte Drehzahl"
|
||||
IDS_6145 "1%% unterhalb der perfekten Drehzahl"
|
||||
IDS_6146 "1,5%% unterhalb der perfekten Drehzahl"
|
||||
IDS_6147 "2%% unterhalb der perfekten Drehzahl"
|
||||
|
||||
IDS_7168 "(Systemstandard)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// German (de-DE) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
576
src/win/languages/dialogs.rc
Normal file
@@ -0,0 +1,576 @@
|
||||
DLG_PROG_SETT DIALOG DISCARDABLE 0, 0, 240, 86
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION STR_PROG_SETT
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON STR_OK, IDOK, 123, 65, 50, 14
|
||||
PUSHBUTTON STR_CANCEL, IDCANCEL, 179, 65, 50, 14
|
||||
COMBOBOX IDC_COMBO_LANG, 13, 18, 213, 22, CBS_DROPDOWNLIST | CBS_HASSTRINGS
|
||||
AUTOCHECKBOX STR_GLOBAL, IDC_CHECKBOX_GLOBAL, 13, 50, 217, 8 , WS_DISABLED
|
||||
PUSHBUTTON STR_DEFAULT, IDC_BUTTON_DEFAULT, 162, 32, 60, 14
|
||||
LTEXT STR_LANGUAGE, 0, 13, 8, 34, 8
|
||||
END
|
||||
|
||||
DLG_SND_GAIN DIALOG DISCARDABLE 0, 0, 113, 136
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION STR_SND_GAIN
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON STR_OK,IDOK,57,7,50,14
|
||||
PUSHBUTTON STR_CANCEL,IDCANCEL,57,24,50,14
|
||||
CONTROL STR_GAIN,IDC_SLIDER_GAIN,"msctls_trackbar32",TBS_VERT |
|
||||
TBS_BOTH | TBS_AUTOTICKS | WS_TABSTOP,15,20,20,109
|
||||
CTEXT STR_GAIN,IDT_1746,10,7,32,9,SS_CENTERIMAGE
|
||||
END
|
||||
|
||||
DLG_NEW_FLOPPY DIALOG DISCARDABLE 0, 0, 226, 86
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION STR_NEW_FLOPPY
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON STR_OK,IDOK,104,65,50,14
|
||||
PUSHBUTTON STR_CANCEL,IDCANCEL,162,65,50,14
|
||||
LTEXT STR_FILE_NAME,IDT_1749,7,6,44,12,SS_CENTERIMAGE
|
||||
LTEXT STR_DISK_SIZE,IDT_1750,7,25,44,12,SS_CENTERIMAGE
|
||||
LTEXT STR_RPM_MODE,IDT_1751,7,45,44,12,SS_CENTERIMAGE
|
||||
EDITTEXT IDC_EDIT_FILE_NAME,53,5,150,14,ES_AUTOHSCROLL | ES_READONLY
|
||||
COMBOBOX IDC_COMBO_DISK_SIZE,53,25,166,14,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_COMBO_RPM_MODE,53,45,166,14,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "...",IDC_CFILE,206,5,13,14
|
||||
LTEXT STR_PROGRESS,IDT_1757,7,45,44,12,SS_CENTERIMAGE
|
||||
CONTROL "IMGCreateProgress",IDC_PBAR_IMG_CREATE,"msctls_progress32",PBS_SMOOTH |
|
||||
WS_BORDER,53,45,166,14
|
||||
END
|
||||
|
||||
DLG_CONFIG DIALOG DISCARDABLE 0, 0, 376, 256
|
||||
STYLE DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION STR_CONFIG
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON STR_OK,IDOK,246,235,50,14
|
||||
PUSHBUTTON STR_CANCEL,IDCANCEL,307,235,50,14
|
||||
CONTROL "List2",IDC_SETTINGSCATLIST,"SysListView32",LVS_REPORT | LVS_NOCOLUMNHEADER |
|
||||
LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER | WS_TABSTOP,7,7,100,212
|
||||
CONTROL "",-1,"Static",SS_BLACKFRAME | SS_SUNKEN,1,226,373,1
|
||||
END
|
||||
|
||||
DLG_SPECIFY_DIM DIALOG DISCARDABLE 0, 0, 175, 66
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION STR_SPECIFY_DIM
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_WIDTH,IDT_1709,7,9,24,12
|
||||
EDITTEXT IDC_EDIT_WIDTH,33,7,45,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_WIDTHSPIN,"msctls_updown32",UDS_SETBUDDYINT |
|
||||
UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS,76,6,
|
||||
12,12
|
||||
LTEXT STR_HEIGHT,IDT_1710,97,9,24,12
|
||||
EDITTEXT IDC_EDIT_HEIGHT,123,7,45,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_HEIGHTSPIN,"msctls_updown32",UDS_SETBUDDYINT |
|
||||
UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS,166,6,
|
||||
12,12
|
||||
CONTROL STR_LOCK_TO_SIZE,IDC_CHECK_LOCK_SIZE,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,26,94,10
|
||||
DEFPUSHBUTTON STR_OK,IDOK,30,45,50,14
|
||||
PUSHBUTTON STR_CANCEL,IDCANCEL,99,45,50,14
|
||||
END
|
||||
|
||||
DLG_CFG_MACHINE DIALOG DISCARDABLE 107, 0, 305, 200
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
COMBOBOX IDC_COMBO_MACHINE_TYPE,71,7,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_MACHINE_TYPE,IDT_1708,7,9,60,10
|
||||
COMBOBOX IDC_COMBO_MACHINE,71,26,138,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_MACHINE,IDT_1701,7,28,60,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_MACHINE,214,26,46,12
|
||||
COMBOBOX IDC_COMBO_CPU_TYPE,71,45,110,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CPU_TYPE,IDT_1702,7,47,59,10
|
||||
COMBOBOX IDC_COMBO_CPU,215,45,45,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_SPEED,IDT_1704,189,47,24,10
|
||||
COMBOBOX IDC_COMBO_FPU,71,64,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT STR_FPU,IDT_1707,7,66,59,10
|
||||
COMBOBOX IDC_COMBO_WS,71,83,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT STR_WAIT_STATES,IDT_1703,7,85,60,10
|
||||
EDITTEXT IDC_MEMTEXT,70,102,45,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_MEMSPIN,"msctls_updown32",UDS_SETBUDDYINT |
|
||||
UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS,113,101,
|
||||
12,12
|
||||
LTEXT STR_MB,IDT_1705,123,104,10,10
|
||||
LTEXT STR_MEMORY,IDT_1706,7,104,30,10
|
||||
GROUPBOX STR_TIME_SYNC,IDC_TIME_SYNC,7,135,100,56
|
||||
CONTROL STR_DISABLED,IDC_RADIO_TS_DISABLED,"Button",
|
||||
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,147,84,10
|
||||
CONTROL STR_ENABLED_LOCAL, IDC_RADIO_TS_LOCAL,"Button",
|
||||
BS_AUTORADIOBUTTON | WS_TABSTOP,14,161,84,10
|
||||
CONTROL STR_ENABLED_UTC, IDC_RADIO_TS_UTC,"Button",
|
||||
BS_AUTORADIOBUTTON | WS_TABSTOP,14,175,84,10
|
||||
#ifdef USE_DYNAREC
|
||||
CONTROL STR_DYNAREC,IDC_CHECK_DYNAREC,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,120,94,10
|
||||
#endif
|
||||
END
|
||||
|
||||
DLG_CFG_VIDEO DIALOG DISCARDABLE 107, 0, 267, 45
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_VIDEO,IDT_1707,7,9,48,10
|
||||
COMBOBOX IDC_COMBO_VIDEO,64,7,155,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_VID,222,7,38,12
|
||||
CONTROL STR_VOODOO,IDC_CHECK_VOODOO,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,27,199,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_BUTTON_VOODOO,222,26,38,12
|
||||
END
|
||||
|
||||
DLG_CFG_INPUT DIALOG DISCARDABLE 107, 0, 267, 65
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_MOUSE,IDT_1709,7,9,57,10
|
||||
COMBOBOX IDC_COMBO_MOUSE,71,7,140,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_MOUSE,214,7,46,12
|
||||
LTEXT STR_JOYSTICK,IDT_1710,7,27,58,10
|
||||
COMBOBOX IDC_COMBO_JOYSTICK,71,25,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_JOY1,IDC_JOY1,7,44,50,14
|
||||
PUSHBUTTON STR_JOY2,IDC_JOY2,74,44,50,14
|
||||
PUSHBUTTON STR_JOY3,IDC_JOY3,141,44,50,14
|
||||
PUSHBUTTON STR_JOY4,IDC_JOY4,209,44,50,14
|
||||
END
|
||||
|
||||
DLG_CFG_SOUND DIALOG DISCARDABLE 107, 0, 267, 201
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
COMBOBOX IDC_COMBO_SOUND,71,7,140,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT STR_SOUND,IDT_1711,7,9,59,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SND,214,7,46,12
|
||||
|
||||
COMBOBOX IDC_COMBO_MIDI,71,26,140,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT STR_MIDI,IDT_1712,7,28,59,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_MIDI,214,26,46,12
|
||||
|
||||
COMBOBOX IDC_COMBO_MIDI_IN,71,45,140,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT STR_MIDI_IN,IDT_1713,7,47,59,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_MIDI_IN,214,45,46,12
|
||||
|
||||
CONTROL STR_MPU401,IDC_CHECK_MPU401,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,66,199,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_MPU401,214,64,46,12
|
||||
|
||||
CONTROL STR_SSI,IDC_CHECK_SSI,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,84,95,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SSI,214,82,46,12
|
||||
|
||||
CONTROL STR_CMS,IDC_CHECK_CMS,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,102,95,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_CMS,214,100,46,12
|
||||
|
||||
CONTROL STR_GUS,IDC_CHECK_GUS,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,120,94,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_GUS,214,118,46,12
|
||||
|
||||
CONTROL STR_FLOAT,IDC_CHECK_FLOAT,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,138,94,10
|
||||
END
|
||||
|
||||
DLG_CFG_NETWORK DIALOG DISCARDABLE 107, 0, 267, 65
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_NET_TYPE,IDT_1714,7,9,59,10
|
||||
COMBOBOX IDC_COMBO_NET_TYPE,71,7,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
|
||||
LTEXT STR_PCAP,IDT_1715,7,28,59,10
|
||||
COMBOBOX IDC_COMBO_PCAP,71,26,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
|
||||
LTEXT STR_NET,IDT_1716,7,47,59,10
|
||||
COMBOBOX IDC_COMBO_NET,71,45,140,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_NET,214,44,46,12
|
||||
END
|
||||
|
||||
DLG_CFG_PORTS DIALOG DISCARDABLE 107, 0, 267, 135
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_LPT1,IDT_1717,7,9,61,10
|
||||
COMBOBOX IDC_COMBO_LPT1,71,7,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT STR_LPT2,IDT_1718,7,28,61,10
|
||||
COMBOBOX IDC_COMBO_LPT2,71,26,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT STR_LPT3,IDT_1719,7,47,61,10
|
||||
COMBOBOX IDC_COMBO_LPT3,71,45,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
CONTROL STR_SERIAL1,IDC_CHECK_SERIAL1,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,64,94,10
|
||||
CONTROL STR_SERIAL2,IDC_CHECK_SERIAL2,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,64,94,10
|
||||
CONTROL STR_SERIAL3,IDC_CHECK_SERIAL3,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,82,94,10
|
||||
CONTROL STR_SERIAL4,IDC_CHECK_SERIAL4,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,82,94,10
|
||||
|
||||
CONTROL STR_PARALLEL1,IDC_CHECK_PARALLEL1,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,100,94,10
|
||||
CONTROL STR_PARALLEL2,IDC_CHECK_PARALLEL2,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,100,94,10
|
||||
CONTROL STR_PARALLEL3,IDC_CHECK_PARALLEL3,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,118,94,10
|
||||
END
|
||||
|
||||
DLG_CFG_STORAGE DIALOG DISCARDABLE 107, 0, 267, 203
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_HDC,IDT_1718,7,9,64,10
|
||||
COMBOBOX IDC_COMBO_HDC,64,7,155,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_HDC,222,7,38,12
|
||||
|
||||
LTEXT STR_FDC,IDT_1768,7,28,64,10
|
||||
COMBOBOX IDC_COMBO_FDC,64,26,155,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_FDC,222,26,38,12
|
||||
|
||||
CONTROL STR_IDE_TER,IDC_CHECK_IDE_TER,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,47,199,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_BUTTON_IDE_TER,222,45,38,12
|
||||
|
||||
CONTROL STR_IDE_QUA,IDC_CHECK_IDE_QUA,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,66,199,10
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_BUTTON_IDE_QUA,222,64,38,12
|
||||
|
||||
GROUPBOX STR_SCSI,IDC_GROUP_SCSI,7,85,253,93
|
||||
LTEXT STR_SCSI_1,IDT_1763,16,102,48,10
|
||||
COMBOBOX IDC_COMBO_SCSI_1,73,100,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SCSI_1,213,100,38,12
|
||||
LTEXT STR_SCSI_2,IDT_1764,16,121,48,10
|
||||
COMBOBOX IDC_COMBO_SCSI_2,73,119,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SCSI_2,213,119,38,12
|
||||
LTEXT STR_SCSI_3,IDT_1765,16,140,48,10
|
||||
COMBOBOX IDC_COMBO_SCSI_3,73,138,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SCSI_3,213,138,38,12
|
||||
LTEXT STR_SCSI_4,IDT_1766,16,159,48,10
|
||||
COMBOBOX IDC_COMBO_SCSI_4,73,157,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_SCSI_4,213,157,38,12
|
||||
|
||||
CONTROL STR_CASSETTE,IDC_CHECK_CASSETTE,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,185,94,10
|
||||
END
|
||||
|
||||
DLG_CFG_HARD_DISKS DIALOG DISCARDABLE 107, 0, 267, 154
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
CONTROL "List1",IDC_LIST_HARD_DISKS,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER |
|
||||
WS_TABSTOP,7,18,253,92
|
||||
LTEXT STR_HDD,IDT_1720,7,7,253,8
|
||||
PUSHBUTTON STR_NEW,IDC_BUTTON_HDD_ADD_NEW,60,137,62,10
|
||||
PUSHBUTTON STR_EXISTING,IDC_BUTTON_HDD_ADD,129,137,62,10
|
||||
PUSHBUTTON STR_REMOVE,IDC_BUTTON_HDD_REMOVE,198,137,62,10
|
||||
COMBOBOX IDC_COMBO_HD_BUS,33,117,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BUS,IDT_1721,7,119,24,8
|
||||
COMBOBOX IDC_COMBO_HD_CHANNEL,170,117,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CHANNEL,IDT_1722,131,119,38,8
|
||||
COMBOBOX IDC_COMBO_HD_ID,170,117,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_ID,IDT_1723,131,119,38,8
|
||||
COMBOBOX IDC_COMBO_HD_CHANNEL_IDE,170,117,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
DLG_CFG_HARD_DISKS_ADD DIALOG DISCARDABLE 0, 0, 219, 149
|
||||
STYLE DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Add Hard Disk"
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON STR_OK,IDOK,55,127,50,14
|
||||
PUSHBUTTON STR_CANCEL,IDCANCEL,112,127,50,14
|
||||
EDITTEXT IDC_EDIT_HD_FILE_NAME,7,16,153,12
|
||||
PUSHBUTTON STR_SPECIFY,IDC_CFILE,167,16,44,12
|
||||
EDITTEXT IDC_EDIT_HD_SPT,183,34,28,12
|
||||
EDITTEXT IDC_EDIT_HD_HPC,112,34,28,12
|
||||
EDITTEXT IDC_EDIT_HD_CYL,42,34,28,12
|
||||
EDITTEXT IDC_EDIT_HD_SIZE,42,52,28,12
|
||||
COMBOBOX IDC_COMBO_HD_TYPE,113,52,98,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_SECTORS,IDT_1726,154,35,27,10
|
||||
LTEXT STR_HEADS,IDT_1727,81,35,29,8
|
||||
LTEXT STR_CYLS,IDT_1728,7,35,32,12
|
||||
LTEXT STR_SIZE_MB,IDT_1729,7,54,33,8
|
||||
LTEXT STR_TYPE,IDT_1730,86,54,24,8
|
||||
LTEXT STR_FILE_NAME,IDT_1731,7,7,204,9
|
||||
COMBOBOX IDC_COMBO_HD_BUS,33,71,58,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BUS,IDT_1721,7,73,24,8
|
||||
COMBOBOX IDC_COMBO_HD_CHANNEL,134,71,77,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CHANNEL,IDT_1722,99,73,34,8
|
||||
COMBOBOX IDC_COMBO_HD_ID,134,71,77,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_ID,IDT_1723,99,73,34,8
|
||||
COMBOBOX IDC_COMBO_HD_CHANNEL_IDE,134,71,77,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_IMG_FORMAT,IDT_1774,7,92,50,12
|
||||
COMBOBOX IDC_COMBO_HD_IMG_FORMAT,58,90,153,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BLOCK_SIZE,IDT_1775,7,111,50,12
|
||||
COMBOBOX IDC_COMBO_HD_BLOCK_SIZE,58,109,153,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_PROGRESS,IDT_1752,7,7,204,9
|
||||
CONTROL "IMGCreateProgress",IDC_PBAR_IMG_CREATE,"msctls_progress32",PBS_SMOOTH |
|
||||
WS_BORDER,7,16,204,12
|
||||
END
|
||||
|
||||
DLG_CFG_FLOPPY_AND_CDROM_DRIVES DIALOG DISCARDABLE 107, 0, 267, 222
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
CONTROL "List1",IDC_LIST_FLOPPY_DRIVES,"SysListView32",
|
||||
LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER |
|
||||
WS_TABSTOP,7,18,253,60
|
||||
LTEXT STR_FLOPPY_DRIVES,IDT_1737,7,7,253,8
|
||||
COMBOBOX IDC_COMBO_FD_TYPE,33,85,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_TYPE,IDT_1738,7,87,24,8
|
||||
CONTROL STR_TURBO,IDC_CHECKTURBO,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,131,86,64,10
|
||||
CONTROL STR_CHECKBPB,IDC_CHECKBPB,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,196,86,64,10
|
||||
|
||||
CONTROL "List1",IDC_LIST_CDROM_DRIVES,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER |
|
||||
WS_TABSTOP,7,117,253,60
|
||||
LTEXT STR_CDROM_DRIVES,IDT_1739,7,107,253,8
|
||||
COMBOBOX IDC_COMBO_CD_BUS,33,185,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BUS,IDT_1740,7,187,24,8
|
||||
COMBOBOX IDC_COMBO_CD_ID,170,185,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_ID,IDT_1741,131,187,38,8
|
||||
COMBOBOX IDC_COMBO_CD_CHANNEL_IDE,170,185,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CHANNEL,IDT_1742,131,187,38,8
|
||||
COMBOBOX IDC_COMBO_CD_SPEED,33,205,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_SPEED,IDT_1758,7,207,24,8
|
||||
END
|
||||
|
||||
DLG_CFG_OTHER_REMOVABLE_DEVICES DIALOG DISCARDABLE 107, 0, 267, 222
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
|
||||
CONTROL "List1",IDC_LIST_MO_DRIVES,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER |
|
||||
WS_TABSTOP,7,17,253,60
|
||||
LTEXT STR_MO_DRIVES,IDT_1769,7,7,253,8
|
||||
COMBOBOX IDC_COMBO_MO_BUS,33,85,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BUS,IDT_1770,7,87,24,8
|
||||
COMBOBOX IDC_COMBO_MO_ID,170,85,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_ID,IDT_1771,131,87,38,8
|
||||
COMBOBOX IDC_COMBO_MO_CHANNEL_IDE,170,85,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CHANNEL,IDT_1772,131,87,38,8
|
||||
COMBOBOX IDC_COMBO_MO_TYPE,33,105,120,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_TYPE,IDT_1773,7,107,24,8
|
||||
|
||||
CONTROL "List1",IDC_LIST_ZIP_DRIVES,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_BORDER |
|
||||
WS_TABSTOP,7,137,253,60
|
||||
LTEXT STR_ZIP_DRIVES,IDT_1759,7,127,253,8
|
||||
COMBOBOX IDC_COMBO_ZIP_BUS,23,205,90,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_BUS,IDT_1753,7,207,14,8
|
||||
COMBOBOX IDC_COMBO_ZIP_ID,149,205,61,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_ID,IDT_1754,120,207,28,8
|
||||
COMBOBOX IDC_COMBO_ZIP_CHANNEL_IDE,149,205,61,12,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT STR_CHANNEL,IDT_1755,120,207,28,8
|
||||
CONTROL STR_250,IDC_CHECK250,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,218,205,44,10
|
||||
END
|
||||
|
||||
DLG_CFG_PERIPHERALS DIALOG DISCARDABLE 107, 0, 267, 154
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
LTEXT STR_ISARTC,IDT_1767,7,9,48,10
|
||||
COMBOBOX IDC_COMBO_ISARTC,64,7,155,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_ISARTC,222,7,38,12
|
||||
|
||||
GROUPBOX STR_ISAMEM,IDC_GROUP_ISAMEM,7,28,253,93
|
||||
LTEXT STR_ISAMEM_1,IDT_1763,16,45,48,10
|
||||
COMBOBOX IDC_COMBO_ISAMEM_1,73,43,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_ISAMEM_1,213,43,38,12
|
||||
LTEXT STR_ISAMEM_2,IDT_1764,16,64,48,10
|
||||
COMBOBOX IDC_COMBO_ISAMEM_2,73,62,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_ISAMEM_2,213,62,38,12
|
||||
LTEXT STR_ISAMEM_3,IDT_1765,16,83,48,10
|
||||
COMBOBOX IDC_COMBO_ISAMEM_3,73,81,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_ISAMEM_3,213,81,38,12
|
||||
LTEXT STR_ISAMEM_4,IDT_1766,16,102,48,10
|
||||
COMBOBOX IDC_COMBO_ISAMEM_4,73,100,137,120,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,IDC_CONFIGURE_ISAMEM_4,213,100,38,12
|
||||
|
||||
CONTROL STR_BUGGER,IDC_CHECK_BUGGER,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,128,94,10
|
||||
|
||||
CONTROL STR_POSTCARD,IDC_CHECK_POSTCARD,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,128,94,10
|
||||
END
|
||||
|
||||
#undef STR_PROG_SETT
|
||||
#undef STR_SND_GAIN
|
||||
#undef STR_NEW_FLOPPY
|
||||
#undef STR_CONFIG
|
||||
#undef STR_SPECIFY_DIM
|
||||
|
||||
#undef STR_OK
|
||||
#undef STR_CANCEL
|
||||
#undef STR_GLOBAL
|
||||
#undef STR_DEFAULT
|
||||
#undef STR_LANGUAGE
|
||||
|
||||
#undef STR_GAIN
|
||||
|
||||
#undef STR_FILE_NAME
|
||||
#undef STR_DISK_SIZE
|
||||
#undef STR_RPM_MODE
|
||||
#undef STR_PROGRESS
|
||||
|
||||
#undef STR_WIDTH
|
||||
#undef STR_HEIGHT
|
||||
#undef STR_LOCK_TO_SIZE
|
||||
|
||||
#undef STR_MACHINE_TYPE
|
||||
#undef STR_MACHINE
|
||||
#undef STR_CONFIGURE
|
||||
#undef STR_CPU_TYPE
|
||||
#undef STR_SPEED
|
||||
#undef STR_FPU
|
||||
#undef STR_WAIT_STATES
|
||||
#undef STR_MB
|
||||
#undef STR_MEMORY
|
||||
#undef STR_TIME_SYNC
|
||||
#undef STR_DISABLED
|
||||
#undef STR_ENABLED_LOCAL
|
||||
#undef STR_ENABLED_UTC
|
||||
#undef STR_DYNAREC
|
||||
|
||||
#undef STR_VIDEO
|
||||
#undef STR_VOODOO
|
||||
|
||||
#undef STR_MOUSE
|
||||
#undef STR_JOYSTICK
|
||||
#undef STR_JOY1
|
||||
#undef STR_JOY2
|
||||
#undef STR_JOY3
|
||||
#undef STR_JOY4
|
||||
|
||||
#undef STR_SOUND
|
||||
#undef STR_MIDI
|
||||
#undef STR_MIDI_IN
|
||||
#undef STR_MPU401
|
||||
#undef STR_SSI
|
||||
#undef STR_CMS
|
||||
#undef STR_GUS
|
||||
#undef STR_FLOAT
|
||||
|
||||
#undef STR_NET_TYPE
|
||||
#undef STR_PCAP
|
||||
#undef STR_NET
|
||||
|
||||
#undef STR_LPT1
|
||||
#undef STR_LPT2
|
||||
#undef STR_LPT3
|
||||
#undef STR_SERIAL1
|
||||
#undef STR_SERIAL2
|
||||
#undef STR_SERIAL3
|
||||
#undef STR_SERIAL4
|
||||
#undef STR_PARALLEL1
|
||||
#undef STR_PARALLEL2
|
||||
#undef STR_PARALLEL3
|
||||
|
||||
#undef STR_HDC
|
||||
#undef STR_FDC
|
||||
#undef STR_IDE_TER
|
||||
#undef STR_IDE_QUA
|
||||
#undef STR_SCSI
|
||||
#undef STR_SCSI_1
|
||||
#undef STR_SCSI_2
|
||||
#undef STR_SCSI_3
|
||||
#undef STR_SCSI_4
|
||||
#undef STR_CASSETTE
|
||||
|
||||
#undef STR_HDD
|
||||
#undef STR_NEW
|
||||
#undef STR_EXISTING
|
||||
#undef STR_REMOVE
|
||||
#undef STR_BUS
|
||||
#undef STR_CHANNEL
|
||||
#undef STR_ID
|
||||
|
||||
#undef STR_SPECIFY
|
||||
#undef STR_SECTORS
|
||||
#undef STR_HEADS
|
||||
#undef STR_CYLS
|
||||
#undef STR_SIZE_MB
|
||||
#undef STR_TYPE
|
||||
#undef STR_IMG_FORMAT
|
||||
#undef STR_BLOCK_SIZE
|
||||
|
||||
#undef STR_FLOPPY_DRIVES
|
||||
#undef STR_TURBO
|
||||
#undef STR_CHECKBPB
|
||||
#undef STR_CDROM_DRIVES
|
||||
|
||||
#undef STR_MO_DRIVES
|
||||
#undef STR_ZIP_DRIVES
|
||||
#undef STR_250
|
||||
|
||||
#undef STR_ISARTC
|
||||
#undef STR_ISAMEM
|
||||
#undef STR_ISAMEM_1
|
||||
#undef STR_ISAMEM_2
|
||||
#undef STR_ISAMEM_3
|
||||
#undef STR_ISAMEM_4
|
||||
#undef STR_BUGGER
|
||||
#undef STR_POSTCARD
|
||||
640
src/win/languages/en-US.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Action"
|
||||
BEGIN
|
||||
MENUITEM "&Keyboard requires capture", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&Right CTRL is left ALT", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hard Reset...", 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 "&Pause", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&View"
|
||||
BEGIN
|
||||
MENUITEM "&Hide status bar", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Resizeable window", IDM_VID_RESIZE
|
||||
MENUITEM "R&emember size && position", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Re&nderer"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Specify dimensions...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "F&orce 4:3 display ratio", IDM_VID_FORCE43
|
||||
POPUP "&Window scale factor"
|
||||
BEGIN
|
||||
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Filter method"
|
||||
BEGIN
|
||||
MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Hi&DPI scaling", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Fullscreen\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Fullscreen &stretch mode"
|
||||
BEGIN
|
||||
MENUITEM "&Full screen stretch", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Square pixels (Keep ratio)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Integer scale", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "E&GA/(S)VGA settings"
|
||||
BEGIN
|
||||
MENUITEM "&Inverted VGA monitor", IDM_VID_INVERT
|
||||
POPUP "VGA screen &type"
|
||||
BEGIN
|
||||
MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB Grayscale", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Amber monitor", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Green monitor", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&White monitor", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Grayscale &conversion type"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Average", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
|
||||
MENUITEM "Change contrast for &monochrome display", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Media", IDM_MEDIA
|
||||
POPUP "&Tools"
|
||||
BEGIN
|
||||
MENUITEM "&Settings...", IDM_CONFIG
|
||||
MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Change dis&play language...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Enable &Discord integration", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sound &gain...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "End trace\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 "Enable BusLogic logs\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Enable CD-ROM logs\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Enable floppy (86F) logs\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Enable floppy controller logs\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Enable IDE logs\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Enable Serial Port logs\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Enable Network logs\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Log breakpoint\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Dump &video RAM\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Documentation...", IDM_DOCS
|
||||
MENUITEM "&About 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&New image...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Record", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Play", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&New image...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existing image...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Existing image (&Write-protected)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xport to 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Mute", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&mpty", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Reload previous image", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Image", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&New image...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existing image...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Existing image (&Write-protected)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_ZIP_EJECT
|
||||
MENUITEM "&Reload previous image", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&New image...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Existing image...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Existing image (&Write-protected)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ject", IDM_MO_EJECT
|
||||
MENUITEM "&Reload previous image", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Target &framerate"
|
||||
BEGIN
|
||||
MENUITEM "&Sync with video", 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
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Select shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Remove shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Change Display Language"
|
||||
#define STR_SND_GAIN "Sound Gain"
|
||||
#define STR_NEW_FLOPPY "New Image"
|
||||
#define STR_CONFIG "86Box Settings"
|
||||
#define STR_SPECIFY_DIM "Specify Main Window Dimensions"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Cancel"
|
||||
#define STR_GLOBAL "Save these settings as &global defaults"
|
||||
#define STR_DEFAULT "&Default"
|
||||
#define STR_LANGUAGE "Language:"
|
||||
|
||||
#define STR_GAIN "Gain"
|
||||
|
||||
#define STR_FILE_NAME "File name:"
|
||||
#define STR_DISK_SIZE "Disk size:"
|
||||
#define STR_RPM_MODE "RPM mode:"
|
||||
#define STR_PROGRESS "Progress:"
|
||||
|
||||
#define STR_WIDTH "Width:"
|
||||
#define STR_HEIGHT "Height:"
|
||||
#define STR_LOCK_TO_SIZE "Lock to this size"
|
||||
|
||||
#define STR_MACHINE_TYPE "Machine type:"
|
||||
#define STR_MACHINE "Machine:"
|
||||
#define STR_CONFIGURE "Configure"
|
||||
#define STR_CPU_TYPE "CPU type:"
|
||||
#define STR_SPEED "Speed:"
|
||||
#define STR_FPU "FPU:"
|
||||
#define STR_WAIT_STATES "Wait states:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memory:"
|
||||
#define STR_TIME_SYNC "Time synchronization"
|
||||
#define STR_DISABLED "Disabled"
|
||||
#define STR_ENABLED_LOCAL "Enabled (local time)"
|
||||
#define STR_ENABLED_UTC "Enabled (UTC)"
|
||||
#define STR_DYNAREC "Dynamic Recompiler"
|
||||
|
||||
#define STR_VIDEO "Video:"
|
||||
#define STR_VOODOO "Voodoo Graphics"
|
||||
|
||||
#define STR_MOUSE "Mouse:"
|
||||
#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_SOUND "Sound card:"
|
||||
#define STR_MIDI "MIDI Out Device:"
|
||||
#define STR_MIDI_IN "MIDI In Device:"
|
||||
#define STR_MPU401 "Standalone MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Use FLOAT32 sound"
|
||||
|
||||
#define STR_NET_TYPE "Network type:"
|
||||
#define STR_PCAP "PCap device:"
|
||||
#define STR_NET "Network adapter:"
|
||||
|
||||
#define STR_LPT1 "LPT1 Device:"
|
||||
#define STR_LPT2 "LPT2 Device:"
|
||||
#define STR_LPT3 "LPT3 Device:"
|
||||
#define STR_SERIAL1 "Serial port 1"
|
||||
#define STR_SERIAL2 "Serial port 2"
|
||||
#define STR_SERIAL3 "Serial port 3"
|
||||
#define STR_SERIAL4 "Serial port 4"
|
||||
#define STR_PARALLEL1 "Parallel port 1"
|
||||
#define STR_PARALLEL2 "Parallel port 2"
|
||||
#define STR_PARALLEL3 "Parallel port 3"
|
||||
|
||||
#define STR_HDC "HD Controller:"
|
||||
#define STR_FDC "FD Controller:"
|
||||
#define STR_IDE_TER "Tertiary IDE Controller"
|
||||
#define STR_IDE_QUA "Quaternary IDE Controller"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Controller 1:"
|
||||
#define STR_SCSI_2 "Controller 2:"
|
||||
#define STR_SCSI_3 "Controller 3:"
|
||||
#define STR_SCSI_4 "Controller 4:"
|
||||
#define STR_CASSETTE "Cassette"
|
||||
|
||||
#define STR_HDD "Hard disks:"
|
||||
#define STR_NEW "&New..."
|
||||
#define STR_EXISTING "&Existing..."
|
||||
#define STR_REMOVE "&Remove"
|
||||
#define STR_BUS "Bus:"
|
||||
#define STR_CHANNEL "Channel:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Specify..."
|
||||
#define STR_SECTORS "Sectors:"
|
||||
#define STR_HEADS "Heads:"
|
||||
#define STR_CYLS "Cylinders:"
|
||||
#define STR_SIZE_MB "Size (MB):"
|
||||
#define STR_TYPE "Type:"
|
||||
#define STR_IMG_FORMAT "Image Format:"
|
||||
#define STR_BLOCK_SIZE "Block Size:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Floppy drives:"
|
||||
#define STR_TURBO "Turbo timings"
|
||||
#define STR_CHECKBPB "Check BPB"
|
||||
#define STR_CDROM_DRIVES "CD-ROM drives:"
|
||||
|
||||
#define STR_MO_DRIVES "MO drives:"
|
||||
#define STR_ZIP_DRIVES "ZIP drives:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA RTC:"
|
||||
#define STR_ISAMEM "ISA Memory Expansion"
|
||||
#define STR_ISAMEM_1 "Card 1:"
|
||||
#define STR_ISAMEM_2 "Card 2:"
|
||||
#define STR_ISAMEM_3 "Card 3:"
|
||||
#define STR_ISAMEM_4 "Card 4:"
|
||||
#define STR_BUGGER "ISABugger device"
|
||||
#define STR_POSTCARD "POST card"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Error"
|
||||
IDS_2050 "Fatal error"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Press CTRL+ALT+PAGE DOWN to return to windowed mode."
|
||||
IDS_2053 "Speed"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box could not find any usable ROM images.\n\nPlease <a href=""https://github.com/86Box/roms/releases/latest"">download</a> a ROM set and extract it into the ""roms"" directory."
|
||||
IDS_2057 "(empty)"
|
||||
IDS_2058 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "On"
|
||||
IDS_2061 "Off"
|
||||
IDS_2062 "All images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Machine ""%hs"" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Video card ""%hs"" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
|
||||
IDS_2065 "Machine"
|
||||
IDS_2066 "Display"
|
||||
IDS_2067 "Input devices"
|
||||
IDS_2068 "Sound"
|
||||
IDS_2069 "Network"
|
||||
IDS_2070 "Ports (COM & LPT)"
|
||||
IDS_2071 "Storage controllers"
|
||||
IDS_2072 "Hard disks"
|
||||
IDS_2073 "Floppy & CD-ROM drives"
|
||||
IDS_2074 "Other removable devices"
|
||||
IDS_2075 "Other peripherals"
|
||||
IDS_2076 "Surface images (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Click to capture mouse"
|
||||
IDS_2078 "Press F8+F12 to release mouse"
|
||||
IDS_2079 "Press F8+F12 or middle button to release mouse"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Unable to initialize FluidSynth"
|
||||
IDS_2081 "Bus"
|
||||
IDS_2082 "File"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "H"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Check BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Could not initialize the video renderer."
|
||||
IDS_2090 "Default"
|
||||
IDS_2091 "%i Wait state(s)"
|
||||
IDS_2092 "Type"
|
||||
IDS_2093 "Failed to set up PCap"
|
||||
IDS_2094 "No PCap devices found"
|
||||
IDS_2095 "Invalid PCap device"
|
||||
IDS_2096 "Standard 2-button joystick(s)"
|
||||
IDS_2097 "Standard 4-button joystick"
|
||||
IDS_2098 "Standard 6-button joystick"
|
||||
IDS_2099 "Standard 8-button joystick"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "None"
|
||||
IDS_2104 "Unable to load keyboard accelerators."
|
||||
IDS_2105 "Unable to register raw input."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Floppy %i (%s): %ls"
|
||||
IDS_2109 "All images (*.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\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
|
||||
IDS_2110 "Unable to initialize FreeType"
|
||||
IDS_2111 "Unable to initialize SDL, SDL2.dll is required"
|
||||
IDS_2112 "Are you sure you want to hard reset the emulated machine?"
|
||||
IDS_2113 "Are you sure you want to exit 86Box?"
|
||||
IDS_2114 "Unable to initialize Ghostscript"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2117 "Welcome to 86Box!"
|
||||
IDS_2118 "Internal controller"
|
||||
IDS_2119 "Exit"
|
||||
IDS_2120 "No ROMs found"
|
||||
IDS_2121 "Do you want to save the settings?"
|
||||
IDS_2122 "This will hard reset the emulated machine."
|
||||
IDS_2123 "Save"
|
||||
IDS_2124 "About 86Box"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
|
||||
IDS_2126 "An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware not available"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Make sure " LIB_NAME_PCAP " is installed and that you are on a " LIB_NAME_PCAP "-compatible network connection."
|
||||
IDS_2130 "Invalid configuration"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " is required for ESC/P printer emulation."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " is required for FluidSynth MIDI output."
|
||||
IDS_2134 "Entering fullscreen mode"
|
||||
IDS_2135 "Don't show this message again"
|
||||
IDS_2136 "Don't exit"
|
||||
IDS_2137 "Reset"
|
||||
IDS_2138 "Don't reset"
|
||||
IDS_2139 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2140 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
|
||||
IDS_2141 "%hs Device Configuration"
|
||||
IDS_2142 "Monitor in sleep mode"
|
||||
IDS_2143 "OpenGL Shaders (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
|
||||
IDS_2144 "OpenGL options"
|
||||
IDS_2145 "You are loading an unsupported configuration"
|
||||
IDS_2146 "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."
|
||||
IDS_2147 "Continue"
|
||||
IDS_2148 "Cassette: %s"
|
||||
IDS_2149 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
|
||||
IDS_2150 "Cartridge %i: %ls"
|
||||
IDS_2151 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Hard disk (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "MFM/RLL or ESDI CD-ROM drives never existed"
|
||||
IDS_4100 "Custom..."
|
||||
IDS_4101 "Custom (large)..."
|
||||
IDS_4102 "Add New Hard Disk"
|
||||
IDS_4103 "Add Existing Hard Disk"
|
||||
IDS_4104 "HDI disk images cannot be larger than 4 GB."
|
||||
IDS_4105 "Disk images cannot be larger than 127 GB."
|
||||
IDS_4106 "Hard disk images (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
|
||||
IDS_4107 "Unable to read file"
|
||||
IDS_4108 "Unable to write file"
|
||||
IDS_4109 "HDI or HDX images with a sector size other than 512 are not supported."
|
||||
IDS_4110 "USB is not yet supported"
|
||||
IDS_4111 "Disk image file already exists"
|
||||
IDS_4112 "Please specify a valid file name."
|
||||
IDS_4113 "Disk image created"
|
||||
IDS_4114 "Make sure the file exists and is readable."
|
||||
IDS_4115 "Make sure the file is being saved to a writable directory."
|
||||
IDS_4116 "Disk image too large"
|
||||
IDS_4117 "Remember to partition and format the newly-created drive."
|
||||
IDS_4118 "The selected file will be overwritten. Are you sure you want to use it?"
|
||||
IDS_4119 "Unsupported disk image"
|
||||
IDS_4120 "Overwrite"
|
||||
IDS_4121 "Don't overwrite"
|
||||
IDS_4122 "Raw image (.img)"
|
||||
IDS_4123 "HDI image (.hdi)"
|
||||
IDS_4124 "HDX image (.hdx)"
|
||||
IDS_4125 "Fixed-size VHD (.vhd)"
|
||||
IDS_4126 "Dynamic-size VHD (.vhd)"
|
||||
IDS_4127 "Differencing VHD (.vhd)"
|
||||
IDS_4128 "Large blocks (2 MB)"
|
||||
IDS_4129 "Small blocks (512 KB)"
|
||||
IDS_4130 "VHD files (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
|
||||
IDS_4131 "Select the parent VHD"
|
||||
IDS_4132 "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
|
||||
IDS_4133 "Parent and child disk timestamps do not match"
|
||||
IDS_4134 "Could not fix VHD timestamp."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Disabled"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Disabled"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (cluster 1024)"
|
||||
IDS_5898 "DMF (cluster 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "Perfect RPM"
|
||||
IDS_6145 "1%% below perfect RPM"
|
||||
IDS_6146 "1.5%% below perfect RPM"
|
||||
IDS_6147 "2%% below perfect RPM"
|
||||
|
||||
IDS_7168 "(System Default)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
640
src/win/languages/hr-HR.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Croatian (hr-HR) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_CROATIAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Akcija"
|
||||
BEGIN
|
||||
MENUITEM "&Tipkovnica zahtijeva snimanje 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 "&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
|
||||
END
|
||||
POPUP "&Pogled"
|
||||
BEGIN
|
||||
MENUITEM "&Sakrij statusnu traku", 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 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
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3 jezgra)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Odrediti dimenzije...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&4:3 omjer prikaza", IDM_VID_FORCE43
|
||||
POPUP "&Faktor skaliranje prozora"
|
||||
BEGIN
|
||||
MENUITEM "&0,5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1,&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Metoda filtriranja"
|
||||
BEGIN
|
||||
MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "&HiDPI skaliranje", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Cijeli zaslon\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "&Način rastezanja preko cijelog zaslona"
|
||||
BEGIN
|
||||
MENUITEM "&Razvlačenje preko cijelog zaslona", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Kvadratni pikseli (zadrži omjer)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Integer skala", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "E&GA/(S)VGA postavke"
|
||||
BEGIN
|
||||
MENUITEM "&Invertirani VGA monitor", IDM_VID_INVERT
|
||||
POPUP "&Tip VGA monitora"
|
||||
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
|
||||
END
|
||||
POPUP "&Vrsta konverzije sivih tonova"
|
||||
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
|
||||
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
|
||||
END
|
||||
MENUITEM "&Mediji", IDM_MEDIA
|
||||
POPUP "&Alati"
|
||||
BEGIN
|
||||
MENUITEM "&Postavke...", IDM_CONFIG
|
||||
MENUITEM "&Ažuriranje ikone statusne trake", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Promijeni jezik prikaza...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Omogući integraciju &Discord-a", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Napravite &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
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
|
||||
#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
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Omogući logging CD-ROM-a\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Omogući logging disketa (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Omogući logging floppy kontrolera\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Omogući IDE logging\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Omogući logging serijskog porta\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Omogući mrežni logging\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
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Dump od &video RAM-a\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Pomoć"
|
||||
BEGIN
|
||||
MENUITEM "&Dokumentacija...", IDM_DOCS
|
||||
MENUITEM "&O 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova image daoteka...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Postojeća image daoteka...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Postojeća image daoteka (&zaštićena od pisanja)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Snimi", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Pusti", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&Premotanje na početak", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Brzi naprijed do kraja", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Izbaci", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Image daoteka...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Izbaci", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova image daoteka...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Postojeća image daoteka...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Postojeća image daoteka (&zaštićena od pisanja)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Exportiraj u 86F format...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Izbaci", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Isključi zvuk", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Prazno", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Ponovo učitaj prethodnu image daoteku", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Image daoteka", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova image daoteka...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Postojeća image daoteka...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Postojeća image daoteka (&zaštićena od pisanja)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Izbaci", IDM_ZIP_EJECT
|
||||
MENUITEM "&Ponovo učitaj prethodnu image daoteku", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova image daoteka...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Postojeća image daoteka...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Postojeća image daoteka (&zaštićena od pisanja)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Izbaci", IDM_MO_EJECT
|
||||
MENUITEM "&Ponovo učitaj prethodnu image daoteku", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Target &framerate"
|
||||
BEGIN
|
||||
MENUITEM "&Sinkronizacija 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
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Odaberi shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Ukloni shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Promjena jezika prikaza"
|
||||
#define STR_SND_GAIN "Pojačavanje zvuka"
|
||||
#define STR_NEW_FLOPPY "Nova image daoteka"
|
||||
#define STR_CONFIG "86Box postavke"
|
||||
#define STR_SPECIFY_DIM "Odredite glavne dimenzije prozora"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Odustani"
|
||||
#define STR_GLOBAL "Spremite ove postavke kao &globalne zadane postavke"
|
||||
#define STR_DEFAULT "&Standard"
|
||||
#define STR_LANGUAGE "Jezik:"
|
||||
|
||||
#define STR_GAIN "Pojačavanje"
|
||||
|
||||
#define STR_FILE_NAME "Ime daoteke:"
|
||||
#define STR_DISK_SIZE "Veličina diska:"
|
||||
#define STR_RPM_MODE "Način rotacije:"
|
||||
#define STR_PROGRESS "Napredak:"
|
||||
|
||||
#define STR_WIDTH "Širina:"
|
||||
#define STR_HEIGHT "Visina:"
|
||||
#define STR_LOCK_TO_SIZE "Zaključajte na ovu veličinu"
|
||||
|
||||
#define STR_MACHINE_TYPE "Tip računala:"
|
||||
#define STR_MACHINE "Računalo:"
|
||||
#define STR_CONFIGURE "Konfigurirajte"
|
||||
#define STR_CPU_TYPE "CPU tip:"
|
||||
#define STR_SPEED "Brzina:"
|
||||
#define STR_FPU "FPU uređaj:"
|
||||
#define STR_WAIT_STATES "Stanja čekanje:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memorija:"
|
||||
#define STR_TIME_SYNC "Vremenska sinkronizacija"
|
||||
#define STR_DISABLED "Deaktivirano"
|
||||
#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_VOODOO "Voodoo Graphics"
|
||||
|
||||
#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_SOUND "Sound kartica:"
|
||||
#define STR_MIDI "MIDI Out uređaj:"
|
||||
#define STR_MIDI_IN "MIDI In uređaj:"
|
||||
#define STR_MPU401 "Samostalni MPU-401 uređaj"
|
||||
#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_NET_TYPE "Tip mreže:"
|
||||
#define STR_PCAP "PCap uređaj:"
|
||||
#define STR_NET "Mrežni adapter:"
|
||||
|
||||
#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_HDC "Kontroler tvrdog diska:"
|
||||
#define STR_FDC "Kontroler diskete:"
|
||||
#define STR_IDE_TER "Tercijarni IDE kontroler"
|
||||
#define STR_IDE_QUA "Kvaternarni IDE kontroler"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Kontroler 1:"
|
||||
#define STR_SCSI_2 "Kontroler 2:"
|
||||
#define STR_SCSI_3 "Kontroler 3:"
|
||||
#define STR_SCSI_4 "Kontroler 4:"
|
||||
#define STR_CASSETTE "Audio kaseta"
|
||||
|
||||
#define STR_HDD "Tvrdi diskovi:"
|
||||
#define STR_NEW "&Novo..."
|
||||
#define STR_EXISTING "&Postojeći..."
|
||||
#define STR_REMOVE "&Ukloniti"
|
||||
#define STR_BUS "Bus:"
|
||||
#define STR_CHANNEL "Kanal:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Izaberi..."
|
||||
#define STR_SECTORS "Sektori:"
|
||||
#define STR_HEADS "Glave:"
|
||||
#define STR_CYLS "Cilindri:"
|
||||
#define STR_SIZE_MB "Veličina (MB):"
|
||||
#define STR_TYPE "Tip:"
|
||||
#define STR_IMG_FORMAT "Format image daoteke:"
|
||||
#define STR_BLOCK_SIZE "Veličina image daoteke:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Floppy drives:"
|
||||
#define STR_TURBO "Turbo timingovi"
|
||||
#define STR_CHECKBPB "Provjerite 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_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"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Greška"
|
||||
IDS_2050 "Fatalna greška"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Pritisnite CTRL+ALT+PAGE DOWN za povratak u prozorski način rada."
|
||||
IDS_2053 "Brzina"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "ZIP image daoteke (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box could not find any usable ROM images.\n\nPlease <a href=""https://github.com/86Box/roms/releases/latest"">download</a> a ROM set and extract it into the ""roms"" directory."
|
||||
IDS_2057 "(prazno)"
|
||||
IDS_2058 "ZIP image daoteke (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Uključeno"
|
||||
IDS_2061 "Isključeno"
|
||||
IDS_2062 "Svi image daoteke (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Bazni sektorni image daoteke (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površne image daoteke (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Računalo ""%hs"" nije dostupan jer nedostaju ROM-ovi u mapu roms/machines. Prebacivanje na raspoloživi računalo."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Video kartica ""%hs"" nije dostupna jer nedostaju ROM-ovi u mapu roms/video. Prebacivanje na dostupnu video karticu."
|
||||
IDS_2065 "Računalo"
|
||||
IDS_2066 "Video"
|
||||
IDS_2067 "Ulazni uređaji"
|
||||
IDS_2068 "Zvuk"
|
||||
IDS_2069 "Mreža"
|
||||
IDS_2070 "Priključci (COM & LPT)"
|
||||
IDS_2071 "Kontroleri za diskovi"
|
||||
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 image daoteke (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Kliknite za snimanje miša"
|
||||
IDS_2078 "Pritisnite F8+F12 za otpuštanje miša"
|
||||
IDS_2079 "Pritisnite F8+F12 ili srednji gumb za otpuštanje miša"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Nije moguće inicijalizirati FluidSynth"
|
||||
IDS_2081 "Bus"
|
||||
IDS_2082 "Daoteka"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "G"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Provjeri BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Nije moguće inicijalizirati videorenderer."
|
||||
IDS_2090 "Standard"
|
||||
IDS_2091 "%i stanja č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 6 tipke"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Nikakve"
|
||||
IDS_2104 "Nije moguće učitati akceleratore 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 "Svi image daoteke (*.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 image daoteke (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Bazni sektorni image daoteke (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux image daoteke (*.FDI)\0*.FDI\0Površne image daoteke (*.86F;*.MFM)\0*.86F;*.MFM\0Svi daoteke (*.*)\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_2114 "Nije moguće inicijalizirati Ghostscript"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "Image daoteke za MO diskovi (*.IM?;*.MDI)\0*.IM?;*.MDI\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2117 "Dobrodošli u 86Box!"
|
||||
IDS_2118 "Interni kontroler"
|
||||
IDS_2119 "Izlazi"
|
||||
IDS_2120 "Nisu pronađeni ROM daoteke"
|
||||
IDS_2121 "Želite li spremiti postavke?"
|
||||
IDS_2122 "Ovo će napraviti hard resetiranje emuliranog računala."
|
||||
IDS_2123 "Spremi"
|
||||
IDS_2124 "O 86Box"
|
||||
IDS_2125 "86Box verzija " EMU_VERSION
|
||||
|
||||
IDS_2126 "Emulator starih računala\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, i drugi.\n\nPreveo: dob205\n\nObjavljeno pod GNU Općom javnom licencom, verzija 2 ili kasnije. Vidi LICENSE za više informacije."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardver nije dostupan"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#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_2130 "Nevažeća konfiguracija"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " je potrebno za emuliranje ESC/P pisača."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " je potrebno za automatsku konverziju PostScript daoteke u PDF daoteke.\n\nSvi dokumenti poslani na generički PostScript pisač bit će spremljeni kao PostScript (.ps) datoteke."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " je potrebno za FluidSynth MIDI izlaz."
|
||||
IDS_2134 "Ulazak u način cijelog zaslona"
|
||||
IDS_2135 "Ne pokazi više ovu poruku"
|
||||
IDS_2136 "Ne izlazi"
|
||||
IDS_2137 "Resetiraj"
|
||||
IDS_2138 "Ne resetiraj"
|
||||
IDS_2139 "Image daoteke za MO diskovi (*.IM?;*.MDI)\0*.IM?;*.MDI\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2140 "Image daoteke za CD-ROM diskovi (*.ISO;*.CUE)\0*.ISO;*.CUE\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2141 "%hs Konfiguracija Uređaja"
|
||||
IDS_2142 "Monitor u stanju mirovanja"
|
||||
IDS_2143 "OpenGL shaderi (*.GLSL)\0*.GLSL\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2144 "OpenGL opcije"
|
||||
IDS_2145 "Učitavate nepodržanu konfiguraciju"
|
||||
IDS_2146 "Filtriranje tipa CPU-a na temelju odabranog stroja onemogućeno je za ovaj emuliranog računalo.\n\nOvo omogućuje odabir CPU-a koji inače nije kompatibilan s odabranog računalom. Međutim, možete naići na nekompatibilnosti s BIOS-om uređaja ili drugim softverom.\n\nOmogućavanje ove postavke nije službeno podržano i sva prijava o greškama mogu biti zatvorena kao ""invalid""."
|
||||
IDS_2147 "Nastavi"
|
||||
IDS_2148 "Audio kasete: %s"
|
||||
IDS_2149 "Image daoteke za audio kasete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_2150 "Kaseta %i: %ls"
|
||||
IDS_2151 "Image daoteke za kasete (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Svi daoteke (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Tvrdi disk (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "MFM/RLL ili ESDI CD-ROM drives nisu nikada postojali"
|
||||
IDS_4100 "Prilagođeno..."
|
||||
IDS_4101 "Prilagođeno (veliko)..."
|
||||
IDS_4102 "Dodajte novi tvrdi disk"
|
||||
IDS_4103 "Dodajte postojeći tvrdi disk"
|
||||
IDS_4104 "HDI disk image daoteke ne mogu biti veće od 4 GB."
|
||||
IDS_4105 "Image daoteke tvrdog diska ne mogu biti veće od 127 GB."
|
||||
IDS_4106 "Image daoteke za tvrde diskove (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_4107 "Nije moguće pročitati datoteku"
|
||||
IDS_4108 "Nije moguće napisati datoteku"
|
||||
IDS_4109 "HDI ili HDX image daoteke s veličinom sektora koja nije 512 kB nisu podržane."
|
||||
IDS_4110 "USB nije još podržano"
|
||||
IDS_4111 "Image daoteka diska već postoji"
|
||||
IDS_4112 "Molimo unesite važeći naziv datoteke."
|
||||
IDS_4113 "Image diska je stvorena"
|
||||
IDS_4114 "Provjerite je li postoji datoteka i je li je čitljiva."
|
||||
IDS_4115 "Provjerite je li se datoteka sprema u mapu s dopuštenjima za pisanje."
|
||||
IDS_4116 "Image diska je prevelika"
|
||||
IDS_4117 "Ne zaboravite particionirati i formatirati novostvoreni tvrdi disk."
|
||||
IDS_4118 "Odabrana datoteka bit će prebrisana. Jeste li sigurni da želite koristiti ovu daoteku?"
|
||||
IDS_4119 "Nepodržana image daoteka diska"
|
||||
IDS_4120 "Prepiši"
|
||||
IDS_4121 "Ne prepiši"
|
||||
IDS_4122 "Image daoteka neobrađenih podataka (.img)"
|
||||
IDS_4123 "HDI image daoteka (.hdi)"
|
||||
IDS_4124 "HDX image daoteka (.hdx)"
|
||||
IDS_4125 "VHD fiksne veličine (.vhd)"
|
||||
IDS_4126 "VHD dinamičke veličine (.vhd)"
|
||||
IDS_4127 "Različiti VHD (.vhd)"
|
||||
IDS_4128 "Veliki blokovi (2 MB)"
|
||||
IDS_4129 "Mali blokovi (512 KB)"
|
||||
IDS_4130 "VHD image daoteke (*.VHD)\0*.VHD\0Svi daoteke (*.*)\0*.*\0"
|
||||
IDS_4131 "Izaberi matični VHD"
|
||||
IDS_4132 "To bi moglo značiti da je matična image daoteka promijenjena nakon što je stvorena različita image daoteka.\n\nTo se također može dogoditi ako su image datoteke 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 VHDa."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Deaktivirano"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Deaktivirano"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1,2 MB"
|
||||
IDS_5895 "1,25 MB"
|
||||
IDS_5896 "1,44 MB"
|
||||
IDS_5897 "DMF (1024 clusteri)"
|
||||
IDS_5898 "DMF (2048 clusteri)"
|
||||
IDS_5899 "2,88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3,5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3,5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3,5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3,5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3,5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3,5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5,25"" 600Mb M.O."
|
||||
IDS_5909 "5,25"" 650Mb M.O."
|
||||
IDS_5910 "5,25"" 1Gb M.O."
|
||||
IDS_5911 "5,25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "Savršen broj okretanja"
|
||||
IDS_6145 "1%% ispod savršenog broja okretaja"
|
||||
IDS_6146 "1,5%% ispod savršenog broja okretaja"
|
||||
IDS_6147 "2%% ispod savršenog broja okretaja"
|
||||
|
||||
IDS_7168 "(Standard operativnog sustava)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Croatian (hr-HR) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
642
src/win/languages/hu-HU.rc
Normal file
@@ -0,0 +1,642 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Hungarian resources
|
||||
//
|
||||
// Translated by Laci bá', 2021
|
||||
//
|
||||
|
||||
#define TRANSLATORS_NAME "Laci bá'"
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Művelet"
|
||||
BEGIN
|
||||
MENUITEM "A &billentyűzet elfogást igényel", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "A &jobb oldali CTRL a bal ALT", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Hardveres &újraindítás...", 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 "&Szüneteltetés", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kilépés...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Nézet"
|
||||
BEGIN
|
||||
MENUITEM "Állapotsor &elrejtése", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Átméretezhető ablak", IDM_VID_RESIZE
|
||||
MENUITEM "Méret és pozíció &megjegyzése", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Megjelenítő"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Szoftveres)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardveres)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Méretek kézi megadása...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&Rögzített 4:3 képarány", IDM_VID_FORCE43
|
||||
POPUP "&Ablak méretezési tényező"
|
||||
BEGIN
|
||||
MENUITEM "&0,5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1,&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Szűrési mód"
|
||||
BEGIN
|
||||
MENUITEM "&Szomszédos", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Lineáris", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Hi&DPI méretezés", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Teljes képernyő\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Teljes képernyős &méretezés"
|
||||
BEGIN
|
||||
MENUITEM "&Nyújtás a teljes képernyőre", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Négyzetes képpontok (aránytartás)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Egész tényezős nagyítás", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "E&GA/(S)VGA beállítások"
|
||||
BEGIN
|
||||
MENUITEM "&Invertált VGA kijelző", IDM_VID_INVERT
|
||||
POPUP "VGA képernyő &típusa"
|
||||
BEGIN
|
||||
MENUITEM "RGB &színes", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB szürkeárnyalatos", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Gyömbér kijelző", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Zöld kijelző", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&Fehér kijelző", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Szürkéskála &konzerziós eljárás"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Átlag szerint", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA túlpásztázás", IDM_VID_OVERSCAN
|
||||
MENUITEM "Kontraszt illesztése &monokróm kijelzőhöz", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Média", IDM_MEDIA
|
||||
POPUP "&Eszközök"
|
||||
BEGIN
|
||||
MENUITEM "&Beállítások...", IDM_CONFIG
|
||||
MENUITEM "Állapotsori ikonok &frissítése", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "A &program nyelvének módosítása...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Discord integráció engedélyezése", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Képernyőkép készítése\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hangerőszabályzó...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Nyomkövetés megkezdése\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Nyomkövetés befejezése\tCtrl+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Naplózás"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "BusLogic naplók engedélyezése\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "CD-ROM naplók engedélyezése\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Hajlékonylemez (86F) naplók engedélyezése\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Hajlékonylemez-vezérlő naplók engedélyezése\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "IDE naplók engedélyezése\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Soros port naplók engedélyezése\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Hálózati naplók engedélyezése\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "Töréspontok &naplózása\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "&Videómemória lementése\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Súgó"
|
||||
BEGIN
|
||||
MENUITEM "&Dokumentáció...", IDM_DOCS
|
||||
MENUITEM "A 86Box &névjegye...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Új képfájl létrehozása...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Meglévő képfájl &megnyitása...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Meglévő képfájl megnyitása (&írásvédett)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Felvétel", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Lejátszás", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&Visszatekerés az elejére", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Előretekerés a végére", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kiadás", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Kép&fájl...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kiadás", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Új képfájl létrehozása...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Meglévő képfájl &megnyitása...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Meglévő képfájl megnyitása (&írásvédett)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xportálás 86F formátumba...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kiadás", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Némítás", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kiadás", IDM_CDROM_EMPTY
|
||||
MENUITEM "Előző képfájl &újratöltése", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Meglévő képfájl &megnyitása...", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Új képfájl létrehozása...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Meglévő képfájl &megnyitása...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Meglévő képfájl megnyitása (&írásvédett)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Kiadás", IDM_ZIP_EJECT
|
||||
MENUITEM "Előző képfájl &újratöltése", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Új képfájl létrehozása...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Meglévő képfájl &megnyitása...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Meglévő képfájl megnyitása (&írásvédett)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Kiadás", IDM_MO_EJECT
|
||||
MENUITEM "Előző képfájl &újratöltése", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Cél &képkockasebesség"
|
||||
BEGIN
|
||||
MENUITEM "&Szinkronizálás a videóval ", 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
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "Shader &kiválasztása...", IDM_VID_GL_SHADER
|
||||
MENUITEM "Shader &eltávolítása", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Nyelvi beállítások"
|
||||
#define STR_SND_GAIN "Hangerőszabályzó"
|
||||
#define STR_NEW_FLOPPY "Új képfájl létrehozása"
|
||||
#define STR_CONFIG "86Box beállítások"
|
||||
#define STR_SPECIFY_DIM "Főablak méreteinek megadása"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Mégse"
|
||||
#define STR_GLOBAL "Beállítások mentése &globális alapértékként"
|
||||
#define STR_DEFAULT "&Alapértelmezett"
|
||||
#define STR_LANGUAGE "Nyelv:"
|
||||
|
||||
#define STR_GAIN "Hangerő"
|
||||
|
||||
#define STR_FILE_NAME "Fájlnév:"
|
||||
#define STR_DISK_SIZE "Méret:"
|
||||
#define STR_RPM_MODE "RPM-mód:"
|
||||
#define STR_PROGRESS "Folyamat:"
|
||||
|
||||
#define STR_WIDTH "Szélesség:"
|
||||
#define STR_HEIGHT "Magasság:"
|
||||
#define STR_LOCK_TO_SIZE "Rögzítés a megadott méretre"
|
||||
|
||||
#define STR_MACHINE_TYPE "Géptípus:"
|
||||
#define STR_MACHINE "Számítógép:"
|
||||
#define STR_CONFIGURE "Beállítások..."
|
||||
#define STR_CPU_TYPE "Processzor:"
|
||||
#define STR_SPEED "Seb.:"
|
||||
#define STR_FPU "FPU-egység:"
|
||||
#define STR_WAIT_STATES "Várak. ciklusok:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memória:"
|
||||
#define STR_TIME_SYNC "Idő szinkronizáció"
|
||||
#define STR_DISABLED "Letiltva"
|
||||
#define STR_ENABLED_LOCAL "Engedélyezve (helyi idő)"
|
||||
#define STR_ENABLED_UTC "Engedélyezve (UTC)"
|
||||
#define STR_DYNAREC "Dinamikus újrafordítás"
|
||||
|
||||
#define STR_VIDEO "Videokártya:"
|
||||
#define STR_VOODOO "Voodoo-gyorsítókártya"
|
||||
|
||||
#define STR_MOUSE "Egér:"
|
||||
#define STR_JOYSTICK "Játékvezérlő:"
|
||||
#define STR_JOY1 "Játékvez. 1..."
|
||||
#define STR_JOY2 "Játékvez. 2..."
|
||||
#define STR_JOY3 "Játékvez. 3..."
|
||||
#define STR_JOY4 "Játékvez. 4..."
|
||||
|
||||
#define STR_SOUND "Hangkártya:"
|
||||
#define STR_MIDI "MIDI-kimenet:"
|
||||
#define STR_MIDI_IN "MIDI-bemenet:"
|
||||
#define STR_MPU401 "Különálló MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 használata"
|
||||
|
||||
#define STR_NET_TYPE "Hálózati típusa:"
|
||||
#define STR_PCAP "PCap eszköz:"
|
||||
#define STR_NET "Hálózati kártya:"
|
||||
|
||||
#define STR_LPT1 "LPT1 eszköz:"
|
||||
#define STR_LPT2 "LPT2 eszköz:"
|
||||
#define STR_LPT3 "LPT3 eszköz:"
|
||||
#define STR_SERIAL1 "Soros port 1"
|
||||
#define STR_SERIAL2 "Soros port 2"
|
||||
#define STR_SERIAL3 "Soros port 3"
|
||||
#define STR_SERIAL4 "Soros port 4"
|
||||
#define STR_PARALLEL1 "Párhuzamos port 1"
|
||||
#define STR_PARALLEL2 "Párhuzamos port 2"
|
||||
#define STR_PARALLEL3 "Párhuzamos port 3"
|
||||
|
||||
#define STR_HDC "Merevl.-vezérlő:"
|
||||
#define STR_FDC "Floppy-vezérlő:"
|
||||
#define STR_IDE_TER "Harmadlagos IDE-vezérlő"
|
||||
#define STR_IDE_QUA "Negyedleges IDE-vezérlő"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Gazdaadapt. 1:"
|
||||
#define STR_SCSI_2 "Gazdaadapt. 2:"
|
||||
#define STR_SCSI_3 "Gazdaadapt. 3:"
|
||||
#define STR_SCSI_4 "Gazdaadapt. 4:"
|
||||
#define STR_CASSETTE "Magnókazetta"
|
||||
|
||||
#define STR_HDD "Merevlemezek:"
|
||||
#define STR_NEW "&Új..."
|
||||
#define STR_EXISTING "&Megnyitás..."
|
||||
#define STR_REMOVE "&Eltávolítás"
|
||||
#define STR_BUS "Busz:"
|
||||
#define STR_CHANNEL "Csatorna:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Kiválasztás..."
|
||||
#define STR_SECTORS "Szektor:"
|
||||
#define STR_HEADS "Fej:"
|
||||
#define STR_CYLS "Cilinder:"
|
||||
#define STR_SIZE_MB "Méret (MB):"
|
||||
#define STR_TYPE "Típus:"
|
||||
#define STR_IMG_FORMAT "Formátum:"
|
||||
#define STR_BLOCK_SIZE "Blokkméret:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Floppy-meghajtók:"
|
||||
#define STR_TURBO "Turbó időzítés"
|
||||
#define STR_CHECKBPB "BPB ellenőrzés"
|
||||
#define STR_CDROM_DRIVES "CD-ROM meghajtók:"
|
||||
|
||||
#define STR_MO_DRIVES "MO-meghajtók:"
|
||||
#define STR_ZIP_DRIVES "ZIP-meghajtók:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA RTC:"
|
||||
#define STR_ISAMEM "ISA memóriabővítők"
|
||||
#define STR_ISAMEM_1 "Kártya 1:"
|
||||
#define STR_ISAMEM_2 "Kártya 2:"
|
||||
#define STR_ISAMEM_3 "Kártya 3:"
|
||||
#define STR_ISAMEM_4 "Kártya 4:"
|
||||
#define STR_BUGGER "ISABugger eszköz"
|
||||
#define STR_POSTCARD "POST kártya"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Hiba"
|
||||
IDS_2050 "Végzetes hiba"
|
||||
IDS_2051 "<fenntartva>"
|
||||
IDS_2052 "Használja a CTRL+ALT+PAGE DOWN gombokat az ablakhoz való visszatéréshez."
|
||||
IDS_2053 "Sebesség"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "A 86Box nem talált használható ROM-képeket\n\nKérem <a href=""https://github.com/86Box/roms/releases/latest"">töltse le</a> a ROM készletet és bontsa ki a ""roms"" könyvtárba."
|
||||
IDS_2057 "(üres)"
|
||||
IDS_2058 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbó"
|
||||
IDS_2060 "Bekapcsolva"
|
||||
IDS_2061 "Kikapcsolva"
|
||||
IDS_2062 "Minden képfájl (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Alapvető szektor képfájlok (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Felületi képfájlok (*.86F)\0*.86F\0"
|
||||
IDS_2063 "A számítógép ""%hs"" nem elérhető a ""roms/machines"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik gép kerül futtatásra."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "A videokártya ""%hs"" nem elérhető a ""roms/video"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik kártya kerül futtatásra."
|
||||
IDS_2065 "Számítógép"
|
||||
IDS_2066 "Megjelenítő"
|
||||
IDS_2067 "Beviteli eszközök"
|
||||
IDS_2068 "Hang"
|
||||
IDS_2069 "Hálózat"
|
||||
IDS_2070 "Portok (COM és LPT)"
|
||||
IDS_2071 "Tárolóvezérlők"
|
||||
IDS_2072 "Merevlemezek"
|
||||
IDS_2073 "Floppy és CD-ROM meghajtók"
|
||||
IDS_2074 "Egyéb cserélhető tárolók"
|
||||
IDS_2075 "Egyéb perifériák"
|
||||
IDS_2076 "Felületi képfájlok (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Kattintson az egér elfogásához"
|
||||
IDS_2078 "Nyomja meg az F8+F12-t az egér elengédéséhez"
|
||||
IDS_2079 "Nyomja meg az F8+F12-t vagy a középső gombot az egér elengédéséhez"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Nem sikerült a FluidSynth inicializálása"
|
||||
IDS_2081 "Busz"
|
||||
IDS_2082 "Fájl"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "H"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "BPB ellenőrzése"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Nem sikerült inicializálni a videó megjelenítőt."
|
||||
IDS_2090 "Alapértelmezett"
|
||||
IDS_2091 "%i várakozási ciklus(ok)"
|
||||
IDS_2092 "Típus"
|
||||
IDS_2093 "Nem sikerült a PCap beállítása"
|
||||
IDS_2094 "Nem találhatóak PCap eszközök"
|
||||
IDS_2095 "Érvénytelen PCap eszköz"
|
||||
IDS_2096 "Szabványos 2-gombos játékvezérlő(k)"
|
||||
IDS_2097 "Szabványos 4-gombos játékvezérlő"
|
||||
IDS_2098 "Szabványos 6-gombos játékvezérlő"
|
||||
IDS_2099 "Szabványos 8-gombos játékvezérlő"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Nincs"
|
||||
IDS_2104 "Nem lehet betölteni a billentyűzetgyorsítókat."
|
||||
IDS_2105 "A közvetlen nyers bevitel regisztrálása nem sikerült."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Floppy %i (%s): %ls"
|
||||
IDS_2109 "Minden képfájl (*.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\0Továbbfejlesztett szektor képek (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Alapvető szektor képek (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux képekfájlok (*.FDI)\0*.FDI\0Felületi képfájlok (*.86F;*.MFM)\0*.86F;*.MFM\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2110 "A FreeType inicializálása nem lehetséges"
|
||||
IDS_2111 "Az SDL inicializálása nem lehetséges, az SDL2.dll fájl szükséges"
|
||||
IDS_2112 "Biztosan szeretné újraindítani az emulált gépet?"
|
||||
IDS_2113 "Biztos benne, hogy ki szeretne lépni a 86Box-ból?"
|
||||
IDS_2114 "Nem sikerült inicializálni a Ghostscript-et"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2117 "Üdvözli önt az 86Box!"
|
||||
IDS_2118 "Integrált vezérlő"
|
||||
IDS_2119 "Kilépés"
|
||||
IDS_2120 "Nem találhatóak meg a ROM-képek"
|
||||
IDS_2121 "Szeretné menteni a beállításokat?"
|
||||
IDS_2122 "Ezzel hardveresen újraindítja az emulált gépet."
|
||||
IDS_2123 "Mentés"
|
||||
IDS_2124 "A 86Box névjegye"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
IDS_2126 "Régi számítógépek emulátora\n\nFejlesztők: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nFordította: Laci bá'\n\nMegjelent a GNU General Public License v2 vagy újabb alatt. További információért lásd a LICENSE fájlt."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardver nem elérhető"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Győződjön meg hogy a(z) " LIB_NAME_PCAP " telepítve van és jelenleg a " LIB_NAME_PCAP "-kompatibilis kapcsolatot használja."
|
||||
IDS_2130 "Érvénytelen konfiguráció"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " szükséges az ESC/P nyomtató emulációhoz."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " szükséges a PostScript fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PostScript nyomtatóra küldött dokumentumok PostScript (.ps) fájlként kerülnek mentésre."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " szükséges a FluidSynth MIDI kimenethez."
|
||||
IDS_2134 "Teljes képernyős módra váltás"
|
||||
IDS_2135 "Ne jelenítse meg újra ezt az üzenetet "
|
||||
IDS_2136 "Ne lépjen ki"
|
||||
IDS_2137 "Újraindítás"
|
||||
IDS_2138 "Ne indítsa újra"
|
||||
IDS_2139 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2140 "CD-ROM-képek (*.ISO;*.CUE)\0*.ISO;*.CUE\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2141 "%hs eszközkonfiguráció"
|
||||
IDS_2142 "Képernyő alvó módban"
|
||||
IDS_2143 "OpenGL Shaderek (*.GLSL)\0*.GLSL\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2144 "OpenGL beállítások"
|
||||
IDS_2145 "Egy nem támogatott konfigurációt tölt be"
|
||||
IDS_2146 "A kiválasztott gépen alapuló CPU-típusszűrés le van tiltva ezen az emulált gépen.\n\nEz lehetővé teszi olyan CPU kiválasztását, amely egyébként nem kompatibilis a kiválasztott géppel. Előfordulhat azonban, hogy nem kompatibilis a gép BIOS-ával vagy más szoftverekkel.\n\nA beállítás engedélyezése hivatalosan nem támogatott, és a benyújtott hibajelentéseket érvénytelenként lezárhatjuk."
|
||||
IDS_2147 "Folytatás"
|
||||
IDS_2148 "Magnókazetta: %s"
|
||||
IDS_2149 "Magnókazetta-képek (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_2150 "ROM-kazetta %i: %ls"
|
||||
IDS_2151 "ROM-kazetta képek (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Minden fájl (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Merevlemez (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "MFM/RLL vagy ESDI CD-ROM meghajtók soha nem léteztek"
|
||||
IDS_4100 "Egyéni..."
|
||||
IDS_4101 "Egyéni (nagy)..."
|
||||
IDS_4102 "Új merevlemez hozzáadása"
|
||||
IDS_4103 "Meglévő merevlemez hozzáadása"
|
||||
IDS_4104 "A HDI lemezképek nem lehetnek nagyobbak 4 GB-nál."
|
||||
IDS_4105 "A lemezképek mérete nem haladhatja meg a 127 GB-ot."
|
||||
IDS_4106 "Merevlemez-képfájlok (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_4107 "A fájl nem olvasható"
|
||||
IDS_4108 "A fájl nem írható"
|
||||
IDS_4109 "Az 512-től eltérő szektorméretű HDI vagy HDX képek nem támogatottak."
|
||||
IDS_4110 "Az USB még nem támogatott"
|
||||
IDS_4111 "A lemezképfájl már létezik"
|
||||
IDS_4112 "Adjon meg egy érvényes fájlnevet."
|
||||
IDS_4113 "A lemezképfájl létrehozásra került"
|
||||
IDS_4114 "Győződjön meg arról, hogy a fájl létezik és olvasható."
|
||||
IDS_4115 "Győződjön meg arról, hogy a fájlt egy írható könyvtárba menti."
|
||||
IDS_4116 "A lemezképfájl túl nagy"
|
||||
IDS_4117 "Ne felejtse el particionálni és formázni az újonnan létrehozott meghajtót."
|
||||
IDS_4118 "A kiválasztott fájl felülírásra kerül. Biztos, hogy ezt kívánja használni?"
|
||||
IDS_4119 "Nem támogatott lemezkép"
|
||||
IDS_4120 "Felülírás"
|
||||
IDS_4121 "Ne írja felül"
|
||||
IDS_4122 "Nyers lemezkép (.img)"
|
||||
IDS_4123 "HDI-lemezkép (.hdi)"
|
||||
IDS_4124 "HDX-lemezkép (.hdx)"
|
||||
IDS_4125 "Rögzített méretű VHD (.vhd)"
|
||||
IDS_4126 "Dinamikusan bővülő VHD (.vhd)"
|
||||
IDS_4127 "Különbség-VHD (.vhd)"
|
||||
IDS_4128 "Nagy blokkméret (2 MB)"
|
||||
IDS_4129 "Kis blokkméret (512 KB)"
|
||||
IDS_4130 "VHD fájlok (*.VHD)\0*.VHD\0Minden fájl (*.*)\0*.*\0"
|
||||
IDS_4131 "Válassza ki a szülő VHD-t"
|
||||
IDS_4132 "Ez azt jelentheti, hogy a szülőkép módosult az eltérő kép létrehozása után.\n\nEz akkor is előfordulhat, ha a képfájlokat áthelyezték vagy másolták, vagy a lemezt létrehozó program hibája miatt.\n\nSzeretné kijavítani az időbélyegeket?"
|
||||
IDS_4133 "A szülő- és a gyermeklemez időbélyegei nem egyeznek"
|
||||
IDS_4134 "Nem sikerült kijavítani a VHD időbélyegét."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Letiltva"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Letiltva"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (klaszter 1024)"
|
||||
IDS_5898 "DMF (klaszter 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "Tökéletes RPM"
|
||||
IDS_6145 "1%%-kal a tökéletes RPM alatt"
|
||||
IDS_6146 "1.5%%-kal a tökéletes RPM alatt"
|
||||
IDS_6147 "2%%-kal a tökéletes RPM alatt"
|
||||
|
||||
IDS_7168 "(A rendszer nyelve)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Hungarian resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
640
src/win/languages/it-IT.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Italian (IT-it) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define explorerdotexe
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Azione"
|
||||
BEGIN
|
||||
MENUITEM "&Tastiera richiede la cattura", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&CTRL destro è ALT sinistro", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Riavvia...", 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 "&Pausa", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&sci...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Visualizza"
|
||||
BEGIN
|
||||
MENUITEM "&Nascondi barra di stato", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Finestra ridimensionabile", IDM_VID_RESIZE
|
||||
MENUITEM "R&icorda dimensioni e posizione", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Re&nderer"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Specifica dimensioni...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "F&orza display 4:3", IDM_VID_FORCE43
|
||||
POPUP "&Fattore scalare della finestra"
|
||||
BEGIN
|
||||
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Metodo filtro"
|
||||
BEGIN
|
||||
MENUITEM "&Dal più vicino", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Lineare", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Scala Hi&DPI", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Schermo intero\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Modalità adattamento &schermo intero"
|
||||
BEGIN
|
||||
MENUITEM "&Adatta a schermo intero", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Pixel quadrati (mantiene l'aspetto)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Scala intera", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "Impostazioni E&GA/(S)VGA"
|
||||
BEGIN
|
||||
MENUITEM "&Invertire monitor VGA", IDM_VID_INVERT
|
||||
POPUP "Schermi VGA &"
|
||||
BEGIN
|
||||
MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB Monocroma", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Monitor ambra", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Monitor verde", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&Monitor bianco", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Conversione &scala grigia"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&AMedia", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sovrascansione CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
|
||||
MENUITEM "Cambia il contrasto per &display monocromatici", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Dispositivi", IDM_MEDIA
|
||||
POPUP "&Strumenti"
|
||||
BEGIN
|
||||
MENUITEM "&Impostazioni...", IDM_CONFIG
|
||||
MENUITEM "&Aggiorna icone della barra di stato", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cambia li&ngua...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Abilita &integrazione Discord", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Guadagno &suono...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Inizia traccia\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Ferma traccia\tCtrl+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Registra"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "Attiva registrazione di BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Attiva registrazione del CD-ROM\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Attiva registrazione del floppy (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Attiva registrazione del controller floppy\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Attiva registrazione di IDE\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Attiva registrazione della porta seriale\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Attiva registrazione della rete\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Punto di interruzione del registro\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Scarica &la RAM video\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Aiuto"
|
||||
BEGIN
|
||||
MENUITEM "&Documentazione...", IDM_DOCS
|
||||
MENUITEM "&Informazioni su 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nuova immagine...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Immagine esistente...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registra", IDM_CASSETTE_RECORD
|
||||
MENUITEM "R&iproduci", IDM_CASSETTE_PLAY
|
||||
MENUITEM "Ri&avvolgi all'inizio", IDM_CASSETTE_REWIND
|
||||
MENUITEM "A&vanti veloce alla fine", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Immagine...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nuova immagine...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Immagine esistente...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&sporta in 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Muto", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Ricarica l'immagine precedente", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Immagine", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nuova immagine...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Immagine esistente...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_ZIP_EJECT
|
||||
MENUITEM "&Ricarica l'immagine precedente", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nuova immagine...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Immagine esistente...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Espelli", IDM_MO_EJECT
|
||||
MENUITEM "&Ricarica l'immagine precedente", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Imposta obiettivo &fotogrammi"
|
||||
BEGIN
|
||||
MENUITEM "&Sincronizza col video", 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
|
||||
MENUITEM "&60 FPS", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 FPS", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Seleziona shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Rimuovi shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Cambia lingua dell'interfaccia"
|
||||
#define STR_SND_GAIN "Guadagno del suono"
|
||||
#define STR_NEW_FLOPPY "Nuova immagine"
|
||||
#define STR_CONFIG "Impostazioni di 86Box"
|
||||
#define STR_SPECIFY_DIM "Specifica dimensioni della finestra principale"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Annulla"
|
||||
#define STR_GLOBAL "Salva queste impostazioni come &predefinite globali"
|
||||
#define STR_DEFAULT "&Predefinito"
|
||||
#define STR_LANGUAGE "Lingua:"
|
||||
|
||||
#define STR_GAIN "Guadagno"
|
||||
|
||||
#define STR_FILE_NAME "Nome file:"
|
||||
#define STR_DISK_SIZE "Dimensioni disco:"
|
||||
#define STR_RPM_MODE "Modalità RPM:"
|
||||
#define STR_PROGRESS "Progresso:"
|
||||
|
||||
#define STR_WIDTH "Larghezza:"
|
||||
#define STR_HEIGHT "Altezza:"
|
||||
#define STR_LOCK_TO_SIZE "Blocca in queste dimensioni"
|
||||
|
||||
#define STR_MACHINE_TYPE "Tipo di macchina:"
|
||||
#define STR_MACHINE "Macchina:"
|
||||
#define STR_CONFIGURE "Configura"
|
||||
#define STR_CPU_TYPE "Tipo del CPU:"
|
||||
#define STR_SPEED "Veloc.:"
|
||||
#define STR_FPU "FPU:"
|
||||
#define STR_WAIT_STATES "Stati di attesa:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memoria:"
|
||||
#define STR_TIME_SYNC "Sincronizzazione dell'ora"
|
||||
#define STR_DISABLED "Disabilitata"
|
||||
#define STR_ENABLED_LOCAL "Abilitata (ora locale)"
|
||||
#define STR_ENABLED_UTC "Abilitata (UTC)"
|
||||
#define STR_DYNAREC "Ricompilatore dinamico"
|
||||
|
||||
#define STR_VIDEO "Video:"
|
||||
#define STR_VOODOO "Grafica Voodoo"
|
||||
|
||||
#define STR_MOUSE "Mouse:"
|
||||
#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_SOUND "Scheda audio:"
|
||||
#define STR_MIDI "Uscita MIDI:"
|
||||
#define STR_MIDI_IN "Entrata MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autonomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Usa suono FLOAT32"
|
||||
|
||||
#define STR_NET_TYPE "Tipo di rete:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Scheda di rete:"
|
||||
|
||||
#define STR_LPT1 "Dispositivo LPT1:"
|
||||
#define STR_LPT2 "Dispositivo LPT2:"
|
||||
#define STR_LPT3 "Dispositivo LPT3:"
|
||||
#define STR_SERIAL1 "Porta seriale 1"
|
||||
#define STR_SERIAL2 "Porta seriale 2"
|
||||
#define STR_SERIAL3 "Porta seriale 3"
|
||||
#define STR_SERIAL4 "Porta seriale 4"
|
||||
#define STR_PARALLEL1 "Porta parallela 1"
|
||||
#define STR_PARALLEL2 "Porta parallela 2"
|
||||
#define STR_PARALLEL3 "Porta parallela 3"
|
||||
|
||||
#define STR_HDC "Controller HD:"
|
||||
#define STR_FDC "Controller FD:"
|
||||
#define STR_IDE_TER "Controller IDE terziario"
|
||||
#define STR_IDE_QUA "Controller IDE quaternario"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Controller 1:"
|
||||
#define STR_SCSI_2 "Controller 2:"
|
||||
#define STR_SCSI_3 "Controller 3:"
|
||||
#define STR_SCSI_4 "Controller 4:"
|
||||
#define STR_CASSETTE "Cassetta"
|
||||
|
||||
#define STR_HDD "Hard disk:"
|
||||
#define STR_NEW "&Nuovo..."
|
||||
#define STR_EXISTING "&Esistente..."
|
||||
#define STR_REMOVE "&Rimouvi"
|
||||
#define STR_BUS "Bus:"
|
||||
#define STR_CHANNEL "Canale:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Specifica..."
|
||||
#define STR_SECTORS "Settori:"
|
||||
#define STR_HEADS "Testine:"
|
||||
#define STR_CYLS "Cilindri:"
|
||||
#define STR_SIZE_MB "Dimensioni (MB):"
|
||||
#define STR_TYPE "Tipo:"
|
||||
#define STR_IMG_FORMAT "Formato immagine:"
|
||||
#define STR_BLOCK_SIZE "Dimensioni blocco:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Unità floppy:"
|
||||
#define STR_TURBO "Turbo"
|
||||
#define STR_CHECKBPB "Verifica BPB"
|
||||
#define STR_CDROM_DRIVES "Unità CD-ROM:"
|
||||
|
||||
#define STR_MO_DRIVES "Unità magneto-ottiche:"
|
||||
#define STR_ZIP_DRIVES "Unità ZIP:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "RTC ISA:"
|
||||
#define STR_ISAMEM "Espansione memoria ISA"
|
||||
#define STR_ISAMEM_1 "Scheda 1:"
|
||||
#define STR_ISAMEM_2 "Scheda 2:"
|
||||
#define STR_ISAMEM_3 "Scheda 3:"
|
||||
#define STR_ISAMEM_4 "Scheda 4:"
|
||||
#define STR_BUGGER "Dispositivo ISABugger"
|
||||
#define STR_POSTCARD "Scheda POST"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Errore"
|
||||
IDS_2050 "Errore fatale"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Usa CTRL+ALT+PAGE DOWN per tornare alla modalità finestra."
|
||||
IDS_2053 "Velocità"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box non può trovare immagini ROM utilizzabili.\n\nPlease <a href=""https://github.com/86Box/roms/releases/latest"">download</a> a ROM set and extract it into the ""roms"" directory."
|
||||
IDS_2057 "(empty)"
|
||||
IDS_2058 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Acceso"
|
||||
IDS_2061 "Spento"
|
||||
IDS_2062 "Tutte le immagini (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Immagini di settori base (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Immagini di superficie (*.86F)\0*.86F\0"
|
||||
IDS_2063 "La macchina ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/machines. Cambiando ad una macchina disponibile."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "La scheda video ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/video. Cambiando ad una scheda video disponibile."
|
||||
IDS_2065 "Macchina"
|
||||
IDS_2066 "Schermo"
|
||||
IDS_2067 "Dispositivi di entrata"
|
||||
IDS_2068 "Audio"
|
||||
IDS_2069 "Rete"
|
||||
IDS_2070 "Porte (COM & LPT)"
|
||||
IDS_2071 "Controller memoria"
|
||||
IDS_2072 "Hard disk"
|
||||
IDS_2073 "Unità CD-ROM e Floppy"
|
||||
IDS_2074 "Altri dispositivi rimuovibili"
|
||||
IDS_2075 "Altre periferiche"
|
||||
IDS_2076 "Immagini di superficie (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Fare clic per catturare mouse"
|
||||
IDS_2078 "Premi F8+F12 per rilasciare il mouse"
|
||||
IDS_2079 "Premi F8+F12 o pulsante centrale per rilasciare il mouse"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Impossibile inizializzare FluidSynth"
|
||||
IDS_2081 "Bus"
|
||||
IDS_2082 "File"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "H"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Verifica BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Impossibile inizializzare il renderer video."
|
||||
IDS_2090 "Predefinito"
|
||||
IDS_2091 "%i stati d'attesa"
|
||||
IDS_2092 "Tipo"
|
||||
IDS_2093 "Impossibile impostare PCap"
|
||||
IDS_2094 "Nessun dispositivo PCap trovato"
|
||||
IDS_2095 "Dispositivo PCap invalido"
|
||||
IDS_2096 "Joystick comune da 2 pulsanti"
|
||||
IDS_2097 "Joystick comune da 4 pulsanti"
|
||||
IDS_2098 "Joystick comune da 6 pulsanti"
|
||||
IDS_2099 "Joystick comune da 8 pulsanti"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Nessuno"
|
||||
IDS_2104 "Impossibile caricare gli acceleratori da tastiera."
|
||||
IDS_2105 "Impossibile registrare input raw."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Floppy %i (%s): %ls"
|
||||
IDS_2109 "Tutte le immagini (*.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\0Immagini da settori avanzati (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagini da settori basilari (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Immagini flusso (*.FDI)\0*.FDI\0Immagini da superficie (*.86F;*.MFM)\0*.86F;*.MFM\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2110 "Impossibile inizializzare FreeType"
|
||||
IDS_2111 "Impossibile inizializzare SDL, SDL2.dll è necessario"
|
||||
IDS_2112 "Sei sicuro di voler riavviare la macchina emulata?"
|
||||
IDS_2113 "Sei sicuro di voler uscire da 86Box?"
|
||||
IDS_2114 "Impossibile inizializzare Ghostscript"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2117 "Benvenuti in 86Box!"
|
||||
IDS_2118 "Controller interno"
|
||||
IDS_2119 "Esci"
|
||||
IDS_2120 "Nessune immagini ROM trovate"
|
||||
IDS_2121 "Vuole salvare queste impostazioni?"
|
||||
IDS_2122 "Questo riavvierà la macchina emulata."
|
||||
IDS_2123 "Salva"
|
||||
IDS_2124 "Informazioni su 86Box"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
|
||||
IDS_2126 "Un emulatore di computer vecchi\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nTradotto da: explorerdotexe\n\nRilasciato sotto la Licenza Pubblica GNU versione 2 o dopo. Vedi LICENSE per maggior informazioni."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware non disponibile"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Controlla se " LIB_NAME_PCAP " è installato e che tu sia connesso ad una connessione " LIB_NAME_PCAP " compatibile."
|
||||
IDS_2130 "Configurazione invalida"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " è richesto per l'emuazione di stampanti ESC/P."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " è richiesto per la conversione automatica di file PostScript a file PDF.\n\nQualsiasi documento mandato alla stampante generica PostScript sarà salvato come file PostScript. (.ps)"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " è richiesto per l'output FluidSynth MIDI."
|
||||
IDS_2134 "Entrando nella modalità schermo intero"
|
||||
IDS_2135 "Non mostrare più questo messaggio"
|
||||
IDS_2136 "Non uscire"
|
||||
IDS_2137 "Riavvia"
|
||||
IDS_2138 "Non riavviare"
|
||||
IDS_2139 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2140 "Immagini CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2141 "Configurazione del dispositivo %hs"
|
||||
IDS_2142 "Monitor in modalità riposo"
|
||||
IDS_2143 "Shader OpenGL (*.GLSL)\0*.GLSL\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2144 "Impostazioni OpenGL"
|
||||
IDS_2145 "Stai caricando una configurazione non supportata"
|
||||
IDS_2146 "Il filtraggio della tipologia di CPU è disabilitato per la macchina selezionata.\n\nQuesto lo rende possibile scegliere un CPU che è altrimenti incompatibile con la macchina selezionata. Tuttavia, portresti incorrere in incompatibilità con il BIOS della macchina o altri programmi. \n\nL'abilitare di questa impostazione non è ufficialmente supportato e tutte le segnalazioni di errori saranno considerate invalide."
|
||||
IDS_2147 "Continua"
|
||||
IDS_2148 "Cassetta: %s"
|
||||
IDS_2149 "Immagini cassetta (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_2150 "Cartuccia %i: %ls"
|
||||
IDS_2151 "Immagini cartuccia (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tutti i file (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Hard disk (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "Le unità CD-ROM MFM/RLL o ESDI non sono mai esistite."
|
||||
IDS_4100 "Personalizzata..."
|
||||
IDS_4101 "Personalizzata (grande)..."
|
||||
IDS_4102 "Aggiungi un nuovo disco rigido"
|
||||
IDS_4103 "Aggiungi un disco rigido esistente"
|
||||
IDS_4104 "Le immagini HDI non possono essere più grandi di 4 GB."
|
||||
IDS_4105 "Le immmagini disco non possono essere più grandi di 127 GB."
|
||||
IDS_4106 "Immagini disco rigido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_4107 "Impossibile leggere il file"
|
||||
IDS_4108 "Impossibile scrivere al file"
|
||||
IDS_4109 "Le immagini HDI o HDX con settori di dimensioni diverse da 512 non sono supportati."
|
||||
IDS_4110 "USB non è ancora supportato"
|
||||
IDS_4111 "Immagine disco già esiste"
|
||||
IDS_4112 "Specifica un nome file valido."
|
||||
IDS_4113 "Immagine disco creata"
|
||||
IDS_4114 "Controlla che il file esiste e che sia leggibile."
|
||||
IDS_4115 "Controlla che il file viene salvato ad un percorso con diritti di scrittura"
|
||||
IDS_4116 "Immagine disco troppo grande"
|
||||
IDS_4117 "Ricordati di partizionare e formattare il disco appena creato."
|
||||
IDS_4118 "Il file selezionato sarà sovrascritto, sei sicuro di volerlo usare?"
|
||||
IDS_4119 "Immagine disco non supportata"
|
||||
IDS_4120 "Sovrascrivi"
|
||||
IDS_4121 "Non sovrascrivere"
|
||||
IDS_4122 "Immagine raw (.img)"
|
||||
IDS_4123 "Immagine HDI (.hdi)"
|
||||
IDS_4124 "Immagine HDX (.hdx)"
|
||||
IDS_4125 "VHD di dimensioni fisse (.vhd)"
|
||||
IDS_4126 "VHD di dimensioni dinamiche (.vhd)"
|
||||
IDS_4127 "VHD differenziato (.vhd)"
|
||||
IDS_4128 "Blocchi larghi (2 MB)"
|
||||
IDS_4129 "Blocchi piccoli (512 KB)"
|
||||
IDS_4130 "File VHD (*.VHD)\0*.VHD\0Tutti i file (*.*)\0*.*\0"
|
||||
IDS_4131 "Seleziona il VHD padre."
|
||||
IDS_4132 "Questo potrebbe significare che l'immagine padre sia stata modificata dopo la creazione dell'immagine di differenziazione.\n\nPuò anche succedere se i file immagini sono stati spostati o copiati, o da un errore nel programma che ha creato questo disco.\n\nVuoi aggiustare le marcature di tempo?"
|
||||
IDS_4133 "Le marcature di tempo padre e figlio non corrispondono"
|
||||
IDS_4134 "Impossibile aggiustare marcature di tempo VHD."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Disabilitato"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Disabilitato"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (cluster 1024)"
|
||||
IDS_5898 "DMF (cluster 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "RPM perfette"
|
||||
IDS_6145 "RPM 1%% sotto perfezione"
|
||||
IDS_6146 "RPM 1.5%% sotto perfezione"
|
||||
IDS_6147 "RPM 2%% sotto perfezione"
|
||||
|
||||
IDS_7168 "(Predefinito del sistema)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Italian (IT-it) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
641
src/win/languages/pt-BR.rc
Normal file
@@ -0,0 +1,641 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Portuguese (pt-BR) resources
|
||||
//
|
||||
// Translated by Altieres Lima da Silva, 2021
|
||||
//
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Ação"
|
||||
BEGIN
|
||||
MENUITEM "&Teclado requer captura", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "CTRL &direito é o ALT esquerdo", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Reinicialização completa...", 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 "&Pausar", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sair...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Exibir"
|
||||
BEGIN
|
||||
MENUITEM "&Ocultar barra de status", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
|
||||
MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Renderizador"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Especificar as dimensões...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "F&orçar proporção de tela em 4:3", IDM_VID_FORCE43
|
||||
POPUP "&Fator de redimensionamento da janela"
|
||||
BEGIN
|
||||
MENUITEM "&0,5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1,&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Método de filtragem"
|
||||
BEGIN
|
||||
MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Tela cheia\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Modo de &redimensionamento da tela cheia"
|
||||
BEGIN
|
||||
MENUITEM "&Tela cheia esticada", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "Pixel&s quadrados (manter proporção)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Redimensionamento com valores inteiros", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "Configurações E&GA/(S)VGA"
|
||||
BEGIN
|
||||
MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
|
||||
POPUP "&Tipo de tela VGA"
|
||||
BEGIN
|
||||
MENUITEM "&Cor RGB", IDM_VID_GRAY_RGB
|
||||
MENUITEM "Escala de cinza &RGB", IDM_VID_GRAY_MONO
|
||||
MENUITEM "Monitor &âmbar", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Tipo de &conversão de escala de cinza"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Média", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Overscan do CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
|
||||
MENUITEM "Alterar contraste para exibição &monocromática", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Mídia", IDM_MEDIA
|
||||
POPUP "&Ferramentas"
|
||||
BEGIN
|
||||
MENUITEM "&Configurações...", IDM_CONFIG
|
||||
MENUITEM "&Atualizar ícones da barra de status", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Alterar o &idioma de exibição...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ativar integração com o &Discord", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ganho de som...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Inicio do rastreamento\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Fim do rastreamento\tCtrl+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Registros"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "Ativar registros da BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Ativar registros do CD-ROM\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Ativar registros do disquete (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Ativar registros do controlador de disquete\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Ativar registros da IDE\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Ativar registros da porta serial\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Ativar registros da rede\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Ponto de parada no registo\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Despejo da RAM de &vídeo\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Ajuda"
|
||||
BEGIN
|
||||
MENUITEM "&Documentação...", IDM_DOCS
|
||||
MENUITEM "&Sobre o 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem existente...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Gravar", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&Rebobinar até o começo", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Avançar até o fim", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem existente...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Sem som", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Vazio", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem existente...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_ZIP_EJECT
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem existente...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_MO_EJECT
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Taxa de quadro pretendida"
|
||||
BEGIN
|
||||
MENUITEM "&Sincronizar com vídeo", IDM_VID_GL_FPS_BLITTER
|
||||
MENUITEM "&25 qps", IDM_VID_GL_FPS_25
|
||||
MENUITEM "&30 qps", IDM_VID_GL_FPS_30
|
||||
MENUITEM "&50 qps", IDM_VID_GL_FPS_50
|
||||
MENUITEM "&60 qps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 qps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "Sincronização &vertical", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Selecionar shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Remover shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Alterar idioma de exibição"
|
||||
#define STR_SND_GAIN "Ganho de som"
|
||||
#define STR_NEW_FLOPPY "Nova imagem de disquete"
|
||||
#define STR_CONFIG "Configurações do 86Box"
|
||||
#define STR_SPECIFY_DIM "Especifique as dimensões da janela principal"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Cancelar"
|
||||
#define STR_GLOBAL "Usar estas configurações como &padrões globais"
|
||||
#define STR_DEFAULT "&Padrão"
|
||||
#define STR_LANGUAGE "Idioma:"
|
||||
|
||||
#define STR_GAIN "Ganho"
|
||||
|
||||
#define STR_FILE_NAME "Nome:"
|
||||
#define STR_DISK_SIZE "Tamanho:"
|
||||
#define STR_RPM_MODE "Modo RPM:"
|
||||
#define STR_PROGRESS "Progresso:"
|
||||
|
||||
#define STR_WIDTH "Largura:"
|
||||
#define STR_HEIGHT "Altura:"
|
||||
#define STR_LOCK_TO_SIZE "Travar nesse tamanho"
|
||||
|
||||
#define STR_MACHINE_TYPE "Tipo de máquina:"
|
||||
#define STR_MACHINE "Máquina:"
|
||||
#define STR_CONFIGURE "Configurar"
|
||||
#define STR_CPU_TYPE "Tipo de CPU:"
|
||||
#define STR_SPEED "Veloc.:"
|
||||
#define STR_FPU "FPU:"
|
||||
#define STR_WAIT_STATES "Estados de espera:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memória:"
|
||||
#define STR_TIME_SYNC "Sincronização da hora"
|
||||
#define STR_DISABLED "Desativada"
|
||||
#define STR_ENABLED_LOCAL "Ativada (hora local)"
|
||||
#define STR_ENABLED_UTC "Ativada (UTC)"
|
||||
#define STR_DYNAREC "Recompilador dinâmico"
|
||||
|
||||
#define STR_VIDEO "Vídeo:"
|
||||
#define STR_VOODOO "3DFX Voodoo"
|
||||
|
||||
#define STR_MOUSE "Mouse:"
|
||||
#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_SOUND "Placa de som:"
|
||||
#define STR_MIDI "Disp. saída MIDI:"
|
||||
#define STR_MIDI_IN "Disp. entrada MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autônomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Usar som FLOAT32"
|
||||
|
||||
#define STR_NET_TYPE "Tipo de rede:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Adaptador de rede:"
|
||||
|
||||
#define STR_LPT1 "Dispositivo LPT1:"
|
||||
#define STR_LPT2 "Dispositivo LPT2:"
|
||||
#define STR_LPT3 "Dispositivo LPT3:"
|
||||
#define STR_SERIAL1 "Porta serial 1"
|
||||
#define STR_SERIAL2 "Porta serial 2"
|
||||
#define STR_SERIAL3 "Porta serial 3"
|
||||
#define STR_SERIAL4 "Porta serial 4"
|
||||
#define STR_PARALLEL1 "Porta paralela 1"
|
||||
#define STR_PARALLEL2 "Porta paralela 2"
|
||||
#define STR_PARALLEL3 "Porta paralela 3"
|
||||
|
||||
#define STR_HDC "Controlador HD:"
|
||||
#define STR_FDC "Controlador FD:"
|
||||
#define STR_IDE_TER "Controlador IDE terciário"
|
||||
#define STR_IDE_QUA "Controlador IDE quaternário"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Controlador 1:"
|
||||
#define STR_SCSI_2 "Controlador 2:"
|
||||
#define STR_SCSI_3 "Controlador 3:"
|
||||
#define STR_SCSI_4 "Controlador 4:"
|
||||
#define STR_CASSETTE "Cassete"
|
||||
|
||||
#define STR_HDD "Discos rígidos:"
|
||||
#define STR_NEW "&Novo..."
|
||||
#define STR_EXISTING "&Existente..."
|
||||
#define STR_REMOVE "&Remover"
|
||||
#define STR_BUS "Bar.:"
|
||||
#define STR_CHANNEL "Canal:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Especificar..."
|
||||
#define STR_SECTORS "Setores:"
|
||||
#define STR_HEADS "Cabeças:"
|
||||
#define STR_CYLS "Cilindros:"
|
||||
#define STR_SIZE_MB "Tamanho (MB):"
|
||||
#define STR_TYPE "Tipo:"
|
||||
#define STR_IMG_FORMAT "Formato da imagem:"
|
||||
#define STR_BLOCK_SIZE "Tamanho do bloco:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Unidades de disquete:"
|
||||
#define STR_TURBO "Turbo"
|
||||
#define STR_CHECKBPB "Verificar BPB"
|
||||
#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
|
||||
|
||||
#define STR_MO_DRIVES "Unidades magneto-ópticas:"
|
||||
#define STR_ZIP_DRIVES "Unidades ZIP:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "RTC ISA:"
|
||||
#define STR_ISAMEM "Expansão de memória ISA"
|
||||
#define STR_ISAMEM_1 "Placa 1:"
|
||||
#define STR_ISAMEM_2 "Placa 2:"
|
||||
#define STR_ISAMEM_3 "Placa 3:"
|
||||
#define STR_ISAMEM_4 "Placa 4:"
|
||||
#define STR_BUGGER "Dispositivo ISABugger"
|
||||
#define STR_POSTCARD "Placa de diagnóstico"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Erro"
|
||||
IDS_2050 "Erro fatal"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Use CTRL+ALT+PAGE DOWN para retornar ao modo janela"
|
||||
IDS_2053 "Velocidade"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem de ROM utilizável.\n\nPor favor, <a href=""https://github.com/86Box/roms/releases/latest"">baixe</a> um conjunto de ROM e extraia no diretório ""roms""."
|
||||
IDS_2057 "(vazio)"
|
||||
IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Lig."
|
||||
IDS_2061 "Desl."
|
||||
IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens de setor básico (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfície (*.86F)\0*.86F\0"
|
||||
IDS_2063 "A máquina ""%hs"" não está disponível devido à falta de ROMs no diretório roms/machines. Mudando para uma máquina disponível."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "A placa de vídeo ""%hs"" não está disponível devido à falta de ROMs no diretório roms/video. Mudando para uma placa de vídeo disponível."
|
||||
IDS_2065 "Máquina"
|
||||
IDS_2066 "Vídeo"
|
||||
IDS_2067 "Dispositivos de entrada"
|
||||
IDS_2068 "Som"
|
||||
IDS_2069 "Rede"
|
||||
IDS_2070 "Portas (COM & LPT)"
|
||||
IDS_2071 "Controladores de armaz."
|
||||
IDS_2072 "Discos rígidos"
|
||||
IDS_2073 "Disquete & CD-ROM"
|
||||
IDS_2074 "Dispos. removíveis"
|
||||
IDS_2075 "Outros periféricos"
|
||||
IDS_2076 "Imagens de superfície (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Clique para capturar o mouse"
|
||||
IDS_2078 "Aperte F8+F12 para liberar o mouse"
|
||||
IDS_2079 "Aperte F8+F12 ou botão do meio para liberar o mouse"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Não foi possível inicializar o FluidSynth"
|
||||
IDS_2081 "Barramento"
|
||||
IDS_2082 "Arquivo"
|
||||
IDS_2083 "CI"
|
||||
IDS_2084 "CA"
|
||||
IDS_2085 "SE"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Verificar BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Não foi possível inicializar o renderizador de vídeo."
|
||||
IDS_2090 "Padrão"
|
||||
IDS_2091 "%i estado(s) de espera"
|
||||
IDS_2092 "Tipo"
|
||||
IDS_2093 "Não foi possível configurar o PCap"
|
||||
IDS_2094 "Nenhum dispositivo PCap encontrado"
|
||||
IDS_2095 "Dispositivo PCap inválido"
|
||||
IDS_2096 "Joystick padrão de 2 botões"
|
||||
IDS_2097 "Joystick padrão de 4 botões"
|
||||
IDS_2098 "Joystick padrão de 6 botões"
|
||||
IDS_2099 "Joystick padrão de 8 botões"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Nada"
|
||||
IDS_2104 "Não foi possível carregar os aceleradores do teclado."
|
||||
IDS_2105 "Não foi possível registrar a entrada bruta."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Disquete %i (%s): %ls"
|
||||
IDS_2109 "Todas as imagens (*.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\0Imagens de setor avançado (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens de setor básico (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfície (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2110 "Não foi possível inicializar o FreeType"
|
||||
IDS_2111 "Não é possível inicializar o SDL, é necessário o SDL2.dll"
|
||||
IDS_2112 "Tem certeza de que deseja reiniciar completamente a máquina emulada?"
|
||||
IDS_2113 "Tem certeza de que deseja sair do 86Box?"
|
||||
IDS_2114 "Não é possível inicializar o Ghostscript"
|
||||
IDS_2115 "Magneto-óptico %i (%ls): %ls"
|
||||
IDS_2116 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2117 "Bem-vindo ao 86Box!"
|
||||
IDS_2118 "Controle interno"
|
||||
IDS_2119 "Sair"
|
||||
IDS_2120 "Nenhum ROM encontrada"
|
||||
IDS_2121 "Você deseja salvar as configurações?"
|
||||
IDS_2122 "Isto fará com que a máquina emulada seja reinicializada."
|
||||
IDS_2123 "Salvar"
|
||||
IDS_2124 "Sobre o 86Box"
|
||||
IDS_2125 "86Box versão" EMU_VERSION
|
||||
|
||||
IDS_2126 "Um emulador de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, e outros.\n\nTraduzido por: Altieres Lima da Silva\n\nLançado sob a Licença Pública Geral GNU versão 2 ou posterior. Veja o arquivo LICENSE para mais informações."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware não disponível"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Certifique-se de que " LIB_NAME_PCAP " esteja instalado e que você tenha uma conexão de rede compatível com " LIB_NAME_PCAP "."
|
||||
IDS_2130 "Configuração inválida"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " é necessário para emulação de impressora ESC/P."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " é necessário para a conversão automática de arquivos PostScript para PDF.\n\nQualquer documento enviado para a impressora genérica PostScript será salvo como arquivos PostScript (.ps)."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " é necessário para a saída MIDI FluidSynth."
|
||||
IDS_2134 "Entrando no modo de tela cheia"
|
||||
IDS_2135 "Não exibir esta mensagem novamente"
|
||||
IDS_2136 "Não sair"
|
||||
IDS_2137 "Reiniciar"
|
||||
IDS_2138 "Não reiniciar"
|
||||
IDS_2139 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2140 "Imagens de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2141 "Configuração do dispositivo %hs"
|
||||
IDS_2142 "Monitor em modo de suspensão"
|
||||
IDS_2143 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2144 "Opções do OpenGL"
|
||||
IDS_2145 "Você está carregando uma configuração não suportada"
|
||||
IDS_2146 "A filtragem do tipo CPU baseada na máquina selecionada é desativada para esta máquina emulada.\n\nIsto torna possível escolher uma CPU que de outra forma seria incompatível com a máquina selecionada. Entretanto, você pode encontrar incompatibilidades com a BIOS da máquina ou outro software.\n\nA ativação desta configuração não é oficialmente suportada e qualquer relatório de erro arquivado pode ser fechado como inválido."
|
||||
IDS_2147 "Continuar"
|
||||
IDS_2148 "Cassete: %s"
|
||||
IDS_2149 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_2150 "Cartucho %i: %ls"
|
||||
IDS_2151 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os arquivos (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Disco rígido (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "As unidades de CD-ROM MFM/RLL ou ESDI nunca existiram"
|
||||
IDS_4100 "Personalizado..."
|
||||
IDS_4101 "Personalizado (grande)..."
|
||||
IDS_4102 "Adicionar novo disco rígido"
|
||||
IDS_4103 "Adicionar disco rígido existente"
|
||||
IDS_4104 "As imagens de disco HDI não podem ser maiores do que 4GB."
|
||||
IDS_4105 "As imagens de disco não podem ser maiores do que 127GB."
|
||||
IDS_4106 "Imagens de disco rígido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_4107 "Não foi possível ler o arquivo"
|
||||
IDS_4108 "Não foi possível escrever o arquivo"
|
||||
IDS_4109 "Imagens HDI ou HDX com um tamanho de setor que não seja 512 não são suportadas."
|
||||
IDS_4110 "O USB ainda não é suportado"
|
||||
IDS_4111 "Esta imagem existe"
|
||||
IDS_4112 "Digite um nome de arquivo válido."
|
||||
IDS_4113 "A imagem foi criada com sucesso"
|
||||
IDS_4114 "Certifique-se de que o arquivo existe e é legível."
|
||||
IDS_4115 "Certifique-se de que o arquivo está sendo salvo em um diretório gravável."
|
||||
IDS_4116 "A imagem do disco é muito grande"
|
||||
IDS_4117 "Lembre-se de particionar e formatar a unidade recém-criada."
|
||||
IDS_4118 "O arquivo selecionado será sobrescrito. Você tem certeza de que deseja usá-lo?"
|
||||
IDS_4119 "Imagem de disco sem suporte"
|
||||
IDS_4120 "Sobrescrever"
|
||||
IDS_4121 "Não sobrescrever"
|
||||
IDS_4122 "Imagem bruta (.img)"
|
||||
IDS_4123 "Imagem HDI (.hdi)"
|
||||
IDS_4124 "Imagem HDX (.hdx)"
|
||||
IDS_4125 "VHD de tamanho fixo (.vhd)"
|
||||
IDS_4126 "VHD de tamanho dinâmico (.vhd)"
|
||||
IDS_4127 "VHD diferencial (.vhd)"
|
||||
IDS_4128 "Blocos grandes (2 MB)"
|
||||
IDS_4129 "Blocos pequenos (512 KB)"
|
||||
IDS_4130 "Arquivos VHD (*.VHD)\0*.VHD\0Todos os arquivos (*.*)\0*.*\0"
|
||||
IDS_4131 "Selecione o VHD pai"
|
||||
IDS_4132 "Isto pode significar que a imagem de origem foi modificada após a criação da imagem diferencial.\n\nTambém pode acontecer caso os arquivos de imagem tenham sido movidos ou copiados, ou por um erro no programa que criou este disco.\n\nVocê quer consertar os marcadores de tempo?"
|
||||
IDS_4133 "A data/hora dos arquivos de pais e filhos não correspondem"
|
||||
IDS_4134 "Não foi possível consertar o carimbo de data/hora da VHD."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Desativado"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Desativado"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (cluster 1024)"
|
||||
IDS_5898 "DMF (cluster 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "RPM perfeita"
|
||||
IDS_6145 "1%% abaixo das RPM perfeita"
|
||||
IDS_6146 "1.5%% abaixo das RPM perfeita"
|
||||
IDS_6147 "2%% abaixo das RPM perfeita"
|
||||
|
||||
IDS_7168 "(Padrão do sistema)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Portuguese (pt-BR) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
640
src/win/languages/pt-PT.rc
Normal file
@@ -0,0 +1,640 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Portuguese (Portugal) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Ação"
|
||||
BEGIN
|
||||
MENUITEM "&Teclado requere captura", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&CTRL direito é ALT esquerdo",IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Reinicialização completa...",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 "&Pausa", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sair...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Ver"
|
||||
BEGIN
|
||||
MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
|
||||
MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Renderizador"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE
|
||||
#endif
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Especificar dimensões...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&Forçar rácio de visualização 4:3", IDM_VID_FORCE43
|
||||
POPUP "F&actor de escala de janela"
|
||||
BEGIN
|
||||
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Método de filtragem"
|
||||
BEGIN
|
||||
MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&crã cheio\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Modo &de estiramento em ecrã cheio"
|
||||
BEGIN
|
||||
MENUITEM "&Estiramento em ecrã cheio", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "Pixels &quadrados (Manter rácio)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "Escala &inteira", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "Definições E&GA/(S)VGA"
|
||||
BEGIN
|
||||
MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
|
||||
POPUP "&Tipo de ecrã VGA"
|
||||
BEGIN
|
||||
MENUITEM "&Cores RGB", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB em escala de cinzentos", IDM_VID_GRAY_MONO
|
||||
MENUITEM "Monitor âmb&ar", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Tipo de &conversão para escala de cinzentos"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Media", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Overscan de CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
|
||||
MENUITEM "Mudar &contraste para ecrã monocromático", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Media", IDM_MEDIA
|
||||
POPUP "&Ferramentas"
|
||||
BEGIN
|
||||
MENUITEM "&Definições...", IDM_CONFIG
|
||||
MENUITEM "&Atualizar ícones da barra de estado", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Mudar idioma de a&presentação...", IDM_VID_PROG_SETT
|
||||
# ifdef USE_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ativar integração com &Discord", IDM_DISCORD
|
||||
# endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ganho de som...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Iniciar o rastreio\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Terminar o rastreio\tCtrl+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Registo"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "Ativar registo BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Ativar registo do CD-ROM\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Ativar registo de disquetes (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Ativar registo do controlador de disquetes\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Ativar registo IDE\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Ativar registo da porta série\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Ativar registo de rede\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Ponto de paragem no registo\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Despejo de RAM &vídeo\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Ajuda"
|
||||
BEGIN
|
||||
MENUITEM "&Documentação...", IDM_DOCS
|
||||
MENUITEM "&Acerca do 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Imagem &existente...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Gravar", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
|
||||
MENUITEM "Re&bobinar para o início", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Avanço rápido para o fim", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Imagem &existente...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Mute", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&CDROM vazio", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Imagem", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Imagem &existente...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_ZIP_EJECT
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Imagem &existente...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&jetar", IDM_MO_EJECT
|
||||
MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Taxa de quadros de destino"
|
||||
BEGIN
|
||||
MENUITEM "&Sincronizar com vídeo", IDM_VID_GL_FPS_BLITTER
|
||||
MENUITEM "&25 q/s", IDM_VID_GL_FPS_25
|
||||
MENUITEM "&30 q/s", IDM_VID_GL_FPS_30
|
||||
MENUITEM "&50 q/s", IDM_VID_GL_FPS_50
|
||||
MENUITEM "&60 q/s", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 q/s", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Selecionar shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Remover shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PROG_SETT "Mudar idioma de apresentação"
|
||||
#define STR_SND_GAIN "Ganho de som"
|
||||
#define STR_NEW_FLOPPY "Nova imagem"
|
||||
#define STR_CONFIG "Definições do 86Box"
|
||||
#define STR_SPECIFY_DIM "Especificar dimensões da janela principal"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Cancelar"
|
||||
#define STR_GLOBAL "Guardar estas definições como padrões &globais"
|
||||
#define STR_DEFAULT "&Padrão"
|
||||
#define STR_LANGUAGE "Idioma:"
|
||||
|
||||
#define STR_GAIN "Ganho"
|
||||
|
||||
#define STR_FILE_NAME "Nome:"
|
||||
#define STR_DISK_SIZE "Tamanho:"
|
||||
#define STR_RPM_MODE "Modo RPM:"
|
||||
#define STR_PROGRESS "Progresso:"
|
||||
|
||||
#define STR_WIDTH "Largura:"
|
||||
#define STR_HEIGHT "Altura:"
|
||||
#define STR_LOCK_TO_SIZE "Fixar neste tamanho"
|
||||
|
||||
#define STR_MACHINE_TYPE "Tipo de máquina:"
|
||||
#define STR_MACHINE "Máquina:"
|
||||
#define STR_CONFIGURE "Configurar"
|
||||
#define STR_CPU_TYPE "Tipo do CPU:"
|
||||
#define STR_SPEED "Velocidade:"
|
||||
#define STR_FPU "FPU:"
|
||||
#define STR_WAIT_STATES "Estados de espera:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Memória:"
|
||||
#define STR_TIME_SYNC "Sincronização da hora"
|
||||
#define STR_DISABLED "Desativada"
|
||||
#define STR_ENABLED_LOCAL "Ativada (hora local)"
|
||||
#define STR_ENABLED_UTC "Ativada (UTC)"
|
||||
#define STR_DYNAREC "Recompilador dinâmico"
|
||||
|
||||
#define STR_VIDEO "Vídeo:"
|
||||
#define STR_VOODOO "Gráficos Voodoo"
|
||||
|
||||
#define STR_MOUSE "Rato:"
|
||||
#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_SOUND "Placa de som:"
|
||||
#define STR_MIDI "Disp. saída MIDI:"
|
||||
#define STR_MIDI_IN "Disp. entrada MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autónomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Utilizar som FLOAT32"
|
||||
|
||||
#define STR_NET_TYPE "Tipo de rede:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Placa de rede:"
|
||||
|
||||
#define STR_LPT1 "Dispositivo LPT1:"
|
||||
#define STR_LPT2 "Dispositivo LPT2:"
|
||||
#define STR_LPT3 "Dispositivo LPT3:"
|
||||
#define STR_SERIAL1 "Porta de série 1"
|
||||
#define STR_SERIAL2 "Porta de série 2"
|
||||
#define STR_SERIAL3 "Porta de série 3"
|
||||
#define STR_SERIAL4 "Porta de série 4"
|
||||
#define STR_PARALLEL1 "Porta paralela 1"
|
||||
#define STR_PARALLEL2 "Porta paralela 2"
|
||||
#define STR_PARALLEL3 "Porta paralela 3"
|
||||
|
||||
#define STR_HDC "Controlador HD:"
|
||||
#define STR_FDC "Controlador FD:"
|
||||
#define STR_IDE_TER "Controlador IDE terciário"
|
||||
#define STR_IDE_QUA "Controlador IDE quaternário"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Controlador 1:"
|
||||
#define STR_SCSI_2 "Controlador 2:"
|
||||
#define STR_SCSI_3 "Controlador 3:"
|
||||
#define STR_SCSI_4 "Controlador 4:"
|
||||
#define STR_CASSETTE "Cassete"
|
||||
|
||||
#define STR_HDD "Discos rígidos:"
|
||||
#define STR_NEW "&Novo..."
|
||||
#define STR_EXISTING "&Existente..."
|
||||
#define STR_REMOVE "&Remover"
|
||||
#define STR_BUS "Barram.:"
|
||||
#define STR_CHANNEL "Canal:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Especificar..."
|
||||
#define STR_SECTORS "Sectores:"
|
||||
#define STR_HEADS "Cabeças:"
|
||||
#define STR_CYLS "Cilindros:"
|
||||
#define STR_SIZE_MB "Tamanho (MB):"
|
||||
#define STR_TYPE "Tipo:"
|
||||
#define STR_IMG_FORMAT "Formato de imagem:"
|
||||
#define STR_BLOCK_SIZE "Tamanho de bloco:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Unidades de disquete:"
|
||||
#define STR_TURBO "Velocidade turbo"
|
||||
#define STR_CHECKBPB "Verificar BPB"
|
||||
#define STR_CDROM_DRIVES "Unidades CD-ROM:"
|
||||
|
||||
#define STR_MO_DRIVES "Unidades magneto-ópticas:"
|
||||
#define STR_ZIP_DRIVES "Unidades ZIP:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA RTC:"
|
||||
#define STR_ISAMEM "Expansão de memória ISA"
|
||||
#define STR_ISAMEM_1 "Placa 1:"
|
||||
#define STR_ISAMEM_2 "Placa 2:"
|
||||
#define STR_ISAMEM_3 "Placa 3:"
|
||||
#define STR_ISAMEM_4 "Placa 4:"
|
||||
#define STR_BUGGER "Dispositivo ISABugger"
|
||||
#define STR_POSTCARD "Placa POST"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Erro"
|
||||
IDS_2050 "Erro fatal"
|
||||
IDS_2051 "<reservado>"
|
||||
IDS_2052 "Pressione CTRL+ALT+PAGE DOWN para voltar ao modo de janela."
|
||||
IDS_2053 "Velocidade"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem ROM utilizável.\n\nPor favor, vá a href=""https://github.com/86Box/roms/releases/latest"">descarregue</a> um pacote ROM e instale-o na pasta ""roms""."
|
||||
IDS_2057 "(empty)"
|
||||
IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Ativado"
|
||||
IDS_2061 "Desativado"
|
||||
IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens básicas de sector (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfície (*.86F)\0*.86F\0"
|
||||
IDS_2063 "A máquina ""%hs"" não está disponível devido à falta de ROMs na pasta roms/machines. A mudar para uma máquina disponível."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "A placa vídeo ""%hs"" não está disponível devido à falta de ROMs na pasta roms/video. A mudar para uma placa vídeo disponível."
|
||||
IDS_2065 "Máquina"
|
||||
IDS_2066 "Apresentação"
|
||||
IDS_2067 "Dispositivos de entrada"
|
||||
IDS_2068 "Som"
|
||||
IDS_2069 "Rede"
|
||||
IDS_2070 "Portas (COM e LPT)"
|
||||
IDS_2071 "Dispositivos de armazenamento"
|
||||
IDS_2072 "Discos rígidos"
|
||||
IDS_2073 "Unidades de disquete e CD-ROM"
|
||||
IDS_2074 "Outros dispostivos removíveis"
|
||||
IDS_2075 "Outros dispositivos"
|
||||
IDS_2076 "Imagens de superfície (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Clique para capturar o rato"
|
||||
IDS_2078 "Pressione F8+F12 para soltar o rato"
|
||||
IDS_2079 "Pressione F8+F12 ou tecla média para soltar o rato"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Não foi possível inicializar o FluidSynth"
|
||||
IDS_2081 "Barramento"
|
||||
IDS_2082 "Ficheiro"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "C"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Verificar BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Não foi possível inicializar o renderizador vídeo."
|
||||
IDS_2090 "Padrão"
|
||||
IDS_2091 "%i estado(s) de espera"
|
||||
IDS_2092 "Tipo"
|
||||
IDS_2093 "Falha na configuração de PCap"
|
||||
IDS_2094 "Não foi encontrado um dispositivo PCap"
|
||||
IDS_2095 "Dispositivo PCap inválido"
|
||||
IDS_2096 "Joystick(s) standard de 2 botões"
|
||||
IDS_2097 "Joystick(s) standard de 4 botões"
|
||||
IDS_2098 "Joystick(s) standard de 6 botões"
|
||||
IDS_2099 "Joystick(s) standard de 8 botões"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Nenhum"
|
||||
IDS_2104 "Não foi possível inicializar os aceleradores de teclado."
|
||||
IDS_2105 "Não foi possível registar a entrada bruta."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CCS: %i, %i, %i)"
|
||||
IDS_2108 "Disquete %i (%s): %ls"
|
||||
IDS_2109 "Todas as imagens (*.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\0Imagens avançadas de sector (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens básicas de sector (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfície (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2110 "Não foi possível inicializar o FreeType"
|
||||
IDS_2111 "Não foi possível inicializar o SDL. O ficheiro SDL2.dll é necessário!"
|
||||
IDS_2112 "Tem a certeza de que quer um reinício completo da máquina emulada?"
|
||||
IDS_2113 "Tem a certeza de que quer sair do 86Box?"
|
||||
IDS_2114 "Não foi possível inicializar o Ghostscript"
|
||||
IDS_2115 "Magneto-óptico %i (%ls): %ls"
|
||||
IDS_2116 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todas as imagens (*.*)\0*.*\0"
|
||||
IDS_2117 "Bem-vindos ao 86Box!"
|
||||
IDS_2118 "Controlador interno"
|
||||
IDS_2119 "Sair"
|
||||
IDS_2120 "Não foi encontrada nenhuma ROM"
|
||||
IDS_2121 "Deseja guardar as definições?"
|
||||
IDS_2122 "Isto irá causar um reinício completo da máquina emulada."
|
||||
IDS_2123 "Guardar"
|
||||
IDS_2124 "Acerca do 86Box"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
|
||||
IDS_2126 "Em emulator de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nUsado sob a licença GNU General Public License versão 2 ou posterior. Veja o ficheiro LICENSE para mais informações."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Hardware não disponível"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Certifique-se de que a biblioteca " LIB_NAME_PCAP " está instalada e de que está a utilizar uma ligação de rede compatível com a biblioteca " LIB_NAME_PCAP "."
|
||||
IDS_2130 "Configuração inválida"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " é requerida para a emulação de impressora ESC/P."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " é requerido para a conversão automática de ficheiros PostScript para ficheiros PDF.\n\nQualquer documento enviado para a impressora PostScript genérica será gravado como um ficheiro PostScript (.ps)."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " é necessário para a saída MIDI FluidSynth MIDI."
|
||||
IDS_2134 "A entrar no modo de ecrã cheio"
|
||||
IDS_2135 "Não mostrar mais esta mensagem"
|
||||
IDS_2136 "Não sair"
|
||||
IDS_2137 "Reiniciar"
|
||||
IDS_2138 "Não reiniciar"
|
||||
IDS_2139 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2140 "Imagens CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2141 "Configuração de dispositivo %hs"
|
||||
IDS_2142 "Ecrã em modo de sono"
|
||||
IDS_2143 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2144 "Opções de OpenGL"
|
||||
IDS_2145 "Está a carregar uma configuração sem suporte!"
|
||||
IDS_2146 "A filtragem do tipo de CPU baseada na máquina escolhida está desativada para esta máquina emulada.\n\nIsto torna possível escolher um CPU que, de outra forma, não seria compatível com a máquina escolhida. No entanto, pode não ser compatível com a BIOS da máquina ou outros programas.\n\nA activação desta definição não tem suporte oficial e qualquer relatório de erros pode ser fechado como inválido."
|
||||
IDS_2147 "Continuar"
|
||||
IDS_2148 "Cassete: %s"
|
||||
IDS_2149 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_2150 "Cartucho %i: %ls"
|
||||
IDS_2151 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Disco rígido (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "Unidades CD-ROM com barramento MFM/RLL ou ESDI nunca existiram!"
|
||||
IDS_4100 "Personalizado..."
|
||||
IDS_4101 "Personalizado (grande)..."
|
||||
IDS_4102 "Adicionar novo disco rígido"
|
||||
IDS_4103 "Adicionar disco rígido existente"
|
||||
IDS_4104 "As imagens de disco HDI não podem ter mais de 4 GB."
|
||||
IDS_4105 "As imagens de disco não podem ter mais de 127 GB."
|
||||
IDS_4106 "Imagens de disco rígido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_4107 "Não foi possível ler o ficheiro"
|
||||
IDS_4108 "Não foi possível escrever o ficheiro"
|
||||
IDS_4109 "Imagens HDI ou HDX com um tamanho de sector diferente de 512 não são suportadas."
|
||||
IDS_4110 "O barramento USB ainda não tem suporte"
|
||||
IDS_4111 "A imagem de disco já existe"
|
||||
IDS_4112 "Por favor, especifique um nome de ficheiro válido."
|
||||
IDS_4113 "Imagem de disco criada"
|
||||
IDS_4114 "Certifique-se de que o ficheiro existe e é legível."
|
||||
IDS_4115 "Certifique-se de que o ficheiro está a ser guardado numa pasta editável."
|
||||
IDS_4116 "Imagem de disco muito grande"
|
||||
IDS_4117 "Lembre-se de particionar e formatar o novo disco criado."
|
||||
IDS_4118 "O ficheiro selecionado será sobrescrito. Tem a certeza de que quer utilizá-lo?"
|
||||
IDS_4119 "Imagem de disco sem suporte"
|
||||
IDS_4120 "Sobrescrever"
|
||||
IDS_4121 "Não sobrescrever"
|
||||
IDS_4122 "Imagem bruta (.img)"
|
||||
IDS_4123 "Imagem HDI (.hdi)"
|
||||
IDS_4124 "Imagem HDX (.hdx)"
|
||||
IDS_4125 "VHD com tamanho fixo (.vhd)"
|
||||
IDS_4126 "VHD com tamanho dinâmico (.vhd)"
|
||||
IDS_4127 "VHD diferenciador (.vhd)"
|
||||
IDS_4128 "Blocos grandes (2 MB)"
|
||||
IDS_4129 "Blocos pequenos (512 KB)"
|
||||
IDS_4130 "Ficheiros VHD (*.VHD)\0*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
|
||||
IDS_4131 "Seleccione o VHD pai"
|
||||
IDS_4132 "Isto pode significar que a imagem pai foi modificada depois da criação da imagem diferenciadora.\n\nTambém pode acontecer se os ficheiros da imagem foram movidos ou copiados ou por causa de um erro no programa que criou este disco.\n\nQuer corrigir os carimbos de data/hora?"
|
||||
IDS_4133 "Os carimbos de data/hora dos discos pai e filho não correspondem!"
|
||||
IDS_4134 "Não foi possível corrigir o carimbo de data/hora do VHD."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Desativado"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Desativado"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1.2 MB"
|
||||
IDS_5895 "1.25 MB"
|
||||
IDS_5896 "1.44 MB"
|
||||
IDS_5897 "DMF (cluster 1024)"
|
||||
IDS_5898 "DMF (cluster 2048)"
|
||||
IDS_5899 "2.88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1.3Gb M.O."
|
||||
|
||||
IDS_6144 "RPM perfeito"
|
||||
IDS_6145 "RPM 1%% abaixo do RPM perfeito"
|
||||
IDS_6146 "RPM 1.5%% abaixo do RPM perfeito"
|
||||
IDS_6147 "RPM 2%% abaixo do RPM perfeito"
|
||||
|
||||
IDS_7168 "(Padrão do sistema)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Portuguese (Portugal) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
125
src/win/win.c
@@ -17,6 +17,7 @@
|
||||
* Copyright 2008-2019 Sarah Walker.
|
||||
* Copyright 2016-2019 Miran Grca.
|
||||
* Copyright 2017-2019 Fred N. van Kempen.
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#define UNICODE
|
||||
#define NTDDI_VERSION 0x06010000
|
||||
@@ -66,7 +67,7 @@ typedef struct {
|
||||
/* Platform Public data, specific. */
|
||||
HINSTANCE hinstance; /* application instance */
|
||||
HANDLE ghMutex;
|
||||
LCID lang_id; /* current language ID used */
|
||||
uint32_t lang_id, lang_sys; /* current and system language ID */
|
||||
DWORD dwSubLangID;
|
||||
int acp_utf8; /* Windows supports UTF-8 codepage */
|
||||
volatile int cpu_thread_run = 1;
|
||||
@@ -74,16 +75,16 @@ volatile int cpu_thread_run = 1;
|
||||
|
||||
/* Local data. */
|
||||
static HANDLE thMain;
|
||||
static rc_str_t *lpRCstr2048,
|
||||
*lpRCstr4096,
|
||||
*lpRCstr4352,
|
||||
*lpRCstr4608,
|
||||
*lpRCstr5120,
|
||||
*lpRCstr5376,
|
||||
*lpRCstr5632,
|
||||
*lpRCstr5888,
|
||||
*lpRCstr6144,
|
||||
*lpRCstr7168;
|
||||
static rc_str_t *lpRCstr2048 = NULL,
|
||||
*lpRCstr4096 = NULL,
|
||||
*lpRCstr4352 = NULL,
|
||||
*lpRCstr4608 = NULL,
|
||||
*lpRCstr5120 = NULL,
|
||||
*lpRCstr5376 = NULL,
|
||||
*lpRCstr5632 = NULL,
|
||||
*lpRCstr5888 = NULL,
|
||||
*lpRCstr6144 = NULL,
|
||||
*lpRCstr7168 = NULL;
|
||||
static int vid_api_inited = 0;
|
||||
static char *argbuf;
|
||||
static int first_use = 1;
|
||||
@@ -138,12 +139,32 @@ win_log(const char *fmt, ...)
|
||||
#define win_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
void
|
||||
free_string(rc_str_t **str)
|
||||
{
|
||||
if (*str != NULL) {
|
||||
free(*str);
|
||||
*str = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
LoadCommonStrings(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
free_string(&lpRCstr7168);
|
||||
free_string(&lpRCstr6144);
|
||||
free_string(&lpRCstr5888);
|
||||
free_string(&lpRCstr5632);
|
||||
free_string(&lpRCstr5376);
|
||||
free_string(&lpRCstr5120);
|
||||
free_string(&lpRCstr4608);
|
||||
free_string(&lpRCstr4352);
|
||||
free_string(&lpRCstr4096);
|
||||
free_string(&lpRCstr2048);
|
||||
|
||||
lpRCstr2048 = (rc_str_t *)malloc(STR_NUM_2048*sizeof(rc_str_t));
|
||||
lpRCstr4096 = (rc_str_t *)malloc(STR_NUM_4096*sizeof(rc_str_t));
|
||||
lpRCstr4352 = (rc_str_t *)malloc(STR_NUM_4352*sizeof(rc_str_t));
|
||||
@@ -221,21 +242,38 @@ size_t c16stombs(char dst[], const uint16_t src[], int len)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
has_language_changed(uint32_t id)
|
||||
{
|
||||
return (lang_id != id);
|
||||
}
|
||||
|
||||
|
||||
/* Set (or re-set) the language for the application. */
|
||||
void
|
||||
set_language(int id)
|
||||
set_language(uint32_t id)
|
||||
{
|
||||
LCID lcidNew = MAKELCID(id, dwSubLangID);
|
||||
|
||||
if (lang_id != lcidNew) {
|
||||
/* Set our new language ID. */
|
||||
lang_id = lcidNew;
|
||||
|
||||
SetThreadLocale(lang_id);
|
||||
|
||||
/* Load the strings table for this ID. */
|
||||
LoadCommonStrings();
|
||||
}
|
||||
if (id == 0xFFFF)
|
||||
{
|
||||
set_language(lang_sys);
|
||||
lang_id = id;
|
||||
return;
|
||||
}
|
||||
|
||||
if (lang_id != id) {
|
||||
/* Set our new language ID. */
|
||||
lang_id = id;
|
||||
SetThreadUILanguage(lang_id);
|
||||
|
||||
/* Load the strings table for this ID. */
|
||||
LoadCommonStrings();
|
||||
|
||||
/* Reload main menu */
|
||||
SetMenu(hwndMain, LoadMenu(hinstance, L"MainMenu"));
|
||||
|
||||
/* Re-init media menu */
|
||||
media_menu_init();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -434,10 +472,11 @@ WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpszArg, int nCmdShow)
|
||||
hinstance = hInst;
|
||||
|
||||
/* Set the application version ID string. */
|
||||
sprintf(emu_version, "%s v%s", EMU_NAME, EMU_VERSION);
|
||||
|
||||
/* First, set our (default) language. */
|
||||
set_language(0x0409);
|
||||
sprintf(emu_version, "%s v%s", EMU_NAME, EMU_VERSION_FULL);
|
||||
|
||||
/* First, set our (default) language. */
|
||||
lang_sys = GetThreadUILanguage();
|
||||
set_language(DEFAULT_LANGUAGE);
|
||||
|
||||
/* Process the command line for options. */
|
||||
argc = ProcessCommandLine(&argv);
|
||||
@@ -1164,6 +1203,38 @@ plat_vid_reload_options(void)
|
||||
vid_apis[vid_api].reload();
|
||||
}
|
||||
|
||||
/* Sets up the program language before initialization. */
|
||||
uint32_t
|
||||
plat_language_code(char* langcode)
|
||||
{
|
||||
if (!strcmp(langcode, "system"))
|
||||
return 0xFFFF;
|
||||
|
||||
int len = mbstoc16s(NULL, langcode, 0) + 1;
|
||||
wchar_t *temp = malloc(len * sizeof(wchar_t));
|
||||
mbstoc16s(temp, langcode, len);
|
||||
|
||||
LCID lcid = LocaleNameToLCID((LPWSTR)temp, 0);
|
||||
|
||||
free(temp);
|
||||
return lcid;
|
||||
}
|
||||
|
||||
/* Converts back the language code to LCID */
|
||||
void
|
||||
plat_language_code_r(uint32_t lcid, char* outbuf, int len)
|
||||
{
|
||||
if (lcid == 0xFFFF)
|
||||
{
|
||||
strcpy(outbuf, "system");
|
||||
return;
|
||||
}
|
||||
|
||||
wchar_t buffer[LOCALE_NAME_MAX_LENGTH + 1];
|
||||
LCIDToLocaleName(lcid, buffer, LOCALE_NAME_MAX_LENGTH, 0);
|
||||
|
||||
c16stombs(outbuf, buffer, len);
|
||||
}
|
||||
|
||||
void
|
||||
take_screenshot(void)
|
||||
|
||||
@@ -39,17 +39,23 @@ AboutDialogCreate(HWND hwnd)
|
||||
int i;
|
||||
TASKDIALOGCONFIG tdconfig = {0};
|
||||
TASKDIALOG_BUTTON tdbuttons[] = {
|
||||
{IDOK, EMU_SITE},
|
||||
{IDCANCEL, MAKEINTRESOURCE(IDS_2127)}
|
||||
{IDOK, EMU_SITE},
|
||||
{IDCANCEL, MAKEINTRESOURCE(IDS_2127)}
|
||||
};
|
||||
|
||||
wchar_t emu_version[256];
|
||||
i = swprintf(emu_version, sizeof(emu_version), L"%ls v%ls", EMU_NAME_W, EMU_VERSION_FULL_W);
|
||||
#ifdef EMU_GIT_HASH
|
||||
swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W);
|
||||
#endif
|
||||
|
||||
tdconfig.cbSize = sizeof(tdconfig);
|
||||
tdconfig.hwndParent = hwnd;
|
||||
tdconfig.hInstance = hinstance;
|
||||
tdconfig.dwCommonButtons = 0;
|
||||
tdconfig.pszWindowTitle = MAKEINTRESOURCE(IDS_2124);
|
||||
tdconfig.pszMainIcon = (PCWSTR) 10;
|
||||
tdconfig.pszMainInstruction = MAKEINTRESOURCE(IDS_2125);
|
||||
tdconfig.pszMainInstruction = emu_version;
|
||||
tdconfig.pszContent = MAKEINTRESOURCE(IDS_2126);
|
||||
tdconfig.cButtons = ARRAYSIZE(tdbuttons);
|
||||
tdconfig.pButtons = tdbuttons;
|
||||
@@ -57,5 +63,5 @@ AboutDialogCreate(HWND hwnd)
|
||||
TaskDialogIndirect(&tdconfig, &i, NULL, NULL);
|
||||
|
||||
if (i == IDOK)
|
||||
ShellExecute(hwnd, L"open", L"https://" EMU_SITE, NULL, NULL, SW_SHOW);
|
||||
ShellExecute(hwnd, L"open", L"https://" EMU_SITE, NULL, NULL, SW_SHOW);
|
||||
}
|
||||
|
||||
@@ -96,12 +96,24 @@ discord_update_activity(int paused)
|
||||
|
||||
activity.timestamps.start = time(NULL);
|
||||
|
||||
/* Icon choosing for Discord based on 86Box.rc */
|
||||
|
||||
#ifdef RELEASE_BUILD
|
||||
strcpy(activity.assets.large_image, "86box-rb");
|
||||
/* Icon by OBattler and laciba96 (green for release builds)*/
|
||||
strcpy(activity.assets.large_image, "86box-green");
|
||||
#elif BETA_BUILD
|
||||
/* Icon by OBattler and laciba96 (yellow for beta builds done by Jenkins)*/
|
||||
strcpy(activity.assets.large_image, "86box-yellow");
|
||||
#elif ALPHA_BUILD
|
||||
/* Icon by OBattler and laciba96 (red for alpha builds done by Jenkins)*/
|
||||
strcpy(activity.assets.large_image, "86box-red");
|
||||
#else
|
||||
/* Icon by OBattler and laciba96 (gray for builds of branches and from the git master)*/
|
||||
strcpy(activity.assets.large_image, "86box");
|
||||
#endif
|
||||
|
||||
/* End of icon choosing */
|
||||
|
||||
if (paused)
|
||||
{
|
||||
strcpy(activity.assets.small_image, "status-paused");
|
||||
@@ -147,7 +159,7 @@ discord_init()
|
||||
return;
|
||||
|
||||
DiscordCreateParamsSetDefault(¶ms);
|
||||
params.client_id = 651478134352248832;
|
||||
params.client_id = 906956844956782613;
|
||||
params.flags = DiscordCreateFlags_NoRequireDiscord;
|
||||
|
||||
result = discord_create(DISCORD_VERSION, ¶ms, &discord_core);
|
||||
|
||||