v83 原生只有 800×600 解析度,在現代螢幕上非常小。這篇整理直接修改客戶端 exe 的做法(靜態修改),把解析度改成 1024×768、1280×720 等尺寸。
如果不想碰 Hex 編輯,直接用支援遊戲內即時調整解析度的 Kaentake 會更省事——本篇比較適合想理解原理、或想自己客製解析度數值的讀者。
靜態修改 vs 動態解析度
本篇介紹的是靜態修改:直接改 exe 裡的位元組,改完固定在某個解析度,每次要換解析度都要重新修改一次 exe。若想要「遊戲內直接選解析度」的動態效果,純 localhost 做不到,得靠 DLL 注入(如 Kaentake、Ezorsia V2)在執行期動態處理。
解析度數值換算
所有地址的解析度值都以小端序(Little Endian)4 bytes 填入:
| 解析度 | Width | Width(LE 4 bytes) | Height | Height(LE 4 bytes) |
|---|---|---|---|---|
| 800×600(原始) | 0x320 | 20 03 00 00 | 0x258 | 58 02 00 00 |
| 1024×768 | 0x400 | 00 04 00 00 | 0x300 | 00 03 00 00 |
| 1280×720 | 0x500 | 00 05 00 00 | 0x2D0 | D0 02 00 00 |
| 1280×960 | 0x500 | 00 05 00 00 | 0x3C0 | C0 03 00 00 |
必改:核心解析度地址
這兩個地址是客戶端初始化畫面時使用的,必須修改,否則其他地址改再多,遊戲還是以 800×600 啟動:
| 地址 | 說明 |
|---|---|
0x009F7B1D + 1 | screenHeight(高度值) |
0x009F7B23 + 1 | screenWidth(寬度值) |
OllyDbg 操作步驟(以 1024×768 為例):
Ctrl+G輸入9F7B1D,會看到類似PUSH 258的指令(258 是 600 的十六進位)- 右鍵 → Assemble → 改為
PUSH 300(768 =0x300) - 移到
9F7B23,同樣改為PUSH 400(1024 =0x400) - 右鍵 → Copy to executable → All modifications → Save file
選改:截圖記憶體地址
截圖功能會分配一個大小為 4 × 寬 × 高 的緩衝區。解析度改變後如果沒同步更新這裡,玩家截圖時會直接崩潰:
| 地址 | 說明 |
|---|---|
0x00744DA6 + 1 | 截圖 buffer 大小 = 4 × screenWidth × screenHeight |
以 1024×768 為例:4 × 1024 × 768 = 3,145,728 = 0x300000,填入 00 00 30 00。如果你的私服不提供截圖功能,可以先跳過這個地址。
選改:UI 位置地址
以下地址控制各種 UI 元素的位置計算,若不修改,部分 UI 顯示位置會偏移或跑出畫面外:
| 地址 | 說明 | 1024×768 對應值 |
|---|---|---|
0x009F7078 + 1 | screenHeight(UI layout) | 00 03 00 00 |
0x009F707D + 1 | screenWidth(UI layout) | 00 04 00 00 |
0x009E2E85 + 1 | -(screenHeight/2) | 80 FE FF FF |
0x009E2E8B + 1 | -(screenWidth/2) | 00 FE FF FF |
0x008D1FF4 + 1 | screenHeight-22(底部欄位置) | EA 02 00 00 |
0x008D1FF9 + 1 | screenWidth(底部欄寬度) | 00 04 00 00 |
0x008DE8E5 + 2 | -(screenWidth-150)(右側面板) | 96 FC FF FF |
0x008DE8EE + 2 | -(screenHeight-102)(底部面板) | 66 FD FF FF |
0x00BE2738 | screenWidth/2 | 00 02 00 00 |
0x00BE2DF0 | screenWidth/2(第二處) | 00 02 00 00 |
0x00BE2DF4 | screenHeight/2 | 80 01 00 00 |
若要改成其他解析度,公式都一樣,換算成小端序4 bytes填入即可。
快速流程總結
1. 備份 localhost.exe → localhost_backup.exe
2. 用 OllyDbg 開啟 localhost.exe
3. 改核心地址(必改):9F7B1D、9F7B23
4. 改截圖地址(建議):744DA6
5. 改UI位置地址(可選,UI跑位再改):對照上表逐一修改
6. Copy to executable → Save file
7. 啟動測試,確認解析度與UI都正常
常見問題排查
只改核心地址,遊戲還是800×600:用HxD重新開啟exe確認9F7B1D的值是否真的變了,若沒變通常是「Copy to executable」沒做完整。
新解析度啟動但UI跑位:對照UI位置地址表逐一修改,直到顯示正常。
截圖時崩潰:確認744DA6的值等於4 × 寬 × 高。
要改多高的解析度:v83所有UI都是為800×600設計的,建議最多改到1280×960或1280×720,太高的話UI會顯得過小、難以操作。