Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

N88-BASIC Language

771 views

Published on

NL-Nagoya 2016/04/16

Published in: Software
  • Be the first to comment

N88-BASIC Language

  1. 1. N88-BASIC Language Sunflat
  2. 2. 自己紹介 • Twitter: @sunflat • 仕事 • Sunflat GAMES: ゲーム開発 • Misoca: 請求書サービス開発 • ドラクエ10: 冒険者
  3. 3. N88-BASIC言語とは? • 昔、NECのPC-88/PC-98シリーズに 搭載されていたプログラミング言語 • 25年ほど前(1991年〜) EPSON製のPC-98互換機で N88-BASICを使っていた • 当時自分で書いたプログラムを 読み返してみよう!
  4. 4. EPSON PC-286C • PC-98互換機 • CPU 80286 10MHz • RAM 640KB • FDD2基 • NECのPC-98より だいぶ安かった • 定価168,000円 • キーボード一体型 MSXっぽくて良い
  5. 5. ディスクのデータ吸出し • エミュレータで実行させるため、 当時のFDのデータを吸い出した • ノート型PC-98をヤフオクで落札 (2008年ごろ。3000円ぐらい) • P.D.P.というツールで吸出し http://d.hatena.ne.jp/sunflat/20081205
  6. 6. 発掘されたプログラム例 • エミュレータ(T98-Next)で動作デモ • 洞窟探検ゲーム(スペースキーで操作)
  7. 7. 洞窟探検ゲームのプログラム • 当時はYISoftと名乗っていた
  8. 8. 謎1: ぎっしり詰まったコード • Minifyした結果ではない MSX-FANより • MSX-FAN(雑誌)に掲載された1画面プログラム などを打ち込んでプログラミングを覚えた • 「長方形にぎっしり詰まったコード = 美しいコード」 という、歪んだ美意識が育まれた
  9. 9. 謎2: 無意味なコード • 変数名も適当(キーボード配置が近い3文字)
  10. 10. 無意味なコードを除去後 • 動作は同じだが、長方形が崩れて美しくない • 綺麗な長方形にするために、わざと 無意味なコードを追加したと思われる
  11. 11. 謎3: 周辺チップへの直接アクセス • OUT命令: グラフィックチップ(GDC)にアクセスして 映像を縦に拡大表示している(高速化のため) • VOICE REG 命令: FM音源チップ(YM2608)に アクセスして音を出している(詳細不明)
  12. 12. 謎4: バイナリデータ列 機械語(マシン語) 自機の画像 パレット(色)
  13. 13. 機械語の中身を解析 • Online Disassembler(Webサービス) • i8086(16ビット)の機械語をアセンブリ言語に変換 VRAMのデータをスライドさせて、 画面を左スクロールしている
  14. 14. その他は、割と普通のコード • 読みづらいけど 初期設定 データ読込 描画 自機移動 ゲームオーバー
  15. 15. まとめ • 昔N88-BASICで書いたプログラムを 読んでみたが、解析が大変だった • ぎっしり詰まったコードスタイル • 高速化のため、一部が機械語 • ポート番号などを直接数値で記述 • 25年後に読んでも分かりやすい ソースコードを書こう!

×