關於NDS漢化中拆包打包程序的一點小程序

雖然自己還沒完全懂得漢化怎麼做,但根據安仔放下來的任務做做還是蠻有想法的,畢竟針對特定文件的一次性程序和適用各種類型文件的通用程序,所需要寫的代碼很不一樣,因爲爲了以後能更好的利用原先的代碼,必須儘量避免寫死一些參數。這裏我就感慨幾種自己用到的方法。

1.宏定義法

#define HEAD_LENGTH		 8		//文件頭名稱的長度
#define PAK_COUNT			 31		//需打包的文件的個數
#define PAK_START_OFFSET	          (0x90)	         //第一個包開始的偏移位置

這個就是教科書上的方法,也是宏定義第一種也最通用的方法,對於常量確實很有用。不過個人總覺的這種常量應該是幾個程序共同的數值,而不是一個程序一種常量值,所以上面代碼中的各種數值個人感覺不適宜用宏定義法,除非該程序只特定解決一個包文件。(這正是我最不想寫的一次性程序)

如何在程序中自動獲得這些常量的值(其實這些常量相對於不同的包還是變量),暫時沒想到簡單的方法,因爲只做了兩個打包文件和一個拆包文件,獲取這些常量通用的規律還沒找到。就算找到了還沒想到如何用簡潔的代碼表示出來。

2.函數化法

inline void getSrcName_i (char *srcName, char *outName, ULONG i)
{
			sprintf (srcName, "%s%d", outName, i + 1);
}

 

這個函數體只有一句,我仍然把它作爲一個函數,爲的就是以後修改方便,因爲貌似每次各個小包的命名方式都不一樣,以後想辦法在拆包時就統一各個小包的命名規則吧。而且小包是否有壓縮,命名方式又會有不同,是否包名中間加入lz77的標識我也說不準。

o(╯□╰)o:剛看自己代碼才發覺拆包程序生成的包的文件名太複雜了,害的打包程序要這麼說明:

/*
 *	打包工具
 *
 *	參數爲需要生成的包名文件,格式爲 *.PAK
 *	需要打包的包名要求格式爲	_*.PAK_$$.PAK		($$代表小包的序號,比如84)
 *			或者	_*.PAK_$$.zip.PAK	($$代表小包的序號,比如84)
 *
*/

以後一定要在拆包的函數裏面寫好生成什麼格式的包名,省的打包時文件名字符串處理一大堆事情

 

暈乎乎的,不寫了,睡覺去了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章