先說一下需要準備的工具:一個32位的文檔編輯器,本文中使用的是UltraEdit(以下簡稱UE);一個用於生成IPS檔的軟體,本文中使用的是模擬天下論壇的阿一製作的IPS_Pro(以下簡稱IP);一個用於紀錄表格的軟體或筆紙,本文中使用EXCEL來紀錄;計算器,WINDOWS 自帶。當然少不了一台NDS,一個燒錄設備。
 
  在本人成功修改的二十餘個存檔中,以CONTACT的存檔資料比較複雜,當然複雜只是資料多而已,有耐心的話修改成功是沒有問題的。下面就以CONTACK的存檔修改為例子。為了統一,以新建的遊戲來進行修改。
  經過漫長的片頭之後,終於能開始遊戲了,我們現在的任務就是去存檔,一路上都不要戰鬥。先找博士說完話,然後去存一下盤。存好後退出遊戲,將存檔放到電腦中,命名為01.SAV,M3用戶最好用SAV存檔,這樣能統一。存好後,再次進入遊戲。在讀存檔之前,先看一下存檔01的狀態然後紀錄下來。讀存檔,然後在屋裏亂走,使走路技能上升,上升後再次存檔,退出遊戲。然後重新進入遊戲,看一下狀態,紀錄下來。將存檔放到電腦中,命名為02。
 
 
  接下來,我們要用IP,如圖所示,將01.sav設成原文件,02.sav設成新檔,補丁選項選擇“生成IPS檔”,然後點開始生成,保存為01-02.ips文件。接下來我們將IPS檔及2個SAV檔都讀入UE中。
  首先我們來看一下01存檔和02存檔,在上面來回切換就會發現,有幾個地方資料變化了,將這些變化的資料紀錄下來。。現在我們來用表格和IPS檔對照看。發現了麼?這些我標示出來的不就是剛才我們從01、02存檔中看到的變化的數麼?最前面先是位址,然後的數是代表這個位址上放的資料的長度,因為2C和30位址上的資料都是占1位元的,所以是01;而34位址上的數占了2位,所以是02。由此發現,IPS檔裏,位址整個是占4位(包括後面的3個00),長度也是4位(包括後面的3個00),而資料則按照長度來定位長。用IPS檔的好處就是我們把整個存檔都看全,只要找一下2個存檔之間的不同就可以了。好了,現在我們就以IPS檔來完善表格。有人會問,
 
  那我們怎麼知道01存檔中原來的資料是什麼?有2個方法:1是由於我們有了變化的位址,只要在1中找到位址,就可以找到資料了;2是既然我們能做從01到02變化的IPS檔,怎麼不能做個從02到01變化的呢?兩種方法都可以~本人推薦使用第2種,對照著看統計比較簡單。對了還忘了說一句,在 IPS檔中,地址如果是2位以上的時候,到SAV檔中是反著的,比如IPS檔中的C439地址,在SAV檔中應該是39C4地址。
 
  統計好後,會發現到地址CE54後,會重複從2C開始的數。所以我們只要統計到6720位址就OK了。統計幹什麼用呢?一會就知道了~接著,我們把NDS的系統時間調到和存檔02的時間一樣。然後迅速進入遊戲,讀檔,存檔。以上一定要在1分鐘內完成。然後退出遊戲重新進入,看到“時間”如果和存檔02的一樣就成功了。把這個存檔存入電腦,存為03。然後做一個02-03的IPS檔,在UE中打開,你會發現,只有幾行而已。將其加入到統計表中,其中無變化的我就沒寫。只有3個數發生了變化,讓我們來想想有可能什麼數發生變化:首先是現實時間,年月日小時分鐘都一樣沒變,
 
  唯一變化的可能就是秒;遊戲進行時間,因為比存檔02遊戲時間要長,所以遊戲進行時間肯定要變大。其他的呢?移動技能在如此短時間內應該不會變,其他的我們也都沒動。這樣就可以肯定,30位址是秒,而34位址的,就是遊戲進行時間。有人也許不信,那咱們可以實驗,
 
  首先30位址資料絕不會大於3C,也就是60。其次,34位址,我們可以來看看這個數:847F。之前我也說過,這些資料排的都是反著的,也就是說這個數實際上應該是:7F84。可7F84又是什麼呢?我們來把這個數換成10進制的:32644,這是什麼數?別急,接下來我們把這個數除以 3600,得9點多。9點多是什麼?看一下之前存檔圖。哦!原來就是遊戲進行時間,9分鐘。不妨在試試之前的2個數,會發現都是8點多,也就是8分鐘。什麼?還不信?那就在遊戲中等待一分鐘,然後看看時間是不是變成10點多了。當然這些小的規律會在你多次修改中慢慢的發現的。可6720地址是什麼?也許有人會問:NDS存檔不是有校驗碼麼,它去哪了?沒錯!6720地址就是校驗碼。
 
 
  接下來就是重頭戲了,有了之前那麼多資料的鋪墊,如何繞過演算法直接搞定校驗碼呢?我們再次來看剛才統計表,將存檔02和03的3個有變化的數分別相加,如果有2位元以上的資料要拆成1位元來算。存檔02:2C+B5+7D+75=1D3;存檔03:27+84+7F+A9=1D3。怎麼樣?有點修改的眉目了麼?沒錯,既然他的和是一樣的,我們何不增大其中一個數的同時減小另一個數,保持和不變不就可以了麼?不多說,來做個實驗。
  以下由於涉及改資料,所以請在改之前備份,不再特別提醒。
  將存檔3中的遊戲進行時間34位址,改為F013。同時別忘記了,剛才統計的時候我們將下面重複的暫時沒理它,可改資料的時候一定要將它一起改,否則就會出錯哦。下麵的地址是CE5C,也該成F013。按照剛才的方法算一下,居然是1分鐘。為什麼要改1分鐘呢?因為1分鐘是根本不可能存檔的。可能成功麼?將改後的存檔導入到燒錄卡中,進遊戲看看。
 
  怎麼樣?是不是覺得自己小有所成了呢?這還只是初步。現在我們來改改人物的技能。還記得01和02存檔有什麼區別麼?沒錯,就是走路技能升了一級。讓我們回過頭來看那個表格。此表格中唯一變大1的數,就是我用紅框框起來的。6變7。通過觀察存檔後我們發現,這個數就是走路技能的等級。後面的12和02是什麼呢?應該就是走路技能的經驗了,這個我們不用理它。現在我們繼續在存檔3上修改。我們要將這個技能改為99級。
 
  既然加上了2個數,我們就要將總和擴大,由原來的1D3擴大為1E1(加兩個7)。同時我們再把秒的值減去,因為這個數最大就到3C,對於我們來增加其他的數意義不大。這樣,我們就是:遊戲進行時間+技能等級*2+校驗碼=1BA。2個技能等級分別改為63後,1BA-63*2=F4。接下來只要保證遊戲進行時間和校驗碼的和為F4就行了。我把遊戲進行時間就改為007F,校驗碼就是75。再次提醒,別忘了下面地址的。這裏有個技巧就是,找不到下面技能地址時,用CE54-2C+上面的技能地址就找到了。一共要改8個數。改好後導入,進遊戲中,看看至於後面那個經驗為什麼會變100,是因為到99級就滿了,所以100只是個象徵的數,告訴你不能再升級了。還想改?自己來吧!存檔裏的數都給你了,就看你自己能不能發現了。方法和上面都是一樣的!
 
  小總結:這種找和的方法,不知道是不是我最早發現的……因為畢竟不是破解演算法,所以我的實力還遠遠比不上那些做動物之森、任天狗修改器的人,但是我希望借此抛磚引玉,來幫助一些編程高手,解決NDS存檔的校驗碼問題,而不拘泥於演算法。同時,這種存檔修改法有一個局限性,就是必須要能隨時存檔,這樣才能很好的找到資料的變化。像〈失落的魔法〉那種一關存一次檔的,用這種方法就不好改了。
   有人會問:這不很簡單麼?怎麼複雜了?這只是遊戲開始的資料,到後面,有了道具,有了錢,資料會變的非常的多、非常的混亂。而我當時在研究這遊戲的時候恰恰就是在那時候研究的……總之,要修改是一定要有耐心的。切忌不要為了一點小的挫折而放棄,有恒心的話一定能修改成功的。

 最後一句,預祝大家都能改成功。

arrow
arrow
    全站熱搜

    ohgi01 發表在 痞客邦 留言(0) 人氣()