2019年07月20日

JNetHack 3.4.3-0.11 に複数のパッチを当ててコンパイル

JNetHack 3.4.3-0.11 に, Random Quest Patch, TNG Patch, Fighter Patch, UTF-8 Patch
を追加して, コンパイルしました. 未来の自分が読んでも理解できるように, 手順をなるべく丁寧に書きました. 必要ないことや余計なことをしている可能性があります. OS は Linux Mint 18.3 xfce です.

1. 必要なファイルを用意

nethack-343-src.tgz
jnethack-3.4.3-0.11.diff.gz
(url https://osdn.net/projects/jnethack/releases/)

Random_Quest-J343-v2.0.2_for_jnethack34311_diff.zip
Fighter-J343-v2.0.0.lzh
(url http://sakusha.s26.xrea.com/x/FHS/others.html)

jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2
(url http://www.phys98.homeip.net/~ide/jnethack.html)

jnethack-3.4.3-0.10-utf8-2.patch.bz2
(url http://elbereth.seesaa.net/article/242387348.html)


以上のファイルを
/home/ユーザー名/
に用意する

2. 必要なものをインストール

$ sudo apt install build-essential flex bison libncurses-dev jlha-utils

3. パッチの展開および文字コード, 改行文字変換

$ cd $HOME
$ unzip Random_Quest-J343-v2.0.2_for_jnethack34311_diff.zip
$ nkf -e -Lu --overwrite Random_Quest-J343-v2.0.2_for_jnethack34311.diff
$ lha xi Fighter-J343-v2.0.0.lzh
$ nkf -e -Lu --overwrite Fighter-J343-v2.0.0-jnethack34310-080504[Release]-SJIS-LF.diff

4. ソースを展開

$ tar zxvf nethack-343-src.tgz
$ cd nethack-3.4.3

5. 日本語化

$ zcat ../jnethack-3.4.3-0.11.diff.gz | patch -p1

6. 差分用の元ディレクトリを作製

$ cd ..
$ cp -a -r nethack-3.4.3 nethack-3.4.3-orig
$ cd nethack-3.4.3

7. Random Quest, TNG, Fighter Patch を当てる. reject された場合, その都度 rej ファイルを参考に手動で当てる.

$ patch -p1 < ../Random_Quest-J343-v2.0.2_for_jnethack34311.diff

sys/winnt/Makefile.gcc
fighter.des を gnome.des に書き換え

$ bzcat ../jnethack-3.4.3-0.10-tng-0.7.9.5.patch.bz2 | patch -p1

src/role.c.rej は無視する

src/role.c
# ifdef TNG_ROLE で囲まれた 3 箇所を, healer の定義の上にカット & ペースト
PM_SOFTWARE_BUG を PM_GRID_BUG に書き換え
ART_NETHACK_SOURCE の末尾に S を追加
ifdef TNG_ROLE と, それに対応する endif を削除

include/you.h
#define Q_GEEK を #define Q_HEALER の上にカット & ペースト
Q_GEEK の値を (Q_FENCER+1) に, Q_HEALER の値を (Q_GEEK+1) にする
#define QR_GEEK を QR_HEALER の上にカット & ペースト

win/tty/wintty.c
630 行目 (healer の上) に
case 'g': flags.initrole = Q_GEEK; break;
を追加. 列を合わせる.

$ patch -p1 < ../Fighter-J343-v2.0.0-jnethack34310-080504[Release]-SJIS-LF.diff

src/role.c.rej は無視する

include/artifact.c.rej
copyright 表記の追加だけにする

include/artifact.c
artifact の生成数を抑制している部分 (260 行あたり),
#ifdef RANDOM_QUEST

#if defined(RANDOM_QUEST) || defined(FIGHTER)
に書き換える

win/share/objects.txt.rej, monsters.txt.rej はとりあえず無視.

src/u_init.c
Fighter のスキルに P_CHEMISTRY を P_SKILLED で追加.
他のクラスの, tng patch で追加された錬金術スキルと比較して, あってもいいと判断した.

include/qtext.h
N_HDR に上から +4, +2 する. これでいいか不安.

8. ここまでの差分を作製しておく.

$ cd ..
$ diff -urN nethack-3.4.3-orig nethack-3.4.3 > jnh3.4.3-0.11-rq-tng-fig.patch
$ bzip2 -f jnh3.4.3-0.11-rq-tng-fig.patch
$ cd nethack-3.4.3

9. utf-8 パッチを当てる

$ bzcat ../jnethack-3.4.3-0.10-utf8-2.patch.bz2 | patch -p1

sys/unix/unixmain.c の 22 行目に
#include <locale.h>
を追加.

10.インストール

$ sh sys/unix/setup.sh
$ python ../nhreplace.py
$ make all
$ sudo make install

11.設定ファイル

/home/ユーザー名/ に

OPTIONS=color
OPTIONS=windowtype:tty

を記述した .jnethackrc という名のテキストファイルを作成

12.起動

$ jnethack

jnh-rq-tng-fig001.png

utf-8 patch のおかげで, デフォルトの端末からでも文字化けせずに起動しました. 戦士とギークが追加されています.

13.補足

次にコンパイルする際は, 6, 7, 8 の過程を飛ばす代わりに,

$ bzcat ../jnh3.4.3-0.11-rq-tng-fig.patch.bz2 | patch -p1

と入力するだけで良いです.
posted by Takenoko at 13:33| Comment(0) | game | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: