From 913c7c682b50b7d86afc703764aa426212baa64d Mon Sep 17 00:00:00 2001 From: TC1995 Date: Wed, 17 Dec 2025 22:13:37 +0100 Subject: [PATCH 1/2] Refresh rate fixes for mach8/32 and tgui9440/96x0 The Trident ones are a reworked port of MAME's code. --- src/video/vid_ati_mach8.c | 62 +++++++++++++-------------------------- src/video/vid_tgui9440.c | 36 ++++++++++++++++------- 2 files changed, 46 insertions(+), 52 deletions(-) diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index b9092881b..81abadd56 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -2371,7 +2371,7 @@ mach_out(uint16_t addr, uint8_t val, void *priv) svga->write_bank = mach->bank_w << 16; if (mach->index == 0xbe) { - if ((old ^ val) & 0x10) { + if ((old ^ val) & 0x13) { mach_log("ATI BE bit 4.\n"); svga_recalctimings(svga); } @@ -3320,30 +3320,30 @@ mach_recalctimings(svga_t *svga) } else { dev->mode = VGA_MODE; if (!svga->scrblank && svga->attr_palette_enable) { - mach_log("GDCREG5=%02x, ATTR10=%02x, ATI B0 bit 5=%02x, ON=%d.\n", - svga->gdcreg[5] & 0x60, svga->attrregs[0x10] & 0x40, mach->regs[0xb0] & 0x20, dev->on); + mach_log("GDCREG5=%02x, ATTR10=%02x, ATI B0 bit 5=%02x, ON=%d, char_width=%d, seqreg1 bit 3=%x, clk_sel=%02x.\n", + svga->gdcreg[5] & 0x60, svga->attrregs[0x10] & 0x40, mach->regs[0xb0] & 0x20, dev->on, svga->char_width, svga->seqregs[1] & 0x08, clock_sel); + if (ATI_MACH32) + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); + else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen); + + switch ((mach->regs[0xb8] >> 6) & 3) { + case 1: + svga->clock *= 2.0; + break; + case 2: + svga->clock *= 3.0; + break; + case 3: + svga->clock *= 4.0; + break; + default: + break; + } mach_log("VGA clock sel=%02x, divide reg=%02x, miscout bits2-3=%x, machregbe bit4=%02x, machregb9 bit1=%02x, charwidth=%d, htotal=%02x, hdisptime=%02x, seqregs1 bit 3=%02x.\n", clock_sel, (mach->regs[0xb8] >> 6) & 3, svga->miscout & 0x0c, mach->regs[0xbe] & 0x10, mach->regs[0xb9] & 0x02, svga->char_width, svga->htotal, svga->hdisp_time, svga->seqregs[1] & 8); if ((svga->gdcreg[6] & 0x01) || (svga->attrregs[0x10] & 0x01)) { if ((svga->gdcreg[5] & 0x40) || (svga->attrregs[0x10] & 0x40) || (mach->regs[0xb0] & 0x20)) { - if (ATI_MACH32) - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); - else - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen); - - switch ((mach->regs[0xb8] >> 6) & 3) { - case 1: - svga->clock *= 2.0; - break; - case 2: - svga->clock *= 3.0; - break; - case 3: - svga->clock *= 4.0; - break; - default: - break; - } svga->map8 = svga->pallook; mach_log("Lowres=%x, seqreg[1]bit3=%x.\n", svga->lowres, svga->seqregs[1] & 8); if (svga->lowres) @@ -3356,26 +3356,6 @@ mach_recalctimings(svga_t *svga) } } } - } else { - if (ATI_MACH32) - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); - else - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel ^ 0x08, svga->clock_gen); - - switch ((mach->regs[0xb8] >> 6) & 3) { - case 0: - default: - break; - case 1: - svga->clock *= 2.0; - break; - case 2: - svga->clock *= 3.0; - break; - case 3: - svga->clock *= 4.0; - break; - } } } } diff --git a/src/video/vid_tgui9440.c b/src/video/vid_tgui9440.c index 30f76abfa..28c02363c 100644 --- a/src/video/vid_tgui9440.c +++ b/src/video/vid_tgui9440.c @@ -161,7 +161,7 @@ typedef struct tgui_t { uint8_t ramdac_ctrl; uint8_t alt_clock; - int clock_m, clock_n, clock_k; + uint16_t vclk; uint32_t vram_size, vram_mask; @@ -567,17 +567,18 @@ tgui_out(uint16_t addr, uint8_t val, void *priv) return; case 0x3DB: - tgui->alt_clock = val & 0xe3; + tgui->alt_clock = val; + svga_recalctimings(svga); return; case 0x43c8: - tgui->clock_n = val & 0x7f; - tgui->clock_m = (tgui->clock_m & ~1) | (val >> 7); - break; + tgui->vclk = (tgui->vclk & 0xff00) | val; + svga_recalctimings(svga); + return; case 0x43c9: - tgui->clock_m = (tgui->clock_m & ~0x1e) | ((val << 1) & 0x1e); - tgui->clock_k = (val & 0x10) >> 4; - break; + tgui->vclk = (tgui->vclk & 0x00ff) | (val << 8); + svga_recalctimings(svga); + return; default: break; @@ -693,6 +694,9 @@ tgui_recalctimings(svga_t *svga) uint8_t ger22lower = (tgui->accel.ger22 & 0xff); uint8_t ger22upper = (tgui->accel.ger22 >> 8); int std_vga_clock = 1; + int m = 0; + int n = 0; + int k = 0; if (tgui->type >= TGUI_9440) { if ((svga->crtc[0x38] & 0x19) == 0x09) @@ -764,13 +768,23 @@ tgui_recalctimings(svga_t *svga) svga->lowres = !(svga->crtc[0x2a] & 0x40); if (tgui->type >= TGUI_9440) { - if (svga->miscout & 8) - svga->clock = (cpuclock * (double) (1ULL << 32)) / (((tgui->clock_n + 8) * 14318180.0) / ((tgui->clock_m + 2) * (1 << tgui->clock_k))); + // Bits 0-6: M + // Bits 7-11: N + // Bit 12: K + // Later formula extends each variable by one extra bit (Providia 9685 and later) + if (((svga->miscout & 0x0c) >> 2) == 0x02) { + m = tgui->vclk & 0x007f; + n = (tgui->vclk & 0x0f80) >> 7; + k = (tgui->vclk & 0x1000) >> 12; + svga->clock = (cpuclock * (double) (1ULL << 32)) / (((m + 8) * 14318180.0) / ((n + 2) * (1 << k))); + } - if (svga->gdcreg[0xf] & 0x08) + if ((svga->gdcreg[0xf] & 0x08) || (tgui->alt_clock & 0x20)) svga->clock *= 2.0; else if (svga->gdcreg[0xf] & 0x40) svga->clock *= 3.0; + + pclog("GDCREGF=%02x, miscout=%02x.\n", svga->gdcreg[0xf] & 0x48, svga->miscout & 0x0c); } else { //pclog("TGUI9400CXi: Clock double=%d.\n", (((svga->miscout >> 2) & 3) | ((tgui->newctrl2 << 2) & 4) | ((tgui->newctrl2 >> 3) & 8))); switch (((svga->miscout >> 2) & 3) | ((tgui->newctrl2 << 2) & 4) | ((tgui->newctrl2 >> 3) & 8)) { From 6b3fa522ab562c091ea1e51b19bc0a4a02cc2e87 Mon Sep 17 00:00:00 2001 From: Yuuya <83148287+YuuyaGitHub@users.noreply.github.com> Date: Thu, 18 Dec 2025 08:32:19 +0900 Subject: [PATCH 2/2] Refine Japanese translations in ja-JP.po Updated various Japanese translations to remove unnecessary punctuation and improve consistency. --- src/qt/languages/ja-JP.po | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 967316e99..cfd44daba 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -1667,7 +1667,7 @@ msgid "Unknown Bus" msgstr "不明なバス" msgid "Null Driver" -msgstr "ヌル・ドライバー" +msgstr "ヌルドライバー" msgid "NIC:" msgstr "NIC:" @@ -1778,16 +1778,16 @@ msgid "Novell NetWare 2.x Key Card" msgstr "Novell NetWare 2.xキーカード" msgid "Serial port passthrough 1" -msgstr "シリアル・ポート・パススルー 1" +msgstr "シリアルポートパススルー 1" msgid "Serial port passthrough 2" -msgstr "シリアル・ポート・パススルー 2" +msgstr "シリアルポートパススルー 2" msgid "Serial port passthrough 3" -msgstr "シリアル・ポート・パススルー 3" +msgstr "シリアルポートパススルー 3" msgid "Serial port passthrough 4" -msgstr "シリアル・ポート・パススルー 4" +msgstr "シリアルポートパススルー 4" msgid "Renderer &options…" msgstr "レンダラー設定(&O)…" @@ -2015,10 +2015,10 @@ msgid "Chorus Voices" msgstr "コーラスの声" msgid "Chorus Level" -msgstr "コーラス・レベル" +msgstr "コーラスレベル" msgid "Chorus Speed" -msgstr "コーラス・スピード" +msgstr "コーラススピード" msgid "Chorus Depth" msgstr "コーラスの深さ" @@ -2030,16 +2030,16 @@ msgid "Reverb" msgstr "リバーブ" msgid "Reverb Room Size" -msgstr "リバーブ・ルームの大きさ" +msgstr "リバーブルームの大きさ" msgid "Reverb Damping" -msgstr "リバーブ・ダンピング" +msgstr "リバーブダンピング" msgid "Reverb Width" msgstr "リバーブ幅" msgid "Reverb Level" -msgstr "リバーブ・レベル" +msgstr "リバーブレベル" msgid "Interpolation Method" msgstr "補間法" @@ -2054,7 +2054,7 @@ msgid "Reversed stereo" msgstr "逆ステレオ" msgid "Nice ramp" -msgstr "ナイス・スロープ" +msgstr "ナイススロープ" msgid "Hz" msgstr "ヘルツ" @@ -2144,7 +2144,7 @@ msgid "SID Filter Strength" msgstr "SIDフィルターの強度" msgid "Surround module" -msgstr "サラウンド・モジュール" +msgstr "サラウンドモジュール" msgid "SB Address" msgstr "SBアドレス" @@ -2219,7 +2219,7 @@ msgid "Display type" msgstr "表示タイプ" msgid "Composite type" -msgstr "コンポジット・タイプ" +msgstr "コンポジットタイプ" msgid "RGB type" msgstr "RGBタイプ" @@ -2228,7 +2228,7 @@ msgid "Line doubling type" msgstr "ライン倍増タイプ" msgid "Snow emulation" -msgstr "スノー・エミュレーション" +msgstr "スノーエミュレーション" msgid "Monitor type" msgstr "モニタータイプ" @@ -2255,7 +2255,7 @@ msgid "Font" msgstr "フォント" msgid "Bilinear filtering" -msgstr "バイリニア・フィルタリング" +msgstr "バイリニアフィルタリング" msgid "Video chroma-keying" msgstr "ビデオのクロマキー処理" @@ -2549,16 +2549,16 @@ msgid "Apply overscan deltas" msgstr "オーバースキャンデルタを適用する" msgid "Mono Interlaced" -msgstr "モノラル・インターレース" +msgstr "モノラルインターレース" msgid "Mono Non-Interlaced" -msgstr "モノラル・ノンインターレース" +msgstr "モノラルノンインターレース" msgid "Color Interlaced" -msgstr "カラー・インターレース" +msgstr "カラーインターレース" msgid "Color Non-Interlaced" -msgstr "カラー・ノンインターレース" +msgstr "カラーノンインターレース" msgid "3Dfx Voodoo Graphics" msgstr "3dfx Voodooグラフィック" @@ -2594,7 +2594,7 @@ msgid "Stereo LPT DAC" msgstr "ステレオLPT DAC" msgid "Generic Text Printer" -msgstr "汎用テキスト・プリンタ" +msgstr "汎用テキストプリンタ" msgid "Generic ESC/P 2 Dot-Matrix Printer" msgstr "汎用ESC/P 2ドットマトリクスプリンタ" @@ -2606,19 +2606,19 @@ msgid "Generic PCL5e Printer" msgstr "汎用PCL5eプリンタ" msgid "Parallel Line Internet Protocol" -msgstr "パラレルライン・インターネット・プロトコル" +msgstr "パラレルラインインターネットプロトコル" msgid "Protection Dongle for Savage Quest" -msgstr "サベージ・クエスト用プロテクション・ドングル" +msgstr "サベージクエスト用プロテクションドングル" msgid "Serial Passthrough Device" -msgstr "シリアル・ポート・パススルー・デバイス" +msgstr "シリアルポートパススルーデバイス" msgid "Passthrough Mode" msgstr "パススルーモード" msgid "Host Serial Device" -msgstr "ホスト・シリアル・デバイス" +msgstr "ホストシリアルデバイス" msgid "Name of pipe" msgstr "パイプ名"