2019/04/01(月) [n年前の日記]
#1 [anime] 「絶対監督主義 〜シネマラボ 押井守たちの挑戦〜」を視聴
NHK-BSで放送されてたソレを録画して視聴。低予算で野心的な映画を作る、シネマラボという集団を、押井守監督、本広克行監督、等々と設立したそうで、その第1弾作品の制作に密着取材、という番組らしい。
13歳の役者さんを起用してしまったものだから、労働基準法の関係で夜08:00までしか撮影ができず、スケジュールがアレになってキレ気味の押井監督の図。撮影は終わったけど公開の予定が立たず編集すら始められず。なんやかんやで完成したけど映画祭での上映は試写扱い故にスタッフロールを流せない等々、次から次へとトラブルが。
はたして件の作品は劇場公開にこぎつけられるのか。戦いはこれからだ! みたいな。
13歳の役者さんを起用してしまったものだから、労働基準法の関係で夜08:00までしか撮影ができず、スケジュールがアレになってキレ気味の押井監督の図。撮影は終わったけど公開の予定が立たず編集すら始められず。なんやかんやで完成したけど映画祭での上映は試写扱い故にスタッフロールを流せない等々、次から次へとトラブルが。
はたして件の作品は劇場公開にこぎつけられるのか。戦いはこれからだ! みたいな。
[ ツッコむ ]
#2 [anime] 「歴史秘話マクロスヒストリア」を視聴
NHKで以下略。
冒頭の「キューンキューン」にクラクラ。NHKのセルフパロディは、やはり強い…。
シリーズの傾向を、歌、メカ、三角関係の3つで紹介していく感じで、比較的分かりやすい説明になっていた印象。
冒頭の「キューンキューン」にクラクラ。NHKのセルフパロディは、やはり強い…。
シリーズの傾向を、歌、メカ、三角関係の3つで紹介していく感じで、比較的分かりやすい説明になっていた印象。
[ ツッコむ ]
2019/04/02(火) [n年前の日記]
#1 [ubuntu] VMware + Ubuntu 18.04 で Ubuntu-Mate をインストールしようとしたのだけど
Windows10 x64 + VMware Player 12.5.9 + Ubuntu 18.04 LTS 上に、ubuntu-mate をインストールして動かそうとしたのだけど。
ログイン画面で、MATE を選んでログインすると、画面が真っ暗になって先に進まず。なんでだろう…。
とりあえず ubuntu-mate はアンインストール。Ctrl + Alt + F1 を押して CUI でログインしてから以下。
Wayland とやらが絡んでるのかと思ったけれど、gdm3 ならともかく、lightdm関係でそれらしい設定は見つからないし。よくわからんな…。
試しに Cinnamon もインストールしてみたけど、そちらも画面が真っ暗になる。うーん。
sudo apt install ubuntu-mate-desktop sudo reboot
ログイン画面で、MATE を選んでログインすると、画面が真っ暗になって先に進まず。なんでだろう…。
とりあえず ubuntu-mate はアンインストール。Ctrl + Alt + F1 を押して CUI でログインしてから以下。
sudo apt remove ubuntu-mate-desktop mate-* ubuntu-mate-* plymouth-theme-ubuntu-mate-*
Wayland とやらが絡んでるのかと思ったけれど、gdm3 ならともかく、lightdm関係でそれらしい設定は見つからないし。よくわからんな…。
試しに Cinnamon もインストールしてみたけど、そちらも画面が真っ暗になる。うーん。
sudo apt install cinnamon-desktop-environment sudo reboot
sudo apt remove cinnamon cinnamon-*
◎ 参考ページ。 :
[ ツッコむ ]
#2 [anime] 「ポプテピピック TVスペシャル」を視聴
BS-11放送版を視聴。
「スーパーバリザー」と 「大爆発 青山敏之」にやられました。たしかに正しい役職名。100%正しい。
「スーパーバリザー」と 「大爆発 青山敏之」にやられました。たしかに正しい役職名。100%正しい。
[ ツッコむ ]
2019/04/03(水) [n年前の日記]
#1 [ubuntu] Ubuntu MATE をVMwareやVirtualBox上でインストールしてみた
Windows10 x64 + VMware Player 12 + Ubuntu 18.04 LTS x64 上で、ubuntu-mate-desktop をインストールしても動かなかったのが気になったので、Ubuntu MATE 18.04 x64 の iso をダウンロードして、最初からインストールしてみた。
VMware Player 12 と VirtualBox 6.0.4 上でそれぞれインストールしてみたけど、ちゃんと起動してくれた。
ということは、Ubuntu 公式をインストールして、後から MATE を使おうとすると妙なことになるのかな。相変わらず原因は分からんけど。もしかするとアレコレ色んなパッケージをインストールする前に MATE を入れれば動くのだろうか。
VMware Player 12 と VirtualBox 6.0.4 上でそれぞれインストールしてみたけど、ちゃんと起動してくれた。
ということは、Ubuntu 公式をインストールして、後から MATE を使おうとすると妙なことになるのかな。相変わらず原因は分からんけど。もしかするとアレコレ色んなパッケージをインストールする前に MATE を入れれば動くのだろうか。
[ ツッコむ ]
#2 [ubuntu] Vagrant と VirtualBox をアップデート
せっかくだから、Vagrant と VirtualBox をアップデート。環境は Windows10 x64。
pluginも更新した。
- VirtualBox 5.2.12 -> 6.0.4
- Vagrant 2.1.1 -> 2.2.4
pluginも更新した。
vagrant plugin expunge --reinstall vagrant plugin update
> vagrant plugin list vagrant-global-status (0.1.4, global) - Version Constraint: > 0 vagrant-hostmanager (1.8.9, global) - Version Constraint: > 0 vagrant-share (1.1.9, global) - Version Constraint: > 0 vagrant-vbguest (0.17.2, global) - Version Constraint: > 0
[ ツッコむ ]
#3 [movie] 「忍びの国」を途中から視聴
昨晩TVで放送されていたので途中から視聴、かつ、録画して最後のあたりを視聴。
ジャニーズの人が出てる映画だからどうせたいした映画ではないのだろう、ある種のアイドル映画なんだろう、などと失礼なことを思いながら眺めていたけど、予想外に面白かった。アクションシーンが凄い。そしてラストがなんかイイ。ちゃんとフツーに楽しめる映画、だったような気がする。
主演の人が時折見せる、どこか奇妙な気配の表情が、キャラ設定に合ってるなと…。怖さを感じる…。軽さが虚無に通じてるというか…。
ジャニーズの人が出てる映画だからどうせたいした映画ではないのだろう、ある種のアイドル映画なんだろう、などと失礼なことを思いながら眺めていたけど、予想外に面白かった。アクションシーンが凄い。そしてラストがなんかイイ。ちゃんとフツーに楽しめる映画、だったような気がする。
主演の人が時折見せる、どこか奇妙な気配の表情が、キャラ設定に合ってるなと…。怖さを感じる…。軽さが虚無に通じてるというか…。
[ ツッコむ ]
#4 [anime] 「荒野のコトブキ飛行隊」最終回を視聴
BS-11で放送されてたソレを視聴。TVアニメでありながら無謀にも戦車アニメ「ガルパン」を作ってしまった水島努監督が、舞台を陸から空へと変えて、みたいなアニメ。
とにもかくにも空戦シーンが凄かった。見ていて「いやいやいやいや」「無理無理無理無理」と思わず呟いてしまうほど。素晴らしい。CGの強みを存分に活かした映像。こんな映像、手描きではとても作れないなと。いやまあ、数機で飛ぶぐらいなら「紅の豚」等もあるけれど、これだけの数が、こんな場所で、しかもこの尺の分量で飛びまくるのは、手描きじゃ無理だろうと。
なんとくだけど、空戦シーンに全てをつぎ込んだ、一点豪華主義のアニメ、だった印象。
惜しいと思ったのは、どの飛行機に誰が乗ってるかさっぱり分からなかった点。翼に描かれた模様が違うと言われても、あんなに激しく動いてたら分かるわけがない。誰が乗ってるか分からないから、誰がピンチになってるのかも分からないわけで、当然ドキドキハラハラ感も減少気味に。キャラの顔がアップになってから、「えっ。このキャラが乗ってたの?」とようやく驚くという。赤いシャアザク等、昔のロボットが色分けされてたのって、とても大事なことだったんだなと改めて認識。
とにもかくにも空戦シーンが凄かった。見ていて「いやいやいやいや」「無理無理無理無理」と思わず呟いてしまうほど。素晴らしい。CGの強みを存分に活かした映像。こんな映像、手描きではとても作れないなと。いやまあ、数機で飛ぶぐらいなら「紅の豚」等もあるけれど、これだけの数が、こんな場所で、しかもこの尺の分量で飛びまくるのは、手描きじゃ無理だろうと。
なんとくだけど、空戦シーンに全てをつぎ込んだ、一点豪華主義のアニメ、だった印象。
惜しいと思ったのは、どの飛行機に誰が乗ってるかさっぱり分からなかった点。翼に描かれた模様が違うと言われても、あんなに激しく動いてたら分かるわけがない。誰が乗ってるか分からないから、誰がピンチになってるのかも分からないわけで、当然ドキドキハラハラ感も減少気味に。キャラの顔がアップになってから、「えっ。このキャラが乗ってたの?」とようやく驚くという。赤いシャアザク等、昔のロボットが色分けされてたのって、とても大事なことだったんだなと改めて認識。
[ ツッコむ ]
2019/04/04(木) [n年前の日記]
#1 [anime] 「revisions」最終回を視聴
BSフジで放送されていた、3DCGによるSFアニメ。最終回を視聴。
3DCGアニメというと、なんだかちょっとアレな作品が多い印象があったのだけど。ちゃんとフツーに面白かった。やはり、谷口悟朗監督と3DCGの相性はイイのではないかなあと思えたり。「ID-0」も面白かったし。カッチリした見た目の映像と、おそらくは監督の志向性が、パチリとハマるというか。
現時点では、3DCGだってちゃんと面白いアニメをコレこの通り作れるよ、という前例を一つでも多く増やして、視聴者側の印象・抵抗感をちょっとずつでも変えていくことが大事だと思うので、売れる売れないは別にして、こういう成功事例は実にありがたいなと。
シリーズ構成として、深見真氏が参加していたあたりも大きかったのではないかと個人的に邪推してるのだけどどうなのだろう…。
最後のあたり、主人公のアレな素性が明らかになったあたりに感心。もしかすると、巷に溢れる異世界転生モノへのアンチテーゼも入ってたりしないか…。
3DCGアニメというと、なんだかちょっとアレな作品が多い印象があったのだけど。ちゃんとフツーに面白かった。やはり、谷口悟朗監督と3DCGの相性はイイのではないかなあと思えたり。「ID-0」も面白かったし。カッチリした見た目の映像と、おそらくは監督の志向性が、パチリとハマるというか。
現時点では、3DCGだってちゃんと面白いアニメをコレこの通り作れるよ、という前例を一つでも多く増やして、視聴者側の印象・抵抗感をちょっとずつでも変えていくことが大事だと思うので、売れる売れないは別にして、こういう成功事例は実にありがたいなと。
シリーズ構成として、深見真氏が参加していたあたりも大きかったのではないかと個人的に邪推してるのだけどどうなのだろう…。
最後のあたり、主人公のアレな素性が明らかになったあたりに感心。もしかすると、巷に溢れる異世界転生モノへのアンチテーゼも入ってたりしないか…。
[ ツッコむ ]
#2 [anime] 「けものフレンズ2」最終回を視聴
一応最後まで視聴。ちなみに1は未見。
面白いかどうかは別にして、全体的に、子供向けの企画であればコレでも十分じゃないか、という印象だった。おそらくはこの方向性が、プロジェクト全体が目指してた本来の方向性ではないのかなと勝手に想像。
某アニメのように、関節が変なめり込みをしていたり、線のゴミが出たり等も無かったし、映像は綺麗だったなと。モデリングも、おそらくは原作絵に近づいているのではないかと。
つくづく、「2」がついてなければ…。「本家」「元祖」「新」「真」等をつけるわけにはいかなかったのだろうか。まあ、シリーズ化したいという野望がそこにあったのかなと邪推したりもするけど。ナンバリング以外でもシリーズ化はできると思うのだけどなあ。
そういえば、某アニメ同様、モーションがガチガチだった気もする。今の動きはスゴイ、てな瞬間が無かったような…。まあ、どちらもリソースが少ないのだろう…。どうもこのあたり、手描きアニメを参考にしつつモデルを歪ませてまで動きを追及する本格派と、動いてればいいじゃん派に二分化してきている感じが…。いやまあ、それは手描きアニメも同じか…。でも、CGアニメーターは手描きアニメーターと違って、モーション以外については拘ることができないのに、そのモーションすら拘らなくてどうするの、てな気分にもなったりして。
面白いかどうかは別にして、全体的に、子供向けの企画であればコレでも十分じゃないか、という印象だった。おそらくはこの方向性が、プロジェクト全体が目指してた本来の方向性ではないのかなと勝手に想像。
某アニメのように、関節が変なめり込みをしていたり、線のゴミが出たり等も無かったし、映像は綺麗だったなと。モデリングも、おそらくは原作絵に近づいているのではないかと。
つくづく、「2」がついてなければ…。「本家」「元祖」「新」「真」等をつけるわけにはいかなかったのだろうか。まあ、シリーズ化したいという野望がそこにあったのかなと邪推したりもするけど。ナンバリング以外でもシリーズ化はできると思うのだけどなあ。
そういえば、某アニメ同様、モーションがガチガチだった気もする。今の動きはスゴイ、てな瞬間が無かったような…。まあ、どちらもリソースが少ないのだろう…。どうもこのあたり、手描きアニメを参考にしつつモデルを歪ませてまで動きを追及する本格派と、動いてればいいじゃん派に二分化してきている感じが…。いやまあ、それは手描きアニメも同じか…。でも、CGアニメーターは手描きアニメーターと違って、モーション以外については拘ることができないのに、そのモーションすら拘らなくてどうするの、てな気分にもなったりして。
[ ツッコむ ]
#3 [anime] 「劇場版 ソードアート・オンライン -オーディナル・スケール-」を視聴
NHK-BSで放送されてたソレを録画して視聴。
面白い。これはかなり良い出来なのでは。TVシリーズを見ていることが前提の設定・脚本ではあるけれど、既存作を見ていた人へのサービス心が溢れ出ていたように感じたり。クライマックスのアクション作画も凄かった。ような気がする。
ARを基本設定に据えたアニメと言えば「電脳コイル」だけど、このアニメもARアニメとして双璧扱いしても良いのではないかとすら。描かれる光景に、リアリティと夢があるよなと…。まあ、電脳メガネもオーグマーも、今の段階では実現が難しいわけだけど。
面白い。これはかなり良い出来なのでは。TVシリーズを見ていることが前提の設定・脚本ではあるけれど、既存作を見ていた人へのサービス心が溢れ出ていたように感じたり。クライマックスのアクション作画も凄かった。ような気がする。
ARを基本設定に据えたアニメと言えば「電脳コイル」だけど、このアニメもARアニメとして双璧扱いしても良いのではないかとすら。描かれる光景に、リアリティと夢があるよなと…。まあ、電脳メガネもオーグマーも、今の段階では実現が難しいわけだけど。
[ ツッコむ ]
2019/04/05(金) [n年前の日記]
#1 [anime] 「平成狸合戦ぽんぽこ」を一部視聴
TVをつけたら流れていたのでほんの少し視聴。
改めて眺めてみると、アニメならではの自由奔放なメタモルフォーゼが活用されていて、晩年、手描きアニメらしさを追及してスタッフに地獄を見せた高畑監督の志向性が感じられた気もしたり。いやまあ、今ならCGが使えそうなカットがあるような気もするけど。
と思ったけれど、ググってみたらジブリで一番最初にCGを導入してみた作品、だったらしい。
_ジブリで1番最初にCGが使われた作品『平成狸合戦ぽんぽこ』 | 非公式スタジオジブリ ファンサイト【ジブリのせかい】 宮崎駿・高畑勲の最新情報
まあ、メタモルフォーゼ部分で使ってたわけではなさそうだけど。
全然関係ないけど。誰かが、「ぽんぽこの先にけもフレがある」みたいなことを言っていて、なんとなく「あー」と思いました。
改めて眺めてみると、アニメならではの自由奔放なメタモルフォーゼが活用されていて、晩年、手描きアニメらしさを追及してスタッフに地獄を見せた高畑監督の志向性が感じられた気もしたり。いやまあ、今ならCGが使えそうなカットがあるような気もするけど。
と思ったけれど、ググってみたらジブリで一番最初にCGを導入してみた作品、だったらしい。
_ジブリで1番最初にCGが使われた作品『平成狸合戦ぽんぽこ』 | 非公式スタジオジブリ ファンサイト【ジブリのせかい】 宮崎駿・高畑勲の最新情報
まあ、メタモルフォーゼ部分で使ってたわけではなさそうだけど。
全然関係ないけど。誰かが、「ぽんぽこの先にけもフレがある」みたいなことを言っていて、なんとなく「あー」と思いました。
[ ツッコむ ]
2019/04/06(土) [n年前の日記]
#1 [anime] 「とある魔術の禁書目録」3期の最終回を視聴
BS11で放送されてたソレを視聴。
何が何だかさっぱり分からないアニメだった…。
まあ、BSでは1期も2期も未放送なので、いきなり3期を見せられても、そりゃワケワカランわなと。しかも前作を見てること前提の作りだったし。なんで3期から放送しちゃったのか、そこからして意味不明。
見ていて色々言いたくなってしまったけれど、そのあたりはGRPでメモ。
何が何だかさっぱり分からないアニメだった…。
まあ、BSでは1期も2期も未放送なので、いきなり3期を見せられても、そりゃワケワカランわなと。しかも前作を見てること前提の作りだったし。なんで3期から放送しちゃったのか、そこからして意味不明。
見ていて色々言いたくなってしまったけれど、そのあたりはGRPでメモ。
[ ツッコむ ]
2019/04/07(日) [n年前の日記]
#1 [anime] ルパン三世pert5、19話「7.62mmのミラージュ」を視聴
脚本が、「キノの旅」「ガンゲイル・オンライン」の時雨沢恵一氏だった。もちろん題材は、銃。ひたすら射撃の応酬。さすがとしか言いようがない。素晴らしい。
携帯灰皿に煙草の吸殻を入れて、「カシャッ」と閉じるのがカッコイイ。ポイ捨てより全然カッコイイし、今後喫煙シーンを見せるならコレだなあ、などと感心したり。
携帯灰皿に煙草の吸殻を入れて、「カシャッ」と閉じるのがカッコイイ。ポイ捨てより全然カッコイイし、今後喫煙シーンを見せるならコレだなあ、などと感心したり。
[ ツッコむ ]
2019/04/08(月) [n年前の日記]
#1 [gimp] GIMPの「対話的歪め」はどこに消えた
GIMP 2.10 で作業をしようとして気づいたのだけど、フィルタ → 変形 → 対話的歪め (IWarp) が見つからず。どこに消えたのだ。
_4.7. 対話的歪め...
GIMP 2.10 では、Warp Transform というツールに進化していたらしい。
_4.12. Warp Transform
リリースノートに書いてあった…。
_GIMP - GIMP 2.10 Release
小さいサムネイル画像ではなく、実画像サイズで作業できるので、たしかに改善されてる気がする。
Windows 10 x64 + GIMP 2.8.22 Portable + 対話的歪め、で動画を作成しようとすると画像がグチャグチャになったけれど、GIMP 2.10.8 + Warp Transform ならそういうこともなく。バグも取れているっぽい。
_4.7. 対話的歪め...
GIMP 2.10 では、Warp Transform というツールに進化していたらしい。
_4.12. Warp Transform
リリースノートに書いてあった…。
_GIMP - GIMP 2.10 Release
小さいサムネイル画像ではなく、実画像サイズで作業できるので、たしかに改善されてる気がする。
Windows 10 x64 + GIMP 2.8.22 Portable + 対話的歪め、で動画を作成しようとすると画像がグチャグチャになったけれど、GIMP 2.10.8 + Warp Transform ならそういうこともなく。バグも取れているっぽい。
[ ツッコむ ]
#2 [cg_tools] シネマグラフについて少し調べていたり
最近ちょっと気になるCGソフトがあって。
_PhotoMirage
というソフトなのだけど。なんでも、静止画に矢印等で動きを指定するだけで、ループ動画を作成できるっぽい。どういう仕組みなのだろうと。
色々調べていたら、その手の動画・アニメgifは「シネマグラフ(cinemagraph)」と呼ばれていて、数年前に流行ったことがあるようで。
ただ、一般的なシネマグラフは、動画ファイルの一部を切り出して、動く部分と動かない部分をマスクで切り分けて、という流れで作るっぽい。最近の Photoshop は動画を取り込むこともできるので、Photoshop でシネマグラフを作るチュートリアル記事などをそこそこ見かけた。
もっとも、自分が気になるのは、静止画を無理矢理動いてるように見せかける手法のほうで…。そういう方法はほとんど誰も紹介しておらず、さて、どうやって作るのかなと気になってるところ。
色々調べていたら、その手の動画・アニメgifは「シネマグラフ(cinemagraph)」と呼ばれていて、数年前に流行ったことがあるようで。
ただ、一般的なシネマグラフは、動画ファイルの一部を切り出して、動く部分と動かない部分をマスクで切り分けて、という流れで作るっぽい。最近の Photoshop は動画を取り込むこともできるので、Photoshop でシネマグラフを作るチュートリアル記事などをそこそこ見かけた。
もっとも、自分が気になるのは、静止画を無理矢理動いてるように見せかける手法のほうで…。そういう方法はほとんど誰も紹介しておらず、さて、どうやって作るのかなと気になってるところ。
◎ ループ動画の作り方について。 :
シネマグラフはループ動画なわけだけど、どうやってループさせるかが気になるところ。巷の記事では、3種類ぐらいあるらしい。
PhotoMirage でやっているのは、3番目の方法だろう。
これをひとまず手作業で再現できないものだろうか。仕組みさえ分かれば自動化できるだろうし。と思って、AviUtl を使って試してたのだけど、なかなか上手くいかない。動きが逆再生されるような見た目になる。なんでや。
- ピンポン風。「A」→「B」で構成されてる動画があったら、ABBAと並べる。動きが行ったり来たりすることで、ループしてるように見える。
- ループの繋がりを気にしない。ABCDで構成されてる動画があったら、そのまま流す。ループの繋ぎ目がガタッとなるけど気にしない。
- ループの繋ぎ目をオーバーラップする。ABCDの動画があったら、ABの部分にCDを重ねて、CDをフェードアウトさせる。
PhotoMirage でやっているのは、3番目の方法だろう。
これをひとまず手作業で再現できないものだろうか。仕組みさえ分かれば自動化できるだろうし。と思って、AviUtl を使って試してたのだけど、なかなか上手くいかない。動きが逆再生されるような見た目になる。なんでや。
◎ 静止画を変形させるソレ。 :
静止画が変形していく動画の作成には、もしかすると GIMP 2.10.x の Warp Transform ツールが使えるのではないかと思えてきた。Warp Transform には、変形する様子を複数のコマで出力してくれる、「Create Animation」というボタン(機能?)が用意されているわけで。まあ、GIMP 2.8.x の IWarp(対話的歪め)にも、同様の機能があるのだけど。
てなわけで、適当な画像を開いて実験してたのだけど。これがなかなか上手くいかない。
てなわけで、適当な画像を開いて実験してたのだけど。これがなかなか上手くいかない。
[ ツッコむ ]
2019/04/09(火) [n年前の日記]
#1 [cg_tools][gimp] GIMP 2.10 で静止画からシネマグラフを作成
GIMP 2.10.8 Portable + AviUtl 1.00 + 拡張編集プラグインを使って、静止画からシネマグラフを作成する実験をしてみたり。環境は Windows10 x64。
_GIMP Portable (image editor) | PortableApps.com
_AviUtlのお部屋
実験用の元画像は以下から入手して使わせてもらった。
_Pixabay
_済州島天地淵の滝 済州天地淵の滝 千の遅れの滝 - Pixabayの無料写真
_GIMP Portable (image editor) | PortableApps.com
_AviUtlのお部屋
実験用の元画像は以下から入手して使わせてもらった。
_Pixabay
_済州島天地淵の滝 済州天地淵の滝 千の遅れの滝 - Pixabayの無料写真
◎ 作業の流れをメモ。 :
GIMPで、元画像を640x360に縮小。
レイヤーをコピーしてから、Warp Transform ツールで、滝の部分だけを変形させた。
Warp Transform ツールの使用直後に、ツールオプションウインドウ内にある、 Create Animation ボタンを押せば、指定したフレーム数分、レイヤーが並んだ新規画像が ―― 1コマが1レイヤーとして扱われてる新規画像が作成される。
注意点。Warp Transform ツールで変形した後、xcf等でファイル保存をしてしまうだけでも、Create Animation ボタンがグレーアウトして、動画を作れなくなってしまう。おそらく、件のツールを使ってる間は動画を生成するための情報を保持しているけど、そこから一旦抜けると、動画生成用の情報をクリアして、変形を確定してしまうのではないかと。
ちなみに、1コマが1レイヤーになっている画像は、Filters → Animation → 再生、を使ってプレビュー再生することができる。
各レイヤーを連番png画像として保存。以下のプラグインを使わせてもらった。導入すれば、ファイル → Export Layers で利用できる。
_khalim19/gimp-plugin-export-layers
動かない部分も作っておいて、アルファチャンネル付きのpng画像として保存。この画像は、動画編集ツール等で作業する際、上から被せて使う。
先ほど出力した連番png画像を AviUtl + 拡張編集プラグインで読み込んで mp4動画にする。
そのまま作ると以下のように並べることになるけれど。この状態だとループの繋ぎ目がガタッとなってしまう。
クリップの最後のあたりで分割して、以下のように並べて、徐々に透明度が高くなってフェードアウト(?)するように指定した。
というわけで、以下のような結果になった。
ループの繋ぎ目を処理しない場合は以下のようになる。ガタッとしてる。
レイヤーをコピーしてから、Warp Transform ツールで、滝の部分だけを変形させた。
Warp Transform ツールの使用直後に、ツールオプションウインドウ内にある、 Create Animation ボタンを押せば、指定したフレーム数分、レイヤーが並んだ新規画像が ―― 1コマが1レイヤーとして扱われてる新規画像が作成される。
注意点。Warp Transform ツールで変形した後、xcf等でファイル保存をしてしまうだけでも、Create Animation ボタンがグレーアウトして、動画を作れなくなってしまう。おそらく、件のツールを使ってる間は動画を生成するための情報を保持しているけど、そこから一旦抜けると、動画生成用の情報をクリアして、変形を確定してしまうのではないかと。
ちなみに、1コマが1レイヤーになっている画像は、Filters → Animation → 再生、を使ってプレビュー再生することができる。
各レイヤーを連番png画像として保存。以下のプラグインを使わせてもらった。導入すれば、ファイル → Export Layers で利用できる。
_khalim19/gimp-plugin-export-layers
動かない部分も作っておいて、アルファチャンネル付きのpng画像として保存。この画像は、動画編集ツール等で作業する際、上から被せて使う。
先ほど出力した連番png画像を AviUtl + 拡張編集プラグインで読み込んで mp4動画にする。
そのまま作ると以下のように並べることになるけれど。この状態だとループの繋ぎ目がガタッとなってしまう。
クリップの最後のあたりで分割して、以下のように並べて、徐々に透明度が高くなってフェードアウト(?)するように指定した。
というわけで、以下のような結果になった。
ループの繋ぎ目を処理しない場合は以下のようになる。ガタッとしてる。
◎ 感想。 :
画像を変形させるのが面倒臭い…。綺麗に動いてるように見えない…。
ということで、GIMP を使って手作業でやれなくもないけれど、PhotoMirage等の専用ソフトを購入したほうが、圧倒的に作業が楽だろうし、はるかに綺麗な動画が得られそうだな、と。
ということで、GIMP を使って手作業でやれなくもないけれど、PhotoMirage等の専用ソフトを購入したほうが、圧倒的に作業が楽だろうし、はるかに綺麗な動画が得られそうだな、と。
[ ツッコむ ]
2019/04/10(水) [n年前の日記]
#1 [nitijyou] 外は雪
夕方頃、みぞれ状の雪がガンガン降って、夜にはうっすら積もってしまった。
[ ツッコむ ]
#2 [gimp] GIMP 2.10 Windows版の入力欄のバグが取れたと一瞬思ったらまたバグり始めた
GIMP 2.10 Windows版には、日本語環境で入力欄に半角英数文字を入力すると半角カタカナになってしまうという不具合・バグがあって。
GIMP は GTK+ を使って作られているけれど、比較的新しいバージョンの GTK+ 32bit版がバグってるようで。GTK+ 32bit版を使ってるIDE、Geany Windows版でも同じバグが発生しているので、やはり GTK+ 32bit が犯人としか思えない。
以下でも報告があるけれど、Windows10 の build によって、症状が出たり出なかったりするらしい。
_GIMP 2.10.2 Windows x86 Only, Keyboards Key Binding Error (#1603) - Issues - GNOME / GIMP - GitLab
しかし、ここ数日、GIMP 2.10.8 Portable (32bit版)を起動して使っていたら、そのバグが解消されていることに気づいたり。その際確認した Windows 10 のバージョンは、1803, build 17134.6xx、だったはず。メモするのを忘れてしまったけれど、たしか最後の数字が600番台だった。
これは、1809 で行われた修正が、1803 にも下りてきたのかな、と喜んでいたのだけど。
ところが。今日になって確認してみたところ、また件の症状が再発生して…。今現在の、自分の手元の Windows10 は、1803, build 17134.706。
どうなってるんだ。Microsoft。いや、この場合、GTK+ がアレなのかもしれないけど。
ていうか、いつになったら 1809 にアップグレードされるんだろう…。もう次の版が出てきそうなのに…。
- 32bit版で発生する。64bit版では発生しない。
- Windows 10 1803 で発生する。
- Windows 10 1809 では発生しない。(以前は発生していたけど、ビルドバージョンが上がったら発生しなくなった。)
GIMP は GTK+ を使って作られているけれど、比較的新しいバージョンの GTK+ 32bit版がバグってるようで。GTK+ 32bit版を使ってるIDE、Geany Windows版でも同じバグが発生しているので、やはり GTK+ 32bit が犯人としか思えない。
以下でも報告があるけれど、Windows10 の build によって、症状が出たり出なかったりするらしい。
_GIMP 2.10.2 Windows x86 Only, Keyboards Key Binding Error (#1603) - Issues - GNOME / GIMP - GitLab
Windows10 1803 still has this problem even if it is latest build.
* 1803 (build 17134.1〜17134.83) didn't have this problem.
* 1803 (build 17134.112〜17134.472) has the problem.
Windows 10 1809 fixed this problem with latest build.
* 1809 (build 17763.1〜17763.134) has the problem.
* 1809 (build 17763.168〜17763.195) does not have the problem.
しかし、ここ数日、GIMP 2.10.8 Portable (32bit版)を起動して使っていたら、そのバグが解消されていることに気づいたり。その際確認した Windows 10 のバージョンは、1803, build 17134.6xx、だったはず。メモするのを忘れてしまったけれど、たしか最後の数字が600番台だった。
これは、1809 で行われた修正が、1803 にも下りてきたのかな、と喜んでいたのだけど。
ところが。今日になって確認してみたところ、また件の症状が再発生して…。今現在の、自分の手元の Windows10 は、1803, build 17134.706。
どうなってるんだ。Microsoft。いや、この場合、GTK+ がアレなのかもしれないけど。
ていうか、いつになったら 1809 にアップグレードされるんだろう…。もう次の版が出てきそうなのに…。
◎ 2回目の起動からはバグが出なくなるような気がする。 :
GIMP 2.10.8 Portable を弄ってたら、何かの拍子に件のバグが出なくなった。なんだコレ。
Windows10 を再起動してからアレコレ試してみたところ、どうやら最初の1回目の GIMP 2.10.8 の起動時はバグが出るけど、2回目の起動時には件の不具合が出てこなくなる、ような気がしてきた。実際本当にそうなのか、ちょっと自信がないけど…。
と思ったら、3回目の起動時は件の不具合がまた発生。
4回目の起動時は…。不具合が出ない。
なんだコレ。どこで何が起きてるのだろうなあ…。
Windows10 を再起動してからアレコレ試してみたところ、どうやら最初の1回目の GIMP 2.10.8 の起動時はバグが出るけど、2回目の起動時には件の不具合が出てこなくなる、ような気がしてきた。実際本当にそうなのか、ちょっと自信がないけど…。
と思ったら、3回目の起動時は件の不具合がまた発生。
4回目の起動時は…。不具合が出ない。
なんだコレ。どこで何が起きてるのだろうなあ…。
[ ツッコむ ]
2019/04/11(木) [n年前の日記]
#1 [anime] 「異世界かるてっと」1話を視聴
KADOKAWAから出版されてる異世界転生モノのラノベ、に登場するキャラが集結した、コメディギャグアニメ、という説明でいいのだろうか。つまりは異世界転生版スパロボ、みたいな感じのアニメを視聴。
色んな作品の、色んなキャラの性格が、かなりちゃんと把握されてるように見えて感心。たしかにこういう場面なら、あのキャラはこういうことを言いそうだよな、みたいな。
スタッフ名でググってみて驚いた。 _「なつみSTEP」の作者さん が作画担当なのか…。脚本等を担当してる社長さんもスゴイ。 _獣医とアニメ制作の兼業 とは…。そんなスタジオが存在するのか…。兼業で、この出来…。これはスゴイ。素晴らしい。
それにしても、FLASHアニメをコツコツと作り続けていたら、こういう展開だって十分あり得たかもしれないのですね…。
色んな作品の、色んなキャラの性格が、かなりちゃんと把握されてるように見えて感心。たしかにこういう場面なら、あのキャラはこういうことを言いそうだよな、みたいな。
スタッフ名でググってみて驚いた。 _「なつみSTEP」の作者さん が作画担当なのか…。脚本等を担当してる社長さんもスゴイ。 _獣医とアニメ制作の兼業 とは…。そんなスタジオが存在するのか…。兼業で、この出来…。これはスゴイ。素晴らしい。
それにしても、FLASHアニメをコツコツと作り続けていたら、こういう展開だって十分あり得たかもしれないのですね…。
[ ツッコむ ]
2019/04/12(金) [n年前の日記]
#1 [tv][anime] 未知との遭遇は笑ってするものだろうか
NHK朝ドラ「なつぞら」を、ここのところ一応視聴しているのです。なんでも、ヒロインが後にアニメーターになるそうで、その設定ならちょっと見ておかないといかんかなあ、と。
ただ、今日の回の冒頭で、妙なシーンがあったように感じてしまって。いやまあ、一般的にはたいしたアレではないよなとも思うけど。
どんなシーンかというと…。子供時代のヒロインが、おそらくは生まれて初めてアニメーションを目にするシーン、だったのかな。たぶん。
一つ前の回で、学校の先生が、「皆さんに、まんが映画を見てもらいます」と説明して、小学生達が「…まんが映画ってなんじゃ?」と疑問をつぶやいてたりしたので、おそらく設定上は、まんが映画を見たことがない子供達ばかりがそこに居るのだろうと推測したのですが。
しかし、今回、そのまんが映画 *1 の上映が始まる前から、子役ヒロインや、モブの同級生達が、いきなり最初から満面の笑みをたっぷりと浮かべてスクリーンを見つめていて。「いやあ、コレは楽しみだなあ。どんなアニメを見れるのだろう」てな感じの楽し気な顔で…。
ソレ、ちょっとおかしいよなー、と。
例えばだけど、フツーに考えたら、以下のような光景・描写にならないか…。
どうして雑になってしまったのか。これは勝手な推測だけど、作り手世代が、自分達の世代感覚だけで、うっかり描写していた可能性がないかと。脚本家も演出家も、おそらくは子供の頃からアニメが存在するのが当たり前の世代。故に、子供がアニメを見るとなれば最初から「楽しみだなー」てな顔をするもんだろう、と思い込んでいるのではないかと。 *2
しかし、それは間違いだと思うわけで。生まれて初めて目にする、自身にとっては未知のモノを、最初から笑って見ている子供がはたして居るのだろうかと。
作り手のおじさん世代の体験で置き換えれば…。例えば、TVゲームなんかはどうだろう。子供の頃の自分が、TVゲームを生まれて初めて目撃した時、最初からニッコニコした顔で眺めてましたかと。そんなわけないですよ。「TVの中で、何だか変なものが動いてるぞ…。一体なんだコレ…」と真剣な顔でじっと凝視して、ソイツの正体を突き止めてやろうとしていたんじゃないですかね。
未知との遭遇って、そういうもんじゃないのかな。笑いながら目撃したりはしないよなと。
今回、ヒロインが、いずれはそういう職業につくわけで、コレはもう人生を変えるほどの出会いだったはず。結構重要なシーンだろうと思うわけで。それにしちゃ、描写が雑過ぎないかと。こういう重要なシーンで説得力を持たせなくてどうするのだろう。こんな調子で今後大丈夫なのか。
アニメがまだ一般的には知られてなかった時代に、それを初めて目にする子供達の姿を描けるなんて、かなり面白い仕事じゃないかとも思うわけで。自然と妄想が膨らむじゃないですか。一体どういう気分で見るんだろう。どんな顔して見てたんだろう。想像せずには居られない。でも、こんな面白いシーンを、「どうせこんなもんだろ」「ガキの反応なんてこんな感じに決まってる」的に見せちゃうのって、ソレどうなんだ。みたいな。
でもまあ、どんどん撮影していかないと放送に間に合わないですわな…。朝ドラはスケジュールが厳しいと聞いた記憶もあるし。なので、仕方ないよなー、とも思うのですけど。
まあ、そんな感じで、ちょっぴり気になってしまったのでした。「え? それでいいの? これでOKなの?」「ココ結構重要なシーンとちゃうんか?」みたいな。それだけの話です。
ただ、今日の回の冒頭で、妙なシーンがあったように感じてしまって。いやまあ、一般的にはたいしたアレではないよなとも思うけど。
どんなシーンかというと…。子供時代のヒロインが、おそらくは生まれて初めてアニメーションを目にするシーン、だったのかな。たぶん。
一つ前の回で、学校の先生が、「皆さんに、まんが映画を見てもらいます」と説明して、小学生達が「…まんが映画ってなんじゃ?」と疑問をつぶやいてたりしたので、おそらく設定上は、まんが映画を見たことがない子供達ばかりがそこに居るのだろうと推測したのですが。
しかし、今回、そのまんが映画 *1 の上映が始まる前から、子役ヒロインや、モブの同級生達が、いきなり最初から満面の笑みをたっぷりと浮かべてスクリーンを見つめていて。「いやあ、コレは楽しみだなあ。どんなアニメを見れるのだろう」てな感じの楽し気な顔で…。
ソレ、ちょっとおかしいよなー、と。
例えばだけど、フツーに考えたら、以下のような光景・描写にならないか…。
- 「まんが映画ってなんじゃ?」「わしらはこれから一体何を見せられるんじゃ?」と怪訝・不安げな子供達の表情。
- 上映が始まると、「おお…。まんが映画を見たことある○吉が得意気に言ってた通りじゃ。絵が動いとるぞなもし…」的に、驚きの表情。
- キャラのコミカルなアクションを見て、教室のあちこちから「ハハッ」「ふふっ」と笑い声が少しずつ漏れ始める。
- 最後のあたりは、教室中からどっと笑い声が発せられる。全員が満面の笑みを浮かべている。
どうして雑になってしまったのか。これは勝手な推測だけど、作り手世代が、自分達の世代感覚だけで、うっかり描写していた可能性がないかと。脚本家も演出家も、おそらくは子供の頃からアニメが存在するのが当たり前の世代。故に、子供がアニメを見るとなれば最初から「楽しみだなー」てな顔をするもんだろう、と思い込んでいるのではないかと。 *2
しかし、それは間違いだと思うわけで。生まれて初めて目にする、自身にとっては未知のモノを、最初から笑って見ている子供がはたして居るのだろうかと。
作り手のおじさん世代の体験で置き換えれば…。例えば、TVゲームなんかはどうだろう。子供の頃の自分が、TVゲームを生まれて初めて目撃した時、最初からニッコニコした顔で眺めてましたかと。そんなわけないですよ。「TVの中で、何だか変なものが動いてるぞ…。一体なんだコレ…」と真剣な顔でじっと凝視して、ソイツの正体を突き止めてやろうとしていたんじゃないですかね。
未知との遭遇って、そういうもんじゃないのかな。笑いながら目撃したりはしないよなと。
今回、ヒロインが、いずれはそういう職業につくわけで、コレはもう人生を変えるほどの出会いだったはず。結構重要なシーンだろうと思うわけで。それにしちゃ、描写が雑過ぎないかと。こういう重要なシーンで説得力を持たせなくてどうするのだろう。こんな調子で今後大丈夫なのか。
アニメがまだ一般的には知られてなかった時代に、それを初めて目にする子供達の姿を描けるなんて、かなり面白い仕事じゃないかとも思うわけで。自然と妄想が膨らむじゃないですか。一体どういう気分で見るんだろう。どんな顔して見てたんだろう。想像せずには居られない。でも、こんな面白いシーンを、「どうせこんなもんだろ」「ガキの反応なんてこんな感じに決まってる」的に見せちゃうのって、ソレどうなんだ。みたいな。
でもまあ、どんどん撮影していかないと放送に間に合わないですわな…。朝ドラはスケジュールが厳しいと聞いた記憶もあるし。なので、仕方ないよなー、とも思うのですけど。
まあ、そんな感じで、ちょっぴり気になってしまったのでした。「え? それでいいの? これでOKなの?」「ココ結構重要なシーンとちゃうんか?」みたいな。それだけの話です。
◎ 実写畑の甘え。 :
ちょっと失礼な話かもしれんけど、もしかすると実写畑には、役者の存在に甘えてるところがありそうだなと思ったりもして。
実写は、カメラの前に役者さんが居るので、何も努力しなくても実在感が確保できる。現実にはありえない言動でも、目の前の役者さんが演じれば、それだけでもそれなりに説得力が出てきちゃう。なので、ちょっとおかしな描写をしていても、うっかりスルーしちゃう。
これがアニメだと、そういうわけには行かない。良くも悪くも、所詮は人が描いた絵に過ぎないので…。そこに、本当に人物が居るかのような錯覚をさせるためには、細かいところで説得力を持たせる努力をしないといけない。コマ単位で、「こいつ今どんな気分になってるんだろ」と想像しながら、ちょっとした動きや表情を意識的に挿入して、視聴者の脳内で眠っている記憶を釣り上げて、「そうそう、○○ってこういうときがある」と気づかせることで感情移入を誘う、というか。そのためには、とにかく観察が必要で…。
そんな工夫や努力を、延々と、愚直なまでにコツコツやってきたのが、東映動画で育った高畑監督だったり、宮崎駿監督だったり、共に働いていたベテランアニメーターの方々、だったりするのだろうと。
今回の朝ドラは、ヒロインが将来アニメーターになる ―― それも、初期の東映動画相当に入社するヒロインということで、アニメとは何なのかを再確認する機会が密かに含まれているのかもしれん、と想像していたりするのですけど。
図らずもこういうところで、アニメだったら許されないけど実写畑ならうっかり許されちゃう、いわば実写畑の甘えのようなものを、ちらりと目撃してしまったのかもしれないな、などと思ったりもして。
まあ、そのあたり、実写の強みでもあるし、弱みでもあろうし…。便利な時もあるし、不利な時もあるのだろう、と…。
実写は、カメラの前に役者さんが居るので、何も努力しなくても実在感が確保できる。現実にはありえない言動でも、目の前の役者さんが演じれば、それだけでもそれなりに説得力が出てきちゃう。なので、ちょっとおかしな描写をしていても、うっかりスルーしちゃう。
これがアニメだと、そういうわけには行かない。良くも悪くも、所詮は人が描いた絵に過ぎないので…。そこに、本当に人物が居るかのような錯覚をさせるためには、細かいところで説得力を持たせる努力をしないといけない。コマ単位で、「こいつ今どんな気分になってるんだろ」と想像しながら、ちょっとした動きや表情を意識的に挿入して、視聴者の脳内で眠っている記憶を釣り上げて、「そうそう、○○ってこういうときがある」と気づかせることで感情移入を誘う、というか。そのためには、とにかく観察が必要で…。
そんな工夫や努力を、延々と、愚直なまでにコツコツやってきたのが、東映動画で育った高畑監督だったり、宮崎駿監督だったり、共に働いていたベテランアニメーターの方々、だったりするのだろうと。
今回の朝ドラは、ヒロインが将来アニメーターになる ―― それも、初期の東映動画相当に入社するヒロインということで、アニメとは何なのかを再確認する機会が密かに含まれているのかもしれん、と想像していたりするのですけど。
図らずもこういうところで、アニメだったら許されないけど実写畑ならうっかり許されちゃう、いわば実写畑の甘えのようなものを、ちらりと目撃してしまったのかもしれないな、などと思ったりもして。
まあ、そのあたり、実写の強みでもあるし、弱みでもあろうし…。便利な時もあるし、不利な時もあるのだろう、と…。
◎ 気づくための儀式。 :
完全に余談だけど。こういう時に、「高畑監督だったらこういうときどうするかなあ」みたいなことをちょっと考えてみると有効かもしれないと想像したりもして。
高畑監督ならあんな描写したかな。しないよな。あんなシーンをスタッフが作ろうとしたら、3時間ぐらいネチネチ説教されてスタッフの目がみるみる死んでいくか、無言で監督が帰っちゃって3日ぐらいスタジオに出てきてくれなかったりしそう。
まあ、別に、高畑監督を思い浮かべなくてもいいんだけど。小津監督でも黒澤監督でも誰でもいいけど、「〜監督なら、〜さんなら、コレどうするかな」みたいなことをチラリと考えたら、「む。このシーンは違うな。これじゃねえな」ぐらいは気づくんじゃないか ―― 気づけるための儀式がゲットできるんじゃないか。などと妄想したりしました。
まあ、以下の話からそういうことを妄想しただけなんですけど。
_「宮崎監督と一緒に仕事をされて何を学びましたか?」
高畑監督ならあんな描写したかな。しないよな。あんなシーンをスタッフが作ろうとしたら、3時間ぐらいネチネチ説教されてスタッフの目がみるみる死んでいくか、無言で監督が帰っちゃって3日ぐらいスタジオに出てきてくれなかったりしそう。
まあ、別に、高畑監督を思い浮かべなくてもいいんだけど。小津監督でも黒澤監督でも誰でもいいけど、「〜監督なら、〜さんなら、コレどうするかな」みたいなことをチラリと考えたら、「む。このシーンは違うな。これじゃねえな」ぐらいは気づくんじゃないか ―― 気づけるための儀式がゲットできるんじゃないか。などと妄想したりしました。
まあ、以下の話からそういうことを妄想しただけなんですけど。
_「宮崎監督と一緒に仕事をされて何を学びましたか?」
[ ツッコむ ]
#2 [zatta] WTOについて少し調べたり
ちょっと気になるニュースがあって。
_日本が逆転敗訴、韓国の水産物禁輸巡り WTO最終審
これはもしかして、「日本の提出した資料が捏造データだったということが判明しちゃったのでは」「日本人は政府からずっと騙されていたということになるのでは」「安全性云々が怪しくなってきたのかな」などと妙な邪推(?)をしながら判決(?)の原文をあたってみたのだけど。
_WTO | 2019 News items - Appellate Body issues report regarding Korean restrictions on Japanese food imports
何が書いてあるのかさっぱりだけど、少なくとも、安全性について新しい何かがわかったわけではなさそうだなと…。冒頭では、「日本が提出した資料が不十分なのでこれじゃ判断できねえな」「日本の言い分は信用できねえ」てなことしか書いてないように見えるというか。コレ、もしかして、外務省の担当官僚がポカをしちゃったケースなのではと邪推しちゃったりもして。
そもそもWTOって何なのか、そこからして恥ずかしながら知らなかったのでググってみたのだけど。
_世界貿易機関 - Wikipedia
_RIETI - WTOなき世界:何が問題なのか?
_韓国WTO提訴:韓国メディア「敗訴する」 危険性の証明困難 過去日本も敗訴 | NewSphere
必要性はあるらしいけど、なんかちょっと変なことしてる組織にも見えるなと…。以前日本が輸入禁止をした時は、「輸入禁止してる日本が危険性を証明しろよ。言いがかりつけてんじゃねえ」と言ってきたのに、今回韓国が輸入禁止をした事例では、「輸出してる日本が安全性を証明しろよ」みたいな状態になってる感じがするし、これもう韓国から日本が差別されてるとかそういう話じゃなくて、WTOから日本が差別されてるんじゃないの? という不安が。
WTOはもはや機能してないという評もあるようだし、去年の中頃からアメリカのトランプ大統領が、「このままだとアメリカはWTOを脱退するぞ」と脅しをかけてたらしいし。
_トランプ米大統領、WTO脱退を警告 不公平な扱い受けたと - BBCニュース
_WTOとトランプ米政権の壊れた関係,修復可能か? | 馬田啓一
_コラム:米国離反でWTOに「機能不全」の恐れ - ロイター
ということで、ググって色々眺めてみたけど、WTOの現状自体が、どうもよくわからんなと。
_日本が逆転敗訴、韓国の水産物禁輸巡り WTO最終審
これはもしかして、「日本の提出した資料が捏造データだったということが判明しちゃったのでは」「日本人は政府からずっと騙されていたということになるのでは」「安全性云々が怪しくなってきたのかな」などと妙な邪推(?)をしながら判決(?)の原文をあたってみたのだけど。
_WTO | 2019 News items - Appellate Body issues report regarding Korean restrictions on Japanese food imports
何が書いてあるのかさっぱりだけど、少なくとも、安全性について新しい何かがわかったわけではなさそうだなと…。冒頭では、「日本が提出した資料が不十分なのでこれじゃ判断できねえな」「日本の言い分は信用できねえ」てなことしか書いてないように見えるというか。コレ、もしかして、外務省の担当官僚がポカをしちゃったケースなのではと邪推しちゃったりもして。
そもそもWTOって何なのか、そこからして恥ずかしながら知らなかったのでググってみたのだけど。
_世界貿易機関 - Wikipedia
_RIETI - WTOなき世界:何が問題なのか?
_韓国WTO提訴:韓国メディア「敗訴する」 危険性の証明困難 過去日本も敗訴 | NewSphere
同紙は、アメリカが1997年に、反対に日本の禁輸措置(害虫の流入を防ぐためだとして米国産リンゴを禁輸)をWTOに提訴、米側が勝訴した件を例に挙げる。その際、WTOは、禁輸品目の危険性については「輸入禁止国側が科学的に証明しなければならない」と判断した。韓国の専門家らは、今回のケースでも同様に、禁輸措置を取っている韓国側が危険性の立証をしなければならならず、それは「容易ではない」と指摘しているようだ。
必要性はあるらしいけど、なんかちょっと変なことしてる組織にも見えるなと…。以前日本が輸入禁止をした時は、「輸入禁止してる日本が危険性を証明しろよ。言いがかりつけてんじゃねえ」と言ってきたのに、今回韓国が輸入禁止をした事例では、「輸出してる日本が安全性を証明しろよ」みたいな状態になってる感じがするし、これもう韓国から日本が差別されてるとかそういう話じゃなくて、WTOから日本が差別されてるんじゃないの? という不安が。
WTOはもはや機能してないという評もあるようだし、去年の中頃からアメリカのトランプ大統領が、「このままだとアメリカはWTOを脱退するぞ」と脅しをかけてたらしいし。
_トランプ米大統領、WTO脱退を警告 不公平な扱い受けたと - BBCニュース
_WTOとトランプ米政権の壊れた関係,修復可能か? | 馬田啓一
_コラム:米国離反でWTOに「機能不全」の恐れ - ロイター
ということで、ググって色々眺めてみたけど、WTOの現状自体が、どうもよくわからんなと。
[ ツッコむ ]
2019/04/13(土) [n年前の日記]
#1 [ruby][dxruby] DXRuby 1.5.22devのshader機能にバグがありそう
ふと、以前書いた Ruby + DXRuby 用のスクリプトについて動作確認していたら、今頃になってDXRuby開発版のバグらしきものを発見。shader を使うと、テクスチャが表示されないときがある、ような気がする。気がするというか、表示されてない…。
環境は、Windows10 x64 + Ruby 2.2.6 p396 mingw32 + dxruby 1.5.22dev。例えば、以下のようなスクリプトを動かすと、テクスチャが表示されない。
_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり
以下の環境では正常動作した。
まあ、一般的には、開発版ではなくて dxruby 1.4.x を使う人がほとんどだろうと思うので特に問題は無いのではと思うのですが。一応、こういう症状が出た、とメモ。
環境は、Windows10 x64 + Ruby 2.2.6 p396 mingw32 + dxruby 1.5.22dev。例えば、以下のようなスクリプトを動かすと、テクスチャが表示されない。
_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり
以下の環境では正常動作した。
- Ruby 2.1.9 p490 mingw32 + dxruby 1.5.19dev
- Ruby 2.2.0 p0 mswin32 + dxruby 1.4.1
まあ、一般的には、開発版ではなくて dxruby 1.4.x を使う人がほとんどだろうと思うので特に問題は無いのではと思うのですが。一応、こういう症状が出た、とメモ。
[ ツッコむ ]
2019/04/14(日) [n年前の日記]
#1 [ruby][dxruby] DXRuby 1.4.6が公開されていたとメモ
Ruby 2.3 - 2.6 まで対応した、
_DXRuby 1.4.6
が公開されていたことを、遅ればせながら今頃知った。とメモ。ありがたや。
一応説明しておくと…。DXRuby は、Ruby というプログラミング言語から、Windows の DirectX を制御できる、2Dゲーム制作ライブラリ。
特長としては…。
ただ、最近まで、ちと問題があって。Windows上で動作するRubyとしては一番メジャーであろう _RubyInstaller for Windows が、ある時期からビルド環境を変更した関係で、DXRuby のバイナリをビルドできなくなっていたそうで。ここ数年、Ruby本体のバージョンはどんどん上がっていくけれど、DXRuby はRuby本体のバージョンアップに追従できない状態になって…。「DXRubyを最近のRubyで使いたいのですが」と尋ねられても、「最近のRubyには対応してません。サポート期間が終了しちゃってる古いバージョンのRubyを使ってください」と返答するしかなかったという。
しかし、今回、DXRuby 1.4.6 が公開されたことで、少なくとも Ruby 2.6 までは DXRuby を使えそうな状態になったわけで。ありがたや。
一応説明しておくと…。DXRuby は、Ruby というプログラミング言語から、Windows の DirectX を制御できる、2Dゲーム制作ライブラリ。
特長としては…。
- 他の2Dゲームライブラリと比べると描画が比較的高速なので、ガンガン描画して、リッチでゴージャスなゲーム画面を作れる。
- 機能の呼び出し方・記述の仕方がシンプルなので、プログラミング初心者でもすぐ使える手軽さがある。
ただ、最近まで、ちと問題があって。Windows上で動作するRubyとしては一番メジャーであろう _RubyInstaller for Windows が、ある時期からビルド環境を変更した関係で、DXRuby のバイナリをビルドできなくなっていたそうで。ここ数年、Ruby本体のバージョンはどんどん上がっていくけれど、DXRuby はRuby本体のバージョンアップに追従できない状態になって…。「DXRubyを最近のRubyで使いたいのですが」と尋ねられても、「最近のRubyには対応してません。サポート期間が終了しちゃってる古いバージョンのRubyを使ってください」と返答するしかなかったという。
しかし、今回、DXRuby 1.4.6 が公開されたことで、少なくとも Ruby 2.6 までは DXRuby を使えそうな状態になったわけで。ありがたや。
◎ 動作確認してみた。 :
Windows10 x64 + Ruby 2.5.3 p105 i386-mingw32 + dxruby 1.4.6 で動作確認してみたけれど、公式で配布されてる、
_DXRuby1.4.4サンプル集
の一部が動かないことに気づいたので一応メモ。
それぞれ以下のエラーメッセージが表示される。
ちなみに、Ruby 2.3.3 p222 i386-mingw32 + dxruby 1.4.5 では、上記のエラーは出なかった。
- shader_sample/sample_lens.rb
- shader_sample/sample_mapping.rb
それぞれ以下のエラーメッセージが表示される。
> ruby sample_lens.rb Traceback (most recent call last): 2: from sample_lens.rb:47:in `<main>' 1: from sample_lens.rb:47:in `new' sample_lens.rb:47:in `initialize': D:\hoge\dxruby144-samples\sample\shader_sample\memory(4,8): error X3000: syntax error: unexpected token 'point' (DXRuby::DXRubyError)
> ruby sample_mapping.rb Traceback (most recent call last): 2: from sample_mapping.rb:38:in `<main>' 1: from sample_mapping.rb:38:in `new' sample_mapping.rb:38:in `initialize': D:\hoge\dxruby144-samples\sample\shader_sample\memory(14,28): error X3005: 'distance': identifier represents a variable, not a function (DXRuby::DXRubyError)
ちなみに、Ruby 2.3.3 p222 i386-mingw32 + dxruby 1.4.5 では、上記のエラーは出なかった。
◎ CustomRenderTargetは追加されてなかった。 :
DXRuby 1.5.21dev / 1.5.22dev で追加されていた CustomRenderTarget も追加されているのかなと期待したけれど、そのあたりは追加されていなかった。とメモ。
CustomRenderTarget というのは…。頑張れば DXRuby で3D描画ができるようになったりする機能、という説明でいいのだろうか。3D描画にしか使えないわけではなく、作者様はベクターグラフィック関係の実験をするために実装したらしいけれど。
とりあえず自分は、以下の実験で使った。と一応メモ。
_mieki256's diary - DXRuby開発版のCustomRenderTarget関係を勉強中
_mieki256's diary - DXRubyのCustomRenderTargetを勉強中その2
_mieki256's diary - COLLADA形式の3Dモデルを読み込むRubyスクリプトを書いた
_mieki256's diary - フォンシェーディングっぽくなってきた気がするけどまだなんだか怪しい
CustomRenderTarget というのは…。頑張れば DXRuby で3D描画ができるようになったりする機能、という説明でいいのだろうか。3D描画にしか使えないわけではなく、作者様はベクターグラフィック関係の実験をするために実装したらしいけれど。
とりあえず自分は、以下の実験で使った。と一応メモ。
_mieki256's diary - DXRuby開発版のCustomRenderTarget関係を勉強中
_mieki256's diary - DXRubyのCustomRenderTargetを勉強中その2
_mieki256's diary - COLLADA形式の3Dモデルを読み込むRubyスクリプトを書いた
_mieki256's diary - フォンシェーディングっぽくなってきた気がするけどまだなんだか怪しい
◎ 2019/04/17追記。 :
Shaderのサンプルが2つほど動かないのは、去年の時点で把握済みの現象だった模様。
_mirichiさんのツイート: "シェーダ周りでなんか変なのが2つほどあって..."
なるほど。
_mirichiさんのツイート: "シェーダ周りでなんか変なのが2つほどあって..."
とりあえず致命的なバグはもう無いっぽいけども、シェーダ周りでなんか変なのが2つほどあって、変数名がなぜか怒られるのと、関数が使えないのと。 変数名は予約語関連だろうし、関数はHLSLコンパイラの話だから、こっちではどうにもできん。せいぜいサンプル書き換えるぐらい。
シェーダ内のpointという変数と、distanceという関数がひっかかりました。 変数名は変えれば動きまして、関数のほうは無いと言われたので簡単だし自分で作ればいいのかなと思ってるところです。
なるほど。
[ ツッコむ ]
2019/04/15(月) [n年前の日記]
#1 [dxruby] DXRuby 1.5.22devで不具合が出る状況が分かった
DXRuby 1.5.22dev で、Shader を使って描画しようとすると何も描画されない状態になる場合があったのだけど。色々試してみたところ、症状が出てしまう記述の仕方がちょっと分かってきた。
状況としては、Shader の描画元として RenderTarget を指定して、かつ、RenderTarget に対して明示的に update() を呼んでしまうと、描画されない状態になる模様。
状況としては、Shader の描画元として RenderTarget を指定して、かつ、RenderTarget に対して明示的に update() を呼んでしまうと、描画されない状態になる模様。
◎ サンプルソース。 :
例えば、以下のソースで、最後のあたりの rt.update をコメントアウトすると、症状が改善する。
_02_shader_with_rendertarget.rb
_02_shader_with_rendertarget.rb
# RenderTarget に画像を描画してからshaderに渡す事例 require 'dxruby' hlsl = <<EOS texture tex0; sampler Samp0 = sampler_state { Texture =<tex0>; }; float4 PS(float2 input : TEXCOORD0) : COLOR0 { float4 output; // input.y = input.y / 2.0; output = tex2D( Samp0, input ); return output; } technique HelloShader { pass P0 { PixelShader = compile ps_2_0 PS(); } } EOS core = Shader::Core.new(hlsl) shader = Shader.new(core, "HelloShader") img = Image.new(128, 128) v = 0 img.height.times do |y| img.width.times do |x| img[x, y] = [255, 0, (v>>8) & 0x0ff, v & 0x0ff] v += 2 v = 0 if v > 0x0ffff end end imgs = [img] rt = RenderTarget.new(640, 480) Window.loop do break if Input.keyPush?(K_ESCAPE) rt.draw_tile(0, 0, [[0]], imgs, 0, 0, 3, 2) rt.update x, y = 0, 0 Window.draw_shader(x, y, rt, shader) end
◎ 対策。 :
スクリプトソースを書く側で行える対策としては…。そもそも RenderTarget に対して update() を呼ばないようにする、というのが一番手っ取り早い気がする。
というのも、RenderTarget に対して update() を呼ぶのは昔の書き方で。DXRuby 1.4.1 以降は自動で update() が呼ばれるようになっているので、比較的新しいバージョンの DXRuby を使っているなら、わざわざ update() を呼ぶ必要はないわけで。古いスクリプトに対する互換性のためだけにメソッドが残されてる状態らしい。
_DXRuby RenderTarget#update
ちなみに、DXRuby 1.4.6 では、update() を呼んでも問題は起きない模様。もっとも、最近の DXRuby を使っているなら、そもそも呼ばなくていいのだけれど。
ちなみに、以下のスクリプトも、update を削除したらフツーに描画されました。とメモ。
_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり
というのも、RenderTarget に対して update() を呼ぶのは昔の書き方で。DXRuby 1.4.1 以降は自動で update() が呼ばれるようになっているので、比較的新しいバージョンの DXRuby を使っているなら、わざわざ update() を呼ぶ必要はないわけで。古いスクリプトに対する互換性のためだけにメソッドが残されてる状態らしい。
_DXRuby RenderTarget#update
ちなみに、DXRuby 1.4.6 では、update() を呼んでも問題は起きない模様。もっとも、最近の DXRuby を使っているなら、そもそも呼ばなくていいのだけれど。
ちなみに、以下のスクリプトも、update を削除したらフツーに描画されました。とメモ。
_mieki256's diary - タイトル画面をグネグネするアレを書いてみたり
[ ツッコむ ]
2019/04/16(火) [n年前の日記]
#1 [cg_tools] KumoWorksを試用
以下の記事で、雲を生成できるCGソフトが公開されたと知り。
_KumoWorks v1.0 - 輪郭から簡単に雲生成!「OpenToonz」による雲生成ソフトウェアWin&Mac
_KumoWorks
興味が湧いたので試用してみたり。環境は Windows10 x64 + KumoWorks 1.0。
スゴイな…。マウスで輪郭を描くだけで、ガンガンそれっぽい雲になる…。単純に、これは楽しい…。
_KumoWorks v1.0 - 輪郭から簡単に雲生成!「OpenToonz」による雲生成ソフトウェアWin&Mac
_KumoWorks
興味が湧いたので試用してみたり。環境は Windows10 x64 + KumoWorks 1.0。
スゴイな…。マウスで輪郭を描くだけで、ガンガンそれっぽい雲になる…。単純に、これは楽しい…。
[ ツッコむ ]
#2 [zatta][neta] ぶら下がりたい
先日、大河ドラマ「いだてん」を見ていたら、体育館等に設置されてる謎の木製巨大梯子っぽいもの ―― なんでも
_肋木(ろくぼく)
と呼ばれているものが紹介されていて。
記憶が定かじゃないけれど、子供の頃にアレに登ろうとしたら先生に怒られたような記憶があって。見るからに「さあ君達、我に登ってみたまへよ」的デザインなのに登っちゃダメとなると、一体コレは何に使うんだと子供心に結構不思議だったわけだけど。そうか…大正時代に普及した、単なるぶら下がり健康器具だったのか…。知らなかったぜ…。
劇中では、当時の頓珍漢な施策の一つとしてアレな紹介をされていたけれど。ふと、コレは今の時代にこそ必要なのではないかと思えてきたりもして。
例えば、IT関係なら、同じ姿勢でPC画面を凝視して作業するし、漫画家さんやアニメーターも、同じ姿勢でずっと作業しなければならないけれど、そんなときに肋木があれば、ちょっとは体をリフレッシュできそうだなと。「ううーん。ちょっとぶら下がってきます」「おう。いってらっしゃい」みたいな。
昔のように、体を動かして仕事をすることが当たり前だった時代なら、必要性について鑑みられることはなかったかもしれないが、同じ姿勢で延々作業することが比較的当たり前になってしまった現代こそ、ああいった器具が必要なのではないか。一時期、ぶら下がり健康器具が流行して、そのうち下火になってしまったけれど、今こそ復権の時ではあるまいか。
実際自分も、ずっとキーボード+マウス操作をしていると、時々、「ううーん。体がシンドイ。なんだかどこかにぶら下がりたい」と思えてくる時があって。もっとも、部屋の中にぶら下がられる場所なんてないので、肉体から脳に渡された「ぶら下がりたい」欲求を無視するしかないのだけれど。
例えば、同じ姿勢でずっと寝ていたら、自然と寝返りを打つわけで。同様に、同じ姿勢で作業していたら、そのうち別の姿勢をとりたくなるのは当たり前。しかし、その別姿勢が取れないというのは、まるでベッドにベルトで縛り付けられて寝返り一つ打てない状態でさあ眠れと言われてるようなもので。これは不健康極まりない。肉体が発したメッセージは、それなりに尊重せねばなるまい。「ぶら下がりたい」と肉体から言われたら、要望は極力叶えるべきである。
そもそも、我々人類は猿から進化した生物。木の枝等にぶら下がってぶらぶらすることに最適化された肉体のデザインになっている。しかし現代社会では、ぶらぶらできる場所なんて皆無。人類は、猿からアップグレードした肉体を保有していることをもっと明確に意識するべきではないのか。時にはどこかにぶら下がって、猿だった時代の原始的なアクションを再現することで肉体と脳をリフレッシュしてしっかり英気を養い、また現代社会の荒波へと身を投じて戦い続けるのだ。…みたいなことを言い出す人がどこかに居てもいいのではあるまいか。
おそらく、ぶら下がることで、脳の働きも違ってくるだろう。猿だった時代に活用していた原始的な部位を活性化するわけだから、ニューロンの間を流れる電気信号も普段とは違う部位へと流れていくはず。もしかすると会議室で椅子に座ってウンウンと唸るより、会議室で皆でぶら下がって議論したほうが妙案が次々に発生するかもしれない。いやまあソレちょっとシュールな光景なので「どんな罰ゲームだよ」「一旦なんのプレイやねん」という気もしてくるけれど。
人間は、絶えず重力に逆らって自立するために筋肉を使っているが、その動きは基本的に伸びる方向、肉体を持ち上げる方向で動いてるのではないか。しかし、ぶら下がるというアクションは、重力に引っ張られる肉体を引っ張り上げる方向、縮む方向で動くように思えたり。絶えず伸びようとする筋肉を、たまには縮める方向で働かせても悪いことにはならない気もする。どちらの方向でもバランスよく動かしてやることが、肉体にとってより快適な状態を維持できることに繋がりはしないか。
などと書いてはみたけれど、実際どういう効果があるのだろう。今の科学技術なら、ぶら下がった際の、筋肉の動き方、骨の状態の変化、脳の活動部位の変化等、そこに現れる効果のほどを、それなりに分析できそうな気もするのだけれど。
もちろん、必ずしも良い方向に働くとは限らない。人類が二足歩行を可能にした際の肉体変化の影響は大きく、もはや人類はぶらぶらできるほどのスペックを保持しておらず、予想以上に負荷ばかりかかって体を痛めるからやめましょうね、といった事実が判明してしまう可能性だって否定できない。
いや、マジに、どこかでその手の研究してないのかなー。
記憶が定かじゃないけれど、子供の頃にアレに登ろうとしたら先生に怒られたような記憶があって。見るからに「さあ君達、我に登ってみたまへよ」的デザインなのに登っちゃダメとなると、一体コレは何に使うんだと子供心に結構不思議だったわけだけど。そうか…大正時代に普及した、単なるぶら下がり健康器具だったのか…。知らなかったぜ…。
劇中では、当時の頓珍漢な施策の一つとしてアレな紹介をされていたけれど。ふと、コレは今の時代にこそ必要なのではないかと思えてきたりもして。
例えば、IT関係なら、同じ姿勢でPC画面を凝視して作業するし、漫画家さんやアニメーターも、同じ姿勢でずっと作業しなければならないけれど、そんなときに肋木があれば、ちょっとは体をリフレッシュできそうだなと。「ううーん。ちょっとぶら下がってきます」「おう。いってらっしゃい」みたいな。
昔のように、体を動かして仕事をすることが当たり前だった時代なら、必要性について鑑みられることはなかったかもしれないが、同じ姿勢で延々作業することが比較的当たり前になってしまった現代こそ、ああいった器具が必要なのではないか。一時期、ぶら下がり健康器具が流行して、そのうち下火になってしまったけれど、今こそ復権の時ではあるまいか。
実際自分も、ずっとキーボード+マウス操作をしていると、時々、「ううーん。体がシンドイ。なんだかどこかにぶら下がりたい」と思えてくる時があって。もっとも、部屋の中にぶら下がられる場所なんてないので、肉体から脳に渡された「ぶら下がりたい」欲求を無視するしかないのだけれど。
例えば、同じ姿勢でずっと寝ていたら、自然と寝返りを打つわけで。同様に、同じ姿勢で作業していたら、そのうち別の姿勢をとりたくなるのは当たり前。しかし、その別姿勢が取れないというのは、まるでベッドにベルトで縛り付けられて寝返り一つ打てない状態でさあ眠れと言われてるようなもので。これは不健康極まりない。肉体が発したメッセージは、それなりに尊重せねばなるまい。「ぶら下がりたい」と肉体から言われたら、要望は極力叶えるべきである。
そもそも、我々人類は猿から進化した生物。木の枝等にぶら下がってぶらぶらすることに最適化された肉体のデザインになっている。しかし現代社会では、ぶらぶらできる場所なんて皆無。人類は、猿からアップグレードした肉体を保有していることをもっと明確に意識するべきではないのか。時にはどこかにぶら下がって、猿だった時代の原始的なアクションを再現することで肉体と脳をリフレッシュしてしっかり英気を養い、また現代社会の荒波へと身を投じて戦い続けるのだ。…みたいなことを言い出す人がどこかに居てもいいのではあるまいか。
おそらく、ぶら下がることで、脳の働きも違ってくるだろう。猿だった時代に活用していた原始的な部位を活性化するわけだから、ニューロンの間を流れる電気信号も普段とは違う部位へと流れていくはず。もしかすると会議室で椅子に座ってウンウンと唸るより、会議室で皆でぶら下がって議論したほうが妙案が次々に発生するかもしれない。いやまあソレちょっとシュールな光景なので「どんな罰ゲームだよ」「一旦なんのプレイやねん」という気もしてくるけれど。
人間は、絶えず重力に逆らって自立するために筋肉を使っているが、その動きは基本的に伸びる方向、肉体を持ち上げる方向で動いてるのではないか。しかし、ぶら下がるというアクションは、重力に引っ張られる肉体を引っ張り上げる方向、縮む方向で動くように思えたり。絶えず伸びようとする筋肉を、たまには縮める方向で働かせても悪いことにはならない気もする。どちらの方向でもバランスよく動かしてやることが、肉体にとってより快適な状態を維持できることに繋がりはしないか。
などと書いてはみたけれど、実際どういう効果があるのだろう。今の科学技術なら、ぶら下がった際の、筋肉の動き方、骨の状態の変化、脳の活動部位の変化等、そこに現れる効果のほどを、それなりに分析できそうな気もするのだけれど。
もちろん、必ずしも良い方向に働くとは限らない。人類が二足歩行を可能にした際の肉体変化の影響は大きく、もはや人類はぶらぶらできるほどのスペックを保持しておらず、予想以上に負荷ばかりかかって体を痛めるからやめましょうね、といった事実が判明してしまう可能性だって否定できない。
いや、マジに、どこかでその手の研究してないのかなー。
[ ツッコむ ]
#3 [nitijyou] 日記をまとめてアップロードしておいた
_2019/02/10
を最後に日記をアップロードしてなかったので、少しずつアップロード開始。
[ ツッコむ ]
2019/04/17(水) [n年前の日記]
#1 [pc] KM-BASIC 0.8.1の動作確認をしてみたり
以前、MZ-80K/700用として公開されている、KM-BASIC を試用してみたことがあり。MZ-80K や MZ-700 で、今現在合法的に入手可能なBASICは、調べた限りでは KM-BASIC しか存在しないようで、これは大変ありがたいソフト、なのだけど。
_mieki256's diary - KM-BASIC 0.8.0 はバグがあるような気がする
当時の最新版 KM-BASIC 0.8.0 は、残念ながら上手く動作しなかったわけで。しかし、コメント欄で作者様からバグ修正した旨を教えてもらえたので、手元の環境、Windows10 x64 + MZ700WIN 0.53 で動作確認してみたり。わざわざ連絡していただきありがとうございます。
_Katsumi (電子工作好き)さんのツイート: "デバッグ出来ました。KM-BASIC for MZ-80K/MZ-700 ver 0.8.1
_Z80 File Downloads on Chamber Katsumi - OSDN
結論から書くと、少なくとも、 _IF/GOSUB文を実装 - 電子ブロック工房 で紹介されてるソースは、エラーを出さずに実行できることが確認できました。対応に感謝いたします。ありがたや…。
※ 2019/04/18追記。
その後、文字列型変数を使うとエラーがでる不具合を見つけてしまいました…。詳細は別記事で。
_mieki256's diary - KM-BASIC 0.8.1の不具合を見つけてしまったような気がする
_mieki256's diary - KM-BASIC 0.8.0 はバグがあるような気がする
当時の最新版 KM-BASIC 0.8.0 は、残念ながら上手く動作しなかったわけで。しかし、コメント欄で作者様からバグ修正した旨を教えてもらえたので、手元の環境、Windows10 x64 + MZ700WIN 0.53 で動作確認してみたり。わざわざ連絡していただきありがとうございます。
_Katsumi (電子工作好き)さんのツイート: "デバッグ出来ました。KM-BASIC for MZ-80K/MZ-700 ver 0.8.1
_Z80 File Downloads on Chamber Katsumi - OSDN
結論から書くと、少なくとも、 _IF/GOSUB文を実装 - 電子ブロック工房 で紹介されてるソースは、エラーを出さずに実行できることが確認できました。対応に感謝いたします。ありがたや…。
※ 2019/04/18追記。
その後、文字列型変数を使うとエラーがでる不具合を見つけてしまいました…。詳細は別記事で。
_mieki256's diary - KM-BASIC 0.8.1の不具合を見つけてしまったような気がする
◎ 起動の仕方。 :
一応、念のため、起動の仕方をメモ。
- kmb081.zip をダウンロードして解凍。中に release.mzt というファイルが入ってる。
- MZ-700のエミュレータ、MZ700WIN の File → Set Load Tape で件のファイルを選択。
- エミュレータの画面で、LOAD だか L だかを打ってロード。
◎ スクリーンショット。 :
[ ツッコむ ]
#2 [pc] MZ700WINのキー割り当てで少しハマった
久々に MZ700WIN を起動したので、キー割り当てを完全に忘れていて…。そのあたり、同梱の mz700win_jp.txt に書いてはあるのだけど、念のために一応引用してメモ。
上記は Keyboard として、「106/109 JP Type」を選んだ場合の割り当てだけど。「106/109 JP Type (MZ-80K/C)」を選んだ場合は、また違う割り当てになるようで。まあ、key.def で定義されてるので、眺めればいいのだろうけど…。
とりあえず、Keyboard として「106/109 JP Type (MZ-80K/C)」を選んだ場合は、以下のようになるのかな。たぶん。
しかし、ややこしいな…。キーボードのレイアウト図を書いてメモしないと把握が難しい気もしてきた。
昔のPCのキーボードレイアウトは、なんだかアレだなと…。
キーボード配置 -------------- エミュレータ上と、MZ-700実機のキーボード対応は以下の通りです。 (キーボードは106/109キーボードを基準にしています。) キーボード 画面上 --------- ------ '[' ( ']' ) [^] + [\|](BackSpaceの左) * [\_](右SHIFTのとなり) ? [Shift]+[0] π [page up] [Graph] [Tab] [英数] [page down] [カナ] [BackSpace] [Break] [F7] [@] [F8] [?] [F9] [=] MZ-700実機のキーボード配置になるべく近くなるように調整してあります。 しかし、106キーボードとMZ-700実機のキー配列の違いから、必ずしも 押したキーと同じ文字が入力されるとは限りません。
- 「*」「=」「+」あたりの入力でちょっと混乱する印象。
- BackSpace が前文字削除じゃなくて「Break」なので、Deleteで文字を消すあたりも混乱。
上記は Keyboard として、「106/109 JP Type」を選んだ場合の割り当てだけど。「106/109 JP Type (MZ-80K/C)」を選んだ場合は、また違う割り当てになるようで。まあ、key.def で定義されてるので、眺めればいいのだろうけど…。
とりあえず、Keyboard として「106/109 JP Type (MZ-80K/C)」を選んだ場合は、以下のようになるのかな。たぶん。
Keyboard | Screen |
---|---|
Shift + - | + |
@ | = |
Shift + @ | * |
Shift + 0 | π |
Shift + Q | < |
Shift + W | > |
Shift + E | ← |
Shift + R | [ |
Shift + T | ] |
Shift + U | \ |
Shift + U | @ |
Shift + I | ? |
Shift + O | : |
Shift + P | ↑ |
しかし、ややこしいな…。キーボードのレイアウト図を書いてメモしないと把握が難しい気もしてきた。
昔のPCのキーボードレイアウトは、なんだかアレだなと…。
[ ツッコむ ]
#3 [cg_tools] Photobatを試用
以下の記事を目にして興味が湧いた。
_無料の画像一括編集アプリ「Photobat」が公開 〜サイズや形式変換のほかエフェクト付与も可能 - 窓の杜
親父さんが写真画像をリサイズする際に使えたりしないだろうかと。試しにインストールして少し触ってみたり。Windowsストア経由で入手できる。今回は、Windows10 x64上で試用。
_無料の画像一括編集アプリ「Photobat」が公開 〜サイズや形式変換のほかエフェクト付与も可能 - 窓の杜
親父さんが写真画像をリサイズする際に使えたりしないだろうかと。試しにインストールして少し触ってみたり。Windowsストア経由で入手できる。今回は、Windows10 x64上で試用。
◎ 感想。 :
前述の記事中でも評価されているけれど、行いたい処理がスイッチ一つで切り替えられるのは分かりやすいなと感心。このUIなら初心者も迷わなくて済むのではないか…。素晴らしい。
変換前の画像と、変換後の画像を、並べてプレビューできるのもイイ感じ。実に分かりやすい。
出力ファイル名として、ファイル名の前、もしくは後ろに特定文字列をつけられるのもグッド。
ただ、画像を出力する際、出力フォルダのパスをちゃんと指定しないといけないのが、ちょっとアレだなと。一般的に、その手のリサイズツールは…。
シャープフィルタ処理が、リサイズ後の画像に対して行われるのか、それとも元画像に対して行われてからリサイズされるのか、といったところが若干気になったり。でもまあ、その手のリサイズツールって、リサイズ後にかける場合が多いのだろうか。たぶんそんな気がする。処理時間や、効果が分かりやすい/分かりにくいという問題もあるので、画像を小さくしてからかけたほうが効果的かもしれないなと想像。
JPEG画像のEXIF情報はどうなるのか確認したら、変換後はごっそり削除してくれるように見えた。えてして、リサイズした画像はWeb上にアップロードしたりするものだし、EXIFを削除してくれるのはありがたい仕様かもしれず。
また、元画像のEXIF情報に、「この画像は縦向き」と記録してあった場合は、変換後画像は縦向き画像の実データにしてくれるようで。EXIFを無視するツールと連携して作業する場合は助かる仕様だなと。
兎にも角にも、UIが分かりやすい。出力フォルダの仕様がアレなので親父さんには薦められないけれど、新規にこの手のツールを使い始める人なら、たしかにオススメのツールかもしれないなと。
変換前の画像と、変換後の画像を、並べてプレビューできるのもイイ感じ。実に分かりやすい。
出力ファイル名として、ファイル名の前、もしくは後ろに特定文字列をつけられるのもグッド。
ただ、画像を出力する際、出力フォルダのパスをちゃんと指定しないといけないのが、ちょっとアレだなと。一般的に、その手のリサイズツールは…。
- 元画像が保存されているフォルダを出力先にしたり、
- 元画像が保存されているフォルダ内に _resize 等のフォルダを新規作成してそこに保存したり、
シャープフィルタ処理が、リサイズ後の画像に対して行われるのか、それとも元画像に対して行われてからリサイズされるのか、といったところが若干気になったり。でもまあ、その手のリサイズツールって、リサイズ後にかける場合が多いのだろうか。たぶんそんな気がする。処理時間や、効果が分かりやすい/分かりにくいという問題もあるので、画像を小さくしてからかけたほうが効果的かもしれないなと想像。
JPEG画像のEXIF情報はどうなるのか確認したら、変換後はごっそり削除してくれるように見えた。えてして、リサイズした画像はWeb上にアップロードしたりするものだし、EXIFを削除してくれるのはありがたい仕様かもしれず。
また、元画像のEXIF情報に、「この画像は縦向き」と記録してあった場合は、変換後画像は縦向き画像の実データにしてくれるようで。EXIFを無視するツールと連携して作業する場合は助かる仕様だなと。
兎にも角にも、UIが分かりやすい。出力フォルダの仕様がアレなので親父さんには薦められないけれど、新規にこの手のツールを使い始める人なら、たしかにオススメのツールかもしれないなと。
[ ツッコむ ]
2019/04/18(木) [n年前の日記]
#1 [pc] KM-BASIC 0.8.1の不具合を見つけてしまったような気がする
KM-BASIC 0.8.1 の動作確認をしていたのだけど、もしかするとまた別の不具合を見つけてしまったのかもしれず。そのあたり、一応メモ。環境は、Windows10 x64 + MZ700WIN 0.56 + KM-BASIC 0.8.1。
症状としては、文字列型変数を使おうとするとエラーが出る模様。
前提として…。KM-BASIC は、変数名として、A〜Z の英文字を使えるようで。
しかし、KM-BASIC 0.8.1 で X$ 等を使うと、以下のようなエラーが出てしまう。
代入まではできているのかもしれないけれど、参照しようとするとエラーになる。また、ASC(X$) や LEN(X$) でもエラーが出ている。
ちなみに、KM-BASIC 0.6.8 では、そういった症状は出なかった。
気になって、KM-BASIC 0.8.0 でも確認してみたけれど、そちらも 0.8.1 と同様にエラーになった。
症状としては、文字列型変数を使おうとするとエラーが出る模様。
前提として…。KM-BASIC は、変数名として、A〜Z の英文字を使えるようで。
- 数値(整数)が入る場合は、A とか B とか X とか書く。
- 文字列型変数を使う時は A$ とか X$ とか書く。
A=10 PRINT A 10 X$="TEST" PRINT X$ TEST
しかし、KM-BASIC 0.8.1 で X$ 等を使うと、以下のようなエラーが出てしまう。
代入まではできているのかもしれないけれど、参照しようとするとエラーになる。また、ASC(X$) や LEN(X$) でもエラーが出ている。
ちなみに、KM-BASIC 0.6.8 では、そういった症状は出なかった。
気になって、KM-BASIC 0.8.0 でも確認してみたけれど、そちらも 0.8.1 と同様にエラーになった。
◎ 他の命令その他についても動作確認してみた。 :
もしかすると、他にも不具合があるのではと気になったので、KM-BASIC 0.8.1 上で色々試してみたり。
結果を先に書いておくと、X$(x) という記述と、SGN() の結果が怪しい感じだった。
以下、確認中のスクリーンショット。
関数をチェック。
STRNCMP()、VAL()、CHR$()、DEC$()、HEX$() は、おそらく問題無し。
ただし、X$(x) という書き方はエラーが出る。
ちなみに、0.6.8上ではエラーは出なかった。
演算子についても確認。
+、-、*、/、% は問題無し。比較演算子の、=、!=、<、>、<=、>= も問題無さそう。ビット演算子の AND、OR、XOR も大丈夫そう。
配列を示す DIM についても確認。
DIM も大丈夫そう。
SGN()、ABS()、NOT() についても確認。
ABS()、NOT() は大丈夫そうだけど、SGN() が気になる。ドキュメントには、-1,0,1 を返すとあるけれど、-1,0しか返さない。これは 0.6.8 も同じ結果になった。
ということで、文字列型変数絡みと SGN() が、なんだか気になるなと…。
結果を先に書いておくと、X$(x) という記述と、SGN() の結果が怪しい感じだった。
以下、確認中のスクリーンショット。
関数をチェック。
STRNCMP()、VAL()、CHR$()、DEC$()、HEX$() は、おそらく問題無し。
ただし、X$(x) という書き方はエラーが出る。
ちなみに、0.6.8上ではエラーは出なかった。
演算子についても確認。
+、-、*、/、% は問題無し。比較演算子の、=、!=、<、>、<=、>= も問題無さそう。ビット演算子の AND、OR、XOR も大丈夫そう。
配列を示す DIM についても確認。
DIM も大丈夫そう。
SGN()、ABS()、NOT() についても確認。
ABS()、NOT() は大丈夫そうだけど、SGN() が気になる。ドキュメントには、-1,0,1 を返すとあるけれど、-1,0しか返さない。これは 0.6.8 も同じ結果になった。
ということで、文字列型変数絡みと SGN() が、なんだか気になるなと…。
◎ 動作テスト用のプログラムを書けないものか。 :
LOADしてRUNすると結果が出てきて、各命令や機能が一通り正常に動作していることを確認できる、そんなプログラムを書けないものか…。
◎ 2019/04/24追記。 :
修正版 0.8.2 が公開された旨を作者様から連絡していただけました。ありがとうございます。
動作確認の記事を書いたので、一応メモしておきます。
_mieki256's diary - KM-BASIC 0.8.2の動作確認をしてみたり
動作確認の記事を書いたので、一応メモしておきます。
_mieki256's diary - KM-BASIC 0.8.2の動作確認をしてみたり
この記事へのツッコミ
[ ツッコミを読む(4) | ツッコむ ]
#2 [pc] MZ700WINが公開中止になっていたらしい
ふと気づいたら、Windows上で動作する MZ-700 のエミュレータ、MZ700WIN が公開中止になっていたと知った。ショック。かなりショック。めちゃくちゃショック。
_まるくん療養中さんのツイート: "MZ700Winの一切のメンテナンスとサポートを打ち切ります。
2019/03/20頃に、githubのリポジトリ削除も含めて、行われてしまったらしい…。理由について調べてみたら…いやはや…。 *1
_まるくん療養中さんのツイート: "MZ700Winの一切のメンテナンスとサポートを打ち切ります。
2019/03/20頃に、githubのリポジトリ削除も含めて、行われてしまったらしい…。理由について調べてみたら…いやはや…。 *1
◎ 代替案。 :
Windows上で動作する MZ-700 のエミュレータとして、他に何かあるのかなとググってみたり。おそらくは、EmuZシリーズがメジャー、なのだろうか。
_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ
実機の再現性が非常に高いエミュレータで、 _野球拳2000 for MZ-700 すら動いてしまう。その代わり、テープのロード時なども、実機と同様に数分かかったりする。そこまで再現しますか…。みたいな。 *2
この方は、他にも膨大な数のレトロPCエミュレータを制作していて、まあ、とにかくスゴイ。ただただ脱帽。
_TAKEDA, toshiya's HOME PAGE
自分が知らない型番のレトロPCもたくさんあって、日本ってこんなにPCを作ってたのかと全然別の方向でも驚愕というか。
_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ
実機の再現性が非常に高いエミュレータで、 _野球拳2000 for MZ-700 すら動いてしまう。その代わり、テープのロード時なども、実機と同様に数分かかったりする。そこまで再現しますか…。みたいな。 *2
この方は、他にも膨大な数のレトロPCエミュレータを制作していて、まあ、とにかくスゴイ。ただただ脱帽。
_TAKEDA, toshiya's HOME PAGE
自分が知らない型番のレトロPCもたくさんあって、日本ってこんなにPCを作ってたのかと全然別の方向でも驚愕というか。
◎ もう入手できないのだろうか。 :
MZ700WIN は、もう入手できないのだろうか。気になって調べてみたけど…。
github上で公開されてたらしい、最新版の 0.57 は見つからなかった。でも、かろうじて、0.56 は入手できた。とメモ。どこで入手できるかは…。まあ、 _はてブ でも眺めて、そのあたりはどうにか…。
github上で公開されてたらしい、最新版の 0.57 は見つからなかった。でも、かろうじて、0.56 は入手できた。とメモ。どこで入手できるかは…。まあ、 _はてブ でも眺めて、そのあたりはどうにか…。
◎ 2019/06/24追記。 :
*1: しかし…。ちゃんと功績を褒めてくれる「たくさんの人達」が皆一様に悲しみの顔を浮かべ、自身を攻撃してくる「たった一人」がニタニタと笑みを浮かべる、そんな行動をわざわざ選ぶ意味が一体どこにあるのだろう、とも。自身が相手にすべき・付き合うべき人達と、無視すべき人の位置付けが、あべこべになっている気もする。てなことを、
_小池一夫先生
の
_お言葉
を
_読みながら
、ほんやりと思ったりもする。
*2: 特殊なテープ読み込みをしているプログラムも動作させられるメリットがあることは理解しつつも。利便性を鑑みて、瞬間ロードモード、みたいな何かは実装できないものだろうか…。もっとも、そういう仕様は開発ポリシーに反するのかしらん。
*2: 特殊なテープ読み込みをしているプログラムも動作させられるメリットがあることは理解しつつも。利便性を鑑みて、瞬間ロードモード、みたいな何かは実装できないものだろうか…。もっとも、そういう仕様は開発ポリシーに反するのかしらん。
この記事へのツッコミ
- Re: MZ700WINが公開中止になっていたらしい by AKD 2019/05/05 14:40
- MZ700WIN関連ファイル再配布所
http://mzakd.cool.coocan.jp/mz-memories/mz700win.html
mz-700winのサイトで公開されていたファイルは、許可をいただき、再配布を始めました。このまま静かにまるくんさんの復活を待ちたいと思います。
[ ツッコミを読む(1) | ツッコむ ]
2019/04/19(金) [n年前の日記]
#1 [ruby] Ruby 2.5.5 と 2.6.3 をインストール
Windows上で使える Ruby、
_RubyInstaller for Windows
の、Ruby 2.5.5-1 が公開されていたようなので、Windows10 x64上でインストールした、とメモ。今までは Ruby 2.5.3 を入れていた。せっかくだから、ついでに、Ruby 2.6.3-1 もインストールした。
ダウンロードしたファイルは以下。
インストール方法は、以下を参考にした。
_Rubyのダウンロードとインストール | Ruby入門 | RubyLife
MSYS2 をインストールする際に、1、2、3 の順番で入力するあたりが参考になった。
ちなみに、異なるバージョンの Ruby を Windows上で切り替えて使う場合は、 _uru か _pik が利用できる。
ダウンロードしたファイルは以下。
- rubyinstaller-devkit-2.5.5-1-x86.exe
- rubyinstaller-devkit-2.6.3-1-x86.exe
インストール方法は、以下を参考にした。
_Rubyのダウンロードとインストール | Ruby入門 | RubyLife
MSYS2 をインストールする際に、1、2、3 の順番で入力するあたりが参考になった。
ちなみに、異なるバージョンの Ruby を Windows上で切り替えて使う場合は、 _uru か _pik が利用できる。
◎ 標準で使う Ruby を 2.5.5 にしてみた。 :
今までは、標準で使う Ruby を Ruby 2.2.6 p396 i386-mingw32 にしていたのだけど。試しに、今回インストールした Ruby 2.5.5 p157 i386-mingw32 を使うようにしてみた。
◎ green_shoesが動かない。 :
Ruby 2.2.6 上でインストールしていた gem をアレコレインストールしていたけれど、ふと green_shoes が動かないことに気づいたり。
_ashbb/green_shoes: Green Shoes is one of the colorful Shoes written in pure Ruby.
_green_shoes | RubyGems.org
yaml_as が未定義、みたいなメッセージが出てくるけれど、ググってみたら psych とやらが yaml_as から yaml_tag に定義を変更した、みたいな話が見つかって。
_Ruby 2.2.3 で動いている Rails アプリケーションを Ruby 2.6.2 にアップデートした話 - Qiita
_instance method Module#psych_yaml_as (Ruby 2.6.0)
green_shoes は gtk2 を要求するけど、その gtk2自体は、Ruby 2.5.5 + gtk2 3.3.6 の組み合わせで動いてることを確認。となると、green_shoes に問題があるのは明らかで。
green_shoes は 2013年が最後の更新だから、これもまた、死んでしまった外部ライブラリの一つ、なのだろうなと。
_ashbb/green_shoes: Green Shoes is one of the colorful Shoes written in pure Ruby.
_green_shoes | RubyGems.org
yaml_as が未定義、みたいなメッセージが出てくるけれど、ググってみたら psych とやらが yaml_as から yaml_tag に定義を変更した、みたいな話が見つかって。
_Ruby 2.2.3 で動いている Rails アプリケーションを Ruby 2.6.2 にアップデートした話 - Qiita
_instance method Module#psych_yaml_as (Ruby 2.6.0)
green_shoes は gtk2 を要求するけど、その gtk2自体は、Ruby 2.5.5 + gtk2 3.3.6 の組み合わせで動いてることを確認。となると、green_shoes に問題があるのは明らかで。
green_shoes は 2013年が最後の更新だから、これもまた、死んでしまった外部ライブラリの一つ、なのだろうなと。
[ ツッコむ ]
#2 [anime] 「ルパン三世」劇場版第1作を視聴
「ルパン三世」原作者のモンキー・パンチ先生が、2019/04/11にお亡くなりになったとのことで、追悼企画としてTV放送、ということらしい。
今見ても、感心するところがある作品だなと。せっかくの劇場版だから豪華にしたい、という気持ちがチラホラ垣間見える、そんな印象。コンテが凝っていて面白いのだよなあ…。
先生がルパンを描いてくれなかったら、こういうアニメが生まれることもなかったわけで。先生、本当にありがとうございました…。
今見ても、感心するところがある作品だなと。せっかくの劇場版だから豪華にしたい、という気持ちがチラホラ垣間見える、そんな印象。コンテが凝っていて面白いのだよなあ…。
先生がルパンを描いてくれなかったら、こういうアニメが生まれることもなかったわけで。先生、本当にありがとうございました…。
[ ツッコむ ]
2019/04/20(土) [n年前の日記]
#1 [ruby] ShoesをインストールするとWindowsが破壊される
Rubyスクリプトっぽい感じでソースを書いていくとGUIアプリが作れる、Shoes というツール、というか環境があるのだけど。
_Shoes! The easiest little GUI toolkit, for Ruby.
手元の Windows10 x64上で、Shoes 3.2 や Shoes 3.3 のインストール・アンインストール等を行いながら動作確認をしていたら、ふと、Windows10 の、システム側の環境変数 PATH がめちゃくちゃになってることに気が付いた。状態としては、ユーザ側の PATH 内容で、システム側の PATH が全て上書きされている、みたいな感じ。
破壊された、システム側の PATH の一番最後に、Shoes のパスが追加されていて、しかし、ユーザ側の PATH にはソレがないので…。もしかすると、Shoes 3.2 か 3.3 のインストーラ・アンインストーラが、環境変数 PATH を壊してしまったのではないかなあ、と予想。
_Shoes! The easiest little GUI toolkit, for Ruby.
手元の Windows10 x64上で、Shoes 3.2 や Shoes 3.3 のインストール・アンインストール等を行いながら動作確認をしていたら、ふと、Windows10 の、システム側の環境変数 PATH がめちゃくちゃになってることに気が付いた。状態としては、ユーザ側の PATH 内容で、システム側の PATH が全て上書きされている、みたいな感じ。
破壊された、システム側の PATH の一番最後に、Shoes のパスが追加されていて、しかし、ユーザ側の PATH にはソレがないので…。もしかすると、Shoes 3.2 か 3.3 のインストーラ・アンインストーラが、環境変数 PATH を壊してしまったのではないかなあ、と予想。
◎ 犯人は Shoes 3.3だった。 :
気になったので、もう少し調べてみた。順に以下の作業をしながら、その都度、環境変数 PATH を確認。
犯人は Shoes 3.3 だった。コイツをインストールすると、直後に、ユーザ側の PATH 内容で、システム側の PATH を全て上書きする。
つまり、Shoes 3.3 をインストールすると、Windows が破壊される。ヤバイ。コイツはヤバいぜ。気をつけよう。
ちなみに、Shoes 3.2 をインストールした場合は、そんな状態にはならないように見えた。3.2 を使っておいたほうが、まだ安全なのかな…。
ググってみたら、不具合報告は上がってたらしいけど、3.3.7 beta で修正済みのつもりらしい。怖。おーい、まだ直ってないよー。
_Windows Path Destroyed - Issue #421 - shoes/shoes3
報告しようにも、自分は英語が分からんから、どうにも…。
- Shoes 3.2 をアンインストール
- Shoes 3.3 をインストール
- Shoes 3.3 をアンインストール
- Shoes 3.2 をインストール
犯人は Shoes 3.3 だった。コイツをインストールすると、直後に、ユーザ側の PATH 内容で、システム側の PATH を全て上書きする。
つまり、Shoes 3.3 をインストールすると、Windows が破壊される。ヤバイ。コイツはヤバいぜ。気をつけよう。
ちなみに、Shoes 3.2 をインストールした場合は、そんな状態にはならないように見えた。3.2 を使っておいたほうが、まだ安全なのかな…。
ググってみたら、不具合報告は上がってたらしいけど、3.3.7 beta で修正済みのつもりらしい。怖。おーい、まだ直ってないよー。
_Windows Path Destroyed - Issue #421 - shoes/shoes3
報告しようにも、自分は英語が分からんから、どうにも…。
◎ GTK+アプリは怖い。 :
Shoes 3.2、3.3 は GTK+ を使っているらしいけど。以前、Windows用のGTK+ランタイムをアンインストールしたら、環境変数PATHを全削除されちゃったことがあって…。これだから GTK+ は嫌いなんだ。
*1
*1: このあたり、GTK+ ではなくてインストーラの問題なので、GTK+を悪者扱いするのはおかしいだろと言われそうだけど。しかし、GTK+ を使ってるプログラムは、何故か致命的なバグがあるインストーラを採用する印象もあり。GTK+ は基本的に *NIXで動かすことを前提にしているので、Windows版はバグチェックがおろそかになる傾向があるのではと邪推。
[ ツッコむ ]
#2 [ruby] green_shoes を動かせないか試したり
Windows10 x64 + Ruby 2.2.6 p396 x86 mingw32 上で、green_shoes が動かせるようにならないか試したり。
green_shoes と言うのは、Ruby でGUIアプリを作れるようになるライブラリ、という説明で合ってるのかどうか…。一般的なGUIアプリとはノリがちょっと違う気もするけど。
green_shoes と言うのは、Ruby でGUIアプリを作れるようになるライブラリ、という説明で合ってるのかどうか…。一般的なGUIアプリとはノリがちょっと違う気もするけど。
◎ gtk2 が動くかどうか実験。 :
green_shoes を動かすためには、gtk2 がインストールされている必要がある。まずは gtk2 が動くかどうかを確認した。
色々なバージョンをインストール・アンインストールして試したけれど、とりあえず、以下のバージョンの組み合わせなら、昔書いた gtk2用スクリプトも動作した。
インストール方法は以下。
ちなみに、以下の組み合わせでも動作したが、後で green_shoes を修正する際、対応させる方法が分からなかった。
gtk2 は 3.2.9 まで、cairo は 1.15.14 までなら、x86-mingw32向けのバイナリが用意されていて、インストール時間はさほどかからない。しかし、それ以降の現行版は、MSYS2 でビルドしてインストールするので結構時間がかかる。手っ取り早くインストールして、ちょっとだけ試す程度なら、バグ等はあるだろうけど、3.2.9 までの版をインストールしたほうが楽かもしれない。
色々なバージョンをインストール・アンインストールして試したけれど、とりあえず、以下のバージョンの組み合わせなら、昔書いた gtk2用スクリプトも動作した。
- cairo 1.15.11 x86-mingw32
- gtk2 3.2.1 x86-mingw32
- atk 3.2.1 x86-mingw32
- cairo-gobject 3.2.1 x86-mingw32
- gdk_pixbuf2 3.2.1 x86-mingw32
- gio2 3.2.1 x86-mingw32
- glib2 3.2.1 x86-mingw32
- gobject-introspection 3.2.1 x86-mingw32
- pango 3.2.1 x86-mingw32
インストール方法は以下。
gem install cairo -v="1.15.11" --platform=x86-mingw32 gem install gtk2 -v="3.2.1" --platform=x86-mingw32
- cairo をインストールしてから gtk2 をインストールしないとエラーが出る。
- cairo のバージョンが古いと gtk2 が動かない時もあったので注意。
- gtk2 3.2.1 は、Ruby 2.2 - 2.4 までの対応らしい。
ちなみに、以下の組み合わせでも動作したが、後で green_shoes を修正する際、対応させる方法が分からなかった。
- cairo (1.15.14 x86-mingw32)
- gtk2 (3.2.9 x86-mingw32)
- atk (3.2.9 x86-mingw32)
- cairo-gobject (3.2.9 x86-mingw32)
- gdk_pixbuf2 (3.2.9 x86-mingw32)
- gio2 (3.2.9 x86-mingw32)
- glib2 (3.2.9 x86-mingw32)
- gobject-introspection (3.2.9 x86-mingw32)
- pango (3.2.9 x86-mingw32)
gem install cairo -v="1.15.14" --platform=x86-mingw32 gem install gtk2 -v="3.2.9" --platform=x86-mingw32
gtk2 は 3.2.9 まで、cairo は 1.15.14 までなら、x86-mingw32向けのバイナリが用意されていて、インストール時間はさほどかからない。しかし、それ以降の現行版は、MSYS2 でビルドしてインストールするので結構時間がかかる。手っ取り早くインストールして、ちょっとだけ試す程度なら、バグ等はあるだろうけど、3.2.9 までの版をインストールしたほうが楽かもしれない。
◎ green_shoesを修正。 :
まずは green_shoes をインストール。
そのままだと green_shoes を使ったスクリプトを動かそうとしてもエラーが出てしまうので、green_shoes の関連ファイルを直接修正して試してみたり。
<Ruby 2.2.6 インストールフォルダ>/lib/ruby/gems/2.2.0/gems/green_shoes-1.1.374/lib/ 内の、以下のファイルを修正。
以下の記述を修正。
helper_methods.rb の 146行目を修正。
一応 diff も載せておく。
green_shoes.rb
shy.rb
ruby.rb
helper_methods.rb
この修正をすることで、Windows10 x64 + Ruby 2.2.6 p396 x86 mingw32 + gtk2 3.2.1 x86-mingw32上で、green_shoes 1.1.374 が一応動いてくれた。
gem install green_shoes
> ruby -v ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32] > gem list green_shoes *** LOCAL GEMS *** green_shoes (1.1.374)
そのままだと green_shoes を使ったスクリプトを動かそうとしてもエラーが出てしまうので、green_shoes の関連ファイルを直接修正して試してみたり。
<Ruby 2.2.6 インストールフォルダ>/lib/ruby/gems/2.2.0/gems/green_shoes-1.1.374/lib/ 内の、以下のファイルを修正。
- shoes/shy.rb
- green_shoes.rb
- shoes/ruby.rb
- shoes/helper_methods.rb
以下の記述を修正。
before | after |
---|---|
yaml_as | yaml_tag |
Gdk::Pixbuf | GdkPixbuf::Pixbuf |
GdkPixbuf::Pixbuf::ROTATE_NONE | GdkPixbuf::PixbufRotation::NONE |
GdkPixbuf::Pixbuf::ROTATE_CLOCKWISE | GdkPixbuf::PixbufRotation::CLOCKWISE |
GdkPixbuf::Pixbuf::ROTATE_UPSIDEDOWN | GdkPixbuf::PixbufRotation::UPSIDEDOWN |
GdkPixbuf::Pixbuf::ROTATE_COUNTERCLOCKWISE | GdkPixbuf::PixbufRotation::COUNTERCLOCKWISE |
Pango::WRAP_WORD | Pango::WrapMode::WORD |
Pango::WRAP_CHAR | Pango::WrapMode::CHAR |
Pango::ELLIPSIZE_END | Pango::EllipsizeMode::END |
GdkPixbuf::Pixbuf.new(path) | GdkPixbuf::Pixbuf.new(:file => path) |
helper_methods.rb の 146行目を修正。
layout.alignment = eval "Pango::ALIGN_#{align.upcase}" ↓ layout.alignment = eval "Pango::Alignment::#{align.upcase}"
一応 diff も載せておく。
green_shoes.rb
--- green_shoes.rb.orig Sat Apr 20 04:03:23 2019 +++ green_shoes.rb Sat Apr 20 04:08:17 2019 @@ -19,7 +19,7 @@ LINKHOVER_DEFAULT = "<span underline='single' underline_color='#039' foreground='#039' weight='normal'>" BANNER_DEFAULT, TITLE_DEFAULT, SUBTITLE_DEFAULT, TAGLINE_DEFAULT, CAPTION_DEFAULT, PARA_DEFAULT, INSCRIPTION_DEFAULT, IMAGE_DEFAULT = {}, {}, {}, {}, {}, {}, {}, {} - ROTATE = [Gdk::Pixbuf::ROTATE_NONE, Gdk::Pixbuf::ROTATE_CLOCKWISE, Gdk::Pixbuf::ROTATE_UPSIDEDOWN, Gdk::Pixbuf::ROTATE_COUNTERCLOCKWISE] + ROTATE = [GdkPixbuf::PixbufRotation::NONE, GdkPixbuf::PixbufRotation::CLOCKWISE, GdkPixbuf::PixbufRotation::UPSIDEDOWN, GdkPixbuf::PixbufRotation::COUNTERCLOCKWISE] VERSION = IO.read(File.join(DIR, '../VERSION')).chomp BASIC_ATTRIBUTES_DEFAULT = {left: 0, top: 0, width: 0, height: 0, angle: 0, curve: 0} SLOT_ATTRIBUTES_DEFAULT = {left: nil, top: nil, width: 1.0, height: 0} @@ -30,7 +30,7 @@ LINECAP = {curve: Cairo::LineCap::ROUND, rect: Cairo::LineCap::BUTT, project: Cairo::LineCap::SQUARE} SPAN_FORM = {emphasis: :style, family: :font_family, weight: :weight, rise: :rise, strikethrough: :strikethrough, strikecolor: :strikethrough_color, underline: :underline, undercolor: :underline_color} - WRAP = {word: Pango::WRAP_WORD, char: Pango::WRAP_CHAR, trim: Pango::ELLIPSIZE_END} + WRAP = {word: Pango::WrapMode::WORD, char: Pango::WrapMode::CHAR, trim: Pango::EllipsizeMode::END} FONT_SIZE = {"xx-small" => 0.57, "x-small" => 0.64, "small" => 0.83, "medium" => 1.0, "large" => 1.2, "x-large" => 1.43, "xx-large" => 1.73} COLORS = {} end
shy.rb
--- shy.rb.orig Sat Apr 20 04:03:23 2019 +++ shy.rb Sat Apr 20 04:06:14 2019 @@ -13,7 +13,7 @@ MAGIC = "_shy".freeze LAYOUT = "A4vV".freeze #Force to Little Endian for all platforms - yaml_as 'tag:hackety.org,2007:shy' + yaml_tag('tag:hackety.org,2007:shy') attr_accessor :name, :creator, :version, :launch def self.launchable(d)
ruby.rb
--- ruby.rb.orig Sat Apr 20 04:03:23 2019 +++ ruby.rb Sat Apr 20 04:09:22 2019 @@ -107,7 +107,7 @@ def ask_color title = 'Pick a color...' $dde = true dialog = Gtk::ColorSelectionDialog.new title - dialog.icon = Gdk::Pixbuf.new File.join(DIR, '../static/gshoes-icon.png') + dialog.icon = GdkPixbuf::Pixbuf.new(:file => File.join(DIR, '../static/gshoes-icon.png')) dialog.run ret = dialog.colorsel.current_color.to_a.map{|c| c / 65535.0} dialog.destroy @@ -120,7 +120,7 @@ def get_win Gtk::Window.new.tap do |s| - s.icon = Gdk::Pixbuf.new File.join(DIR, '../static/gshoes-icon.png') + s.icon = GdkPixbuf::Pixbuf.new(:file => File.join(DIR, '../static/gshoes-icon.png')) end end end
helper_methods.rb
--- helper_methods.rb.orig Sat Apr 20 04:03:23 2019 +++ helper_methods.rb Sat Apr 20 04:09:57 2019 @@ -143,7 +143,7 @@ layout.spacing = leading * Pango::SCALE layout.text = text layout.justify = justify - layout.alignment = eval "Pango::ALIGN_#{align.upcase}" + layout.alignment = eval "Pango::Alignment::#{align.upcase}" fd = Pango::FontDescription.new fd.family = font fd.size = size * Pango::SCALE
この修正をすることで、Windows10 x64 + Ruby 2.2.6 p396 x86 mingw32 + gtk2 3.2.1 x86-mingw32上で、green_shoes 1.1.374 が一応動いてくれた。
◎ Ruby 2.3.3でも動いた。 :
Ruby 2.3.3 p222 でも、同じ作業をしてみたところ、一応 green_shoes が動いてくれた。とメモ。
◎ 無理して使うものでもないよなと。 :
ここまでやっておいてなんだけど、green_shoes は無理して使うものでもないよなと…。
元々 Shoes は「簡単にGUIアプリが作れますよ」というのが売りだったけれど。こういう修正作業を要してしまう時点で、当初の目的をもはや達成できていないわけで。これでは存在意義が無いというか、使う意味がないというか。
もっとも、 _Red Shoes (単体で動くShoes)をインストールして使えば、こんな苦労はしないで済むはずだけど。そっちはそっちで、Windows が破壊される不具合がありそうだし…。
どうしても Ruby を使ってGUIアプリを書きたいなら、 _gtk2 、 _gtk3 、 _fxruby 、 等を使ったほうがマシだろうなと…。
そもそも、「RubyでGUIは鬼門」というのが定評なので…。 _LL *1 でGUIアプリを書きたいなら Python を選んだほうがいいよなと。
Python なら、tkinter、wxPython、PyQt(PySide)、Kivy等々、色々あるし。Ruby のGUIライブラリと違って、ライブラリが軒並み死んでいるということもなさそうだし。
元々 Shoes は「簡単にGUIアプリが作れますよ」というのが売りだったけれど。こういう修正作業を要してしまう時点で、当初の目的をもはや達成できていないわけで。これでは存在意義が無いというか、使う意味がないというか。
もっとも、 _Red Shoes (単体で動くShoes)をインストールして使えば、こんな苦労はしないで済むはずだけど。そっちはそっちで、Windows が破壊される不具合がありそうだし…。
どうしても Ruby を使ってGUIアプリを書きたいなら、 _gtk2 、 _gtk3 、 _fxruby 、 等を使ったほうがマシだろうなと…。
そもそも、「RubyでGUIは鬼門」というのが定評なので…。 _LL *1 でGUIアプリを書きたいなら Python を選んだほうがいいよなと。
Python なら、tkinter、wxPython、PyQt(PySide)、Kivy等々、色々あるし。Ruby のGUIライブラリと違って、ライブラリが軒並み死んでいるということもなさそうだし。
*1: Lightweight Language。軽量プログラミング言語。
[ ツッコむ ]
#3 [python] GUIライブラリ Kivy をインストールしてみたり
Kivy という、Python で使えるGUIライブラリがあるのだけど、そういえば触ったことがなかったので試しにインストールしてみたり。環境は、Windows10 x64 + Python 2.7.15 x86(32bit版)。
インストール手順は公式サイトに書いてあったので、DOS窓上でそのまま一つ一つ実行。
_Installation on Windows ・ Kivy 1.10.1 documentation
Python 3.5 の場合は、glew の代わりに以下を使えるらしい。今回は 2.7 を使っているので、インストールしなかった。
すんなりインストールできてしまった。
以下でデモを動かせる模様。
サンプルは、Pythonインストールフォルダ\share\kivy-examples\ 以下に入ってる。
インストール結果は以下。
環境変数 KIVY_GL_BACKEND で、glew、angle、sdl2 のどれを使って描画するのかを指定できるらしい。標準では glew が使われている模様。
インストール手順は公式サイトに書いてあったので、DOS窓上でそのまま一つ一つ実行。
_Installation on Windows ・ Kivy 1.10.1 documentation
python -m pip install --upgrade pip wheel setuptools python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew python -m pip install kivy.deps.gstreamer
Python 3.5 の場合は、glew の代わりに以下を使えるらしい。今回は 2.7 を使っているので、インストールしなかった。
python -m pip install kivy.deps.angle
python -m pip install kivy python -m pip install kivy_examples
すんなりインストールできてしまった。
以下でデモを動かせる模様。
python (Pythonインストールフォルダ)\share\kivy-examples\demo\showcase\main.pyなんだかカッコイイ画面が次々に出てきた。コレ、もしかしてスマホ等の上でも動かすことを前提にして設計されてるのかな。
サンプルは、Pythonインストールフォルダ\share\kivy-examples\ 以下に入ってる。
インストール結果は以下。
> pip list | grep -i -E "kivy|docutils|pygments|pypiwin32" docutils 0.14 Kivy 1.10.1 Kivy-examples 1.10.1 Kivy-Garden 0.1.4 kivy.deps.glew 0.1.10 kivy.deps.gstreamer 0.1.13 kivy.deps.sdl2 0.1.18 Pygments 2.2.0 pypiwin32 219
環境変数 KIVY_GL_BACKEND で、glew、angle、sdl2 のどれを使って描画するのかを指定できるらしい。標準では glew が使われている模様。
◎ 日本語訳があった。 :
インストール作業を終えてからググってたら、公式ドキュメントの日本語訳があることを知った。
_Installation on Windows(翻訳済み) ・ Kivy 1.10.0 ドキュメント
コレを見て作業すればよかった…。
_Installation on Windows(翻訳済み) ・ Kivy 1.10.0 ドキュメント
コレを見て作業すればよかった…。
[ ツッコむ ]
2019/04/21(日) [n年前の日記]
#1 [ruby][rubysdl] Ruby/SDLをインストールしようとしてハマった
Windows10 x64 上で Ruby/SDL をインストールしようとして、ちょっとハマったのでメモ。
そもそも Ruby/SDL は、どのバージョンのRubyまで対応してるのか、そこからして分からない。手元に保存してあったファイルを確認してみたら、Ruby 1.8 / 1.9 用のファイルがあったので、おそらく Ruby 1.8 と 1.9 には対応しているのかなと。
とりあえず、Ruby 1.9 p551 i386-mingw32 を使って、インストールできるのか試みた。 _uru を使って Ruby のバージョンを切り替え。
そもそも Ruby/SDL は、どのバージョンのRubyまで対応してるのか、そこからして分からない。手元に保存してあったファイルを確認してみたら、Ruby 1.8 / 1.9 用のファイルがあったので、おそらく Ruby 1.8 と 1.9 には対応しているのかなと。
とりあえず、Ruby 1.9 p551 i386-mingw32 を使って、インストールできるのか試みた。 _uru を使って Ruby のバージョンを切り替え。
◎ gemでインストール。 :
Ruby 1.8 / 1.9 用の Ruby/SDL は、gem でも公開されてるらしい。
_rubysdl-mswin32-1.9 | RubyGems.org
_rubysdl-mswin32-1.8 | RubyGems.org
以下でインストール。
インストールされてるか確認。
しかし、これだけではインストールが終了しない。
gem インストール時に案内メッセージが表示されているけれど、Ruby 1.9インストールフォルダ\bin\ 以下に、install_rubysdl.bat というファイルが入っているので、コレを実行する。
コレで Ruby/SDL が、Ruby 1.9上で使えるようになった。
_rubysdl-mswin32-1.9 | RubyGems.org
_rubysdl-mswin32-1.8 | RubyGems.org
以下でインストール。
gem install rubysdl-mswin32-1.9
インストールされてるか確認。
> gem list | grep rubysdl rubysdl-mswin32-1.9 (2.1.1.1)
しかし、これだけではインストールが終了しない。
gem インストール時に案内メッセージが表示されているけれど、Ruby 1.9インストールフォルダ\bin\ 以下に、install_rubysdl.bat というファイルが入っているので、コレを実行する。
install_rubysdl.bat
コレで Ruby/SDL が、Ruby 1.9上で使えるようになった。
◎ zipを解凍してインストール。 :
上記の手順でインストールできた、と思ったが、甘かった。以前手元で保存していた、Ruby/SDL を使ったスクリプトを動かしてみると、mikmod.dll が見つからないと言ってくる。どうやら、.itファイル
_(MODファイルフォーマット)
を再生しようとして mikmod.dll を要求するけど、入ってない状態らしい。
Rubyインストールフォルダ内で探してみたけど、どうやら gem でインストールした場合は、mikmod.dll が同梱されていないようで。しかし、以下のファイルには入ってる模様。
しかし、上記のzipファイルは、RubyForge ( http://rubyforge.org/ ) なるサイトで公開されていたらしく…。その RubyForge は既に死んでいるわけで。これでは入手できない…。
Internet Archive で、公開されていたファイルの一覧を確認することぐらいはできるけど、zip も gem もダウンロードはできない。
_RubyForge: Ruby/SDL: Project Filelist
ググって探してみたら、 _Index of /rubyforge/rubysdl でミラーされているソレを見かけた。いくつかDLしてみたけど、手元のファイルと内容は同じだった。
(上記ページが消滅したら怖いので、念のためにバックアップを兼ねてココにも置いておこう…。 _[1] 、 _[2] 、 _[3] 。このあたり RubyGems.org に置けたりはしないのだろうか…。)
rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍して、中に入って、以下を実行。
これで、Ruby/SDL の動作に必要な dll等が、Ruby1.9インストールフォルダ/bin/ 以下にコピーされた。mikmod.dll も入っている。
Rubyインストールフォルダ内で探してみたけど、どうやら gem でインストールした場合は、mikmod.dll が同梱されていないようで。しかし、以下のファイルには入ってる模様。
- rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip
- rubysdl-2.1.1.1-mswin32-1.8.7-p174.zip
しかし、上記のzipファイルは、RubyForge ( http://rubyforge.org/ ) なるサイトで公開されていたらしく…。その RubyForge は既に死んでいるわけで。これでは入手できない…。
Internet Archive で、公開されていたファイルの一覧を確認することぐらいはできるけど、zip も gem もダウンロードはできない。
_RubyForge: Ruby/SDL: Project Filelist
ググって探してみたら、 _Index of /rubyforge/rubysdl でミラーされているソレを見かけた。いくつかDLしてみたけど、手元のファイルと内容は同じだった。
(上記ページが消滅したら怖いので、念のためにバックアップを兼ねてココにも置いておこう…。 _[1] 、 _[2] 、 _[3] 。このあたり RubyGems.org に置けたりはしないのだろうか…。)
rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍して、中に入って、以下を実行。
ruby install_rubysdl.rb
これで、Ruby/SDL の動作に必要な dll等が、Ruby1.9インストールフォルダ/bin/ 以下にコピーされた。mikmod.dll も入っている。
◎ 参考ページ。 :
[ ツッコむ ]
#2 [rubysdl][ruby] Ruby/SDLでSFontが表示されなくてハマった
Ruby/SDL は SFont形式のビットマップフォントを描画できるはずなのだけど。
Windows10 x64 + Ruby 1.9.3 p661 mingw32 + rubysdl 2.1.1.1 で、SFont を描画しようとしても、png画像のSFontをそもそも開けないことに気が付いた。以下のようなエラーが出てしまう。
Ruby/SDL が使われていた頃の Ruby のバージョンを調べてみたら、1.8 だった。ということは、Ruby 1.8 + Ruby/SDL なら動作が違ってくるのだろうか。
そして、Ruby/SDL は、2.0.0 から Ruby 1.9.x に対応したらしい。すると Ruby 1.8 には、Ruby/SDL 1.3.1 を使ったほうが、昔のスクリプトを動かす分にはヨサゲかもしれないなと。
試しに、Ruby 1.8.7 p330 mswin32 上で、rubysdl 1.3.1 (rubysdl-1.3.1-mswin32-1.8.6-p36.zip) をインストール。
それぞれで動作確認してみたところ、結果は以下のようになった。
つまり、SFont については、以下のような状態になる。
ただ、以下の記事によると、*NIX環境 + Ruby/SDL 2.2.0 なら、png の SFont も読み込めるっぽい。
_Ubuntu に Ruby/SDL を入れる - Marginalia
Windows10 x64 + Ruby 1.9.3 p661 mingw32 + rubysdl 2.1.1.1 で、SFont を描画しようとしても、png画像のSFontをそもそも開けないことに気が付いた。以下のようなエラーが出てしまう。
sfont.rb:69:in `open': Couldn't open font: font/verabd_sfont01_32col.png (SDL::Error) from sfont.rb:69:in `<main>'おかしいな。手元のスクリプトを眺めた感じでは、昔は png の SFont をフツーに読み込めていたように見えるのだけど…。
Ruby/SDL が使われていた頃の Ruby のバージョンを調べてみたら、1.8 だった。ということは、Ruby 1.8 + Ruby/SDL なら動作が違ってくるのだろうか。
そして、Ruby/SDL は、2.0.0 から Ruby 1.9.x に対応したらしい。すると Ruby 1.8 には、Ruby/SDL 1.3.1 を使ったほうが、昔のスクリプトを動かす分にはヨサゲかもしれないなと。
試しに、Ruby 1.8.7 p330 mswin32 上で、rubysdl 1.3.1 (rubysdl-1.3.1-mswin32-1.8.6-p36.zip) をインストール。
それぞれで動作確認してみたところ、結果は以下のようになった。
Ruby | Ruby/SDL | load bmp | load png |
---|---|---|---|
Ruby 1.8.7 p330 mswin32 | rubysdl 1.3.1 | PASS | PASS |
Ruby 1.9.3 p661 mingw32 | rubysdl 2.1.1.1 | PASS | FAIL |
つまり、SFont については、以下のような状態になる。
- Windows版の Ruby/SDL 2.0.0 以降は、SFont として png画像は使えず、bmp画像を使う必要がある。
- png画像が読み込めないから、諧調を持ったアルファチャンネルは利用不可。
ただ、以下の記事によると、*NIX環境 + Ruby/SDL 2.2.0 なら、png の SFont も読み込めるっぽい。
_Ubuntu に Ruby/SDL を入れる - Marginalia
◎ サンプルスクリプトと画像。 :
動作確認用にスクリプトを書いてみた。
※ 2019/04/22追記。サンプルとしては分かりづらかったので書き直した。
_sfont.rb
_sfontex.rb
sfontex.rb は、カーソルキーの左右で、SFontの種類を切り替えられる。ESC で終了。
使った SFont画像は以下。元にしたttfフォントはライセンス面で自由度が高いものを選んだ、はず。ファイル名を見ればフォント名も分かるかと。
_verabd_sfont01_32col.bmp
_verabd_sfont01_32col.png
_verabd_sfont01.png
_verabd_sfont02_width_fix.png
_sfont_mplus1m_m.png
_vlgothic_sfont01.png
一応、画像表示もしておくかな…。
※ 2019/04/22追記。サンプルとしては分かりづらかったので書き直した。
_sfont.rb
# Ruby/SDL birmap font (SFont) draw. # # ESC key : exit require "sdl" fontimg = "font/verabd_sfont01_32col.bmp" #fontimg = "font/verabd_sfont01.png" SDL.init( SDL::INIT_VIDEO ) screen = SDL::Screen.open(640, 480, 16, SDL::SWSURFACE) fontflag = SDL::BMFont::TRANSPARENT | SDL::BMFont::SFONT font = SDL::BMFont.open(fontimg, fontflag) while true while event = SDL::Event2.poll case event when SDL::Event2::Quit exit when SDL::Event2::KeyDown case event.sym when SDL::Key::ESCAPE exit end end end screen.fill_rect(0, 0, 640, 480, [128, 128, 128]) font.textout(screen, fontimg, 0, 0) x, y = 8, 64 font.textout(screen, "SFont (BitMapFont) Testing..", x, y) screen.updateRect(0,0,0,0) sleep 0.016 end
_sfontex.rb
# Ruby/SDL birmap font (SFont) draw. # # usage: ruby sfont.rb [font_kind] # RIGHT, LEFT : change font # ESC : exit require "sdl" fontdir = "font/" fontfiles = [ "verabd_sfont01_32col.bmp", "verabd_sfont01_32col.png", "verabd_sfont01.png", "verabd_sfont02_width_fix.png", "sfont_mplus1m_m.png", "vlgothic_sfont01.png", ] kind = ARGV.size > 0 ? ARGV[0].to_i : 0 if kind >= fontfiles.size puts "please input 0 - #{fontfiles.size - 1}" exit end fontfile = fontfiles[kind] puts "font image : #{fontfile}" SDL.init( SDL::INIT_VIDEO ) screen = SDL::Screen.open(640, 480, 16, SDL::SWSURFACE) fontflag = SDL::BMFont::TRANSPARENT | SDL::BMFont::SFONT font = SDL::BMFont.open(fontdir + fontfile, fontflag) ang = 0 while true while event = SDL::Event2.poll case event when SDL::Event2::Quit exit when SDL::Event2::KeyDown font_reload = false case event.sym when SDL::Key::ESCAPE exit when SDL::Key::RIGHT kind = (kind + 1) % fontfiles.size font_reload = true when SDL::Key::LEFT kind = (kind - 1 + fontfiles.size) % fontfiles.size font_reload = true end if font_reload fontfile = fontfiles[kind] puts "font image : #{fontfile}" font = SDL::BMFont.open(fontdir + fontfile, fontflag) end end end screen.fill_rect(0, 0, 640, 480, [128, 128, 128]) font.textout(screen, fontfile, 0, 0) y = 64.0 * Math.sin(ang * Math::PI / 180) + 128 ang += 1 font.textout(screen, "SFont (BitMapFont) Testing..", 8, y) screen.updateRect(0,0,0,0) sleep 0.016 end
sfontex.rb は、カーソルキーの左右で、SFontの種類を切り替えられる。ESC で終了。
使った SFont画像は以下。元にしたttfフォントはライセンス面で自由度が高いものを選んだ、はず。ファイル名を見ればフォント名も分かるかと。
_verabd_sfont01_32col.bmp
_verabd_sfont01_32col.png
_verabd_sfont01.png
_verabd_sfont02_width_fix.png
_sfont_mplus1m_m.png
_vlgothic_sfont01.png
一応、画像表示もしておくかな…。
◎ 動作時のスクリーンショット。 :
[ ツッコむ ]
#3 [ruby][rubysdl] Ubuntu 18.04上で Ruby/SDL をインストール
Windows10 x64 + VMware Player 12.5.9 build 7535481上で、Ubuntu Linux 18.04 LTS を動かして、その上で Ruby/SDL をインストールしてみたり。
Ruby のバージョンは、ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] 。
gem でインストールする方法と、apt でインストールする方法がある。たぶん apt でインストールしたほうが楽、かもしれない。
と、ここまで作業して気が付いた。Ubuntu の場合は ruby-sdl というパッケージが既に用意されているように見えるのだけど…。
Ruby のバージョンは、ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] 。
gem でインストールする方法と、apt でインストールする方法がある。たぶん apt でインストールしたほうが楽、かもしれない。
◎ 必要なパッケージをインストール。 :
事前に、以下のパッケージをインストール。
巷の解説記事を読むと前者だけでも良さそうな感じで書いてあったけど、後者も入れないとpng画像の読み込みその他がエラーになった。
sudo apt install libsdl2-2.0 libsdl-sge-dev sudo apt install libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-sound1.2-dev libsdl-ttf2.0-dev
巷の解説記事を読むと前者だけでも良さそうな感じで書いてあったけど、後者も入れないとpng画像の読み込みその他がエラーになった。
◎ gemでrubysdlをインストール。 :
sudo gem install rubysdl
$ gem list | grep sdl rubysdl (2.2.0)rubysdl 2.2.0 がインストールされた。
と、ここまで作業して気が付いた。Ubuntu の場合は ruby-sdl というパッケージが既に用意されているように見えるのだけど…。
◎ aptでrubysdlをインストール。 :
gem で rubysdl をアンインストールしてから、apt でインストールしてみた。
sudo gem uninstall rubysdl
sudo apt install ruby-sdlrubysdl 2.2.0 がインストールされた。手元のスクリプトも動いてる。こっちで良かったのか…。
◎ 参考ページ。 :
[ ツッコむ ]
#4 [anime] 「クレヨンしんちゃん ガチンコ!逆襲のロボとーちゃん」を中途半端に視聴
戦隊の放送が終わった後で、「クレしん」の映像が流れ始めて、なんでこんな時間に流れてるのだろうと思いながら音声を消してBGVとして流しっぱなしにしてたのだけど。なんだか劇場版アニメのようでもあり、また、途中から妙な映像が出てきて興味が湧いて、音声も聞き始めたらどんどん画面に引き込まれ、結局最後まで見てしまった。
失敗した。こんなに面白い映画だったと知ってたら、最初からちゃんと見ておくのだった。大失敗。
脚本がとにかく秀逸。ググってみたら、中島かずき脚本だった。道理で…。監督は、シリーズと縁が深いらしい高橋渉氏。湯浅監督もコンテと作画で参加してたと後で知り、ますますちゃんと見ておくべきだったなと。本当に大失敗。
これぞまさしく、笑いあり、涙ありの映画だなと…。間違いなく名作。素晴らしい。最初からちゃんと見ておけばよかった。大失敗。
失敗した。こんなに面白い映画だったと知ってたら、最初からちゃんと見ておくのだった。大失敗。
脚本がとにかく秀逸。ググってみたら、中島かずき脚本だった。道理で…。監督は、シリーズと縁が深いらしい高橋渉氏。湯浅監督もコンテと作画で参加してたと後で知り、ますますちゃんと見ておくべきだったなと。本当に大失敗。
これぞまさしく、笑いあり、涙ありの映画だなと…。間違いなく名作。素晴らしい。最初からちゃんと見ておけばよかった。大失敗。
◎ ロボットアニメ好きなら絶対に視聴すべき作品、かも。 :
そういえば、ロボット同士の戦闘シーンで目から鱗が落ちた。体の各部位を360度回転させられる設定を活用して、敵の攻撃を避けながら瞬時に反撃に転じる等の見せ方をしていたり、パーツの位置をずらせる故の奇妙な回避運動をしていたり。
自分が、人型ロボットという設定に対して、完全に固定観念を持ってしまっていた・思考停止していたことを気づかされた…。見た目は人型でも、どこがどのように動くのかによって、人間のソレとは全く異質なアクションシーンを描けるのだなと…。
ロボットアニメ好きなら、あるいは、ロボットアニメを作ってる方なら、戦闘シーンだけでも絶対に視聴すべきだなと。ポーズを決めてビーム発射とか、パースをつけて剣を構えるとか、そんなことばかりしていてはダメだよなと…。まあ、そのあたりは様式美だからアレだけど、他にも色んな見せ方はあるのだと意識ぐらいはしておかないと…。
自分が、人型ロボットという設定に対して、完全に固定観念を持ってしまっていた・思考停止していたことを気づかされた…。見た目は人型でも、どこがどのように動くのかによって、人間のソレとは全く異質なアクションシーンを描けるのだなと…。
ロボットアニメ好きなら、あるいは、ロボットアニメを作ってる方なら、戦闘シーンだけでも絶対に視聴すべきだなと。ポーズを決めてビーム発射とか、パースをつけて剣を構えるとか、そんなことばかりしていてはダメだよなと…。まあ、そのあたりは様式美だからアレだけど、他にも色んな見せ方はあるのだと意識ぐらいはしておかないと…。
[ ツッコむ ]
2019/04/22(月) [n年前の日記]
#1 [rubysdl] jiskan16.bdfはどこにある
Ruby/SDL でビットマップフォントの描画について動作確認していたのだけど、bdfフォントを描画しようとしたところでちょっと悩んでしまった。jiskan16.bdf って、今現在はどこから入手できるのだろう。
ちなみに、BDFフォントと言うのは、ビットマップフォントを示すファイルフォーマットの一つ。テキストデータで記述されているので、テキストエディタで開いて一部を修正することも可能。
ググってみたけれど、jiskan16.bdf の公式配布ページらしきものは見つからず。また、色んなバージョンがあるようで…。どれを選ぶべきなのだろう…。
_jiskan - Wikipedia
ちなみに、BDFフォントと言うのは、ビットマップフォントを示すファイルフォーマットの一つ。テキストデータで記述されているので、テキストエディタで開いて一部を修正することも可能。
ググってみたけれど、jiskan16.bdf の公式配布ページらしきものは見つからず。また、色んなバージョンがあるようで…。どれを選ぶべきなのだろう…。
_jiskan - Wikipedia
◎ 入手先ページをメモ :
それでもなんとか、ファイル名でググって、入手できそうなページを見かけたので、一応メモ。
_how to convert BDF fonts for FreeBSD 10.x vt(4) console, make ISO10646 encoded font
(ページの下のほうにリンクがある。)
_https://opensource.apple.com/source/X11fonts/...
_Index of /~yasuoka/ftp/fonts
_Index of /dist/fonts/BDF/JISX0213
_JISX0213 16x16 public fonts
_Debian Fonts Task Force / xfonts-jisx0213 - GitLab
_Index of /pub/FreeBSD/ports/distfiles/xorg/font
_how to convert BDF fonts for FreeBSD 10.x vt(4) console, make ISO10646 encoded font
(ページの下のほうにリンクがある。)
_https://opensource.apple.com/source/X11fonts/...
_Index of /~yasuoka/ftp/fonts
_Index of /dist/fonts/BDF/JISX0213
_JISX0213 16x16 public fonts
_Debian Fonts Task Force / xfonts-jisx0213 - GitLab
_Index of /pub/FreeBSD/ports/distfiles/xorg/font
◎ 半角フォントの入手。 :
jiskan16.bdf には全角文字部分が入っているけれど、半角文字部分は入っていないらしい。一般的には、SONY が作ったらしい、8x16rk.bdf と組み合わせて使う場合が多いようで。
_Re: mgl2 make failured
SONY製のフォントとなるとライセンス面が厳しいのではないかと思ったけれど、当時は緩い感じで使えてたようだなと。
_Re: mgl2 make failured
SONY製のフォントとなるとライセンス面が厳しいのではないかと思ったけれど、当時は緩い感じで使えてたようだなと。
◎ intlfontsを入手すれば良かったらしい。 :
その後もググっていたところ、intlfonts なるフォントファイル群を入手できれば、その中に jsikan16.bdf や 8x16rk.bdf も入ってると知った。
_Index of /old-gnu/intlfonts
_With Emacs Next - 3.1.2 フォント設定
_Index of /old-gnu/intlfonts
_With Emacs Next - 3.1.2 フォント設定
◎ その他のフォントについて。 :
他の選択肢として、東雲フォントを使うのもアリかなと。jiskan16.bdf と比べると、すっきりした見た目で、可読性が向上しているフォントのように感じたり。
_東雲フォント - Wikipedia
_shinonome font family
_日本語漢字ビットマップフォント、東雲フォントについて | mgo-tec電子工作
M+ Bitmapフォントという選択肢もありだろうか。丸みがあって、コレも読みやすい。
_M+ BITMAP FONTS
_東雲フォント - Wikipedia
_shinonome font family
_日本語漢字ビットマップフォント、東雲フォントについて | mgo-tec電子工作
M+ Bitmapフォントという選択肢もありだろうか。丸みがあって、コレも読みやすい。
_M+ BITMAP FONTS
◎ BDFフォントを使うメリットは何だろう。 :
余談。
今時はTTFフォントを使う場面が多いわけで、するとBDFフォントをあえて使う理由は何だろうと考えたのだけど。やはり、ドットを寸分違わずきっちりと画面に出したい、という需要を満たしたい時に使えるのかなと。アウトラインフォントだと、最終的にどんな見た目になるのか予想しづらいところがあるし。
もっとも、漢字を含んだ、こういったBDFフォントを使う必要が出てくるとしたら、大量のテキストを画面に表示する場合であろうし。であれば、ドットがどうこうより、読みやすいか否かでフォントを選んだほうがいいのかもしれない。
それとは別に、ライセンスの問題もありそうか…。当時のBDFフォントは、ライセンスに関して比較的緩く指定されてるものが多い印象もあり、ソフトウェアに同梱する際に問題が起きにくい面もありそうな。もっとも、昨今のフォントも、SIL Open Font License 等、ソフトウェアから使う分には比較的緩いライセンスになってるものも多いかな…。と思ったけれど、そのあたりは英語圏のフォントの話で、日本語フォントとなるとまた状況が違ってくるか…。
今時はTTFフォントを使う場面が多いわけで、するとBDFフォントをあえて使う理由は何だろうと考えたのだけど。やはり、ドットを寸分違わずきっちりと画面に出したい、という需要を満たしたい時に使えるのかなと。アウトラインフォントだと、最終的にどんな見た目になるのか予想しづらいところがあるし。
もっとも、漢字を含んだ、こういったBDFフォントを使う必要が出てくるとしたら、大量のテキストを画面に表示する場合であろうし。であれば、ドットがどうこうより、読みやすいか否かでフォントを選んだほうがいいのかもしれない。
それとは別に、ライセンスの問題もありそうか…。当時のBDFフォントは、ライセンスに関して比較的緩く指定されてるものが多い印象もあり、ソフトウェアに同梱する際に問題が起きにくい面もありそうな。もっとも、昨今のフォントも、SIL Open Font License 等、ソフトウェアから使う分には比較的緩いライセンスになってるものも多いかな…。と思ったけれど、そのあたりは英語圏のフォントの話で、日本語フォントとなるとまた状況が違ってくるか…。
[ ツッコむ ]
2019/04/23(火) [n年前の日記]
#1 [cmder][windows] Cmderをインストールしてみた
自分は普段、Windows10 上でDOSプロンプトを開いて作業する時は、cmd.exe ではなく ConEmu を使っていたのだけど。巷の記事を眺めていると、ConEmu より Cmder が使われている事例が多いようなので、試しにそちらもインストールしてみたり。なんでも、ConEmu をベースにしながら、各種機能を追加したものらしい。
_Cmder | Console Emulator
環境は Windows10 x64 1803。
少し触ってみた感じでは、最初から alias が使えるようになっていたり、ショートカットキーの割り当てが調整されていたりして、たしかにイイ感じかもしれないなと。
_Cmder | Console Emulator
環境は Windows10 x64 1803。
少し触ってみた感じでは、最初から alias が使えるようになっていたり、ショートカットキーの割り当てが調整されていたりして、たしかにイイ感じかもしれないなと。
◎ インストールの仕方。 :
Mini版と、Git等を含んだFull版があるが、自分の環境は Git を既にインストール済みだったので Mini版を選択。
cmder_mini_1.3.11.zip を解凍して任意のフォルダに置いて、Cmder.exe を実行。
最初の起動時に、「設定ファイルをココに作成したよ」と英文メッセージが表示される。
cmder_mini_1.3.11.zip を解凍して任意のフォルダに置いて、Cmder.exe を実行。
最初の起動時に、「設定ファイルをココに作成したよ」と英文メッセージが表示される。
◎ プロンプトの「λ」を変更。 :
コマンド入力時に、「λ」が表示されて、なんだか気になる。キモイ。
Cmderインストールディレクトリ/vendor/clink.lua を修正して変更する。
Cmderインストールディレクトリ/vendor/clink.lua を修正して変更する。
local lambda = "λ"と書かれた行を探して、 "λ" を ">" に変更した。
◎ プロンプトを2行から1行にしたい :
cmd.exe の場合、プロンプトは以下のようになっている。
しかし、Cmderのデフォルト設定では、以下のように、2行になる。
cmd.exe のように1行にしたい。
Cmderインストールディレクトリ/vendor/clink.lua を修正する。
C:\Users\hoge>
しかし、Cmderのデフォルト設定では、以下のように、2行になる。
C:\Users\mieki256 >
cmd.exe のように1行にしたい。
Cmderインストールディレクトリ/vendor/clink.lua を修正する。
local cmder_prompt = " ... "という行を探して、中に入っている \n を削除する。
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" ↓ local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \x1b[1;39;40m{lamb} \x1b[0m"
◎ タスクバーにピン止めする。 :
cmder.exe を右クリックして「タスクバーにピン止め」を選べばピン止めできるが、その作業をする前に「スタートにピン止め」をしてしまうと、タスクバー上の Cmder のアイコンをクリックして起動した際に、Cmder のアイコンが2つになってしまう。
スタートメニューのピン止めは外してから、タスクバーにピン止めすること。
なんでも、スタートメニューに登録した段階で、謎IDが設定されて、タスクバー上のピン止めに影響を及ぼすらしい…。
スタートメニューのピン止めは外してから、タスクバーにピン止めすること。
なんでも、スタートメニューに登録した段階で、謎IDが設定されて、タスクバー上のピン止めに影響を及ぼすらしい…。
◎ 起動時にカレントディレクトリを変更したい。 :
cmder.exe の後ろにディレクトリパスを指定すれば、起動時にそのディレクトをカレントディレクトリにしてくれるらしい。
Cmderのショートカットファイルのプロパティを開いて、Cmder.exe の後ろにディレクトリを指定すればヨサゲ。
cmder.exe 指定ディレクトリ 例: cmder.exe %HOME% cmder.exe %USERPROFILE%
Cmderのショートカットファイルのプロパティを開いて、Cmder.exe の後ろにディレクトリを指定すればヨサゲ。
◎ aliasが使える。 :
*NIX の bash のように、alias が使えるようになっている。alias で、現在定義されている一覧が表示される。
Cmderインストールフォルダ\config\user_aliases.cmd で内容が定義されているらしい。
Cmderインストールフォルダ\config\user_aliases.cmd で内容が定義されているらしい。
◎ 参考ページ。 :
参考にしたページが多すぎるので、はてブを見てもらったほうが…。
_はてなブックマーク - Cmderに関するmieki256のブックマーク
と思いつつも。一応ココにもメモしておこう…。
_Windowsで使えるターミナルとシェルのまとめ - Qiita
_Windowsのコマンドプロンプトの代わりに、高機能な「Cmder」でLinuxライクに使う:Tech TIPS - @IT
_[備忘録]Cmderの設定 - Qiita
_Cmder changing the lambda - update! | i-py.com
_Cmderでオシャレにcmd.exeを使う -前編-
_Windows-アプリケーション/ConEmu/タスク・起動設定 - yanor.net/wiki
_Console Emulator「Cmder」で、起動時のディレクトリを設定する方法 - 明日会社がなくなっても
_Cmderでタブやカレントディレクトリの状態を保存する - エクセレンス★ブログ
_Cmder (または ConEmu) を使う際にいつも変更している設定項目 | ラボラジアン
_[Cmder]cmder.exe自体の起動時に、初期ディレクトリを指定する - akamist blog
_[cmder]プロンプトをラムダ「λ」から、他の文字に変更する - akamist blog
_Customization - cmderdev/cmder Wiki
_cmder
_Cmderをエクスプローラの右クリックメニューから開く『Cmder Here』 :: コマンドプロンプト | Refills
_Taskbar icon after pinning the program reverts to default ConEmu icon. ... - Issue #154 - cmderdev/cmder
_ConEmu | Settings - Environment page
_ConEmu | Settings - TaskBar page
_はてなブックマーク - Cmderに関するmieki256のブックマーク
と思いつつも。一応ココにもメモしておこう…。
_Windowsで使えるターミナルとシェルのまとめ - Qiita
_Windowsのコマンドプロンプトの代わりに、高機能な「Cmder」でLinuxライクに使う:Tech TIPS - @IT
_[備忘録]Cmderの設定 - Qiita
_Cmder changing the lambda - update! | i-py.com
_Cmderでオシャレにcmd.exeを使う -前編-
_Windows-アプリケーション/ConEmu/タスク・起動設定 - yanor.net/wiki
_Console Emulator「Cmder」で、起動時のディレクトリを設定する方法 - 明日会社がなくなっても
_Cmderでタブやカレントディレクトリの状態を保存する - エクセレンス★ブログ
_Cmder (または ConEmu) を使う際にいつも変更している設定項目 | ラボラジアン
_[Cmder]cmder.exe自体の起動時に、初期ディレクトリを指定する - akamist blog
_[cmder]プロンプトをラムダ「λ」から、他の文字に変更する - akamist blog
_Customization - cmderdev/cmder Wiki
_cmder
_Cmderをエクスプローラの右クリックメニューから開く『Cmder Here』 :: コマンドプロンプト | Refills
_Taskbar icon after pinning the program reverts to default ConEmu icon. ... - Issue #154 - cmderdev/cmder
_ConEmu | Settings - Environment page
_ConEmu | Settings - TaskBar page
[ ツッコむ ]
2019/04/24(水) [n年前の日記]
#1 [pc] KM-BASIC 0.8.2の動作確認をしてみたり
MZ-80K/1200/700上で動作するBASIC、KM-BASIC の不具合を修正したと作者様から連絡していただけたので、KM-BASIC 0.8.2 の動作確認をしてみたり。環境は、Windows10 x64 1803 + MZ700WIN 0.56 + KM-BASIC 0.8.2。
_Katsumi (電子工作好き)さんのツイート: KM-BASIC for MZ-80K/MZ-700 ver 0.8.2を、OSDNにアップロード...
_Z80 File Downloads on Chamber Katsumi - OSDN
文字列型変数と SGN() の挙動は、修正されていることを確認できました。対応ありがとうございます。感謝します。
しかし、REM文を使うと LIST の結果がおかしくなる不具合を見つけてしまいました…。なんだか小出し(?)に見つけてしまってスミマセン…。まあ、REM文(コメント文)なので、使わないという手もあるかもですが…。
_Katsumi (電子工作好き)さんのツイート: KM-BASIC for MZ-80K/MZ-700 ver 0.8.2を、OSDNにアップロード...
_Z80 File Downloads on Chamber Katsumi - OSDN
文字列型変数と SGN() の挙動は、修正されていることを確認できました。対応ありがとうございます。感謝します。
しかし、REM文を使うと LIST の結果がおかしくなる不具合を見つけてしまいました…。なんだか小出し(?)に見つけてしまってスミマセン…。まあ、REM文(コメント文)なので、使わないという手もあるかもですが…。
◎ REM文の挙動。 :
REM文の挙動について一応メモ。
以下のような感じで REM文を入れると、LIST をした際に妙な挙動になる模様。
ちなみに、KM-BASIC 0.6.8 で確認したところ、そちらでも同じ結果になりました。
ただ、LISTの表示がおかしくなるだけで、プログラムの実行はできるようです。
以下のような感じで REM文を入れると、LIST をした際に妙な挙動になる模様。
- REM に続く文字列が表示されない。
- REM文の次行の冒頭が妙な表示になる。
ちなみに、KM-BASIC 0.6.8 で確認したところ、そちらでも同じ結果になりました。
ただ、LISTの表示がおかしくなるだけで、プログラムの実行はできるようです。
◎ その他の命令の動作確認。 :
一応、その他の命令についても動作確認したので結果をメモ。他の命令に関しては、問題無く動いてるように見えました。
FOR - NEXT, GOSUB, IF - THEN - ELSE はOK。
文字列型変数もOK。
演算子もOK。
DIM(配列)もOK。
SGN(), ABS(), NOT() もOK。
INKEY() (押されたキーのアスキーコードを取得)もOK。
INPUT$() (入力文字列+ENTERの取得)もOK。
PEEK() (メモリの読み込み)、POKE (メモリへ書き込み)もOK。
念のため、動作確認に使ったプログラム (.mzt) も zip にして置いておきます。
_apicheck_20190424.zip
FOR - NEXT, GOSUB, IF - THEN - ELSE はOK。
文字列型変数もOK。
演算子もOK。
DIM(配列)もOK。
SGN(), ABS(), NOT() もOK。
INKEY() (押されたキーのアスキーコードを取得)もOK。
INPUT$() (入力文字列+ENTERの取得)もOK。
PEEK() (メモリの読み込み)、POKE (メモリへ書き込み)もOK。
念のため、動作確認に使ったプログラム (.mzt) も zip にして置いておきます。
_apicheck_20190424.zip
◎ せっかくだから少し遊んだり。 :
動作確認だけではアレなので、せっかくだから少し遊んでみたり。
KM-BASICには、メモリの読み込みと書き込みができる、PEEK, POKE文があって。
例えば、MZ-700 は、$D000番地からVRAMが割り当てられているので…。
_Programming MZ-700: Display
$D000 - $D3E7 の間に、何かディスプレイコードを書き込むと、画面のその位置に文字を表示することができるので、ソレを使って色々遊べる。とメモ。
例えば、以下は、画面上をキャラが行ったり来たりする例。
以下は、キャラをカーソルキーで移動、Qキーでプログラムを終了させる例。
以下で、MZ-700のメモリマップその他が説明されてるので、この手のソレには参考になりそうな予感。ありがたや。
_Programming MZ-700
_Programming MZ-700: Memory
_Programming MZ-700: Keyboard
_Programming MZ-700: Sound
_Programming MZ-700: Interrupt
KM-BASICには、メモリの読み込みと書き込みができる、PEEK, POKE文があって。
PEEK(メモリアドレス) : 指定メモリアドレスから1バイト読み込んで値を返す。 POKE メモリアドレス,値 : 指定メモリアドレスに1バイトの値を書き込む。この命令を使うと、ちょっと面白いことができる。
例えば、MZ-700 は、$D000番地からVRAMが割り当てられているので…。
_Programming MZ-700: Display
$D000 - $D3E7 の間に、何かディスプレイコードを書き込むと、画面のその位置に文字を表示することができるので、ソレを使って色々遊べる。とメモ。
例えば、以下は、画面上をキャラが行ったり来たりする例。
以下は、キャラをカーソルキーで移動、Qキーでプログラムを終了させる例。
以下で、MZ-700のメモリマップその他が説明されてるので、この手のソレには参考になりそうな予感。ありがたや。
_Programming MZ-700
_Programming MZ-700: Memory
_Programming MZ-700: Keyboard
_Programming MZ-700: Sound
_Programming MZ-700: Interrupt
◎ INKEY()を利用した際の返り値をメモ。 :
KM-BASIC は、INKEY() を使うと、その時に押しているキーのアスキーコードを取得できる。どのキーを押すと何が返ってくるのか、少し調べたのでメモ。環境は MZ700WIN 0.53b。
例えば _TIC-80 などは、カーソルキー, Z, X, A, S (要は、十字キー + A, B, X, Yボタン)だけでアクションゲームを作ろうとしてるノリがあるので、このくらいのキーさえ判定できればなんとかなるのではないか。
でも、MZシリーズって、同時押しを取得できるキー種類に制限があったり、したかな。どうだったかな。むしろ制限が無かったほうだったろうか。
FM-7あたりは、サブCPUがキーボードを制御してる関係で何か制限があった気もするけれど、具体的な内容をもう覚えてないや…。 *1
などと、ちょっと悩んでみたけれど、ふと気が付いた。そもそも KM-BASIC の INKEY() は一つの値しか返さないのだから、キーを同時押しされても取得できないわな…。悩む必要がなかった…。
KEY | ASCII CODE |
---|---|
↓ | 17 |
↑ | 18 |
→ | 19 |
← | 20 |
SPC | 32 |
Z | 90 |
X | 88 |
A | 65 |
S | 83 |
Q | 81 |
例えば _TIC-80 などは、カーソルキー, Z, X, A, S (要は、十字キー + A, B, X, Yボタン)だけでアクションゲームを作ろうとしてるノリがあるので、このくらいのキーさえ判定できればなんとかなるのではないか。
でも、MZシリーズって、同時押しを取得できるキー種類に制限があったり、したかな。どうだったかな。むしろ制限が無かったほうだったろうか。
FM-7あたりは、サブCPUがキーボードを制御してる関係で何か制限があった気もするけれど、具体的な内容をもう覚えてないや…。 *1
などと、ちょっと悩んでみたけれど、ふと気が付いた。そもそも KM-BASIC の INKEY() は一つの値しか返さないのだから、キーを同時押しされても取得できないわな…。悩む必要がなかった…。
*1: テンキーの5キーでキャラ移動を止められる、とかだっけ。それはキーを離した瞬間を取得できないから、だったかな。同時押しとは別の問題か。
この記事へのツッコミ
- Re: KM-BASIC 0.8.2の動作確認をしてみたり by 名無しさん 2019/04/29 11:19
- ver 0.8.3をアップロードしました。REM文に関しての挙動は、直っていると思います。また何か発見しましたら、お知らせ頂けると嬉しいです。
- Re: KM-BASIC 0.8.2の動作確認をしてみたり by mieki256 2019/05/08 21:23
- > ver 0.8.3をアップロードしました。
0.8.3を試したところ、REM文が正常表示されることを確認できました。
対応・修正していただき感謝します。ありがとうございます。
[ ツッコミを読む(2) | ツッコむ ]
2019/04/25(木) [n年前の日記]
#1 [pc] Z80のアセンブラについて調べていたり
MZ-700エミュレータ上で動く何かしらを、アセンブラで書けるかどうか確認したくなったので、Z80用のバイナリを出力できるアセンブラをググっていたり。
ググった感じでは、Z80AS が使われている場合が多いようだなと…。
_We Love MZ-700
_Z80 Abusolute Assembler 'Z80AS'
MZ-80K/700エミュレータで利用できるファイルフォーマット ―― .mzt で出力できるあたりがとてもヨサゲ。
問題は、どういうアセンブラソースを書けば MZ上で動くのか、そこが分からないという…。
ググった感じでは、Z80AS が使われている場合が多いようだなと…。
_We Love MZ-700
_Z80 Abusolute Assembler 'Z80AS'
MZ-80K/700エミュレータで利用できるファイルフォーマット ―― .mzt で出力できるあたりがとてもヨサゲ。
問題は、どういうアセンブラソースを書けば MZ上で動くのか、そこが分からないという…。
◎ モニタサブルーチンの一覧をメモ。 :
MZ-700 のマニュアルを発掘して眺めてみたり。
モニタ 1Z-009A に色々サブルーチンがあるので、そのあたりを呼べば Hello World ぐらいは楽に書けそうな気がする。後々作業する際のことを考えて、サブルーチンの一覧を試しにメモ。
_1Z-009Amonitor_note.pdf
_1Z-009Amonitor_note.csv
MZ-80K/700 は、テープからロードすると 1200h以降にプログラムが格納されるらしいけど、終了する時はどんな儀式を行わないといかんのか、そこが分からない。RET を呼ぶだけでいいのだろうか。
余談。マニュアルを眺めていたら、S-BASIC や Hu-BASIC がロードされた直後は、VRAM がフツーのRAMに切り替わると知った。フリーエリアは増えるけど、その代わり S-BASIC や Hu-BASIC で、いきなり VRAM に値を書き込んで何かを表示しようとしても、メモリ上の何かが破壊されるだけで画面表示はされない、ということかな…。これが MZ-80K用のプログラムなら、VRAM を RAM に切り替えたりはしないから、いきなり VRAM に書き込むこともできるのだろう。その代わり、フリーエリアは少なくなるはず。
モニタ 1Z-009A に色々サブルーチンがあるので、そのあたりを呼べば Hello World ぐらいは楽に書けそうな気がする。後々作業する際のことを考えて、サブルーチンの一覧を試しにメモ。
_1Z-009Amonitor_note.pdf
_1Z-009Amonitor_note.csv
MZ-80K/700 は、テープからロードすると 1200h以降にプログラムが格納されるらしいけど、終了する時はどんな儀式を行わないといかんのか、そこが分からない。RET を呼ぶだけでいいのだろうか。
余談。マニュアルを眺めていたら、S-BASIC や Hu-BASIC がロードされた直後は、VRAM がフツーのRAMに切り替わると知った。フリーエリアは増えるけど、その代わり S-BASIC や Hu-BASIC で、いきなり VRAM に値を書き込んで何かを表示しようとしても、メモリ上の何かが破壊されるだけで画面表示はされない、ということかな…。これが MZ-80K用のプログラムなら、VRAM を RAM に切り替えたりはしないから、いきなり VRAM に書き込むこともできるのだろう。その代わり、フリーエリアは少なくなるはず。
[ ツッコむ ]
#2 [pc] PC-6001のエミュレータを試用
Z80関係のサイトを眺めていたら、PC-6001の互換BASICがあると知り、興味が湧いたのでエミュレータを試用してみたり。
今回試したのは以下。
_PC-6001用互換BASIC
_PC-6001VX - ダウンロードのページ: 808 Midway
_Burnout.-Develop- PC6001VW3
_Burnout.-Develop- PC6001VW4
_ぱぴこんのこころ - PC6001V
PC-6001VX、PC-6001VW3/4 は互換BASICでも動いてくれた。ただ、PC6001V は CRC が違うと言われて動かなかった。おそらく実機のROMを入手しないと動かない作りになっているのだろうな…。
さておき、懐かしい緑色の画面が表示されて、なんだか感動。
もっとも、自分がナイコン族をやってた頃に触っていたPCなので、BASICの仕様等をさっぱり把握してなくて。仕様が分からないから、何かしらを打ち込んで遊ぶこともできず。当時はベーマガのリストを意味も分からずに打ち込んでいただけだから…。
今回試したのは以下。
_PC-6001用互換BASIC
_PC-6001VX - ダウンロードのページ: 808 Midway
_Burnout.-Develop- PC6001VW3
_Burnout.-Develop- PC6001VW4
_ぱぴこんのこころ - PC6001V
PC-6001VX、PC-6001VW3/4 は互換BASICでも動いてくれた。ただ、PC6001V は CRC が違うと言われて動かなかった。おそらく実機のROMを入手しないと動かない作りになっているのだろうな…。
さておき、懐かしい緑色の画面が表示されて、なんだか感動。
もっとも、自分がナイコン族をやってた頃に触っていたPCなので、BASICの仕様等をさっぱり把握してなくて。仕様が分からないから、何かしらを打ち込んで遊ぶこともできず。当時はベーマガのリストを意味も分からずに打ち込んでいただけだから…。
[ ツッコむ ]
2019/04/26(金) [n年前の日記]
#1 [pc] Z80のアセンブラでHello Worldをしてみたり
Z80のアセンブラで何かしらを書いて、アセンブルしてバイナリを作って、MZ-700 のエミュレータ上で動かす、といった作業が実際にできるのかどうか気になったので、少し調べて試してみたり。環境は Windows10 x64。
◎ 必要なもの。 :
必要になるのは、
MZ-700 のエミュレータは、以前は MZ700WIN が入手できたけど、もはや入手が難しいので、EmuZ-700 を利用させてもらうことにした。
_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ
_Common Source Code Project
binary.zip をダウンロードして解凍すると、100種類以上のレトロPCエミュレータが入ってるので…。mz700.txt と binary/mz700.exe を、任意のフォルダにコピーする。この mz700.exe が、EmuZ-700。
mz700.exe を実行するためには、IPL.ROM と FONT.ROM が必要になる。
IPL.ROM は、MZ-700/80K/C/1200用互換モニタ MZ-NEW MONITOR を利用させてもらう。
_MZ-NEW MONITOR 使用許諾条件
_MZ-NEW MONITOR 使用許諾条件 (Internet Archive)
(※ 2019/04/28追記。上記リンク先が404になったので、Internet Archive のページを追加。)
mz_newmon.zip をDLして解凍すると、ROMSフォルダの中に、NEWMON.ROM、NEWMON7.ROM があるので…。MZ-700版の NEWMON7.ROM を mz700.exe と同じフォルダにコピーして、IPL.ROM にリネームする。
FONT.ROM は、以下のページを参考にして作成。
_MZ-700WIN フォントデータの作成
MKFNT.zip をDLして解凍。DOS窓を開いて、解凍したフォルダをカレントディレクトリにして、以下を実行。
この状態で、mz700.exe を実行すると、EmuZ-700 が起動する。
これでエミュレータは動いた。ありがたや。
次に、Windows上で利用できる Z80アセンブラを入手する。今回は、Z80AS を利用させてもらう。
_We Love MZ-700
上記リンク先ページの真ん中あたりで Z80AS が公開されているので、z80as_012.zip をDL。解凍すると、中に z80as.exe というファイルがあるので、パスが通った場所にコピーする。
これで環境は整った。
- MZ-700 エミュレータ
- MZ-700 モニタROM (IPL.ROM)
- MZ-700 フォントROM (FONT.ROM)
- Z80用のアセンブラ(Windows上で動くもの)
MZ-700 のエミュレータは、以前は MZ700WIN が入手できたけど、もはや入手が難しいので、EmuZ-700 を利用させてもらうことにした。
_EmuZ-700 / EmuZ-800 / EmuZ-1500 謎WIPページ
_Common Source Code Project
binary.zip をダウンロードして解凍すると、100種類以上のレトロPCエミュレータが入ってるので…。mz700.txt と binary/mz700.exe を、任意のフォルダにコピーする。この mz700.exe が、EmuZ-700。
mz700.exe を実行するためには、IPL.ROM と FONT.ROM が必要になる。
IPL.ROM は、MZ-700/80K/C/1200用互換モニタ MZ-NEW MONITOR を利用させてもらう。
_MZ-NEW MONITOR 使用許諾条件 (Internet Archive)
(※ 2019/04/28追記。上記リンク先が404になったので、Internet Archive のページを追加。)
mz_newmon.zip をDLして解凍すると、ROMSフォルダの中に、NEWMON.ROM、NEWMON7.ROM があるので…。MZ-700版の NEWMON7.ROM を mz700.exe と同じフォルダにコピーして、IPL.ROM にリネームする。
FONT.ROM は、以下のページを参考にして作成。
_MZ-700WIN フォントデータの作成
MKFNT.zip をDLして解凍。DOS窓を開いて、解凍したフォルダをカレントディレクトリにして、以下を実行。
mkfnt mz700fonMZ700FON.DAT というファイルができるから、mz700.exe と同じフォルダにコピーして、FONT.ROM にリネームする。
この状態で、mz700.exe を実行すると、EmuZ-700 が起動する。
これでエミュレータは動いた。ありがたや。
次に、Windows上で利用できる Z80アセンブラを入手する。今回は、Z80AS を利用させてもらう。
_We Love MZ-700
上記リンク先ページの真ん中あたりで Z80AS が公開されているので、z80as_012.zip をDL。解凍すると、中に z80as.exe というファイルがあるので、パスが通った場所にコピーする。
これで環境は整った。
◎ Hello wroldのソースを書く。 :
まずはとにかく Hello world だろう…。ということで、画面に「HELLO WORLD」と表示するだけのソースを書いてみる。
適当なエディタで、Z80向けのアセンブラソースを書く。アセンブラソースの拡張子は .asm にしておけばいいのだろうか。
今回は、以下のソースを参考に書いてみたり。ありがたや。
_marukun700/tinyimas700_v1_src: TinyIMAS for MZ-700 source
_tinyimas700_v1_src/tinyimas.asm at master - marukun700/tinyimas700_v1_src
_helloasm.asm
簡単に説明しておくと…。
その他の仕様は、Z80AS のドキュメントを参照のこと。
_Z80 Abusolute Assembler 'Z80AS'
Z80のニーモニック(命令?)については、以下が参考になりそう。
_Z-80の命令の簡単な解説(1)
_Z-80の命令の簡単な解説(2)
_8ビットCPU Z80 (命令セット)
_Z80 Code Refference -
_Z80 MNemonic Refference -
さて。MZ-700 のモニタROMには、改行をしてくれるサブルーチンや、メッセージを表示してくれるサブルーチンが用意されてるので、今回はソレを使わせてもらう。前述のソース内では、CALL LETNL や CALL MSG が、それらのサブルーチンを呼び出している行。
モニタROMにどんなサブルーチンが用意されているかは、以下を眺めればおおよそ分かる。たぶん。
_1Z-009Amonitor_note.pdf
_SP-1002 - Enri's Home PAGE (mz-80K)
1Z-009A が、MZ-700のモニタの型番で、SP-1002 が、MZ-80K のモニタの型番。MZ-700 のモニタは、MZ-80K のモニタと中身が完全に同じではないけれど、サブルーチンを呼び出す際のアドレスが合わせてあったりするので、ある程度は互換性がある。
プログラム側のメインルーチンで RET が呼ばれると、モニタの処理に戻ってくる模様。
適当なエディタで、Z80向けのアセンブラソースを書く。アセンブラソースの拡張子は .asm にしておけばいいのだろうか。
今回は、以下のソースを参考に書いてみたり。ありがたや。
_marukun700/tinyimas700_v1_src: TinyIMAS for MZ-700 source
_tinyimas700_v1_src/tinyimas.asm at master - marukun700/tinyimas700_v1_src
_helloasm.asm
; Display "HELLO WORLD" in MZ-700 ; define monitor subroutine LETNL EQU 0006h MSG EQU 0015h ORG 1200h ; start CALL LETNL ; newline LD DE,MSGDT0 CALL MSG ; display "HELLO WORLD" CALL LETNL LD DE,MSGDT1 ; display "IN MZ-700" CALL MSG RET MSGDT0: DB "- HELLO WORLD -" DB 0Dh MSGDT1: DB "- IN MZ-700 -" DB 0Dh END
簡単に説明しておくと…。
- ORG 1200h で、「このプログラムは 1200h番地から始まるプログラムだよ」と指定する。
- MZ-80K や MZ-700 は、1200h番地以降にユーザの作ったプログラムを読み込むので、ほとんどの場合、ORG 1200h を最初に書くことになるはず。
- xxx EQU yyyyh で、xxx というシンボルに、yyyyh という数値を定義する。
- ソースの最後には、END と書いておく。
- xxxx: はラベル。
- DB "HOGE" で、HOGE をASCIIコードにしたバイナリ列を記述できる。
- DB 01h,02h,03h と書けば、01h,02h,03h というバイナリを記述できる。
- 16進数を記述する時は、0003h とか 0D000h のように、最後に h をつける。
その他の仕様は、Z80AS のドキュメントを参照のこと。
_Z80 Abusolute Assembler 'Z80AS'
Z80のニーモニック(命令?)については、以下が参考になりそう。
_Z-80の命令の簡単な解説(1)
_Z-80の命令の簡単な解説(2)
_8ビットCPU Z80 (命令セット)
_Z80 Code Refference -
_Z80 MNemonic Refference -
さて。MZ-700 のモニタROMには、改行をしてくれるサブルーチンや、メッセージを表示してくれるサブルーチンが用意されてるので、今回はソレを使わせてもらう。前述のソース内では、CALL LETNL や CALL MSG が、それらのサブルーチンを呼び出している行。
モニタROMにどんなサブルーチンが用意されているかは、以下を眺めればおおよそ分かる。たぶん。
_1Z-009Amonitor_note.pdf
_SP-1002 - Enri's Home PAGE (mz-80K)
1Z-009A が、MZ-700のモニタの型番で、SP-1002 が、MZ-80K のモニタの型番。MZ-700 のモニタは、MZ-80K のモニタと中身が完全に同じではないけれど、サブルーチンを呼び出す際のアドレスが合わせてあったりするので、ある程度は互換性がある。
プログラム側のメインルーチンで RET が呼ばれると、モニタの処理に戻ってくる模様。
◎ アセンブルする。 :
ソースを書いたのでアセンブルする。DOS窓上で以下を打つ。
Z80の各命令が、Z80用のバイナリに変換されて並んでいることが分かる。アセンブルはできているっぽい。
このままだと、MZ-700のエミュレータでは読み込めないので、.mzt 形式(カセットテープ相当のファイル)として出力させる。
Z80AS は、-m オプションをつけることで、アセンブル結果を .mzt 形式にして出力することができる。
MZ-80系の場合、テープに保存する際のファイル名は英数大文字にしておいたほうが良さそう。元々は小文字が存在しないPCだったようだし…。
z80as helloasm.asmhelloasm.bin という、Z80用のバイナリファイルができた。バイナリエディタの類で中身を覗いてみると…。
Z80の各命令が、Z80用のバイナリに変換されて並んでいることが分かる。アセンブルはできているっぽい。
このままだと、MZ-700のエミュレータでは読み込めないので、.mzt 形式(カセットテープ相当のファイル)として出力させる。
z80as -mHELLOASM helloasm.asmhelloasm.mzt が出力された。
Z80AS は、-m オプションをつけることで、アセンブル結果を .mzt 形式にして出力することができる。
- -mHOGE とつければ、テープに保存されたファイルのファイル名は「HOGE」になるし、
- -mFUGA とつければ、テープに保存されたファイルのファイル名は「FUGA」になる。
MZ-80系の場合、テープに保存する際のファイル名は英数大文字にしておいたほうが良さそう。元々は小文字が存在しないPCだったようだし…。
◎ エミュレータ上で実行。 :
MZ-700のエミュレータ、EmuZ-700 上で、先ほどアセンブルして出来上がったファイルを読み込んで実行してみる。
EmuZ-700 を起動すると、
メニューの、CMT → Play を選択。ファイル選択ダイアログが開くので、先ほど生成した helloasm.mzt を選択してやる。実機であれば、データレコーダにカセットテープを入れて、データレコーダのPlayボタンを押した状態に相当する。
EmuZ-700 画面下部のステータスバーに、テープの読み込み状況が表示される。ある程度進むと、画面上に、「LO. HELLOASM」と表示される。「テープに入っているファイル名(HELLOASM)は認識したよ」「このまま読み込みを続けるよ」ということ。
ロードが終わると、読み込んだプログラムが自動で実行される。
「HELLO WORLD」が表示された。動いたっぽい。
ちなみに、再度実行したい時は、
EmuZ-700 を起動すると、
MZ-700 *と表示されて入力待ちになる。L[Enter] と打ち込んで、「テープからロードせよ」と指示する。(L は LOAD の L。)
メニューの、CMT → Play を選択。ファイル選択ダイアログが開くので、先ほど生成した helloasm.mzt を選択してやる。実機であれば、データレコーダにカセットテープを入れて、データレコーダのPlayボタンを押した状態に相当する。
EmuZ-700 画面下部のステータスバーに、テープの読み込み状況が表示される。ある程度進むと、画面上に、「LO. HELLOASM」と表示される。「テープに入っているファイル名(HELLOASM)は認識したよ」「このまま読み込みを続けるよ」ということ。
ロードが終わると、読み込んだプログラムが自動で実行される。
「HELLO WORLD」が表示された。動いたっぽい。
ちなみに、再度実行したい時は、
GOTO$1200と打ち込む。1200h番地にジャンプするらしい。
◎ 別のプログラムを書いてみる。 :
調子に乗って別のプログラムを書いてみる。画面全体を何度も書き換える処理を書いてみよう…。
_fillscrn.asm
_tinyimas700_v1_src/tinyimas.asm を参考にさせてもらいました。ありがたや。
実行結果は以下。
Qキーか SHIFT+BREAKキーで処理を抜ける。
一応簡単な説明を。MZ-700 は、0D000h からVRAMが、0D800hからアトリビュートVRAMが割り当てられているので、そのあたりに何かを書き込めば、文字を表示したり、色を変更したり等ができる。
_Programming MZ-700: Display
また、MZ-700は、1文字 8x8ドット、40x25文字のキャラクタ画面しか持ってないので、ドット単位のスクロールなんてできないのだけど。文字の中に1ドットずつずれてる横線があるので、今回はソレを使って画面を埋め尽くすことで、ドット単位のスクロールをしているような気分だけをほのかに味わっているという、なんだかちょっと悲しさが漂うプログラムだったりもする。
ということで、Z80のアセンブラでソースを書いて、アセンブルして、MZ-700のエミュレータ上で動かせることが確認できた。とメモ。
_fillscrn.asm
; Fill screen in MZ-700 ; ; EXIT : Q key or SHIFT + BREAK GETKY EQU 001Bh BRKEY EQU 001Eh ?BLNK EQU 0DA6h VRAM EQU 0D000h VRAMA EQU 0D800h ORG 1200h ; start ; attribute VRAM fill LD A,70h LD HL,VRAMA LD BC,40*25 CALL MEMFIL LD IX,CHRLIST LD A,(IX) LOOP0: CALL ?BLNK ; wait VBLANK LD HL,VRAM LD BC,40*25 CALL MEMFIL ; fill screen CALL GETKY CP 81 ; check ASCII 'Q' Key JP Z,SCRCLR CALL BRKEY ; check SHIFT + BREAK JP Z,SCRCLR INC IX LD A,(IX) ; get new display code CP 0 JR NZ,LOOP0 LD IX,CHRLIST LD A,(IX) JR LOOP0 SCRCLR: LD A,0 LD HL,VRAM LD BC,40*25 CALL MEMFIL ; screen clear RET MEMFIL: LD D,H LD E,L INC DE DEC BC LD (HL),A LDIR RET CHRLIST: DB 70h,30h,74h,34h,78h,38h,7Ch,3Ch DB 00 END
z80as -mFILLSCRN fillscrn.asm
_tinyimas700_v1_src/tinyimas.asm を参考にさせてもらいました。ありがたや。
実行結果は以下。
Qキーか SHIFT+BREAKキーで処理を抜ける。
一応簡単な説明を。MZ-700 は、0D000h からVRAMが、0D800hからアトリビュートVRAMが割り当てられているので、そのあたりに何かを書き込めば、文字を表示したり、色を変更したり等ができる。
_Programming MZ-700: Display
また、MZ-700は、1文字 8x8ドット、40x25文字のキャラクタ画面しか持ってないので、ドット単位のスクロールなんてできないのだけど。文字の中に1ドットずつずれてる横線があるので、今回はソレを使って画面を埋め尽くすことで、ドット単位のスクロールをしているような気分だけをほのかに味わっているという、なんだかちょっと悲しさが漂うプログラムだったりもする。
ということで、Z80のアセンブラでソースを書いて、アセンブルして、MZ-700のエミュレータ上で動かせることが確認できた。とメモ。
◎ EmuZ-700について少しメモ。 :
EmuZ-700 は、実機動作の再現度を高めたエミュレータなので、実機と同程度の速度でテープ(.mzt)からプログラムを読み込むため、プログラムのロードに数分かかったりするのだけれど。
メニューの、Control → Full Speed にチェックを入れると、動作速度が上がってテープの読み込み時間も短くなることに今頃気づいた。とメモ。もちろん、ロード後は、件の項目のチェックを外さないとアレだけど。
メニューの、Control → Full Speed にチェックを入れると、動作速度が上がってテープの読み込み時間も短くなることに今頃気づいた。とメモ。もちろん、ロード後は、件の項目のチェックを外さないとアレだけど。
[ ツッコむ ]
#2 [pc][windows] Z80のアセンブラソースを書くエディタを物色
Z80用のアセンブラソースを書けそうなエディタを探したり。環境は Windows10 x64。
◎ Vsiaul Studio Code + 拡張 :
Microsoft が公開している Visual Studio Code に、Z80アセンブラ用の拡張を追加すると、イイ感じになる…と以下の記事で知った。
_Visual Studio CodeでZ80の開発環境を作るまで - Qiita
_Visual Studio Code - Code Editing. Redefined
_Z80 Assembly - Visual Studio Marketplace
試してみたところ、たしかにイイ感じ。コレでいいんじゃないかな…。
_Visual Studio CodeでZ80の開発環境を作るまで - Qiita
_Visual Studio Code - Code Editing. Redefined
_Z80 Assembly - Visual Studio Marketplace
試してみたところ、たしかにイイ感じ。コレでいいんじゃないかな…。
◎ xyzzy + asm-mode :
自分は普段、xyzzy というエディタを使っているので、xyzzy でも書けないものかなと。
ググってみたところ、asm-mode を公開されている方が居ると知り。ありがたや。基本的には RISC CPU に合わせて書かれたモードらしい。
_ムトー研究所【asm-mode for xyzzy】
更に、以下のページで、asm-mode のキーワードファイルを増やしたり切り替えたりする lisp があることを知り、利用させてもらったり。
_私のsiteinit.l #xyzzy
Asm-Z80 というファイルも必要になるっぽいけど…。とりあえず今回は自分で作ってみたり。まだ足りてないキーワードがありそうだけど。
_Asm-Z80
それと、Z80のアセンブラソースは、コメント文が「;」で始まるので、以下の設定も ~/.xyzzy に追加。これで「;」以降はコメントとして表示されるようになった。
ググってみたところ、asm-mode を公開されている方が居ると知り。ありがたや。基本的には RISC CPU に合わせて書かれたモードらしい。
_ムトー研究所【asm-mode for xyzzy】
- asm.0.02.lzh と asm-keywords.lzh をDLして解凍。
- 中に入ってる asm-mode.l を xyzzyインストールフォルダ/site-lisp/ にコピー。
- Asm、及び Asm-* ファイルを、xyzzyインストールフォルダ/etc/ にコピー。
- ~/.xyzzy に設定を追加。
更に、以下のページで、asm-mode のキーワードファイルを増やしたり切り替えたりする lisp があることを知り、利用させてもらったり。
_私のsiteinit.l #xyzzy
Asm-Z80 というファイルも必要になるっぽいけど…。とりあえず今回は自分で作ってみたり。まだ足りてないキーワードがありそうだけど。
_Asm-Z80
それと、Z80のアセンブラソースは、コメント文が「;」で始まるので、以下の設定も ~/.xyzzy に追加。これで「;」以降はコメントとして表示されるようになった。
(set-syntax-start-comment *asm-mode-syntax-table* #\;)
[ ツッコむ ]
2019/04/27(土) [n年前の日記]
#1 [python] Pythonでバイナリファイルを扱う方法を調べてたり
Python でバイナリファイルを扱う方法について調べていたり。環境は Windows10 x64 + Python 2.7.15 32bit。
ファイルの読み込みは、以下でいいらしい。
バイナリの中から、C言語の構造体っぽい形で値を取得するなら、struct というモジュールが使えるようで。
_7.3. struct --- 文字列データをパックされたバイナリデータとして解釈する ・ Python 2.7.16 ドキュメント
こういう感じだろうか。
実行結果。
unsigned char や unsigned short を取り出すフォーマット文字列は分かったけど、文字列を取り出す指定がちょっとよく分からず。"s"を指定すればいいのだろうか…。
こんな感じかな。
実行結果。
こんな感じでいいのだろう。たぶん。
ファイルの読み込みは、以下でいいらしい。
f = open(infile, "rb") buf = f.read() f.close()バイナリが文字列として buf に入るようだなと…。
バイナリの中から、C言語の構造体っぽい形で値を取得するなら、struct というモジュールが使えるようで。
_7.3. struct --- 文字列データをパックされたバイナリデータとして解釈する ・ Python 2.7.16 ドキュメント
こういう感じだろうか。
import struct buf = struct.pack("<BHL", 1, 2, 3) print(repr(buf)) lst = struct.unpack("<BHL", buf) for i, v in enumerate(lst): print("%d : 0x%x" % (i, v))
実行結果。
> python 01_struct.py '\x01\x02\x00\x03\x00\x00\x00' 0 : 0x1 1 : 0x2 2 : 0x3
- struct.pack(フォーマット文字列, 値1, 値2, 値3, ...) で、値をバイナリに変換できる。
- struct.unpack(フォーマット文字列, バイナリ) で、バイナリを値に変換できる。
unsigned char や unsigned short を取り出すフォーマット文字列は分かったけど、文字列を取り出す指定がちょっとよく分からず。"s"を指定すればいいのだろうか…。
こんな感じかな。
import struct buf = struct.pack('<B17s', 2, 'FILENAME') print(repr(buf)) v, s = struct.unpack("<B17s", buf) print(repr(v)) print(repr(s))
実行結果。
>python 02_struct_string.py '\x02FILENAME\x00\x00\x00\x00\x00\x00\x00\x00\x00' 2 'FILENAME\x00\x00\x00\x00\x00\x00\x00\x00\x00'
こんな感じでいいのだろう。たぶん。
[ ツッコむ ]
2019/04/28(日) [n年前の日記]
#1 [nitijyou] 弟が帰省
道路状況はいつもと似たような感じだったらしい。反対車線は連休だから混んでたそうだけど。
親父さん用の新PCその他をたくさん持ってきてくれた。ありがたや。
親父さん用の新PCその他をたくさん持ってきてくれた。ありがたや。
[ ツッコむ ]
2019/04/29(月) [n年前の日記]
#1 [pc] 親父さん用のPCを新調
弟が持ってきてくれたアレコレで、親父さん用PCを新調。
スペック等、忘れてしまいそうなので一応メモ。
_RACING B350GTN | BIOSTAR | 株式会社aiuto
_W4U2400CM-4G:Crucial DDR4-2400 288pin DIMM 4GB 2枚組 | CFD販売
_価格.com - サイズ Betty 価格比較
_手頃なMini-ITXケース発見 サイズ「Betty」検証 - エルミタージュ秋葉原
_株式会社サイズ | Betty (Internet Archive )
_SilverStone Technology Co., Ltd.製品紹介:ST30SF
_AMC-HD10V20 | Ainex
サイズ Betty は、背面に 6cm排気ファンが2個つけられる。前面に 8cm吸気ファン x 1 がついているし、比較的消費電力が少ないCPUなので、 今回は背面のファンはつけてない状態。
M/Bにブザーはつけてないけれど、M/Bの箱に、Betty のパーツと一緒にブザーも入っているので、必要なら追加すること。とメモ。忘れそうだな…コレ…。
電源は、負荷が少ないとファンが回らない仕様なので注意。ファンの駆動音がしないから動いていない、などと判断しないように>自分。V2.0 は改良(?)されて、必ずファンが回るようになっているらしい。
M/B に DispalyPort は無いので、HDMI でディスプレイと接続した。
今回使用した純正CPUファンは高さがあるので、Betty の5インチベイは、奥がCPUファンで塞がってしまって利用できない。5インチベイも使いたいなら、薄型CPUファンも貰ったのでソレと交換すること。ただ、そのCPUファンは音が煩い、との弟の評。
SSD は、親父さんが今まで使ってたPCのSSD、SanDisk Ultra II 240GB SDSSDHII-240G-J26 をそのまま利用した。マイクロソフトアカウントでログインしておけば、利用してるPCの台数が特定できるせいか、OSの再アクティベーション等しなくて済む模様。
今まで親父さんが使ってたPCのCPUは、AMD A8-3850 だったので、Ryzen 3 2200G とベンチマーク等を比較すると、おおよそ2倍程度の性能アップになっているらしい。
スペック等、忘れてしまいそうなので一応メモ。
- CPU : AMD Ryzen 3 2200G (4コア, 3.5GHz - 3.7GHz, Socket AM4, TDP 65W)
- M/B : BIOSTAR RACING B350GTN (Mini-ITX, B350チップセット, Socket AM4対応, Wi-Fi無)
- メモリ : 4GB x 2, CFD Crucial W4U2400CM-4G (DDR4-2400, 4GB x 2)
- ケース : サイズ Betty (Mini-iTX, 2.5・3.5・5インチベイ x 各1, 前面 USB2.0 x 2)
- 電源 : SilverStone ST30SF V1.0 (SFX電源, 300W)
- HDMIケーブル : AINEX AMC-HD10V20 (ハイスピードHDMI, 1m, 4K2K・3D対応)
_RACING B350GTN | BIOSTAR | 株式会社aiuto
_W4U2400CM-4G:Crucial DDR4-2400 288pin DIMM 4GB 2枚組 | CFD販売
_価格.com - サイズ Betty 価格比較
_手頃なMini-ITXケース発見 サイズ「Betty」検証 - エルミタージュ秋葉原
_株式会社サイズ | Betty (Internet Archive )
_SilverStone Technology Co., Ltd.製品紹介:ST30SF
_AMC-HD10V20 | Ainex
サイズ Betty は、背面に 6cm排気ファンが2個つけられる。前面に 8cm吸気ファン x 1 がついているし、比較的消費電力が少ないCPUなので、 今回は背面のファンはつけてない状態。
M/Bにブザーはつけてないけれど、M/Bの箱に、Betty のパーツと一緒にブザーも入っているので、必要なら追加すること。とメモ。忘れそうだな…コレ…。
電源は、負荷が少ないとファンが回らない仕様なので注意。ファンの駆動音がしないから動いていない、などと判断しないように>自分。V2.0 は改良(?)されて、必ずファンが回るようになっているらしい。
M/B に DispalyPort は無いので、HDMI でディスプレイと接続した。
今回使用した純正CPUファンは高さがあるので、Betty の5インチベイは、奥がCPUファンで塞がってしまって利用できない。5インチベイも使いたいなら、薄型CPUファンも貰ったのでソレと交換すること。ただ、そのCPUファンは音が煩い、との弟の評。
SSD は、親父さんが今まで使ってたPCのSSD、SanDisk Ultra II 240GB SDSSDHII-240G-J26 をそのまま利用した。マイクロソフトアカウントでログインしておけば、利用してるPCの台数が特定できるせいか、OSの再アクティベーション等しなくて済む模様。
今まで親父さんが使ってたPCのCPUは、AMD A8-3850 だったので、Ryzen 3 2200G とベンチマーク等を比較すると、おおよそ2倍程度の性能アップになっているらしい。
◎ 余談。 :
サイズのサイトが新しくなって、以前販売していた製品情報がごっそり無くなってしまったのは痛いなと…。
[ ツッコむ ]
2019/04/30(火) [n年前の日記]
#1 [python] 1バイトの半角カナは今時どういう扱いになっているのだろう
Python を使って、MZ-700時代のファイルを読み取ってヘッダ情報を表示するツールを書いているのだけど。1バイトのカタカナを読み取って表示するあたりで悩んだり。そもそも今時、1バイトで表せるカタカナのコードって、どういう扱いになっているのだろう…。
調べてみた感じでは、そもそも、MZ-80K のカタカナと、SJISの半角カタカナは、位置が合ってないようで…。
_Enri's Home PAGE (mz-80K)
_文字コード表 シフトJIS(Shift_JIS)
MZ-80K は 0x81 からカタカナが始まっているけれど、SJIS は 0xa1 からカタカナが始まっているように見える。これでは変換のしようがないよな…。
辞書だかハッシュだかで変換してしまおうか。でも、カタカナ表示にも対応すると、英語圏で使われた場合にカタカナが表示されなかったりもするのだろうし。カタカナは全部「?」表示にしてしまったほうがいいのだろうか。
調べてみた感じでは、そもそも、MZ-80K のカタカナと、SJISの半角カタカナは、位置が合ってないようで…。
_Enri's Home PAGE (mz-80K)
_文字コード表 シフトJIS(Shift_JIS)
MZ-80K は 0x81 からカタカナが始まっているけれど、SJIS は 0xa1 からカタカナが始まっているように見える。これでは変換のしようがないよな…。
辞書だかハッシュだかで変換してしまおうか。でも、カタカナ表示にも対応すると、英語圏で使われた場合にカタカナが表示されなかったりもするのだろうし。カタカナは全部「?」表示にしてしまったほうがいいのだろうか。
[ ツッコむ ]
#2 [windows] メインPCの Windows10 を 1803 から 1809 にアップグレードしてみた
メインPCの Windows10 x64 1803 を、1809 にアップグレードしてみたり。Windows 10 October 2018 Update、という呼び方でいいのだろうか。
MSのサイトを開いて、Windows10 更新アシスタントを入手して実行。2〜3時間かかって、アップグレードできた。
_Windows 10 のダウンロード
一応、ドキュメント等は中身が残ってる感じに見える。
空き容量が比較的ある、外付けHDD(SSD)に、Windows10Upgrade というフォルダが作成されて、中に以下のようなファイルが入ってた。
MSのサイトを開いて、Windows10 更新アシスタントを入手して実行。2〜3時間かかって、アップグレードできた。
_Windows 10 のダウンロード
一応、ドキュメント等は中身が残ってる感じに見える。
空き容量が比較的ある、外付けHDD(SSD)に、Windows10Upgrade というフォルダが作成されて、中に以下のようなファイルが入ってた。
17763.107.101029-1455.rs5_release_svc_refresh_CLIENTCONSUMER_RET_x64FRE_ja-jp.esd_また、Cドライブにも Windows10Upgrade フォルダが作成されて、中には110ファイルほど何かが入ってるようで。
[ ツッコむ ]
#3 [windows] 親父さん用PCの Windows10 がアップグレードできない
親父さん用PCの Windows10 を、1803 から 1809 にアップグレードしようとしたところ、以下のエラーメッセージが表示されて処理が進まず。
ググってみた感じでは、システム予約パーティションの空き容量が少ないと、こういうメッセージが表示されて止まってしまうらしい。
_“We couldn’t update system reserved partition” error installing Windows 10
上記のページでは、システム予約パーティションに、一時的にドライブ文字を割り当てて、中に入ってるフォントファイルを全部削除して無理矢理空き容量を増やす策が紹介されていた。そんなことして大丈夫なのかな…。
他にも、そもそもシステム予約パーティションのサイズを増やしてしまう方法もあるらしい。
本来 Windows10 は、システム予約パーティションとして 500MB ほど確保するらしいのだけど。Windows7時代は100MBだったので、Windows7からWindows10にアップグレードした環境では、システム予約パーティションのサイズが少ない場合もあるそうで。
また、HDD から SSD に換装した際に、関連ツールがシステム予約パーティションのサイズを小さくしてしまう場合もあるようで。自分の環境も、HDD から SSD に変更した際、100MB から 54MB にサイズが縮小されていた。
_windows10更新プログラムが出来ない|容量不足のシステムで予約済みパーテンションを拡張した - 田舎に暮らすぞ計画
_「システムで予約済みのパーティションを更新できませんでした」と表示されて Windows 10 - マイクロソフト コミュニティ
上記事例によると、MiniTool Partition Wizard 無料版、もしくは、Easeus Patition Master 無料版を使って、システム予約パーティションのサイズを増やせた場合もあるらしい。
We couldn't update the system reserved partition.
ググってみた感じでは、システム予約パーティションの空き容量が少ないと、こういうメッセージが表示されて止まってしまうらしい。
_“We couldn’t update system reserved partition” error installing Windows 10
上記のページでは、システム予約パーティションに、一時的にドライブ文字を割り当てて、中に入ってるフォントファイルを全部削除して無理矢理空き容量を増やす策が紹介されていた。そんなことして大丈夫なのかな…。
他にも、そもそもシステム予約パーティションのサイズを増やしてしまう方法もあるらしい。
本来 Windows10 は、システム予約パーティションとして 500MB ほど確保するらしいのだけど。Windows7時代は100MBだったので、Windows7からWindows10にアップグレードした環境では、システム予約パーティションのサイズが少ない場合もあるそうで。
また、HDD から SSD に換装した際に、関連ツールがシステム予約パーティションのサイズを小さくしてしまう場合もあるようで。自分の環境も、HDD から SSD に変更した際、100MB から 54MB にサイズが縮小されていた。
_windows10更新プログラムが出来ない|容量不足のシステムで予約済みパーテンションを拡張した - 田舎に暮らすぞ計画
_「システムで予約済みのパーティションを更新できませんでした」と表示されて Windows 10 - マイクロソフト コミュニティ
上記事例によると、MiniTool Partition Wizard 無料版、もしくは、Easeus Patition Master 無料版を使って、システム予約パーティションのサイズを増やせた場合もあるらしい。
[ ツッコむ ]
#4 [zatta] 平成になった時とはノリが随分違うのだな
昭和から平成になったときは、何せ天皇が亡くなってるわけだから自粛ムードが凄かったわけだけど。今回、平成から令和への変更は、TV番組等が完全にお祭りムードで、これはこれでなんだかちょっと…。そのはしゃぎぶりに、若干怖さすら感じるなと…。でもまあ、今回のように、お祭りムードで退位・即位が行われるほうが全然いいだろう、とは思うのだけど。
[ ツッコむ ]
#5 [nitijyou] 弟が仙台に戻った
高速道路の渋滞具合をWebで確認しつつ、14:00ちょっと前ぐらいに出発。16:30頃に到着したと電話があったらしい。
[ ツッコむ ]
以上、30 日分です。
KM-BASIC 0.8.2 をDLして動作確認してみたところ、
文字列型変数とSGN()の挙動がたしかに改善されてることを確認できました。
対応していただきありがとうございます。感謝します。
ただ、REM文を使うと、LIST結果が崩れる症状を見つけてしまいました…。
一応報告させていただきます。
小出しに見つけてしまって、なんというか…申し訳ありません…。
小出しでも、気づいた段階で言っていただける方がありがたいです。
見てみます。