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

とりあえずまとめてみました
8
ベラボー @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