炎龍外傳FPE修改法By Player Lin專用式(......||||)
文 By Player Lin at 2004.02.01 Starting Write
前言
本來是不想寫這文章的....因為本人的原則...要寫就要把資料準備齊全...
所以得花不少時間...而且我的專用改法蠻複雜(?)的...不一定大家都懂...
不過...在某次和某位網友聊天時...跟他提出我的改法...他認為不錯...
建議我寫篇文章造福大家XD
所以想了想..就決定來寫篇修改文吧XD
不過看不看的懂就要看各位摟~"~
準備的東西
1.MS-DOS V5.xx 6.xx or Windows 95/98/NT/2000/XP/2003任一套並裝好(DOS和windows就是作業系統拉= =|||)
2.FPE整人專家(遊戲修改大師,遊戲修改至尊)程式一套
V5.x or 2000 or 2001都ok~ 並先安裝好~(哪裡有和安裝問題別問我XD自己想辦法)
v5.x適用於MS-DOS v5.xx~6.xx ,win95/98
2000適用於win95/98 (用正版的還有for DOS ver. 的patch...)
2001適用於於winNT/2000(/XP/2003)
3.炎龍騎士團外傳 風之紋章遊戲程式一套並裝好
正版盜版第一版第二版簡體版都ok~
4.一個清楚的腦袋..免得改錯了還不知道~XD
5.一個可以接受Game Crash , Format HD and Reinstall MS-DOS , Windows的心臟.....|||||
就是如果出什麼大問題都可以忍受的心臟拉~~~
準備好後就可以開工拉~
但是.....有一點我要說的就是...
怕Windows or HD掛點 或是 頭腦不清楚的人
請勿嘗試...不然出事情不關我的事情..頂多幫你默哀~"~
(Fpe 2001 at Windows NT based OS改不到dos game的問題在這文編寫時還是無法解決!!!)
Sorry 廢話多了點..那開始吧....
--------------------------------------------------------------------------------------------------------------------------
嗯...修改的第一步當然是掃描記憶體摟~首先呼叫FPE 然後選掃瞄(Scan Memory)
再來要輸入要改的資料、不過要有個目標人物來改...就用蘭迪斯就好~
假設蘭迪斯(劍士)的數值如下:
LV |
5 |
05h |
HP |
122/122 |
7Ah,7Ah |
MP |
16/16 |
10h,10h |
AP |
100 |
64h |
DP |
82 |
52h |
HIT |
105 |
69h |
EV |
25 |
19h |
DX |
20 |
14h |
MV |
4 |
04h |
則依據炎外的人物資料在記憶體的排序方式
可以輸入幾種可能會找的到只有一組資料的方式~
1. "122,122,16,16" or "7Ah,7Ah,10h,10h" (以word[v5.x]、16bit[v2000 v2001])
2. "122,122,16,16,100,82" or "7Ah,7Ah,10h,10h,64h,52h" (以word[v5.x]、16bit[v2000 v2001])
3. "100,82,105,25" or "64h,52h,69h,19h" (以word[v5.x]、16bit[v2000 v2001])
4."20,122,122,16,16" or "14h,7Ah,7Ah,10h,10h" (以word[v5.x]、16bit[v2000 v2001])
122 , 122 , 16 , 16 這樣就是4項資料 每項資料之間就是用半形"逗號"分開 !!
若要輸入的是10進位數值就直接輸入數值就好
若是輸入16進位值就要在數值後加上一個"h"符號!!
其實不只這4種.還有很多組合~
至於為何是這樣的資料呢
請看下表~ ( 人物資料大約是從43A6584h~43A65D3h , 80bytes.) h =HEX 為16進位值
* 有時候因為遊戲程式計算的關係...很可能你要改的目標人物的記憶體資料被拆成2個部分放在不同區域而沒連續 這時候就要注意...如果發現記憶體內容怪異請不要直接就改下去...最好先靠此表判斷可以判斷的值來確認是否可以修改! *
位置 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
43A6580h |
程式區資料 (or上一個人的資料區 ) |
XX |
YY1 |
YY2 |
YY3 |
YY4 |
YY5 |
YY6 |
YY7 |
YY8 |
YY9 |
00 |
QQ1 |
|||
43A6590h |
00 |
QQ2 |
00 |
QQ3 |
00 |
QQ4 |
00 |
QQ5 |
00 |
QQ6 |
00 |
QQ7 |
00 |
QQ8 |
PP1 |
PP2 |
43A65A0h |
PP3 |
PP4 |
PP5 |
NN |
MM |
LL |
RR |
SS |
TT |
UU |
VV |
WW |
00 |
00 |
XX |
XX |
43A65B0h |
XX |
XX |
XX |
XX |
XX |
XX |
XX |
XX |
XX |
XX |
XX |
ZZ1 |
ZZ1 |
ZZ2 |
ZZ2 |
KK |
43A65C0h |
AA |
XX |
CC1 |
CC2 |
EE1 |
EE2 |
EE3 |
EE4 |
FF1 |
FF2 |
FF3 |
FF4 |
GG1 |
GG2 |
HH1 |
HH2 |
43A65D0h |
II1 |
II2 |
JJ1 |
JJ2 |
下一人的資料區 ( or 程式資料區 ) |
上表為蘭迪斯的人物屬性資料在記憶體配置的格式(借用修改法1文章中的表格XD)
YY1~YY9等下會解釋功能
而"00 QQ1"~"00 QQ8"為物品區 從第一格到最後一格依序下來 low byte(00)為物品狀態位址
00h = 一般狀態 40h = 裝備中 80h = 消失(使用後) high byte(QQx)為物品代碼位址
PP1~PP5為人物習得法術資料位址 至於資料數值格式我會在後面說明的
NN MM 分別是人物的職業和種族 別隨意亂改...不過如果想看到 蘭迪斯變成騎士 你可以把NN的值換成07...|||
職業位址 資料表
Hex | 該HEX之資料 | 09h |
大地騎士 (騎馬的龍騎士??) |
13h | 武道家 | 1Dh | 武士 |
00h | 劍士 | 0Ah | 弓兵 | 14h | 武聖 | 1Eh | 重裝武士 |
01h | 劍聖 | 0Bh | 神箭手 | 15h | 武神 | 1Fh | 飛兵 |
02h | 劍帝 | 0Ch | 狙擊手 | 16h | 技師 | 20h | 妖魔 |
03h | 英雄 | 0Dh | 魔導士 | 17h | 機械伯爵 | 21h | 守護獸 |
04h | 戰士 | 0Eh | 法師 | 18h | 機械大師 | 22h | 將軍 |
05h | 聖戰士 | 0Fh | 巫師 | 19h | 機兵 | 23h | 傭兵 |
06h | 狂戰士 | 10h | 僧侶 | 1Ah | 魔神 | 24h | ??(要塞砲的職業名) |
07h | 騎士 | 11h | 大僧侶 | 1Bh | 魔導王 | 25h | 惡靈 |
08h | 聖騎士 | 12h | 大祭師 | 1Ch | 魔導戰士 | 26h | 活屍 |
職業資料位址只到26h...之後就沒有正確的職業資料
種族位址 資料表
Hex值 | 該HEX值之資料 | 03h | 機械 |
00h | 人類 | 04h | 獸人 |
01h | 妖鬼 | 05h | 龍族 |
02h | 魔族 | 06h | 其他 |
種族資料位址只到06h...後面就無正確資料
LL便是人物的等級資料位址
ZZ1 ZZ1 : AP基準值位址 ZZ2 ZZ2 : DP 基準值位址 [ZZ1和ZZ2的第一個為low byte 而第二個為high byte]
(GG = ZZ1 + 裝備追加值 , HH = ZZ2 + 裝備追加值)
KK 為移動距離值MV的資料位址
AA為人物經驗值的資料位址
CC為DX值的資料位址 low byte(CC1) +1 = +1點 high byte(CC2) + 1 = +256點
EE為HP值資料位址 EE1/EE2 :目前值的 low byte / high byte EE3/EE4:最大值的low byte / high byte
FF為MP值資料位址 FF1/FF2 :目前值的 low byte / high byte FF3/FF4:最大值的low byte / high byte
GG 為AP值的位址 和DX配置一樣 (此值為AP基準值(ZZ1)加上裝備所增加的值來決定的 也就是改這裡是沒用的..一升級或是換裝備就會因為程式計算的關係而還原!!)
HH 為DP 值位址 和 GG一樣, 為DP基準值(ZZ2)加上裝備增加值所決定的!
II 為 HIT值位址 JJ為 EV值位址
RR為AP加強狀態XX回合數 值就代表持續回合數
SS為DP加強狀態XX回合數 同RR
TT為EV HIT DX加強狀態XX回合數 同RR
UU為中毒狀態XX回合數 同RR
VV 為麻痺狀態XX回合數 同RR
WW為封咒狀態XX回合數 同RR
RR ~ WW都是 1 byte的值!
YY1~YY9為人物戰場資訊資料和人物名稱肖像資料區域 (都是 1 byte的值!)
YY1: 人物所在地之 X 軸座標
YY2: 人物所在地之 Y 軸座標
YY3: 人物戰場圖像 隨YY8變化(改過YY8後再load一次紀錄就會變 無固定規則)
YY4: 人物圖像之方向 00h:面向玩家 01h:面向左 02h:被向玩家 03h:面向右邊
YY5: 人物圖形跑步動作 每+01h便會往人物方向那格的下一個移動1小步(要5小步才會到下一格)
但不會影響到YY1和YY2.
YY6: 可行動否, 00h:可, 80h:不可 01h:死亡或消失於戰場
YY7: 人物陣營, 00h:敵, 01h:NPC, 02h:我方
YY8: 人物肖像 ( 請自己test看看 某些位址可能無資料或是會當機要注意 ! )
此表為本人測試出之結果!應該都是正確~
Hex值 | 代表之人物 | Hex值 | 代表之人物 | Hex值 | 代表之人物 | Hex值 | 代表之人物 | Hex值 | 代表之人物 |
00h | 蘭迪斯(劍士) | 08h | 布蘭多(技師) | 10h | 法蓮娜(法師) | 18h | 蘭迪斯(劍帝) | 20h | 布蘭多(機械大師) |
01h | 法蓮娜(魔導士) | 09h | 蓋亞 | 11h | 費塔加(法師) | 19h | 法蓮娜(巫師) | 21h | 蘭迪斯(英雄) |
02h | 費塔加(魔導士) | 0Ah | 珊 | 12h | 裘娜(聖戰士) | 1Ah | 費塔加(巫師) |
註 2:0Ch~0Eh是主要人物NPC區 敵方人物是由3Ch開始~6Dh 00h~09h為一般職業區域 0F~17h為光明系職業區域 18h~20h為黑暗系職業區域 21h~可能是隱藏職業區域... |
|
03h | 裘娜(戰士) | 0Bh | 蘭斯洛特 | 13h | 亞克(聖騎士) | 1Bh | 裘娜(狂戰士) | ||
04h | 亞克(騎士) | 0Ch | 索爾 | 14h | 瑪麗安(神箭手) | 1Ch | 亞克(大地騎士) | ||
05h | 瑪麗安(弓兵) | 0Dh | 卡里斯 | 15h | 尤利安(大僧侶) | 1Dh | 瑪麗安(狙擊手) | ||
06h | 尤利安(僧侶) | 0Eh | 亞雷斯 | 16h | 琴琴(武聖) | 1Eh | 尤利安(大祭司) | ||
07h | 琴琴(武道家) | 0Fh | 蘭迪斯(劍聖) | 17h | 布蘭多(機械伯爵) | 1Fh | 琴琴(武神) |
23h | 謎之狂戰士(給裘娜妖刀系列的人) | 6Eh | 寶箱怪 | 71h | 修配魯 | 76h | 村民 | 7Fh | 火神 |
72h | 雷德 | ||||||||
77h | 村婦 | 8Ch | 謎之人物(但是其人物戰場圖形是嬰兒-.-) | ||||||
73h | 亞德尼恩 | ||||||||
34h | 謎之人物(不在遊戲中出現 長的像索爾) | 6Fh | 寶箱妖精 | 74h | 戰士 裘娜(敵方) | 79h | 艾芙羅拉 | 在上表和此表沒出現的位址(3Ch~6Dh為敵方人物區)是為空資料或是無意義
NPC 人物
A0h後的值改了後會在叫出人物資料時會使得Game Crash....! |
|
7Ah 92h | 絲卡蒂亞 | ||||||||
7Bh | 凱倫諾特 | ||||||||
7Dh 8Bh | 瑪茜 | ||||||||
3Bh | 27關時索爾出場帶的侍衛 | 70h | 守護魔龍 | 75h | 假索爾 | 7Eh 8Ah | 巴特 |
YY9: 人物名*通常跟肖像欄位的值一樣
但是轉職後和某些不存在的人的資料值會不一定有資料
修改時要注意!!........
改的時候要注意一點..就是不可以把值寫的過大~
比如說明明該資料只有占1格(byte)可是卻寫了2bytes的資料進去
結果就成了溢位...有可能會造成資料錯亂或是當機的情形...
所以掃描到可能的位址後不要急著鎖值進去~
應該判斷一下 要寫入的資料會不會造成溢位!
(如果不怕當機的話可以慢慢試......|||)
你可以參考上面的位址表
來看看要改的資料是1byte or 2bytes!
還有注意掃描時輸入的資料格式
如果是要掃描1byte的資料 如AA經驗值欄位和用我常用的找YY區域修改法(不見數值修改法,後面會說)
就以Byte模式(fpe V5.xx 按F1鍵...Data欄會成byte [預設]) , 8bits (fpe V2000 2001,在Data Mode欄位用選的!)
若是2bytes以上的資料 如EE1, EE2,FF1,FF2等等欄位 且輸入數值是小於256的!
就要以word模式 , 16bit 來找!
再 fpe 一筆資料會因為設定的data mode不同而有不同掃法!
如果明明要輸入的資料是1byte且資料格式是2bytes卻用byte mode找
那絕對是找不到的
因為2bytes的資料格式像是HP / MHP , MP / MMP , AP , DP等等值在記憶體中的樣子如下
"05 02 05 02 52 01 52 01 20 01 F0 00..." 每2bytes代表一組資料集
像這樣的資料輸入要掃的值時調 byte or word都沒差
因為輸入的值一定是2bytes的word(字集)資料(值大於255)
但是假設若是這種情形的話.....1 Byte的資料(值小於255)
某人HP: 152/152 MP:23/23
則在記憶體中的資料格式是....."98 00 98 00 17 00 17 00"
如果掃描時輸入152,152,23,23卻沒調成word mode的話
就成了找 "98 98 17 17"....這樣找的到就有鬼= =
所以要注意資料的格式是1byte or 2bytes來調整data mode!
fpe 2000 和 fpe 2001 的data mode還有分 32bit 和 ??( 應該是指非數值之資料掃描吧)
32bit (4bytes 資料)在dos game用不到...應該沒差....
另外當你做了一些大動作時,由於程式運算的關係...
可能會使記憶體中的人物屬性區域整個移動...所以,用鎖定方式的話很危險.
萬一搬移時原位址變成了不該更改的程式資料的話....就會使得遊戲開始出現問題
輕則當機 重則紀錄檔或是遊戲程式資料整個Crash.
所以除非有把握...否則千萬不要隨便掃描到值後就直接鎖定...0
小心...當機找上你XD
不過有時卻怎樣都不會變-.-.....
fpe v5.xx的dos版(Fpe4g.com)還有一個問題
就是如果你的記憶體在64MB以上時
預設掃描範圍 (約(4000000)16 = 67108864 bytes以上)[註1]會很大 要找很久....
有經驗的修改玩家都會在找過幾次資料後就試著去更改掃描範圍
然後就把找到的大約範圍背下 每次修改時就去更改 以求不要scan過久...
通常只要電腦硬體或裝的作業系統不變時 位址通常不會變動過遠!
(我不是說炎外程式會自動搬移記憶體資料那樣= =!)
+記憶體容量時最明顯
原來背的區域可能就無效 還要再找一遍來找出正確的區域
換 os 或灌雙重 os 時也會變動!!
[註1]: 在我的電腦 P3-600EB 384MB的電腦 在windows 98se 的純dos下 執行fpe4g.com [DOS版FPE常駐程式]來改
時的狀態!預設掃描區間是 03BE000h ~ 43A0000h 我修改時改成 4300000h~4500000h )
--------------------------------------------------------------------------------------------------------------------------
其實...也只是把上面的位址表和每個人物肖像名字等值背下來而已.....
不會說很難...不過要融會貫通和要常常練習就會習慣了
通常我修改時會有兩種方式
一種就是上述之一般修改方式.
另一種就是我用的方式稱為 "不見數值修改法"
為何叫不見數值修改法呢
因為該方法都是不以"看的到"的數值作為輸入的資料
什麼是"看的到"的數值呢?
就是打開人物狀態資料欄時
你看到的一大堆數值的那些能力如 HP , MP , AP , DP 等等數值
這些都是"看的到"的數值
修改時直接輸入一個數值當一項資料...
可是我的方法是為了要快速找出要改的數值在記憶體中的位置
以便來修改
所以就以唯一性較高的"看不見"數值來當作輸入資料
哪些是看不到數值呢?
像是人物是否行動狀態,肖像,名字,職業, 種族資料
這些資料是一個字串
但是
在記憶體中卻是依數值來決定其字串
以這些名稱所代表的值來當作資料
雖然還是數值 但是由於不是以看的見的數值當資料
所以才叫"不見數值修改法"
又,因為通常是以YY區資料來當輸入資料
所以我又叫它 "找YY區域修改法"
根據我測試出來的結果
我發現以 "人物是否行動狀態","人物陣營","人物肖像值","人物名字" 這4樣資料來找會比較好找
(尤其是在看不到和不知道HP/MP值的時候要修改非常方便)
這4個值在上面的人物資料記憶體編排表中為 YY6, YY7, YY8, YY9
是4個 1byte 且為連續 的資料 (不連續資料不能來直接掃描 因為每筆資料是連續輸入的!)
修改時 只要記好要改的目標這4項資料的值 (所以就是要記上表和該人物肖像名稱等在記憶體的值)
然後輸入進去 以byte (8bit) mode來掃描即可!
假設要改的目標是 "已經行動完畢的英雄蘭迪斯"
則該4項資料在記憶體中的數值分別是 "80h" , "02h" , "21h" , "00h"
所以輸入時資料要掃描時 就要輸入
" 80h,2,21h,0 " (註 2)
這樣就能只找到1個目標資料了
( 有時還是會因為程式關係
記憶體會出現一堆舊資料
就會找到多組..
可能就要測試一下看是哪一組才是正確的 )
然後看你要改什麼 就依照你背下來的表來計算要改的目標位置..
( 進入記憶體編輯模式 才能來找
fpe v5 請在搜尋到目標位置後在該位址按E鍵
fpe 2000 2001 請在下方找到的資料位址上按右鍵選Edit就可以進入)
這個方法實在真的要把人物記憶體資料內容格式
整個弄得很清楚才能用這招來改
不然你會容易混掉而改錯資料或是找不到資料
所以前面的警告文是必要的...
這個方法...最好是熟悉從找到的地點要(為第一項輸入的資料為起始點)
offset(偏移)多少byte才是你要改的資料所以需要背一下那表
不過你也可以自己摸索然後找出你自己覺得好記的方法來改
當然這個方法還是有些些麻煩....因為需要稍用點腦筋(?)...
有人或許會說....可不可以不要用4個而用別的?
答案是"可以"
只要是唯一性高且你能知道其資料在記憶體中的數值是多少就可以!!
另外..這方法有些缺點
某些人的資料像是未行動狀態的劍士蘭迪斯
則YY6 YY7 YY8 YY9的值分別是 00 02 00 00
就無法用上述方法直接找到...
(只要是有很多00h~02h 80h FFh的資料放在一起就容易找到程式區!)
但是
山不轉路轉 路不轉人轉
你可以改找別的資料來找到其記憶體區域
如HP,MHP,MP,MMP只要值不要太小就可以在找到
(只是你還是要記清楚還要offset多少byte才是你要的資料喔!!)
offset多少的算法...只要看上面的位址表就好...
看你要以哪個為準 往後或往回算即可!!
[註 2 : 其實你也可不要照我說的輸入 你也可以輸入 "128,2,33,0"也是ok!!
(128)10 = (80)16 (33)10 = (21)16
不過你要會16進位 <==> 10進位的算法!! ]
以下就來舉個我改的例子好了~~!!
在某關由於打的太爽(...|||)
結果不小心讓亞克(聖騎士)在攻擊敵人後遭回擊擊倒並消失戰場上
由於懶的讀紀錄檔XD
就用修改的方式讓他"起死回生"
首先叫出 fpe 來掃描.
在scan memory功能中輸入目標資料
以上述方法來尋找
聖騎士亞克的 YY6 YY7 YY8 YY9
4個值分別是 "81"(行動後而消失於戰場 80h + 1h = 81h ) "02" "13" (聖騎士亞克的肖像位址) "04"("亞克"這個name的位址)
所以輸入 " 81h,2,13h,4" (注意'h'一定要輸入不然會被當成十進位的"81".. 81可不等於81h!!!!)以byte mode來掃!!
通常就會只找到一組
找到後用記憶體編輯模式(FPE5.X在掃描到的位址上按下e鍵)
把記憶體中的"81h"改成"00h" [yy6的位址] 此時亞克就又出現到戰場上
然後從YY6的地點 offset +59 bytes 就是hp目前值位址(EE1 EE2)
因為人物死亡消失於戰場上所以EE1 EE2 = "00 00"
把它改成跟EE3 EE4(hp max值位址)的值一樣
若EE3 EE4 = "56 03" 那就把EE1 EE2改成 "56 03"
[若不把hp改回大於0的話 某人結束行動會是結束回合時又會被當成死亡而消失在戰場上]
改好後回到遊戲 完成~
另外 由於炎龍外傳程式的設定
有兩個大限制
無法憑空改出一個人或是把某人換成某人!!
前者是因為程式已經把記憶體格式配置好
沒有多餘的位址可以加人
後者是因為程式在每關結束後
會把被換掉的人變回換掉前的狀態
且若是換掉時換成未出場的人
還有可能會影響到該未出場的人的初期數值!!
(假設把布蘭多改成蘭斯洛特 則過關時 改成蘭斯洛特的布蘭多又變成原來的
而過關時 變成蘭斯洛特的布蘭多的能力值會成為蘭斯洛特加入時的值....)
不過因為本人沒有測試的很仔細...
所以很難說 "一定" 不可以XD
說不定有高手做的出來XD
-----------------------------------------------------------------------------------------------------------
三、其他資料和注意事項...
FPE 網路上都有得下載....
自己找吧XD 另外本站主要Index頁的下載區也有FPE V5.11 ( Ms-dos、win95/98 only )下載~!!
FPE 中文名:遊戲修改至尊 [FPE 2000 (V6.xx) 以後版本] or
遊戲修改大師 [FPE Ver. 4.0~5.xx]
至於為何會有名稱不一致的原因是因為當時fpe作者寫到V5.xx時 由於要去當兵 所以
會有一段時間FPE無新版出現 而當時負責發行FPE的精x公司...又找了人做出同中文名的Game Master .是從v
6.0開始[所以應該沒有GM v1.x~5.x吧] 後來fpe作者當兵回來...又開始寫FPE..也找了新代理商發行
可是因為原中文名已被GM取代...
所以為了分別. fpe 2000以後版本就改叫遊戲修改至尊. FPE英文全名Fix People Expert
http://www.cis.nctu.edu.tw/~gis85566/ <---- fpe作者的Web Site (很久很久沒再更新摟~>_<")
目前FPE最新版是FPE 2001 其實Fpe 2000也能用.. 但是只能用在windows 9x核心OS.
這軟體對岸的網站都抓的到喔 而且搜尋引擎找的到XD)
另外 在Windows NT 核心OS 有一個問題 會改不到DOS遊戲 問題不知道出在哪
所以用Windows NT 2000 XP 2003等都不行改到DOS GAME......
可能要試試別種修改軟體...
本人還是要講一句話
修改不是萬能的
也不是玩遊戲的絕對方式
所以認認真真的玩遊戲才是~~
Finish At 2004/02/20 13:05 By Player Lin 1St fixed 2004/08/13 19:15