2020年07月31日

GearHead SDL 版を Linux Mint 18.3 32bit でコンパイルしました

5 年ぶり二度目. あのとき, 手順をメモしておかなかったおかげで, 5 年後の自分が苦労している. もう苦労したくないので, 今度は書いておきます.

参考ページ http://www.fenix.ne.jp/~G-HAL/scribble/gearhead/gearhead1.scribble#build

1. libiconv をインストール
https://www.kkaneko.jp/tools/ubuntu/gcc10.html の "libiconv のインストール" に書いてある通りにします.
以下はコピー.
$ cd /tmp
$ wget https://ftp.gnu.org/gnu/libiconv/libiconv-1.16.tar.gz
$ rm -rf libiconv-1.16
$ tar -xvzof libiconv-1.16.tar.gz
$ cd libiconv-1.16
$ mkdir build
$ cd build
$ ../configure --with-mpfr --with-gmp --prefix=/usr/local --enable-static --enable-shared
$ make -j2
$ sudo make install

2. /usr/local/lib/ 以下のライブラリが使えるようにする
http://weble.org/2011/12/20/ubuntu-ld-so-conf
を参考に作業します. 以下はほぼコピー.
私は vim を使いましたが, 他のエディタでも構いません.
$ sudo vim /etc/ld.so.conf
次の一行を追加.
include /usr/local/lib
設定を反映させる.
$ sudo ldconfig

3. SDL-ttf をインストール
$ sudo apt install libsdl-ttf2.0-dev

4. smpeg をインストール
$ sudo apt install libsmpeg-dev
他にもインストールする必要があるライブラリがあるはずですが,
私の環境ではすでにインストールされていたようです.

5. Free Pascal をインストール.
$ sudo apt install fpc-3.0.0

6. コンパイル
$ cd ~
$ wget https://sourceforge.net/projects/gearhead/files/gearhead/1.100/gh-1100-src.zip/download -O gh-1100-src.zip
$ wget http://www.fenix.ne.jp/~G-HAL/scribble/gearhead/GearHead1-I18N.data.jp.zip
$ wget http://www.fenix.ne.jp/~G-HAL/scribble/gearhead/GearHead1-I18N.image.zip
$ wget http://www.fenix.ne.jp/~G-HAL/scribble/gearhead/GearHead1-I18N.sound.zip
$ wget http://www.fenix.ne.jp/~G-HAL/scribble/gearhead/GearHead1-I18N.src.zip
$ unzip gh-1100-src.zip
$ mv GearHead GH1
$ unzip -d GH1 GearHead1-I18N.src.zip
$ unzip -o GearHead1-I18N.image.zip
$ unzip -o GearHead1-I18N.sound.zip
$ unzip -o GearHead1-I18N.data.jp.zip
$ cd GH1/build/xterm-boxdrawing
$ mv * ../../xterm-boxdrawing
$ cd ..
$ rm -r xterm-boxdrawing
$ mv * ../
$ rm -r build
$ /bin/sh ./build.sh sdl clean build nolibiconv_plug nolibc_iconv
$ mv build.sdl.Linux_athlon/gharena gharena
$ rm -r build.sdl.Linux_athlon

7. 環境変数を設定する
$HOME/.profile に環境変数 GEARHEAD_LANG を追加します.
下の一行は vim を使う場合.
$ vim ~/.profile
以下三行を追加します.

if [ -d "$HOME/GH1" ] ; then
    export GEARHEAD_LANG=ja_JP.UTF-8
fi

GEARHEAD_LANG の値については,
環境によって適切なものを選ぶ必要があるはずです.
以下のコマンドで設定を反映.
$ source ~/.profile

8. gharena.cfg
$ ./gharena
起動すると, ほとんどの文字が四角になっています.
一番下の項目で Enter を押して終了します.
起動したことで $HOME/.config/gharena/ に
gharena.cfg が作製されます.
GH1/gharena.cfg.jp_debianlinux を参考にフォントを変更します.
もう一度
$ ./gharena
と入力し起動すると, 文字化けは解消しているはずです.
linuxgh1title.png

これで完成です.

9. 次回以降の起動方法

$ cd ~
$ cd GH1
$ ./gharena
で起動できます.

posted by Takenoko at 20:59| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年09月06日

JNetHack ゲヘナ

ゲヘナまでやってきた.

jnhfillice.png
jnhfillfire.png

パッチを自作して, ゲヘナの迷路をこういうランダムマップで置き換えています. JSporkHack のスクリーンショットに影響されました. あの迷路, 正直, 退屈だなあと, 20 年程思い続けていました.

jnhinv.png

ちょっと準備しすぎた.

jnhorcus.png

虐殺の巻物は, 呪われたもの以外は, m に対してのみ使うことにしています. 店に出現できなくなるため, その分アイテムが増えます.

ラベル:Roguelike nethack
posted by Takenoko at 11:49| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年09月01日

JNetHack TNG Patch 用 Patch 1.30

JNetHack TNG Patch 用 Patch の Version 1.20 です. 以下の修正を行います.

1. reject された噂を追加
2. ショッカーの効果が機能するように
3. ショッカー使用時のメッセージを追加
4. 力の杖の SPFX_TOUCH が機能するように
5. 力の杖に SPFX_NOGEN フラグを追加
6. ムーマクベーンが巨大ムーマクにも効くように
7. ムーマク, 巨大ムーマクの色を白に変更
8. ガラスの指輪の素材を IRON から GLASS に変更
9. ローグレベルのモンスターの G_GENO フラグを除去, M2_NOPOLY フラグを追加
10. TNG の追加ユニークに M2_NOPOLY フラグを追加

ローグレベルのモンスターやユニークモンスターが変化によって出現してしまうことがあったため, それを防ぐための修正などを行いました. 多分防げていると思います.

ファイル ダウンロード

使い方は, JNetHack3.4.3-0.11 に TNG 最新安定版 Patch を当てた後,
$ bzcat ../jnh3.4.3-0.11-tng-fix-v130.patch.bz2 | patch -p1
と入力するだけです. テスト版に適用できるかどうかはわかりません.

余談ですが, 私が遊んでいたオリジナルの TNG のバージョンは, ローグレベルのモンスターが通常のレベルに出現することがよくあり, ノームの鉱山で翼ライオンによく殺されたものです.

ラベル:nethack Roguelike
posted by Takenoko at 21:39| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年08月31日

JNetHack 3.4.3 魔法防御, ドレイン耐性, 騎乗スキル上昇

JNetHack 3.4.3 のソースを読んでわかった事を自分用にメモ. 昔ネットにあったスポイラーは, だいぶ少なくなってしまったし. C 言語は全く自信がない. 読み間違いがあるかもしれない.

src/monst.c
攻撃属性に AD_MAGM (魔法の矢) がある場合 (灰色ドラゴン, 天使, 賢者, イーノグ), 灰色ドラゴンの子供である場合, 攻撃属性に AD_RBRE (ランダムブレス) がある場合 (クロマティック・ドラゴン) は, 魔法防御を持つ.

src/monst.c
アンデッド, 悪魔, 獣人, デスはドレイン耐性を持つ.

src/hack.c から呼ばれている, src/steed.c の exercise_steed
騎乗した状態で移動するごとに, urideturns に +1 される. 待機では上昇しない. urideturns が 100 以上になった際に 騎乗スキル経験値に +1 され, urideturns が 0 になる. 降りたりしても, urideturns が減ることはない.

ラベル:Roguelike nethack
posted by Takenoko at 12:31| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年08月23日

JNetHack フォント変更 スクリーンショット

jnhgnome.png

NetHack tty TrueType Tile Font で公開されているフォントに変更してみました. "{" と "}" のような, 一見で見分けづらいシンボルが見やすくなるし, なにより美しい. すばらしい. 私は, NPC だけはアルファベットで表示しています. そのほうがわかりやすい.

jnhmumak.png

ムーマクやばい. イメージほど遅くないし.


この表示だと, htmldump で出力した map がまともに表示されない. 一旦ゲームを終了し, フォントを戻して出力すると, 問題はなかった.

19/08/24 追記 文章を修正.
ラベル:Roguelike nethack
posted by Takenoko at 15:39| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年08月22日

JNetHack TNG Patch 用 Patch 1.20

JNetHack TNG Patch 用 Patch の Version 1.20 です. 以下の修正を行います.

1. reject された噂を追加
2. ショッカーの効果が機能するように
3. ショッカー使用時のメッセージを追加
4. 力の杖の SPFX_TOUCH が機能するように
5. 力の杖に SPFX_NOGEN フラグを追加
6. ムーマクベーンが巨大ムーマクにも効くように
7. ムーマク, 巨大ムーマクの色を白に変更

ムーマクベーンが, TNG で追加された巨大ムーマクに効果が無いのはあんまりだと思ったので.

ファイル ダウンロード

使い方は, JNetHack3.4.3-0.11 に TNG 最新安定版 Patch を当てた後,

$ bzcat ../jnh3.4.3-0.11-tng-fix-v120.patch.bz2 | patch -p1

と入力するだけです. テスト版に適用できるかどうかはわかりません.
ラベル:Roguelike nethack
posted by Takenoko at 13:08| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年08月09日

JNetHack TNG Patch 用 Patch を作製しました

以前の記事 の, TNG Patch への変更内容を Patch にしました. reject された部分も修正してあります.

ファイル

JNetHack3.4.3-0.11 に TNG 最新安定版 Patch を当てた後,

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

と入力するだけです.
ラベル:nethack Roguelike
posted by Takenoko at 12:52| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年07月31日

JNetHack TNG Patch を当てた後に

JNetHack TNG (3.4.3 対応版, 最新安定版) で気になることがあったので, 少し変更してみました. パッチを当てた後に以下の変更を行い, コンパイルします.

1. 追加された属性武器が効果を発揮しない

ムーマクベーンは炎, ショッカーは電撃属性攻撃武器ですが, SPFX_ATTK フラグがついていません. これによりダメージ増加効果が発生しないことをショッカーで確認したので, これを解決します.

include/artilist.h

Mumakbane, Shocker に SPFX_ATTK flag を追加

2. ショッカーの攻撃時メッセージ

ショッカーで攻撃した際, 巨大なハンマーは, と形容されます. ミョルニール以外の電撃武器は考慮されていないようです. というわけで, ショッカー用のメッセージを追加します.

src/artifact.c

if (attacks(AD_ELEC, otmp)) {
if (realizes_damage)
の下のメッセージを



に変更する.

3. 力の杖

力の杖の効果は, コメントやコードを読むと, 他属性, 他クラスのアーティファクトに触れてもペナルティを受けずに使用できるようになる, という意図があるようですが, 実際にはうまく動いていないようです. そこで, 力の杖を wield 所持している場合, そういう風に動作するように変更しました.

include/prop.h

#define SECOND_CHANCE
の下に



を追加. その下の LAST_PROP の値を (ART_TOUCHABLE) に変更する.

include/youprop.h

#define Lifesaved
の下に



を追加

include/artilist.h

Wand of Might の
(SPFX_RESTR|SPFX_TOUCH), 0

SPFX_RESTR, SPFX_TOUCH
に置換

src/artifact.c

set_artifact_intrinsic の後半,
SPFX_REFLECT の on/off の下に



を追加. また,

if (oart->spfx & SPFX_TOUCH) return 1;

をコメントアウトし, その下に,



を追加.


間違いがある可能性があります. とりあえず, 期待したように動作することを, Wizard モードで確認しました.

19/08/08 追記
wield だと, 武器アーティファクトに効果が発揮されないため, 所持に修正.

19/08/09 追記
パッチ を作製しました.

19/08/22 追記
パッチ 1.20 を作製しました.
posted by Takenoko at 16:29| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2019年07月27日

JNetHack スクリーンショット

最近はネットハックばかり.
jnh-rq-tng-fig002.png
Geek の故郷へやってきた. ゲイツはマインドフレアと同じ吸い取り攻撃をしてきたと思うので, もっと武器が強くなるまで放っておくつもり.

jnh-rq-tng-fig003.png
願いを三回引いたであろうとわかる画像. ランプから二回, 泉から一回. 他クラスのクエストアーティファクトは, 後半になると手に入れづらくなるので, どうしても願ってしまう. 命の魔除けとかの方が安定するとは思う. PYEC は, 確か 3.2 から充填の効果が弱くなったが, 魔法のマーカは 50 まで充填できるし, まだ十分使える. アルゴルの太陽虎の歯は d20/d20 の威力がある. 3.4 では二刀流できるので, オリジナルの TNG よりも役に立つだろう.
ラベル:nethack Roguelike
posted by Takenoko at 14:11| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

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 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。