[SML 8159] Re: NesTalkをpharo5.0に移植途中なのですが・・・

Masato Sumi sumi @ seagreen.ocn.ne.jp
2017年 1月 17日 (火) 12:21:12 JST


古川さん

#deprecated: は非推奨メソッドに組み込んでおき、コールされた場合に警告を出すためのメソッドで、
試しておられるような使い方は見たことがないのですが、当方の勘違いでしょうか?

あと、古川さんは OS は何を使われていますか?


手元の環境(Win 8.1)で試しましたが、#romFile: で ROM ファイルを読み込めないだけで
これをとりあえず

romFile: path
    ^ path asFileReference readStreamDo:
        [:stream | self readCartridge: stream]

のように修正すれば他には特に修正なしに動きました。よく調べていませんが、
Pharo の Path>>#segments あたりが Win でうまく機能していないせいのように見受けられます。

macOS はちょっと古いバージョン(10.9)でしか試していないのですが、
Win で動かすときような修正の必要はなく、インストールしただけで特にいじらずとも起動まではしました。
しかし、Pharo が macOS で動くときに #keyDonw、#keyUp イベントでちゃんとキーコードを保持できていないらしく
操作不能な状態に陥っているように見受けられます。
とりあえず、#keyStroke イベントはちゃんとキーコードを保持できているようなので、
#handlesKeyDown: と同じ内容の #handlesKeyStroke: メソッドを NesTalkWindow に追加してみたところ、
それらしき反応はしてくれるようです(ただ、これだけですとボタンが押しっぱなしになるので相変わらずプレイは不能ですが…)

--
sumim


2017年1月15日 20:00 Sunao Furukawa <sadie @ kind.ocn.ne.jp>:
> 古川と申します。
> NesTalkでマリオを動かす
> http://oohito.com/nqthm/archives/2060
> を参考に
> NesTalkをpharo 5.0に移植しようと思って作業しているのですが、
> FileStreamのメソッドをdeprecated:にすればいいと思っていました。
> しかし、validate:aByteArrayの引数で具体的な値が入りません。
> pharo2.0でやれば、シンボルのブロックが代入されているところで、
> pharo5.0ではFileStreamの変数が指定されています。
> どう直したらいいでしょう。
>
> 変更したメソッドを書いておきます。なお、BabyMockはsmalltalkhubから
> loadしました。
> --------------------------------------------------------------
> romFile: path
>         ^ FileSystem disk / path binaryReadStreamDo:
>                 [:stream | self readCartridge: stream]
>
> ---------------------------------------------------------------
> readCartridge: stream
>         | roms vroms header |
>         stream deprecated: 'binary'.
>         header := NtCartridgeHeader fromByteArray: (stream deprecated:
> 'next: 16').
>         roms := self readRoms: stream header: header.
>         vroms := self readVroms: stream header: header.
>         ^ self new
>                 setHeader: header
>                 roms: roms
>                 vroms: vroms
>                 tiles: (self tilesPerVrom: vroms)
> ----------------------------------------------------------------
> 虫のいい話で申し訳ありません。ポイントは'next: 16'がdeprecated:にした時に
> 値を読み込まないことだと思います。
>


SML メーリングリストの案内