遊戲年代 GOAL GOAL

 找回密碼
 立即註冊
搜索
查看: 824|回復: 24

[PC版模擬器] [NES模擬器] FCEUX 2.7.0 EX 繁/簡/英文版 Fix4

[複製鏈接]

20

主題

189

帖子

3796

積分

銀牌會員

Rank: 5Rank: 5

積分
3796
發表於 2026-8-19 16:59:38 | 顯示全部樓層 |閱讀模式
本帖最後由 good7 於 2026-10-3 17:38 編輯

[NES模擬器]FCEUX 2.7.0 ex 繁、簡、英文版 Fix4

2026/09/14 修復
修復搖桿連接問題。

Fix6:
https://u.pcloud.link/publink/sh ... e8IPM02irHCoyUmyXoX

這個 rom 已經支援了,請有玩的人遊戲也測試有無問題,謝謝。

sshot-2026-10-03-[11-51-39].png
Fix4:
Fceux270_EX_Fix4.7z

================================================================


這是正式版,我將這程式改名為 Fceux 2.7.0 EX 以示與原版有所區別。

新增一個功能 → 按鍵「按著不放」,模擬在機台上插牙籤的樣子,持續輸出按鍵。
用法是,遊戲按鍵按著不放,再接著按「右Shift」即可完成按著不放的設定,這樣就會持續輸出該按鍵。
取消的方法,就是按「右Shift」鍵。如果再按一次「右Shift」鍵,則之前如果有設定按鍵的話,
就直接取前「值」輸出,就是說,現在變成 on/off 設定,要設定成別的按鍵,也是如此設定。
適用場合,玩「射擊」類的遊戲,這也是我新增這個功能的因素。
這個與本專案的自動射擊模式有些不同(算是強化吧)它這個功能實作好像沒有完成的樣子。

b1.png

數字區的 + 鍵,現在設定為切換調色盤的功能。
我在本專案內放了10個調色盤,再加上由檔案載入的(索引0號)共 11 個,依序循環,沒有載入檔案的調色盤
時,切換到這裡就直接跳過了。

我再寫一個「注入器」,玩 fds 的遊戲需要 disksys.rom 這個 bios ,這個注入器會將這個檔案注入到程式的 fceux-27.exe 內,
以後就不用 disksys.rom 這個檔案了,(因為內嵌在 fceux-27.exe 內了。)

使用方法,將 disksys.rom 與注入器,如圖,和本程式的 fceux-27.exe 檔,放在同資料夾下,執行它就可以了。
執行完後,注入器程式與 disksys.rom 就不需要了。


b7.png


下載 v2.7.0 EX(正式版)
https://u.pcloud.link/publink/sh ... 3z3spjJ9VJ1A0DEIOVV

這個是 NES 的模擬器。

也是從 gIThUb 抓下來的自行編譯修改而成的,
有興趣的人可下載回去玩玩。

.Libarchive 3.8.5 更新到 3.8.9 (解壓縮程式碼,關於 .7z .zip 的東西。)
.增加「程式置頂」功能。
.增加「啟動時自動載入上次的遊戲」功能。
.增加「睡眠模式」功能。(就是休眠功能。)
.增加「倒帶」功能。(R 鍵按住不動倒帶。)
.修復一些錯誤。(包括 FDS 換片的問題。)

.修復一些遊戲問題。(官方原本的問題。)beta6


Fix5:
sshot-2026-09-15-[12-29-17]-2.png sshot-2026-09-15-[12-33-19].png

Fix4:
sshot-2026-09-01-[10-19-02].png sshot-2026-09-11-[16-14-01].png
sshot-2026-09-06-[15-37-15].png sshot-2026-09-06-[15-38-07].png
sshot-2026-09-02-[20-03-06].png sshot-2026-09-03-[09-46-40].png
sshot-2026-09-01-[19-57-13].png sshot-2026-09-01-[20-47-14].png
sshot-2026-09-02-[12-49-58].png sshot-2026-09-02-[08-42-47].png
sshot-2026-09-02-[12-34-24].png sshot-2026-09-01-[12-16-12].png

sshot-2026-09-01-[10-18-27].png sshot-2026-09-01-[10-17-33].png

sshot-2026-09-01-[10-18-01].png sshot-2026-09-01-[10-18-33].png

sshot-2026-09-01-[10-18-14].png sshot-2026-09-01-[10-17-06].png

sshot-2026-09-01-[10-17-17].png sshot-2026-09-01-[10-16-55].png

sshot-2026-08-26-[15-46-31].png sshot-2026-08-25-[19-11-50].png

sshot-2026-08-23-[16-32-03].png sshot-2026-08-23-[16-32-37].png

sshot-2026-08-23-[15-29-27].png sshot-2026-08-22-[18-07-50].png



這個 Reshade 著色器也可以用喔,選 OpenGL 就可以了。
sshot-2026-08-22-[18-18-04].png
sshot-2026-08-22-[18-18-41].png

sshot-2026-08-22-[18-19-09].png

sshot-2026-08-22-[18-19-18].png












sshot-2026-08-25-[16-23-56].png
sshot-2026-09-01-[10-18-21].png
sshot-2026-09-01-[10-17-27].png

評分

參與人數 4威望 +1 金錢 +75 貢獻 +1 收起 理由
Kristine_chen + 30 感謝分享
bookk + 5 發言精彩
shuchong124 + 10 感謝分享
ili789 + 1 + 30 + 1 感謝分享

查看全部評分

回復

使用道具 舉報

20

主題

189

帖子

3796

積分

銀牌會員

Rank: 5Rank: 5

積分
3796
 樓主| 發表於 2026-8-19 17:28:45 | 顯示全部樓層
本帖最後由 good7 於 2026-9-4 22:42 編輯

sshot-2026-08-22-[19-16-17].png

記憶體搜尋指導書.txt.rar (17.8 KB, 下載次數: 10)

================================================================
        FCEUX RAM 搜尋功能完整指導書
================================================================
撰寫日期:2026-08-22
依據版本:FCEUX 2.7.0-interim (build-clang, Qt 驅動)
原始碼位置:src/drivers/Qt/RamSearch.cpp + RamSearch.h

================================================================
一、功能概述
================================================================

RAM 搜尋(Ram Search)是 FCEUX 內建的即時記憶體搜尋工具,
用於在 NES 模擬器運行時,透過反覆篩選的方式,
找出遊戲 RAM 中儲存特定數值(如生命值、金幣、計時器等)的位址。

核心原理:
  模擬器運行時,每幀(frame)會複製一份完整的 64KB 記憶體快照。
  使用者設定比較條件後,系統逐一比對每個位址的值,
  移除不符合條件的候選位址,逐步縮小範圍直到找到目標位址。

原始碼關鍵流程(RamSearch.cpp):
  1. resetSearch()  → 複製全部 64KB RAM 到 lclMemBuf[]
                      為每個地址建立 memoryLocation_t 紀錄初始值與歷史
  2. periodicUpdate() → 每幀呼叫 copyRamToLocalBuffer()
                        更新記憶體值,若 Auto-Search 則自動執行 runSearch()
  3. runSearch()    → 根據「比較至/依」選項分派到四個搜尋函式:
                        SearchRelative()        與前次值比較
                        SearchSpecificValue()   與指定數值比較
                        SearchSpecificAddress() 與指定地址值比較
                        SearchNumberChanges()   與變化次數比較
  4. 搜尋結果存在 actvSrchList(啟用清單)
     被排除的存在 deactvSrchList(停用堆疊)
     支援多層 Undo(透過 deactvFrameStack)


================================================================
二、介面元件說明(對應截圖)
================================================================

--------------------------------------------------------------
2-1. 主表格(中央區域)
--------------------------------------------------------------

  欄位名稱      說明
  ----------    -----------------------------------------------
  Address       位址(十六進位,如 $0000)
  Value         該位址的「目前值」(每幀自動更新)
  Previous      該位址的「上次值」(上一次搜尋時的值)
  Changes       該位址自上次重設以來的值變化次數

  用途:表格列出所有候選位址。隨著搜尋進行,候選數量會逐漸減少。
  點選表格中的某一行(如截圖中的 $000D),可選取該位址,
  以便執行「排除」、「監看」、「新增金手指」等操作。

--------------------------------------------------------------
2-2. 右側按鈕區
--------------------------------------------------------------

  按鈕            功能說明
  ----------      -----------------------------------------------
  搜尋            根據目前設定的比較條件,執行一次篩選。
                  每次執行會從 actvSrchList 中移除不符合條件的項目。
                  (對應 runSearch(),行號 1112)

  重設            清空所有搜尋歷史,重新複製完整 64KB RAM,
                  重建 actvSrchList(所有地址重新成為候選)。
                  (對應 resetSearch(),行號 1146)

  清除變更        將所有地址的「變化次數」(Changes 欄)歸零。
                  適合在遊戲狀態改變後重新開始計算變化。
                  (對應 clearChangeCounts(),行號 1225)

  復原            撤銷上一次「排除」操作,將被移除的候選位址還原。
                  可多次撤銷(最多 10 層)。
                  (對應 undoSearch(),行號 1175)

--------------------------------------------------------------
2-3. 搜尋區域(Search Regions)
--------------------------------------------------------------

  核取方塊    對應記憶體範圍          原始碼常數
  ----------  --------------------    ------------------
  RAM ✓       $0000 - $07FF          ShowRAM = true
              (NES 內部 RAM,2KB)
  SRAM        $6000 - $7FFF          ShowSRAM = true
              (電池備份 SRAM,8KB)
  ROM         $8000 - $FFFF          ShowROM = true
              (程式 ROM,32KB)

  說明:
  - 預設只勾選 RAM(最常用,存放遊戲變數)
  - SRAM 用於有電池備份的遊戲(如《薩爾達》的存檔)
  - ROM 用於搜尋程式碼中的常數(進階用法)
  - 通常只勾選 RAM 即可,避免搜尋範圍過大

--------------------------------------------------------------
2-4. 比較運算子(Comparison Operator)
--------------------------------------------------------------

  選項              功能
  ----------        -----------------------------------------------
  小於              值 < 比較值
  大於              值 > 比較值
  小於或等於        值 <= 比較值
  大於或等於        值 >= 比較值
  等於              值 == 比較值
  不等於            值 != 比較值
  距離              |值 - 比較值| == 指定差值
  模數              值 % 指定模數 == 比較值

  說明:
  - 「距離」和「模數」會啟用右側的輸入框,讓你輸入差值或模數
  - 最常用的是「大於或等於」與「等於」
  - 截圖中選取的是「大於或等於」

--------------------------------------------------------------
2-5. 比較至/依(Compare To/By)
--------------------------------------------------------------

  選項                功能
  ----------          -----------------------------------------------
  前次數值            與上一次搜尋時的值比較(最常用)
  指定數值            與你輸入的固定數值比較
  指定位址            與另一個位址的值比較(進階)
  變更數              與變化次數比較

  說明:
  - 截圖中選取的是「指定數值」,右側輸入框可輸入目標值
  - 「前次數值」是 most common 的用法(反覆搜尋縮小範圍)

--------------------------------------------------------------
2-6. 資料大小(Data Size)
--------------------------------------------------------------

  選項          說明
  ----------    -----------------------------------------------
  1 位元組      搜尋 1 byte(0-255 或 -128~127),最常用
  2 位元組      搜尋 2 bytes(0-65535),用於 16 位元變數
  4 位元組      搜尋 4 bytes(0-4294967295),進階用法

  說明:
  - NES 只有 8 位元暫存器,大部分遊戲變數是 1 byte
  - 勾選「檢查未對齊」可搜尋非對齊的多字節值

--------------------------------------------------------------
2-7. 資料類型/顯示(Data Type)
--------------------------------------------------------------

  選項        說明
  ----------  -----------------------------------------------
  有號        以有號整數顯示(-128~127 for 1 byte)
  無號        以無號整數顯示(0~255 for 1 byte)
  十六進位    以十六進位顯示($00~$FF for 1 byte)

  說明:
  - 生命值通常用「有號」或「無號」
  - 想看原始記憶體值時用「十六進位」

--------------------------------------------------------------
2-8. 底部操作按鈕
--------------------------------------------------------------

  按鈕              功能
  ----------        -----------------------------------------------
  排除              排除所有「不等於」選取位址值的候選項。
                    (消除所有值與選取位址不同的候選)
                    對應 eliminateSelAddr(),行號 1233

  監看              將選取的位址加入「監看清單」(RamWatch),
                    可即時觀察該位址的值變化。
                    對應 addRamWatchClicked(),行號 1336

  新增金手指        將選取的位址加入金手指清單,
                    可鎖定該位址的值(作弊碼)。
                    對應 addCheatClicked(),行號 1316

  十六進位編輯器    開啟十六進位編輯器,直接檢視/編輯該位址附近的記憶體。
                    對應 hexEditSelAddr(),行號 1367

--------------------------------------------------------------
2-9. 底部選項
--------------------------------------------------------------

  選項              功能
  ----------        -----------------------------------------------
  檢查未對齊        允許搜尋非對齊的多字節值(2/4 位元組時)
  自動搜尋          每幀自動執行搜尋(不需手動按「搜尋」按鈕)
                    適合用「前次數值」+「大於/小於」追蹤連續變化


================================================================
三、基本操作流程
================================================================

【典型搜尋流程:找出生命值位址】

  步驟 1:開啟 RAM 搜尋
    選單 → 工具 → RAM Search(或 RAM 搜尋)

  步驟 2:初始設定
    - 搜尋區域:勾選 RAM(預設)
    - 資料大小:1 位元組(預設)
    - 資料類型:有號(預設)
    - 比較運算子:等於
    - 比較至/依:指定數值
    - 指定數值:輸入遊戲中的目前值(如生命值 = 3)

  步驟 3:第一次搜尋
    按下「搜尋」按鈕
    → 結果:列出所有值為 3 的位址(可能有數十~數百個)

  步驟 4:改變遊戲狀態
    在遊戲中讓生命值改變(如被敵人打到,生命值 3→2)

  步驟 5:縮小範圍
    - 指定數值:改為 2
    - 按下「搜尋」
    → 結果:候選位址大幅減少

  步驟 6:重複步驟 4-5
    繼續改變生命值,重複搜尋
    → 通常 3-5 次後,候選位址只剩 1-5 個

  步驟 7:確認目標
    - 觀察 Value 欄是否隨遊戲生命值同步變化
    - 選取目標位址
    - 按「監看」加入監看清單
    - 或按「新增金手指」鎖定數值


================================================================
四、三個常見實例
================================================================

--------------------------------------------------------------
實例 1:找出《超級瑪利歐兄弟》的生命数(Mario 的生命)
--------------------------------------------------------------

  遊戲:Super Mario Bros. (NES)
  目標:找出儲存「剩餘生命数」的 RAM 位址

  操作步驟:

  1. 啟動遊戲,記錄目前生命数(假設 = 3)

  2. 開啟 RAM 搜尋:
     搜尋區域:RAM ✓
     資料大小:1 位元組
     資料類型:有號
     比較運算子:等於
     比較至/依:指定數值 = 3

  3. 按「搜尋」→ 候選位址數十個

  4. 在遊戲中死一條命(生命数 3→2)

  5. 回到 RAM 搜尋:
     指定數值改為 2
     按「搜尋」→ 候選位址減少

  6. 重複:再死一條命(2→1),搜尋指定數值 = 1

  7. 通常 3 次後只剩 1-3 個候選
     觀察 Value 欄是否與遊戲生命数同步變化

  8. 選取正確位址(通常是 $075A 或附近),
     按「監看」加入 RamWatch 即時觀察

  原始碼對應:
    SearchSpecificValue() (RamSearch.cpp:791)
    每次搜尋遍歷 actvSrchList,比對 RAM 值與指定值,
    不符合的推入 deactvSrchList。

--------------------------------------------------------------
實例 2:找出《魂斗羅》的金子彈計時器
--------------------------------------------------------------

  遊戲:Contra (NES)
  目標:找出儲存「金子彈剩餘時間」的 RAM 位址

  操作步驟:

  1. 啟動遊戲,取得金子彈(S 弹)

  2. 開啟 RAM 搜尋:
     搜尋區域:RAM ✓
     資料大小:1 位元組
     資料類型:無號
     比較運算子:大於或等於
     比較至/依:指定數值 = 0

  3. 按「搜尋」→ 列出所有值 >= 0 的位址(幾乎全部)

  4. 這時改用「前次數值」模式:
     比較至/依:前次數值
     比較運算子:小於

  5. 按「搜尋」→ 移除所有「值沒有變小」的位址

  6. 在遊戲中持續射擊(金子彈計時遞減)
     每隔幾秒按一次「搜尋」(比較運算子:小於)

  7. 經過多次搜尋,候選位址大幅減少

  8. 觀察 Value 欄:
     - 值持續遞減的位址 = 計時器
     - 值不變或不規則跳動的 = 其他變數

  9. 找到後按「監看」觀察,
     確認值歸零時金子彈效果消失

  進階技巧:
    - 若候選太多,可勾選「自動搜尋」
      系統每幀自動執行搜尋,快速過濾
    - 也可用「清除變更」重置變化次數計數器,
      再觀察哪些位址變化最頻繁

  原始碼對應:
    SearchRelative() (RamSearch.cpp:661)
    比較 actvSrchList 中每個項目的目前值與前次值。
    storeHistory 控制是否儲存歷史(Auto-Search 時停用)。

--------------------------------------------------------------
實例 3:找出《薩爾達傳說》的盧比(金幣)位址
--------------------------------------------------------------

  遊戲:The Legend of Zelda (NES)
  目標:找出儲存「盧比數量」的 RAM 位址

  操作步驟:

  1. 啟動遊戲,記錄目前盧比數(假設 = 50)

  2. 開啟 RAM 搜尋:
     搜尋區域:RAM ✓, SRAM ✓
     (薩爾達的 SRAM 用於儲存進度,盧比可能在 SRAM)
     資料大小:1 位元組
     資料類型:無號
     比較運算子:等於
     比較至/依:指定數值 = 50

  3. 按「搜尋」→ 列出所有值為 50 的位址

  4. 在遊戲中收集或消費盧比(50→55)

  5. 回到 RAM 搜尋:
     指定數值改為 55
     按「搜尋」

  6. 重複:再改變盧比數,搜尋新值

  7. 若候選仍太多,改用排除法:
     選取一個「肯定不是」的位址(如值跳動不規則的)
     按「排除」→ 移除所有值不等於該位址的候選

  8. 找到位址後,按「新增金手指」鎖定盧比數
     → 永遠有無限盧比

  原始碼對應:
    eliminateSelAddr() (RamSearch.cpp:1233)
    以 "Not Equal To" 比較選取位址的值,
    移除所有值不同的候選。


================================================================
五、進階技巧
================================================================

5-1. 用「距離」模式找相對位址
  若你知道生命值是 3,且金幣值比生命值大 100,
  可用「距離」模式搜尋:值 - 3 == 100 的位址。
  適合已知遊戲記憶體佈局時使用。

5-2. 用「模數」模式找週期性值
  若某值以 0-99 週期性變化,可用「模數」模式:
  值 % 100 == 指定值,快速過濾。

5-3. 用「排除」功能反向篩選
  當候選太多時,選取一個「明顯不是目標」的位址,
  按「排除」可一次移除大量候選。

5-4. 用「復原」撤銷錯誤操作
  若不小心排除了正確位址,可按「復原」還原。
  最多支援 10 層撤銷(原始碼 deactvFrameStack)。

5-5. 用「自動搜尋」追蹤連續變化
  勾選「自動搜尋」後,系統每幀自動執行搜尋,
  適合用「大於/小於」追蹤持續遞增/遞減的值。
  (原始碼:periodicUpdate() 每幀檢查 autoSearchCbox)

5-6. 用「監看」+「金手指」組合
  找到位址後:
  - 按「監看」加入 RamWatch 即時觀察
  - 按「新增金手指」鎖定值(作弊)
  - RamWatch 可儲存為 .wch 檔案,下次載入


================================================================
六、常見問題
================================================================

Q: 為什麼搜尋結果是空的?
A: 確認以下幾點:
   1. 搜尋區域是否勾選了正確範圍(通常只勾 RAM)
   2. 資料大小是否正確(1 位元組最常用)
   3. 比較運算子和數值是否正確
   4. 遊戲是否正在運行(暫停時不會更新值)

Q: 候選位址太多,怎麼辦?
A: 多次重複「改變遊戲狀態 → 搜尋」的流程,
   每次都會大幅減少候選數。通常 3-5 次就夠。
   也可用「排除」功能一次移除大量候選。

Q: 找到的位址不對,值沒有隨遊戲變化?
A: 可能找錯了。按「重設」重新開始,
   這次用不同的比較策略(如改用「大於」而非「等於」)。

Q: 2/4 位元組搜尋怎麼用?
A: 用於 16/32 位元變數(如經驗值、分數)。
   勾選「檢查未對齊」可搜尋非對齊的多字節值。


================================================================
七、原始碼參考
================================================================

主要檔案:
  src/drivers/Qt/RamSearch.cpp    RAM 搜尋核心邏輯
  src/drivers/Qt/RamSearch.h      RAM 搜尋介面定義
  src/drivers/Qt/RamWatch.cpp     RAM 監看功能
  src/drivers/Qt/RamWatch.h       RAM 監看介面定義
  src/drivers/Qt/HexEditor.cpp    十六進位編輯器

關鍵函式:
  resetSearch()               重設搜尋(行號 1146)
  periodicUpdate()            定時更新 120Hz(行號 546)
  runSearch()                 執行搜尋(行號 1112)
  SearchRelative()            與前次值比較(行號 661)
  SearchSpecificValue()       與指定值比較(行號 791)
  SearchSpecificAddress()     與指定位址比較(行號 918)
  SearchNumberChanges()       與變化次數比較(行號 1006)
  eliminateSelAddr()          排除選取位址(行號 1233)
  addCheatClicked()           新增金手指(行號 1316)
  addRamWatchClicked()        加入監看(行號 1336)
  hexEditSelAddr()            開啟十六進位編輯器(行號 1367)

記憶體範圍:
  RAM:   $0000 - $07FF (2KB, NES 內部 RAM)
  SRAM:  $6000 - $7FFF (8KB, 電池備份 SRAM)
  ROM:   $8000 - $FFFF (32KB, 程式 ROM)

================================================================
sshot-2026-09-04-[22-39-41].png
sshot-2026-09-04-[22-39-49].png
sshot-2026-09-04-[22-39-55].png
sshot-2026-09-04-[22-40-02].png
sshot-2026-09-04-[22-40-11].png




評分

參與人數 1金錢 +10 收起 理由
conanluo + 10 精品文章

查看全部評分

回復

使用道具 舉報

0

主題

3209

帖子

2930

積分

銀牌會員

Rank: 5Rank: 5

積分
2930
發表於 2026-8-19 21:52:44 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

18

主題

141

帖子

1496

積分

高級會員

Rank: 4

積分
1496
發表於 2026-8-19 23:07:34 | 顯示全部樓層
太牛了,感谢分享,感觉界面好看了很多!
回復

使用道具 舉報

7

主題

5958

帖子

5736

積分

金牌會員

Rank: 6Rank: 6

積分
5736
發表於 2026-8-20 00:43:31 | 顯示全部樓層
感謝大大無私熱心提供的分享遊戲資訊-[NES模擬器] FCEUX 2.7.0 繁/簡/英文版(開發版)測試版
回復

使用道具 舉報

0

主題

539

帖子

1250

積分

高級會員

Rank: 4

積分
1250
發表於 2026-8-20 01:10:10 | 顯示全部樓層
        感謝分享
回復

使用道具 舉報

0

主題

259

帖子

585

積分

高級會員

Rank: 4

積分
585
發表於 2026-8-20 08:05:43 | 顯示全部樓層
好用的模擬器.有繁體版就是讚啊!
回復

使用道具 舉報

63

主題

106

帖子

2201

積分

銀牌會員

Rank: 5Rank: 5

積分
2201
發表於 2026-8-20 08:39:22 | 顯示全部樓層
感谢分享              
回復

使用道具 舉報

20

主題

189

帖子

3796

積分

銀牌會員

Rank: 5Rank: 5

積分
3796
 樓主| 發表於 2026-8-22 18:22:25 | 顯示全部樓層
更新置頂 → → → Beta2
回復

使用道具 舉報

0

主題

467

帖子

611

積分

高級會員

Rank: 4

積分
611
發表於 2026-8-24 01:49:57 | 顯示全部樓層
FC  最好模擬器  Mesen  Mesen  0.97有漢化,新版2.2就是他,現在又有相容性更高的FC模擬器真是不錯的提供!!
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|小黑屋|遊戲年代 GOAL GOAL

GMT+8, 2026-10-4 07:14 , Processed in 0.309802 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表