編集可能 アプリで作成

FF3の難解コードの話から派生するアセンブラ話

とりあえずまとめてみました
7
ベラボー @berabo777

ファイナルファンタジー3に出てくる、つるぎざきさんの謎。市長さんとオロチさんのタッグで解明した感動巨編なんだけど、完結編見てなかった・・・。今更拝見したよ・・・。とってもいい話なので、知らなかった人は絶対見るべし! famicoroti.blog81.fc2.com/blog-entry-789…

2018-03-28 06:30:29
まかべひろし @sinpen

へえ、これは知らなかった>FF3

2018-03-29 09:55:31
まかべひろし @sinpen

さっきの記事から派生して読んだこれなんだけど、子どもの頃の当時はともかく、プロのゲームプログラマになった人には「これそんなにすごいことか?」と首をひねる人もいるんじゃなかろうか famicoroti.blog81.fc2.com/blog-entry-238…

2018-03-29 09:58:09
まかべひろし @sinpen

FF3は元のプログラムが難易度高すぎて解析できず移植が長年できなかった・・と言われるけれど、人の作ったソフトウェアを解析できないってことは早々無いことで、それはひたすら「工数と内容のバランスが見合わなかった」ということに尽きると思う

2018-03-29 10:04:25
まかべひろし @sinpen

例えば、とてもたくさんの予算と時間があれば、そこにバイナリが残っているソフトウェアを解析できない、なんてことはあり得ない。もし解析で欲しい結果が「その時彼は何を考えていたのか」みたいな推測であれば話は別だけど。

2018-03-29 10:06:49
まかべひろし @sinpen

個人的には、色々頓挫したFF3移植の話について、「内部でやろうとした時に何人かけて何ヶ月でやろうとしたか」「外注に出したときに、どこに出して予算どれくらいで何ヶ月でやろうとしたか」あたりの情報が付随した話がとても知りたいw

2018-03-29 10:09:40
こばやし 'にらたま' けんいち @Niratama

@sinpen 難解なプログラムとかむしろクソじゃねえか感すらある

2018-03-29 10:34:19
まかべひろし @sinpen

@Niratama まあ、当時は容量とか制約ありまくりだったから、難解にせざるを得ない可能性も、ね

2018-03-29 10:44:19
吉村ことり@ゲーム案件万引受〼 @urdcat

@sinpen @Niratama エディタやコンパイラに食わせられるファイルの容量上限があったときならともかく、それ以外では難解だろうが平易だろうがコメント山のように打ちます。打ちますよね。

2018-03-29 11:18:35
まかべひろし @sinpen

@urdcat @Niratama コメントは、んー、山のようにがどれくらいかわからないですが、 1画面の中にコメントがひとつもないことはない、程度には

2018-03-29 11:20:22
吉村ことり@ゲーム案件万引受〼 @urdcat

@sinpen @Niratama アセンブラなら、少なくともコードと同文字数以上のコメントは書いて良いような。

2018-03-29 11:25:54
まかべひろし @sinpen

@urdcat @Niratama 大昔過ぎて参考ならんですが、MSX時代の自分のアセンブラソースはこんな感じだったみたい。「;INCして...」の意味がわからないwww pic.twitter.com/9vyapv3IFQ

2018-03-29 11:29:12
拡大
岩崎啓眞@スマホゲーム屋+α @snapwith

@sinpen @urdcat @Niratama INCしてって、DEに戻り値が来てるからじゃね?w ところでさ、KNJCHKの戻りかCarryって、実にZ80なん感じすね…www

2018-03-29 11:48:13
吉村ことり@ゲーム案件万引受〼 @urdcat

@sinpen @Niratama 自分にも内容がわからないコメントはw アセンブラ時代のソースが探したのですが、持ち出せてないかHDDクラッシュ等で死んだりして手元に残ってなかったりorz リバイバー書いてた頃はエディタの制限で少なかったです。 Pentium4のCPU最適化してた時はコードの3倍くらいのコメント書いてました。

2018-03-29 11:48:31
まかべひろし @sinpen

@snapwith @urdcat @Niratama や、コメント見るまでも無くニモニック見りゃわかるだろうと。「int a = 1; // aに1を入れる」みたいなコメント過ぎてwww JRやJPにつかえるフラグを戻り値にするのは普通じゃないっすか・・w

2018-03-29 11:50:37
岩崎啓眞@スマホゲーム屋+α @snapwith

@sinpen @urdcat @Niratama 65(68)系だとロードでフラグが変化するのでw フラグを使うのに用心深くなるのだwwwwww わて、65世界が長かったものでwwww

2018-03-29 11:51:55
まかべひろし @sinpen

@urdcat @Niratama これは確か記憶によるとMSX(Z80)向けなんだけど、PC-98で書いてM80/L80でアセンブルまでしてたはずで、漢字コメント書いてるとか結構リッチ。純粋にMSX上で書いてた時は、半角カナコメントだったはず・・

2018-03-29 11:52:07
内藤時浩 @tokihiro_naito

@sinpen @snapwith @urdcat @Niratama その INCが何を意味するか書けよwww プログラムが難解なのは当然なので、大事なのはコメントですわ。

2018-03-29 11:54:22
吉村ことり@ゲーム案件万引受〼 @urdcat

@snapwith @sinpen @Niratama ちなみに私が当時使ってたアセンブラ?(自作)でこれの冒頭書くと procedure Avip() // バンクの初期化 !a:hl=(Paradr):de=BnkBuf:(de)=a:hl-de:bc=hl:bc- hl=BnkBuf:de=BnkBuf+1:\LDIR *Com_wr_r_ex // シナリオなどのデータロード ……って感じになりますねw

2018-03-29 11:55:40
まかべひろし @sinpen

@urdcat @snapwith @Niratama おー、便利そうです。今やるとなると、Excel使ってクロック数確認できるアセンブラ記述に興味がありますね。やる機会は無さそうですがw

2018-03-29 11:57:35
吉村ことり@ゲーム案件万引受〼 @urdcat

@snapwith @sinpen @Niratama 構造体使えたりマクロ使えたり、一体一意対応のラベルなんて変態なの使えたり。68に至ってはクラスメソッドと継承とか使えたり。

2018-03-29 11:59:18
吉村ことり@ゲーム案件万引受〼 @urdcat

@sinpen @snapwith @Niratama 今作ってるアセンブラクロック算出機能つけようかと。 Unityでグラフィカルインターフェイス上で使えるように作ってるのでw

2018-03-29 12:00:03
残りを読む(31)

コメント

ステアカー @Steer_car 2018年3月29日
全く無知なのでFF3移植不可事件(?)は、昔MONDO21でやってたTVゲーム・ジェネレーション~8bitの魂~という番組内で紹介された「ファミリーベーシックで作られたザックナー」的なものかと思ってた。 ファミリーベーシック自体が容量カッツカツでコレ自体がプログラムで書かれてるから…とかで例えば1行目は「100 ´アイキアカサエウココアイク…」とBASICって何かね…的な特殊な切り詰め方をしてるのでこんなもん本人以外解るかい!解析なんて出来るわけあるかい!!で放置されてた…と。(続く)
1
ステアカー @Steer_car 2018年3月29日
(続き)勿論これだって人間が書いたプログラムだから潤沢な予算と人数が揃ってれば出来たんじゃない?って話だと思うけど。ただ、FFシリーズのナージャさんや、元HAL研の故・岩田さん、ハドソンの中本さんとか?とんでもないプログラマーがいた!ってのは当時よく聞くけど今は多人数開発もあるからそういう目立ったプログラマっていないのかな。
1
CD @cleardice 2018年3月30日
ハード的な制約を逆手にとっていたり言語のバグを逆利用していたりすると最新の開発環境では再現できないことがあるそうな
3
ぼんぼ (カカオ72%) @tm_bonvo 2018年3月30日
アセンブリのコードは得てしてバッドノウハウの塊でメンテナンス性最悪だったりするしね
1
エリ・エリ・レマ・サンバディトゥナイ @mtoaki 2018年3月30日
tm_bonvo Z80なんか未定義命令使うのが常識だったみたいだしね
0
Daregada @daichi14657 2018年3月31日
たとえば、PC-6001のSCREEN4(同時表示2色まで)で別の色を表示するゲームがいくつかあるんだけど、バイナリ見ているだけでは再現できないよな(詳細は http://p6ers.net/mm/pc-6001/dev/screen4color/ )
0