mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 01:25:33 -07:00
Merge branch 'master' of https://github.com/86Box/86Box
This commit is contained in:
30
CODE_OF_CONDUCT.md
Normal file
30
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Code of Conduct
|
||||
In order for everyone to enjoy their time contributing to 86Box or otherwise being a part of the community, we kindly ask you to review and follow the below rules.
|
||||
|
||||
## 1. No illegal activity or GitHub ToS violations
|
||||
- 1.1. Do not distribute malware for non-research purposes. Post samples in a clearly named encrypted archive.
|
||||
- 1.2. Posting old software is allowed if at least 10 years old and out of support.
|
||||
- 1.3. Do not post NSFW content (defined at the staff's discretion).
|
||||
- 1.4. Do not do anything forbidden by the law or the Discord or GitHub Terms of Service.
|
||||
|
||||
## 2. No offensive or disruptive behavior or harassment
|
||||
- 2.1. No gate-keeping. We aim to accommodate and welcome people of all different opinions and knowledge levels to this community.
|
||||
- 2.2. You may speak any language but provide a summary in English so that we can understand what you are saying and use English when requested.
|
||||
- 2.3. Do not retroactively delete messages or do major edits unless you posted something by mistake.
|
||||
- 2.4. Do not antagonize, defame, demean, blackmail, impersonate, dox others, bring outside drama, use intentionally offensive profile aspects, or otherwise post messages to start a fight (eg. platform wars). Discuss or debate the idea, not the person.
|
||||
- 2.5. Do not backseat moderate, spam, flood, unsolicitedly ping people, advertise without permission, or evade blocks.
|
||||
- 2.6. Do not speak on behalf of the project unless you are a team member. This includes all messages which could reasonably be understood as being an official position. Ask a team member if you're unsure about your message.
|
||||
- 2.7. Decisions by higher-ranked users supersede those by lower-ranked users.
|
||||
- 2.8. Do not engage in political discussions.
|
||||
- 2.9. Ignoring essential communication from team members does not exempt you from possible actions against you. Seniority must be earned.
|
||||
|
||||
## 3. Moderation and appeal protocol
|
||||
- 3.1. Rule violations are punished at the team's discretion, taking all circumstances into account.
|
||||
- 3.2. Rules enforcement must be equal, impartial, and not retroactive or politically motivated.
|
||||
- 3.3. Everyone is innocent until proven guilty.
|
||||
- 3.4. Unless there is an emergency, urgent action is otherwise warranted, or a user is participating with the express purpose of violating our rules, the team shall deliberate before taking action in order to reach consensus and avoid team conflicts.
|
||||
|
||||
## 4. Do not insist on requests or suggestions
|
||||
- 4.1. You may politely request something from us; if rejected, you are going to be told why and what to do to have it reconsidered.
|
||||
- 4.2. Follow the contribution requirements listed on the GitHub readme.
|
||||
- 4.3. Follow proper procedure (eg. for pull requests or bug reports).
|
||||
@@ -392,6 +392,7 @@ extern const char * machine_getname_ex(int m);
|
||||
extern const char * machine_get_internal_name(void);
|
||||
extern const char * machine_get_nvr_name(void);
|
||||
extern int machine_get_machine_from_internal_name(const char *s);
|
||||
extern int machine_get_machine_from_internal_name_ex(const char *s); /* returns -1 if internal name does not exist. */
|
||||
extern void machine_init(void);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *machine_get_kbc_device(int m);
|
||||
|
||||
@@ -14788,7 +14788,7 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P,
|
||||
CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L),
|
||||
CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L, CPU_WINCHIP, CPU_WINCHIP2),
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2800,
|
||||
@@ -20709,6 +20709,21 @@ machine_get_machine_from_internal_name(const char *s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
machine_get_machine_from_internal_name_ex(const char *s)
|
||||
{
|
||||
int c = 0;
|
||||
|
||||
while (machines[c].init != NULL) {
|
||||
if (!strcmp(machines[c].internal_name, s))
|
||||
return c;
|
||||
c++;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
machine_has_mouse(void)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-12-06 18:56+0000\n"
|
||||
"PO-Revision-Date: 2025-12-29 09:54+0000\n"
|
||||
"Last-Translator: Daniel Gurney <daniel@gurney.dev>\n"
|
||||
"Language-Team: Finnish <https://weblate.86box.net/projects/86box/86box/fi/>\n"
|
||||
"Language: fi-FI\n"
|
||||
@@ -211,13 +211,13 @@ msgid "Take s&creenshot"
|
||||
msgstr "Ota &kuvakaappaus"
|
||||
|
||||
msgid "Take &raw screenshot"
|
||||
msgstr "Ota &raaka kuvakaapus"
|
||||
msgstr "Ota &raaka kuvakaappaus"
|
||||
|
||||
msgid "C&opy screenshot"
|
||||
msgstr "K&opia kuvakaapaus"
|
||||
msgstr "K&opioi kuvakaappaus"
|
||||
|
||||
msgid "Copy r&aw screenshot"
|
||||
msgstr "Kopia r&aaka kuvakaapaus"
|
||||
msgstr "Kopioi r&aaka kuvakaappaus"
|
||||
|
||||
msgid "S&ound"
|
||||
msgstr "&Ääni"
|
||||
|
||||
@@ -55,10 +55,10 @@ msgid "&Resizeable window"
|
||||
msgstr "Fenêtre &redimensionnable"
|
||||
|
||||
msgid "R&emember size && position"
|
||||
msgstr "S&auvegarder taille && position"
|
||||
msgstr "S&auvegarder taille et position"
|
||||
|
||||
msgid "Remember size && position"
|
||||
msgstr "Sauvegarder taille && position"
|
||||
msgstr "Sauvegarder taille et position"
|
||||
|
||||
msgid "Re&nderer"
|
||||
msgstr "Moteur de re&ndu vidéo"
|
||||
@@ -691,7 +691,7 @@ msgid "&Removable disk %1 (%2): %3"
|
||||
msgstr "&Disque amovible %1 (%2) : %3"
|
||||
|
||||
msgid "Removable disk images"
|
||||
msgstr "Imges de disque amovible"
|
||||
msgstr "Images de disque amovible"
|
||||
|
||||
msgid "Image %1"
|
||||
msgstr "Image %1"
|
||||
@@ -931,7 +931,7 @@ msgid "Advanced sector images"
|
||||
msgstr "Images secteur avancé"
|
||||
|
||||
msgid "Flux images"
|
||||
msgstr "Images Flux"
|
||||
msgstr "Images de flux"
|
||||
|
||||
msgid "Are you sure you want to hard reset the emulated machine?"
|
||||
msgstr "Etes-vous sûr de vouloir réinitialiser la machine émulée ?"
|
||||
@@ -1957,7 +1957,7 @@ msgid "Translate 26 -> 17"
|
||||
msgstr "Traduire 26 -> 17"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Langage"
|
||||
msgstr "Langue"
|
||||
|
||||
msgid "Enable backlight"
|
||||
msgstr "Activer le rétro-éclairage"
|
||||
@@ -2662,28 +2662,28 @@ msgid "High performance impact"
|
||||
msgstr "Impact important sur la performance"
|
||||
|
||||
msgid "[Generic] RAM Disk (max. speed)"
|
||||
msgstr "[Generic] Disque RAM (vitesse maximale)"
|
||||
msgstr "[Générique] Disque RAM (vitesse maximale)"
|
||||
|
||||
msgid "[Generic] 1989 (3500 RPM)"
|
||||
msgstr "[Generic] 1989 (3500 RPM)"
|
||||
msgstr "[Générique] 1989 (3500 RPM)"
|
||||
|
||||
msgid "[Generic] 1992 (3600 RPM)"
|
||||
msgstr "[Generic] 1992 (3600 RPM)"
|
||||
msgstr "[Générique] 1992 (3600 RPM)"
|
||||
|
||||
msgid "[Generic] 1994 (4500 RPM)"
|
||||
msgstr "[Generic] 1994 (4500 RPM)"
|
||||
msgstr "[Générique] 1994 (4500 RPM)"
|
||||
|
||||
msgid "[Generic] 1996 (5400 RPM)"
|
||||
msgstr "[Generic] 1996 (5400 RPM)"
|
||||
msgstr "[Générique] 1996 (5400 RPM)"
|
||||
|
||||
msgid "[Generic] 1997 (5400 RPM)"
|
||||
msgstr "[Generic] 1997 (5400 RPM)"
|
||||
msgstr "[Générique] 1997 (5400 RPM)"
|
||||
|
||||
msgid "[Generic] 1998 (5400 RPM)"
|
||||
msgstr "[Generic] 1998 (5400 RPM)"
|
||||
msgstr "[Générique] 1998 (5400 RPM)"
|
||||
|
||||
msgid "[Generic] 2000 (7200 RPM)"
|
||||
msgstr "[Generic] 2000 (7200 RPM)"
|
||||
msgstr "[Générique] 2000 (7200 RPM)"
|
||||
|
||||
msgid "IBM 8514/A clone (ISA)"
|
||||
msgstr "Clone IBM 8514/A (ISA)"
|
||||
@@ -2911,7 +2911,7 @@ msgid "You are currently running build <b>%1</b>."
|
||||
msgstr "Vous exécutez actuellement le build <b>%1</b>."
|
||||
|
||||
msgid "<b>Build %1</b> is now available."
|
||||
msgstr "<b>Le Build %1</b> est désormais disponible."
|
||||
msgstr "<b>Le build %1</b> est désormais disponible."
|
||||
|
||||
msgid "Would you like to visit the download page?"
|
||||
msgstr "Souhaitez-vous visiter la page de téléchargement ?"
|
||||
|
||||
@@ -154,13 +154,13 @@ msgid "VGA screen &type"
|
||||
msgstr "Schermi &VGA"
|
||||
|
||||
msgid "RGB &Color"
|
||||
msgstr "RGB a &Colori"
|
||||
msgstr "RGB a &colori"
|
||||
|
||||
msgid "RGB (no brown)"
|
||||
msgstr "RGB (senza marrone)"
|
||||
|
||||
msgid "&RGB Grayscale"
|
||||
msgstr "&RGB a Scala di grigi"
|
||||
msgstr "&RGB a scala di grigi"
|
||||
|
||||
msgid "Generic RGBI color monitor"
|
||||
msgstr "Monitor a colori RGBI generico"
|
||||
@@ -1123,7 +1123,7 @@ msgid "VMs: %1"
|
||||
msgstr "Macchine virtuali: %1"
|
||||
|
||||
msgid "System Directory:"
|
||||
msgstr "Directory Sistema:"
|
||||
msgstr "Directory sistema:"
|
||||
|
||||
msgid "Choose directory"
|
||||
msgstr "Scegli la directory"
|
||||
@@ -2392,10 +2392,10 @@ msgid "Wheel"
|
||||
msgstr "Rotellina"
|
||||
|
||||
msgid "Five + Wheel"
|
||||
msgstr "Cinque + Rotellina"
|
||||
msgstr "Cinque + rotellina"
|
||||
|
||||
msgid "Five + 2 Wheels"
|
||||
msgstr "Cinque + 2 Rotelline"
|
||||
msgstr "Cinque + 2 rotelline"
|
||||
|
||||
msgid "A3 - SMT2 Serial / SMT3(R)V"
|
||||
msgstr "A3 - SMT2 seriale / SMT3(R)V"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-12-07 13:33+0000\n"
|
||||
"PO-Revision-Date: 2025-12-30 13:56+0000\n"
|
||||
"Last-Translator: Alexander Babikov <lemondrops358@gmail.com>\n"
|
||||
"Language-Team: Russian <https://weblate.86box.net/projects/86box/86box/ru/>\n"
|
||||
"Language: ru-RU\n"
|
||||
@@ -212,13 +212,13 @@ msgid "Take s&creenshot"
|
||||
msgstr "Сделать с&криншот"
|
||||
|
||||
msgid "Take &raw screenshot"
|
||||
msgstr "Сделать &сырой скриншот"
|
||||
msgstr "Сделать н&еобработанный скриншот"
|
||||
|
||||
msgid "C&opy screenshot"
|
||||
msgstr "С&копировать скриншот"
|
||||
msgstr "Ско&пировать скриншот"
|
||||
|
||||
msgid "Copy r&aw screenshot"
|
||||
msgstr "Скопировать с&ырой скриншот"
|
||||
msgstr "Скопировать необработанный скрин&шот"
|
||||
|
||||
msgid "S&ound"
|
||||
msgstr "&Звук"
|
||||
|
||||
@@ -202,16 +202,16 @@ msgid "&Update status bar icons"
|
||||
msgstr "更新狀態列圖示(&U)"
|
||||
|
||||
msgid "Take s&creenshot"
|
||||
msgstr "擷圖(&C)"
|
||||
msgstr "擷取螢幕畫面(&C)"
|
||||
|
||||
msgid "Take &raw screenshot"
|
||||
msgstr "原始擷圖(&R)"
|
||||
msgstr "擷取原始螢幕畫面(&R)"
|
||||
|
||||
msgid "C&opy screenshot"
|
||||
msgstr "複製擷圖(&O)"
|
||||
msgstr "擷取螢幕畫面至剪貼簿(&O)"
|
||||
|
||||
msgid "Copy r&aw screenshot"
|
||||
msgstr "複製原始擷圖(&A)"
|
||||
msgstr " 擷取原始螢幕畫面至剪貼薄(&A)"
|
||||
|
||||
msgid "S&ound"
|
||||
msgstr "聲音(&O)"
|
||||
@@ -340,7 +340,7 @@ msgid "Machine:"
|
||||
msgstr "機型:"
|
||||
|
||||
msgid "Configure"
|
||||
msgstr "設定"
|
||||
msgstr "組態"
|
||||
|
||||
msgid "CPU:"
|
||||
msgstr "CPU:"
|
||||
@@ -652,13 +652,13 @@ msgid "Card 4:"
|
||||
msgstr "擴充卡 4:"
|
||||
|
||||
msgid "Generic ISA ROM Board"
|
||||
msgstr "通用 ISA ROM 板"
|
||||
msgstr "通用 ISA 單 ROM 板"
|
||||
|
||||
msgid "Generic Dual ISA ROM Board"
|
||||
msgstr "通用雙 ISA ROM 板"
|
||||
msgstr "通用 ISA 雙 ROM 板"
|
||||
|
||||
msgid "Generic Quad ISA ROM Board"
|
||||
msgstr "通用四通道 ISA ROM 板"
|
||||
msgstr "通用 ISA 四 ROM 板"
|
||||
|
||||
msgid "ISABugger device"
|
||||
msgstr "ISABugger 裝置"
|
||||
@@ -904,10 +904,10 @@ msgid "Steering wheel (3-axis, 4-button)"
|
||||
msgstr "方向盤 (3 軸, 4 鍵搖桿)"
|
||||
|
||||
msgid "Thrustmaster Formula T1/T2 with adapter"
|
||||
msgstr "附轉接器 Thrustmaster Formula T1/T2"
|
||||
msgstr "Thrustmaster Formula T1/T2 附轉接器"
|
||||
|
||||
msgid "Thrustmaster Formula T1/T2 without adapter"
|
||||
msgstr "不附轉接器 Thrustmaster Formula T1/T2"
|
||||
msgstr "Thrustmaster Formula T1/T2 不附轉接器 "
|
||||
|
||||
msgid "None"
|
||||
msgstr "無"
|
||||
@@ -1006,7 +1006,7 @@ msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny docum
|
||||
msgstr "自動將 PCL 檔案轉換為 PDF 需要 %1。\n\n使用通用 PCL 印表機列印的文件將被儲存為 Printer Command Language (.pcl) 檔案。"
|
||||
|
||||
msgid "Don't show this message again"
|
||||
msgstr "不要再顯示此消息"
|
||||
msgstr "不要再顯示此訊息"
|
||||
|
||||
msgid "Don't exit"
|
||||
msgstr "不退出"
|
||||
@@ -1021,7 +1021,7 @@ msgid "CD-ROM images"
|
||||
msgstr "光碟影像"
|
||||
|
||||
msgid "%1 Device Configuration"
|
||||
msgstr "%1 裝置設定"
|
||||
msgstr "%1 裝置組態"
|
||||
|
||||
msgid "Monitor in sleep mode"
|
||||
msgstr "監視器處在睡眠狀態"
|
||||
@@ -1297,7 +1297,7 @@ msgid "An error has occurred while checking for updates: %1"
|
||||
msgstr "檢查更新時發生錯誤: %1"
|
||||
|
||||
msgid "<b>An update to 86Box is available!</b>"
|
||||
msgstr "<b>86Box 的更新可用!</b>"
|
||||
msgstr "<b>有 86Box 的更新可用!</b>"
|
||||
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
@@ -1312,10 +1312,10 @@ msgid "&Delete"
|
||||
msgstr "刪除(&D)"
|
||||
|
||||
msgid "Do you really want to delete the virtual machine \"%1\" and all its files? This action cannot be undone!"
|
||||
msgstr "您真的想要刪除虛擬機器 \"%1\" 及其所有檔案嗎?此操作無法撤銷!"
|
||||
msgstr "您真的想要刪除虛擬機器 \"%1\" 及其所有檔案嗎?此操作無法回復!"
|
||||
|
||||
msgid "Show &config file"
|
||||
msgstr "顯示設定檔(&C)"
|
||||
msgstr "顯示組態檔(&C)"
|
||||
|
||||
msgid "No screenshot"
|
||||
msgstr "沒有螢幕畫面擷取"
|
||||
@@ -1915,7 +1915,7 @@ msgid "Enable BIOS extension ROM Writes (ROM #4)"
|
||||
msgstr "啟用 BIOS 擴充 ROM 寫入 (ROM 4)"
|
||||
|
||||
msgid "Linear framebuffer base"
|
||||
msgstr "線性圖框緩衝記憶體的起始位址"
|
||||
msgstr "線性影格緩衝記憶體的起始位址"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "位址"
|
||||
@@ -2335,7 +2335,7 @@ msgid "Address for > 2 MB"
|
||||
msgstr "> 2 MB 的位址"
|
||||
|
||||
msgid "Frame Address"
|
||||
msgstr "影格位址"
|
||||
msgstr "頁框位址"
|
||||
|
||||
msgid "USA"
|
||||
msgstr "美國"
|
||||
@@ -2554,13 +2554,13 @@ msgid "Mono Interlaced"
|
||||
msgstr "單色隔行掃描"
|
||||
|
||||
msgid "Mono Non-Interlaced"
|
||||
msgstr "單色非隔行掃描"
|
||||
msgstr "單色逐行掃描"
|
||||
|
||||
msgid "Color Interlaced"
|
||||
msgstr "彩色隔行掃描"
|
||||
|
||||
msgid "Color Non-Interlaced"
|
||||
msgstr "彩色非隔行掃描"
|
||||
msgstr "彩色逐行掃描"
|
||||
|
||||
msgid "3Dfx Voodoo Graphics"
|
||||
msgstr "3Dfx Voodoo 圖形"
|
||||
@@ -2761,28 +2761,28 @@ msgid "Could not load file %1"
|
||||
msgstr "無法載入檔案 %1"
|
||||
|
||||
msgid "Key Bindings:"
|
||||
msgstr "按鍵綁定:"
|
||||
msgstr "按鍵組合:"
|
||||
|
||||
msgid "Action"
|
||||
msgstr "行動"
|
||||
msgstr "動作"
|
||||
|
||||
msgid "Keybind"
|
||||
msgstr "鍵盤綁定"
|
||||
msgstr "按鍵組合"
|
||||
|
||||
msgid "Clear binding"
|
||||
msgstr "解除綁定"
|
||||
msgstr "解除組合"
|
||||
|
||||
msgid "Bind"
|
||||
msgstr "綁定"
|
||||
msgstr "組合"
|
||||
|
||||
msgid "Bind Key"
|
||||
msgstr "綁定按鍵"
|
||||
msgstr "組合按鍵"
|
||||
|
||||
msgid "Enter key combo:"
|
||||
msgstr "輸入組合鍵:"
|
||||
|
||||
msgid "Bind conflict"
|
||||
msgstr "綁定衝突"
|
||||
msgstr "組合衝突"
|
||||
|
||||
msgid "This key combo is already in use."
|
||||
msgstr "此組合鍵已在使用中。"
|
||||
@@ -2932,7 +2932,7 @@ msgid "Virtual machine crash"
|
||||
msgstr "虛擬機當機"
|
||||
|
||||
msgid "The virtual machine \"%1\"'s process has unexpectedly terminated with exit code %2."
|
||||
msgstr "虛擬機 \"%1\" 的進程以退出代碼 %2 意外終止。"
|
||||
msgstr "虛擬機 \"%1\" 的行程以結束碼 %2 意外終止。"
|
||||
|
||||
msgid "The system will not be added."
|
||||
msgstr "系統將不會被新增。"
|
||||
|
||||
@@ -263,8 +263,6 @@ VMManagerDetails::updateConfig(VMManagerSystem *passed_sysconfig)
|
||||
// * First you clear it with VMManagerDetailSection::clear()
|
||||
// * Then you add each line with VMManagerDetailSection::addSection()
|
||||
|
||||
setUpdatesEnabled(false);
|
||||
|
||||
// System
|
||||
systemSection->clear();
|
||||
systemSection->addSection("Machine", passed_sysconfig->getDisplayValue(VMManager::Display::Name::Machine));
|
||||
@@ -322,8 +320,6 @@ VMManagerDetails::updateConfig(VMManagerSystem *passed_sysconfig)
|
||||
inputSection->setSections();
|
||||
portsSection->setSections();
|
||||
otherSection->setSections();
|
||||
|
||||
setUpdatesEnabled(true);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -39,10 +39,6 @@ VMManagerDetailSection::
|
||||
ui->setupUi(this);
|
||||
|
||||
frameGridLayout = new QGridLayout();
|
||||
frameGridLayout->setContentsMargins(getMargins(MarginSection::DisplayGrid));
|
||||
ui->detailFrame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
ui->detailFrame->setLayout(frameGridLayout);
|
||||
|
||||
// Create the collapse button, set the name and add it to the layout
|
||||
collapseButton = new CollapseButton();
|
||||
setSectionName(sectionName);
|
||||
@@ -132,8 +128,6 @@ VMManagerDetailSection::
|
||||
innerFrameLayout->addWidget(buttonWidget);
|
||||
innerFrameLayout->addWidget(frame);
|
||||
setLayout(outerFrameLayout);
|
||||
|
||||
usedRows = 0;
|
||||
}
|
||||
|
||||
VMManagerDetailSection::~VMManagerDetailSection()
|
||||
@@ -162,7 +156,6 @@ VMManagerDetailSection::setupMainLayout()
|
||||
delete mainLayout;
|
||||
mainLayout = new QVBoxLayout;
|
||||
}
|
||||
|
||||
void
|
||||
VMManagerDetailSection::setSections()
|
||||
{
|
||||
@@ -179,64 +172,52 @@ VMManagerDetailSection::setSections()
|
||||
continue;
|
||||
}
|
||||
|
||||
auto item = frameGridLayout->itemAtPosition(row, 1);
|
||||
QLabel *label;
|
||||
if (item) {
|
||||
label = (QLabel *) item->widget();
|
||||
label->setVisible(true);
|
||||
} else {
|
||||
label = new QLabel();
|
||||
label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
|
||||
label->setTextInteractionFlags(label->textInteractionFlags() | Qt::TextSelectableByMouse);
|
||||
frameGridLayout->addWidget(label, row, 1, Qt::AlignLeft);
|
||||
}
|
||||
label->setText(line);
|
||||
const auto labelValue = new QLabel();
|
||||
labelValue->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
|
||||
labelValue->setTextInteractionFlags(labelValue->textInteractionFlags() | Qt::TextSelectableByMouse);
|
||||
labelValue->setText(line);
|
||||
frameGridLayout->addWidget(labelValue, row, 1, Qt::AlignLeft);
|
||||
|
||||
item = frameGridLayout->itemAtPosition(row, 0);
|
||||
if (!labelKey) {
|
||||
if (item) {
|
||||
labelKey = (QLabel *) item->widget();
|
||||
labelKey->setVisible(true);
|
||||
} else {
|
||||
labelKey = new QLabel();
|
||||
labelKey->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
|
||||
frameGridLayout->addWidget(labelKey, row, 0, Qt::AlignLeft);
|
||||
}
|
||||
labelKey = new QLabel();
|
||||
labelKey->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
|
||||
labelKey->setTextInteractionFlags(labelValue->textInteractionFlags());
|
||||
labelKey->setText(QCoreApplication::translate("", QString(section.name + ":").toUtf8().data()));
|
||||
} else if (item) {
|
||||
item->widget()->setVisible(false);
|
||||
}
|
||||
|
||||
if (!frameGridLayout->itemAtPosition(row, 2)) {
|
||||
const auto hSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||
frameGridLayout->addItem(hSpacer, row, 2);
|
||||
frameGridLayout->addWidget(labelKey, row, 0, Qt::AlignLeft);
|
||||
}
|
||||
|
||||
const auto hSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||
frameGridLayout->addItem(hSpacer, row, 2);
|
||||
empty = false;
|
||||
row++;
|
||||
}
|
||||
}
|
||||
|
||||
int prevUsedRows = usedRows;
|
||||
usedRows = row;
|
||||
for (; row < prevUsedRows; row++) {
|
||||
for (int i = 0; i <= 1; i++) {
|
||||
auto item = frameGridLayout->itemAtPosition(row, i);
|
||||
if (item)
|
||||
item->widget()->setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
collapseButton->setContent(ui->detailFrame);
|
||||
if (!empty)
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
void
|
||||
VMManagerDetailSection::clear()
|
||||
{
|
||||
sections.clear();
|
||||
setVisible(false);
|
||||
|
||||
// Clear everything out
|
||||
if (frameGridLayout) {
|
||||
while (frameGridLayout->count()) {
|
||||
QLayoutItem *cur_item = frameGridLayout->takeAt(0);
|
||||
if (cur_item->widget())
|
||||
delete cur_item->widget();
|
||||
delete cur_item;
|
||||
}
|
||||
}
|
||||
|
||||
delete frameGridLayout;
|
||||
frameGridLayout = new QGridLayout();
|
||||
frameGridLayout->setContentsMargins(getMargins(MarginSection::DisplayGrid));
|
||||
ui->detailFrame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
ui->detailFrame->setLayout(frameGridLayout);
|
||||
}
|
||||
|
||||
#ifdef Q_OS_WINDOWS
|
||||
|
||||
@@ -91,7 +91,6 @@ private:
|
||||
static QMargins getMargins(MarginSection section);
|
||||
|
||||
QString sectionName;
|
||||
int usedRows;
|
||||
|
||||
struct DetailSection {
|
||||
QString name;
|
||||
|
||||
@@ -521,14 +521,11 @@ VMManagerSystem::setupVars()
|
||||
auto machine_name = QString();
|
||||
int i = 0;
|
||||
int ram_granularity = 0;
|
||||
int ci = machine_get_machine_from_internal_name_ex(machine_config["machine"].toUtf8());
|
||||
// Machine
|
||||
for (int ci = 0; ci < machine_count(); ++ci) {
|
||||
if (machine_available(ci)) {
|
||||
if (machines[ci].internal_name == machine_config["machine"]) {
|
||||
machine_name = machines[ci].name;
|
||||
ram_granularity = machines[ci].ram.step;
|
||||
}
|
||||
}
|
||||
if (ci != -1 && machine_available(ci)) {
|
||||
machine_name = machines[ci].name;
|
||||
ram_granularity = machines[ci].ram.step;
|
||||
}
|
||||
display_table[VMManager::Display::Name::Machine] = machine_name;
|
||||
|
||||
|
||||
@@ -2169,6 +2169,14 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
|
||||
uint32_t dest_dat;
|
||||
uint32_t host_dat = 0;
|
||||
int mix = 0;
|
||||
int draw_pixel = !(mach64->dst_cntl & DST_POLYGON_EN);
|
||||
|
||||
if (mach64->dst_cntl & DST_POLYGON_EN) {
|
||||
if (mach64->dst_cntl & DST_Y_MAJOR)
|
||||
draw_pixel = 1;
|
||||
else if (mach64->accel.err >= 0)
|
||||
draw_pixel = 1;
|
||||
}
|
||||
|
||||
if (mach64->accel.source_host) {
|
||||
host_dat = cpu_dat;
|
||||
@@ -2215,7 +2223,7 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
|
||||
break;
|
||||
}
|
||||
|
||||
if ((mach64->accel.dst_x >= mach64->accel.sc_left) && (mach64->accel.dst_x <= mach64->accel.sc_right) && (mach64->accel.dst_y >= mach64->accel.sc_top) && (mach64->accel.dst_y <= mach64->accel.sc_bottom)) {
|
||||
if ((mach64->accel.dst_x >= mach64->accel.sc_left) && (mach64->accel.dst_x <= mach64->accel.sc_right) && (mach64->accel.dst_y >= mach64->accel.sc_top) && (mach64->accel.dst_y <= mach64->accel.sc_bottom) && draw_pixel) {
|
||||
switch (mix ? mach64->accel.source_fg : mach64->accel.source_bg) {
|
||||
case SRC_HOST:
|
||||
src_dat = host_dat;
|
||||
@@ -2285,17 +2293,21 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
|
||||
|
||||
if (mach64->dst_cntl & DST_Y_MAJOR) {
|
||||
mach64->accel.dst_y += mach64->accel.yinc;
|
||||
mach64->accel.src_y += mach64->accel.yinc;
|
||||
if (mach64->accel.err >= 0) {
|
||||
mach64->accel.err += mach64->dst_bres_dec;
|
||||
mach64->accel.dst_x += mach64->accel.xinc;
|
||||
mach64->accel.src_x += mach64->accel.xinc;
|
||||
} else {
|
||||
mach64->accel.err += mach64->dst_bres_inc;
|
||||
}
|
||||
} else {
|
||||
mach64->accel.dst_x += mach64->accel.xinc;
|
||||
mach64->accel.src_x += mach64->accel.xinc;
|
||||
if (mach64->accel.err >= 0) {
|
||||
mach64->accel.err += mach64->dst_bres_dec;
|
||||
mach64->accel.dst_y += mach64->accel.yinc;
|
||||
mach64->accel.src_y += mach64->accel.yinc;
|
||||
} else {
|
||||
mach64->accel.err += mach64->dst_bres_inc;
|
||||
}
|
||||
@@ -2347,9 +2359,7 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
|
||||
if (mach64->dst_cntl & DST_POLYGON_EN) {
|
||||
if (mach64->dst_cntl & DST_Y_MAJOR)
|
||||
draw_pixel = 1;
|
||||
else if ((mach64->dst_cntl & DST_X_DIR) && mach64->accel.err < (mach64->dst_bres_dec + mach64->dst_bres_inc)) /*X+*/
|
||||
draw_pixel = 1;
|
||||
else if (!(mach64->dst_cntl & DST_X_DIR) && mach64->accel.err >= 0) /*X-*/
|
||||
else if (mach64->accel.err >= 0)
|
||||
draw_pixel = 1;
|
||||
}
|
||||
|
||||
@@ -2406,62 +2416,27 @@ mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64)
|
||||
return;
|
||||
}
|
||||
|
||||
switch (mach64->dst_cntl & 7) {
|
||||
case 0:
|
||||
case 2:
|
||||
mach64->accel.src_x--;
|
||||
mach64->accel.dst_x--;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
mach64->accel.src_x++;
|
||||
mach64->accel.dst_x++;
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
mach64->accel.src_y--;
|
||||
mach64->accel.dst_y--;
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
mach64->accel.src_y++;
|
||||
mach64->accel.dst_y++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
mach64_log("x %i y %i err %i inc %i dec %i\n", mach64->accel.dst_x, mach64->accel.dst_y, mach64->accel.err, mach64->dst_bres_inc, mach64->dst_bres_dec);
|
||||
if (mach64->accel.err >= 0) {
|
||||
mach64->accel.err += mach64->dst_bres_dec;
|
||||
|
||||
switch (mach64->dst_cntl & 7) {
|
||||
case 0:
|
||||
case 1:
|
||||
mach64->accel.src_y--;
|
||||
mach64->accel.dst_y--;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
mach64->accel.src_y++;
|
||||
mach64->accel.dst_y++;
|
||||
break;
|
||||
case 4:
|
||||
case 6:
|
||||
mach64->accel.src_x--;
|
||||
mach64->accel.dst_x--;
|
||||
break;
|
||||
case 5:
|
||||
case 7:
|
||||
mach64->accel.src_x++;
|
||||
mach64->accel.dst_x++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
if (mach64->dst_cntl & DST_Y_MAJOR) {
|
||||
mach64->accel.dst_y += mach64->accel.yinc;
|
||||
mach64->accel.src_y += mach64->accel.yinc;
|
||||
if (mach64->accel.err >= 0) {
|
||||
mach64->accel.err += mach64->dst_bres_dec;
|
||||
mach64->accel.dst_x += mach64->accel.xinc;
|
||||
mach64->accel.src_x += mach64->accel.xinc;
|
||||
} else {
|
||||
mach64->accel.err += mach64->dst_bres_inc;
|
||||
}
|
||||
} else
|
||||
mach64->accel.err += mach64->dst_bres_inc;
|
||||
} else {
|
||||
mach64->accel.dst_x += mach64->accel.xinc;
|
||||
mach64->accel.src_x += mach64->accel.xinc;
|
||||
if (mach64->accel.err >= 0) {
|
||||
mach64->accel.err += mach64->dst_bres_dec;
|
||||
mach64->accel.dst_y += mach64->accel.yinc;
|
||||
mach64->accel.src_y += mach64->accel.yinc;
|
||||
} else {
|
||||
mach64->accel.err += mach64->dst_bres_inc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <stdatomic.h>
|
||||
#define HAVE_STDARG_H
|
||||
#include <86box/86box.h>
|
||||
#include "cpu.h"
|
||||
#include <86box/io.h>
|
||||
#include <86box/timer.h>
|
||||
#include <86box/dma.h>
|
||||
@@ -1191,6 +1192,9 @@ s3_virge_mmio_read(uint32_t addr, void *priv)
|
||||
virge_t *virge = (virge_t *) priv;
|
||||
uint8_t ret;
|
||||
|
||||
/* Add wait states for MMIO reads to prevent excessive polling */
|
||||
cycles -= virge->svga.monitor->mon_video_timing_read_b;
|
||||
|
||||
switch (addr & 0xffff) {
|
||||
case 0x8504:
|
||||
if (!virge->virge_busy)
|
||||
@@ -1242,6 +1246,9 @@ s3_virge_mmio_read_w(uint32_t addr, void *priv)
|
||||
virge_t *virge = (virge_t *) priv;
|
||||
uint16_t ret;
|
||||
|
||||
/* Add wait states for MMIO reads to prevent excessive polling */
|
||||
cycles -= virge->svga.monitor->mon_video_timing_read_w;
|
||||
|
||||
switch (addr & 0xfffe) {
|
||||
case 0x8504:
|
||||
ret = 0xc000;
|
||||
@@ -1275,6 +1282,9 @@ s3_virge_mmio_read_l(uint32_t addr, void *priv)
|
||||
virge_t *virge = (virge_t *) priv;
|
||||
uint32_t ret = 0xffffffff;
|
||||
|
||||
/* Add wait states for MMIO reads to prevent excessive polling */
|
||||
cycles -= virge->svga.monitor->mon_video_timing_read_l;
|
||||
|
||||
switch (addr & 0xfffc) {
|
||||
case 0x8180:
|
||||
ret = virge->streams.pri_ctrl;
|
||||
|
||||
Reference in New Issue
Block a user