2023年03月09日

今更XM8を使ってみる

1.70をコンパイルすると二箇所ほどエラーが出てコンパイルできない。

ePC-8801MA/vm/fmgen/psg.cpp 137行目

static uint8 table3[4] = { 0, 1, -1, 0 }; を……
static uint8 table3[4] = { 0, 1, 255, 0 }; とかに、

ePC-8801MA/vm/pc8801/pc88.cpp 1380行目

~7, ~3, ~5, ~1, ~6, ~2, ~4, ~0 を……
0xf8, 0x0fc, 0xfa, 0xfe, 0xf9, 0xfd, 0xfb, 0xff とかに、

変更すればコンパイルできる。
できるがプランBとして、

Linux/makefile 31行目

CXXFLAGS = -DSDL -D_PC8801MA -c -O2 -Wall に……
CXXFLAGS = -DSDL -D_PC8801MA -c -O2 -Wall -Wno-error=narrowing

とオプション加えてエラーを無効化するほうが楽だと思われます。
最初からこれを書け、とか怒られそう。
多方面ではバッドノウハウだと言われて怒られそう。
おいらが作ったものじゃないから、ここらへんはご勘弁を。

ついでにAndroid版。
多分Android11辺りから、内蔵・外部ストレージのルートをアプリ(XM8)から見られないようで、DISK 1, DISK 2, CMT選択時に

../

が表示されないため、SDカード内のディスクイメージは使えない模様。
色々試したがXM8からSDカードは参照することはできませんでした。
posted by えとかみ at 22:09| Comment(0) | TrackBack(0) | PC-8801

2022年12月25日

ドット絵

メリークリスマス!
1.PCの電源が不調になった
2.体調を崩した
3.釣り糸にパンツぶら下げて便器に突っ込む夢を見た
素敵な3大クリスマスプレゼントでした。
つーか最後のなんだ、おいらは何を釣ろうとしていたのか、そして何が釣れたのか。

なんだかよくわからないので、うちわ向けに作ってたクソゲ用に作った素材の一部を上げてみる。
ドット絵はMSXの頃から作ってるけど、まさか2022年にもなってまで作ってるとは考えてもいませんでした。
こんなもん公開してもしょうがないんだけど、懐かしいものが感じられたら幸いです。

ドット絵は全てGIMPで作った32x28ドットのpng画像。
画像は拡大表示しています。

X68000

X68000、買いたくても買えなかった憎いあんちくしょう。
今になって思うと、最初から16MHzのXVIだったらなあ、と。

FM Towns

FM Towns、手持ちのHRもあるけどやっぱり初代のタワー型でしょ。
と、いうことで初期型を作成。

PC-9821M7D2

PC-9821M7D2、こいつだけ時代が飛んでる。
タワー型で統一したかったのと実機が手元にあるので、この機種で作成。
ドット数の都合、付属のスピーカーは入れられなかった。

TAKERU

ソフトベンダーTAKERUの2代目。

おまけ
きつねミク

きつねミク。
きつねミク、と言いたかっただけではないか。
そう言われると返す言葉がありません。

初音ミク

上のを作ってて、さすがにこれは世論が許さないだろう、ということで本物版も作ってみた。
posted by えとかみ at 17:01| Comment(0) | TrackBack(0) | モバイル

2020年04月29日

Fedora 32でOpenMSXをコンパイル

世界中で新型コロナが猛威を振るう中、Fedora 32が出たのでクリーンインストールする空気読めないおっさんの物語。

これ書いてる時点でのOpenMSXの最新バージョンは0.15.0。
OpenMSX 0.15.0をコンパイルするとPython 2インストールしろと怒られた。
Python 2サポート終了だもんな、うん。

$ sudo dnf install python2

で、インストール可能。
その後コンパイルすると、

/usr/bin/ld: derived/x86_64-linux-opt/obj/sound/YM2151.o: in function `openmsx::YM2151::initTables()':
YM2151.cc:(.text+0xa30): undefined reference to `__exp2f_finite'
/usr/bin/ld: YM2151.cc:(.text+0xbd7): undefined reference to `__logf_finite'
/usr/bin/ld: YM2151.cc:(.text+0xc39): undefined reference to `__logf_finite'
/usr/bin/ld: YM2151.cc:(.text+0xcad): undefined reference to `__logf_finite'
collect2: エラー: ld はステータス 1 で終了しました
make: *** [build/main.mk:555: derived/x86_64-linux-opt/bin/openmsx] エラー 1

とか言われて怒られた、そんなこと言われても。。。
仕方がないので、ソースを展開したディレクトリのsrc/sound内にあるYM2151.ccを適当にテキストエディタで開く。
最初の方にある、

#include

の下辺りにでも、

#include

の1行を追加して保存。
後は普通にコンパイルすれば通ります。
タグ:Linux fedora OpenMSX
posted by えとかみ at 15:58| Comment(0) | TrackBack(0) | パソコン

2019年12月23日

Raspberry Pi 4のケース

AmazonにあるGeekwormのアーマー金属ケースにあるカスタマーレビューに、

> この製品の紹介にある Raspberry Pi 4基板と 国内技適済 Paspberry Pi 4基板では、ICチップの配置が異なる。
> USBコントローラICと イーサネットコントローラICの 配置が入れ替わっており、アルミニウムケース内面のヒートシンクの出っ張り部と 各ICが 正確に接合しない。
> そのため ヒートシンクとしての効果が期待できない構造になっている。
(※Amazonカスタマーレビューからの引用)

と、いうのがあったので、同じところが製造しているであろうPimoroni版で確認してみた。


真ん中付近の出っ張りとUSBコントローラチップの位置があっていないことが分かる。

しかし分からないのは、この配置が入れ替わっている、という部分で、手元の技適版と海外の技適未対応品の画像と見比べてみても入れ替わっているように見えない。
というか、イーサーコネクタとUSBコネクタに対してちぐはぐにチップを入れ替えるメリットが感じられない。

ケースの出っ張りの大きさや付属テープの大きさからイーサー側のチップ用に見えるのだが、本来冷却したいのはあっちっちなUSBコントローラだと思うので……
このことから考えるに、このケースの設計自体に問題があるんじゃないか、というのが私的な結論。

うーん、買ってしまった以上はどうにもな感じで、こういう書き方はよろしくないのかもしれないが……
まあ、中華クオリティ、ということで納得するしかないのではなかろうか。
いや、ケースのコンセプトは間違ってないんだけど、ね。。。

半分くらいはUSBコントローラに接触するので、全く冷却効果が得られないわけでもないと思う。
この辺納得して買うのはあり、かもしれないけど、まあお勧めはしない。
posted by えとかみ at 11:38| Comment(0) | TrackBack(0) | Raspberry Pi

2019年12月09日

Raspbian Busterでxnp2をコンパイルしたらエラー出た件

Raspbian Busterでxnp2をコンパイルしようとしたら色々問題出たので書いてみる。
ていうか、こいついっつもxnp2コンパイルしてんな、とか思われそう。


*MIN MAXマクロがどうたらこうたらエラー

http://etokami.sblo.jp/article/183744301.html?1575887577

昔書いた記事参照、パッチもあるYO!


*configure中にACX_PTHREAD command not foundと出る

そのままコンパイルするとエラーで止まる。
原因さっぱり分からないが、対処法ならなんとかなる。
CFLAGSとCXXFLAGSに-pthreadを入れるか、LDFLAGS="-lpthread"で対処可能。


*SDL2.0だと音が出ない

公式発表だと2.0.2にバグがある、しかしインストールされているのは2.0.4。
2.0.2のバグは既に修正されているらしのだが。。。
Fedora 31でも試したがやはり音が出ない。
前に自分で作ったSDL Mixer2.0使ったゴミソフトは音が出てるので、xnp2側の問題。
対処できないかと思ったけれど、エラーすら吐かないのでお手上げ状態。
暫定的な対処法としてSDL1.2を強制する。

./configure --disable-sdl2

な感じでオプション入れるとSDL1.2を使うようになるので音が出る。


*Pulseaudio運用時音が出ない、音が遅れる、音が割れる、全体が処理落ちする

xnp2だけでなく色んなところに影響でる。
対処法は、Pulseaudioを使わないか、/etc/pulse/default.paを編集して、

load-module module-udev-detect

上記項目を探して、

load-module module-udev-detect tsched=0

と、変更して保存して再起動。


念の為、xnp2は必ず-O2オプションで最適化すること。
つけないと大幅にパフォーマンスが落ちる。


せっかくなので、コンパイル時間を計測してみた。
ちょっとしたベンチマーク代わり。
下記オプションを付与してコンパイル。
--enable-build-all --disable-sdl2 (※以下適当な最適化オプション)
全て-jオプションはなし。

Raspberry Pi 4 + Raspbian Buster
real:4m55.199s
user:3m53.159s
sys :0m57.241s

Core i5 750 + Fedora 31
real:1m49.604s
user:1m32.390s
sys :0m15.499s

Atom N270 + Ubuntu14.04
real:8m34.423s
user:7m40.824s
sys :0m45.724s

腐ってもCore i5というか、我がPCの圧勝ではないか。
後10年は戦える(戦うとまでは言ってない)。
そして、さすがにAtom N270に対して倍の速度を出している。
Cortex-A72はできる子だな!
-j2で温度がこの時期ですら70度に到達する点を見なければ、だけど。


■おまけ(※ここからはお暇な人だけどうぞ)

Raspberry Pi 4

うん、買っちゃったんだ、Raspberry Pi 4。
USB周りが修正されているOkDOのやつです。
輸入したい衝動にかられてたけど、ズルズル時間が経過して気がついたら日本でも発売されてしまった。


Transcend TS32GUSD300S


使用しているSDカードはこれ、トランセンドのTS32GUSD300Sというやつ。
問題なく使えています。
Raspberry Pi 4では現状Ubuntu MATEが厳しいようなので、暫定的にRaspbian Buster入れてます。


PIMORONI Heatsink Case


PIMORONIの金属ケース、Heliodr Gold。
しかし現状はむき身で使っているため、このケースはまだ使ってません。


Raspberry Pi 4


KSYのACアダプタ。
Raspberry Pi 4に使えそうなACアダプタの選択肢なんてない。
ぁゃιぃ中国製か怪しくない中国製のどちらか。
Raspberry Pi 4を買うなら必ずACアダプタも一緒に買うこと。
KSYなりRS公式なりで買えば怪しくないほうを買うことができるでしょう。

さて、以前のパーツがほとんど使いまわせないため買い直し。
この結果予算がオーバーしてしまった。
しかしRaspberry Pi 4はMicro HDMIなので普通のHDMIケーブルが使えない。
さてどうしよう。。。


Raspberry Pi 4


DAIS○でこんなの買った。
かつては携帯電話の変換ケーブルで左右逆に音が出る不具合品を堂々と販売していた百均ショップ。
しかし残念なことにこの変換アダプタは普通に使えている。
やるじゃん……いや、これが普通なのか。


当たり前が幸せ、だから良かった探しの旅に出ます、現実逃避と言うのかも知れません。
タグ:xnp2 PC-9801
posted by えとかみ at 20:22| Comment(0) | TrackBack(0) | Raspberry Pi

2019年11月01日

Linuxで遊ぶRemasteredでないBioshock

恐縮だが、そろそろXBOX360版のDLCを出してもらえないか。
VITA-CHAMBER縛りで難易度ハードのラスボス直前セーブデータ残してあるんですけど(´・ω・`)
そんなBioshockのPC版をSteamのハロウィンセールの時に買ってみた。

動作させるPCはいつもの産廃自作PC。
CPU: Core i5 750
MEM: DDR3-12800 4GBx2
GPU: Radeon HD 6770
OS : Fedora 31+Proton 4.2

Remasteredで試せよ、とか言うな、こんなゴミPCで動くと思うか。
ProtonDBを見る限りRemasteredも動くはず、しかしPCがこのザマでは試しようがない。
Protonは4.2を使用、4.11は現状鬼門でProtonDBでもあまりいい報告はない。
実際4.11ではCall of Duty: Modern Warfareが起動不能だった。

Bioshock
Linux上で動作しているBioshock

事前にソフトの起動オプションに、

PROTON_NO_D3D11=1 PROTON_NO_ESYNC=1 %command%

と、指定。
%command% -nointroと追加すると、起動時の諸々をすっ飛ばしてタイトル画面になります。

グラフィック設定はウィンドウモード、1024x768に変更した以外は初期状態のままである。
設定はHighが並ぶ重そうな状態なのだが、面白いことにGallium Nine不使用でも十分な性能が出ている。
ほとんどのところで60fps安定、落ちる時にはfpsは落ちるが30fpsを割ることは今のところ見受けられなかった。
Bioshockは意外と軽量なのかもしれない。
パフォーマンス的には非常に安定しているため、現状Gallium Nineは使用していない。
Gallium Nineも性能と引き換えのデメリットがあるので、使わないに越したことはない。

また日本語modも普通に動作する、上記のスクリーンショットは日本語modを入れた状態のもの。
横着してFlashMoviesディレクトリを上書きせずそのままコピーしたらファイル足らなくて起動しなくなったわな。
ちゃんと日本語mod内のFlashMoviesディレクトリをゲーム内の同ディレクトリに上書きしましょう。
しかし、有志翻訳のものと比べると、スパイク訳の「恐縮」は本当にうまい翻訳の仕方だったな、と。
サポートは超絶うんこだけどな。

しかし困ったこともあり、なにこれマウスが超ハイセンシ。
1センチくらいマウス動かしたら視界が1周する、まともに操作できないんだけど。
そこで設定ファイルいじってみる。
設定ファイルのありかは、

(Steamのインストール先)/steamapps/compatdata/7670/pfx/drive_c/users/steamuser/Application Data/Bioshock

上記ディレクトリの中にあるUser.ini。
とりあえず[Default]内のMouseX、MouseY末尾にある2500.0を500程度に落としてみたのだが、正直微妙。
しかもいまいち不安定。
もう少し頑張って色々設定変えてみようか。。。
posted by えとかみ at 22:23| Comment(0) | TrackBack(0) | Linux de ゲーム

Linuxで遊ぶMyst Masterpiece EditionとRiven The Sequel to Myst

(※2019年12月9日追記)
その後Myst Masterpiece Editionも買ってみた。
ほぼRivenと同じ結果なので、下記のRivenをMystに置き換えて参照。

しかしSteamのレビューだとWindowsで動かない、アニメーションが動作しない、とか色々書かれてるのがね。
Cryo InteractiveのAtlantis日本語版もだけど、Windowsで動作せずにLinuxで普通に動くってのも妙な話。。。

ちなみにAtlantisはパッチを当てると近年のWindowsでも動きます、しかし海外版に早変わり。


(※以下旧記事)

Steamのハロウィンセールの時に買ってみた。

Riven The Sequel to Myst
Linux上で動作しているRiven

ProtonDBにてGOLD判定なので、普通に動くと考えてはいたが。。。

起動させるとフルスクリーンで壮大に拡大した状態で起動する。
ALT+ENTERでウィンドウ表示できたりするが、Proton(恐らくWineも)下だとパネルの間に拡大表示されるだけでウィンドウ表示にならない。

そこでProton(というかWine)の仮想デスクトップを使って無理矢理ウィンドウ下してみる。

*Myst Masterpiece Editionの場合
$ WINEPREFIX=(Steamのインストールディレクトリ)/steamapps/compatdata/63660/pfx winecfg

*Riven The Sequel to Mystの場合
$ WINEPREFIX=(Steamのインストールディレクトリ)/steamapps/compatdata/63610/pfx winecfg

Rivenのwinecfgを出して画面タブをクリックし、

フルスクリーン ウィンドウでマウスを自動的に補足する → オン
ウィンドウ マネージャがウィンドウを装飾するのを許可する → オフ
ウィンドウ マネージャがウィンドウを制御するのを許可する → オフ
仮想デスクトップをエミュレートする → 800x600

こんな設定で起動すると、確かにウィンドウ表示されるのだが、今度はこのウィンドウの表示位置を左上から動かすと仮想デスクトップのマウスの位置がズレてしまいまともに操作できなかった。
また純粋に画面の左上にウィンドウがないとズレるため、MATEのように上部にパネルがあるとこれが邪魔になるおまけ付き。
なお、高さ24ピクセルのパネル直下にウィンドウがあれば、ギリギリクリアできることは確認済み。

ちなみにプランBとして、仮想デスクトップを大きく設定し起動後ALT+ENTERでウィンドウ化して、この中でウィンドウの位置を変える手段もある。
が、いまいち不便なのが欠点である。
この問題さえ見なければ、恐ろしく快適にプレイできる。
プレステ版は持っているが、比較にならないくらい快適にクリアできた。
タグ:Steam RIVEN Proton
posted by えとかみ at 21:46| Comment(0) | TrackBack(0) | Linux de ゲーム

2019年10月05日

QUASI88とディスクイメージ

PC-8801エミュレータで使われるD88ディスクイメージ用のツールを作っているときに気がついた。
QUASI88 0.6.4でトラックをWrite IDするとディスクイメージが破損する。
なんでだろう、と調べたら、どうもQUASI88は使用未使用に関わらず1トラック5,632バイト必ずあることを前提に動いているようで……
M88や他の抽出ツールなどで作られた一般的なD88イメージは、存在するデータ量だけが保存される仕様であることから起こるようである。

M88等で256バイトセクタ×16の1トラック4,096を作って、QUASI88で同じトラックを例として1,024バイトセクタ×5の計5,120バイトセクタでフォーマットすると後続のトラックをオーバーライトする。
このD88イメージをダンプしてみたら、ヘッダ内にあるトラックテーブルも一切変更されていない。
本来トラックの大きさに合わせて変動しないといけないのだが。。。

フォーマットしなければよい、という話かもしれないが、しかしそうもいかないのがみんな大好きμPD765A。
このFDC、最終的なセクタサイズはWrite ID(フォーマット)のときではなく、Write Data(データ書き込み)のときに決まってしまうという特徴がありまして。。。
IDを調整した256バイトセクタ×16を作り1024バイトセクタ×5でWrite Dataすると5,120バイトトラックになったりします。
レアケースではあるが、データ書き込みでもトラックサイズが変動します。

このため、QUASI88以外で作られたディスクイメージをQUASI88で使うと最悪ディスクイメージが破損します。
前述の自作ツールでもこの仕様に頭を抱えている状態です。

ちなみに自作ツールは、N88-DISK BASICフォーマットされたディスクイメージに直接データを入出力できる、現状CUI(CLI)で動作する完全Linux専用のいわゆる自分さえ使えればいい俺様ソフトです。
PC-8801エミュレータとLinux間のクロス開発を少しでも楽にするつもりで作ったもの。
概ね出来上がっていて動作テスト中、公開するかもだけど時期は未定。
こんなニッチ産業使いたい人もいないと思うけど、興味あるならコメントで書いてくれればα版を前倒しして公開します。
タグ:QUASI88
posted by えとかみ at 13:37| Comment(0) | TrackBack(0) | モバイル

2019年10月01日

今年の広島東洋カープ

(※2019年11月1日追記)
最後のほうで巨人からの人的補償とか書いたが……まさか誰もFA宣言しないなんて!
来年広島にアクシズでも降ってくるんじゃなかろうか。
いやはや、残留表明した各選手には感謝、としか。
特に早々と表明した日本で一番名前の密度が高い人とか。
そして菊池はメジャーで頑張れ、としか。


(※以下以前の書き込み)
全てはあの最終戦かな、と。
最終戦でCSまで日があるから全戦力を投入でき、逆に中日は試合も残っていて、ついでにズムスタ。
超短期決戦型の試合でこれだけ有利で勝てないほうがおかしい条件だけど負け。
死闘の末負ける、のならいいけど、いつもの投手の状態を見極められず点を入れられる相変わらずの進歩ゼロな監督の采配負け。
正直CS行けなくて正解、こんなので短期決戦の鬼神であるラミレス監督に勝てるわけない。
CS行っても勝てる可能性はゼロでベイスターズに虐殺される晒し者プレイになるだけだった。
これが緒方前監督の本当の実力で、4年前の再現という身の丈にあった終わり方だと思う。

しかし緒方だけならいつものことで終わるのだが、佐々岡まで同じクソ采配をやってるのはどういうことだ。
これはどう考えてもおかしい、そこで考えた。
この世代以降は優勝から遠ざかった日シリや(当時はまだないがCS)をろくに経験していない世代であることを考えると……どうも未経験故に短期決戦のやり方を根本的に知らないのではなかろうか。
だから短期決戦の場であってもワンパターンにリーグ戦と同じ戦い方をしてしまう。
サッカーの天皇杯みたいなのが野球にもあれば少しは違ったかもしれないが……
そう考えると、このカープという狭い野球しか知らないカープOBの誰が監督をやっても結果は変わらなさそう。
外から監督を呼ぶのが確実なのだが、約束手形と好き嫌いでしか選ばないあのオーナーではまともな人選を期待するのも無理。
なのだが、一人だけ、状況を打破できそうな人がいる、黒田だ。
理由は広島以外の野球を知っていて元オーナーも悪印象を持っていない、彼以上に適任な人物はいないだろう、本人がやりたがるかは別として。

さて、こうなった以上目下の関心は今年の巨人からの人的補償が誰になるか、なんだけど、しかも場合によっては2人も。
さすがに同じことはやらないとは思うけど、去年と同じ若手中心のプロテクトだと……小林辺りが危険域かねえ。
生え抜き中堅ベテランですらプロテクト枠から漏れる可能性があるってのも、豪傑で凄い話なんですけど。
posted by えとかみ at 06:19| Comment(0) | TrackBack(0) | 日記

2019年08月15日

Android StudioでGradle Project sync failedに苦しめられる

自分の使いたいアプリを自作しようとFedora 30にAndroid Studioを入れてみた。
入れてみたのだが、プロジェクトを新規に作るとGradle Project sync failedと出てしまう。
ググって出た方法を片っ端から試すも成果なし……と、いうのが数日間。
やっとこさ原因と解決策が見つかったので書いておく。
書いてはおくが、かなりのニッチな原因なのでほとんどの人には役に立たないと思われる。


*原因
プロジェクトをシンボリックリンク以下に作った

*解決策
シンボリックリンクは使わずプロジェクトを絶対パスで指定して作成


いやはや、原因はこんだけだった(´・ω・`)
既にプロジェクトが作られている場合、

.idea/modules.xmlを編集してfileurlとfilepathを絶対パスで指定
「.idea/modules.xmlを消して同期」を成功するまで繰り返す

でも対処可能でした。


なお、kotlinなんて知らない、過去にJavaは1ミクロンくらいしか囓ったことがない、
こんな感じなので1から学習、アプリができるかは未知数な模様。
C言語で作っていいならなんとかなるかも。。。
posted by えとかみ at 16:27| Comment(0) | TrackBack(0) | モバイル