MSXスレッド Part 62
レス数が950を超えています。1000を超えると書き込みができなくなります。
ともかく何も入れない状態で、関数もprintfも使えないけど、ifとかforとかは使えるんで
構造化してコメントいっぱい入れて見通しを良くするメリットはあるかな、とは思ってた。
もっとも、そんな大規模なプログラムは作ってなかったんで、アセンブラに戻ったけどね。 8ビットに何を求めるかだな
C使ってなにを作るの? って思っちゃう Cはbit数というよりはレジスタ数の問題だな
8bitでもレジスタが30個以上有ったらCの方が良いだろうね
16個位が分岐点な気がする C言語やってれば、それ以降の言語は同じようなもんだからな
普通の人なら対応出来るはず 無駄なインクルード削って減らせるのはコンパイル時間だけだな
そんな当たり前のこと理解してない奴が語るスレッドって。。。 >>853
そんなんx86もアウトになるしユーザスタックがあれば十分では?
レジスタ多いと最適化は進むけどそういう時代ではないし まぁネタで適当なこと言ってるスレよね。なにが楽しいのかしらないけど。本当に天然で言ってるのなら誤解なので謝るけど ここはマウント取った気分に浸って気持ちよくなるスレだよ
リアル世界じゃ難しいじゃんw でっかいコアダンプ吐いて無様におっこちるCよりも、
リアルタイムでエラーを吐いて止めてくれるBASICの方が優しいので好きよ 昔の MSX-C でのセルフ開発での限界は
今の z88dk でクロス開発すれば解決できる。
stdio.h さえ include せず、printf を BIOS の
CHPUT で書けばコードサイズを小さくできる
とは思うけどね。
MSX の場合ライブラリは BIOS 呼ぶだけに留めれば、
C でもアセンブラ相当に小さくできるかもね。
インラインアセンブラだらけでも、移植性や
見通しの良さなどメリットは残ると思う。
MSX と Windows の両方で動くアプリケーションは
ライブラリでハードウェア依存部を分離すれば
できるよね。
当たり前の事だけど、MSX は BASIC とアセンブラ
のみの方が多いのでこういう議論が盛り上がら
ないんだよね。
うさぎさん、ちくわさんも2023年に z88dk で C
で作られてるゲームだよね。フルアセンブラ
じゃないよね?近代的で良いと思いませんか? >>856
アウトってなんだ?
x86はレジスタが足りずにスタックが使われる事は多くなる
だからアセンブリ言語での最適化は有効だろう
ちなみにx86は浮動小数点数は別のレジスタなので、言うほど少なくはない
それにスタックエンジンといってスタック操作を最適化する機能が実装されている
で、アウトってなんだ? >>862
Hallo World で実機コンパイルに一分かかるので
実機開発は現実的ではないでしょうね。ただし
現代的なエミュレータの速度で、コンパイル速度
は劇的に改善されてきている。それでも ANSI 非対応
だったりメモリ不足でコンパイルできる関数の大きさ
やファイルサイズの限界にあたりやすい。仕方が
ないからクロス開発の z88dk が注目されている。
とはいえ、MSX-C は公式ですし、ライブラリも
充実しているしで参考資料としては現在でも
価値はあるでしょう。 Hello World かな。main() のなかに printf 一行のやつ 実行速度は、もちろんフルアセンブラには劣るかもだが
BASIC よりは早い。ただ、フルアセンブラより
生産性や移植性は流石に高いよね。C を使う以上速度の
最適化をするならインラインアセンブラを使うとは思うよ ちなみに一生懸命最適化して速度的にはレジスタの少なさをカバー出来ても、消費電力は増えてしまう
それで、今度APXという拡張で、x86-64で16個に増えたレジスタを更に16個増やして、計32個になる予定だ
これで整数演算主体のコードでも潤沢なレジスタが使える
最初から32個にしとけよと思ったなw これ読んで真に受ける人がいたら面白いとでも思ってるんだろうか Z80だとABIやデータ表現を一般化しないといけないオーバーヘッドが目に余るわな はいはい、どうぞネタを続けなよ。まともにとりあう人はいないからさ エミュレータでの開発環境なら、アセンブラの方がおもいっきり楽なんだよな
BASIC感覚でコード打ち込んで、メモリやIOやレジスタの数字をリアルタイムで見れて、
好きなところで止められて、暴走もしない
Cなんてワンクッション置くの面倒で使ってられん >>879
デバッグ環境に関してはそうかもね。
今は、z88dk でソースコードデバッグもできるけどね。
とはいえ、作るものの規模が大きかったり、複数人開発
とかになるとやっぱ C じゃない?ゲームプログラムの
規模になるとフルアセンブラはしんどいし、他の人の
ソースを読むときもアセンブラだとしんどいかな。
BASIC でプロトタイプしてからフルアセンブラなんて
話も聞いたことあるけど、それもしんどいね。
個人的にはアセンブラで書くと移植性がまったく
なくなるのが一番不満かな。Cのコードを積み上げて
いきたいし、Windows 環境でのプログラムの際にも
流用したいんだよね。とはいえ、限界はあるけどね。
アセンブラは、ハードウェア依存部だけに留めたい。
そうすることで実行速度的な最適化もできるし。 >>853
最適なレジスタ数を真面目に追求したのが日立(半)
その成果がH8以降のオリジナルMCUに反映されてる 荒らしは太郎と言います
Z板でボコられたのでMSX板でウサを晴らしているのです
適当なことをいうのが芸風です
ちなみに割り算ができません >>861
>printf を BIOS の
>CHPUT で書けばコードサイズを小さくできる
printfってctrl+cとかで止められたんじゃなかったっけ? >>881
32bit×8個か16bit×16個という感じか
16bitで使うなら、Cでも十分なレジスタ数なんだろうね >>879
ICEをソフトウェアでやってるようなものだからね~
正に昔のハードを骨までしゃぶり尽くせるw openMSX のデバッガ充実してるよね。
MSXPLAYer や WebMSX もあるし、エミュ環境の
充実っぷりは X68k 他の環境より優越している。 ゲームコンソール含めてメジャーな機種はデバッガ充実しているエミュがあってたすかる
68もJava実装のやつは個人開発なのにすげー
Javaだから手も入れやすいし >>861
>近代的で良いと思いませんか?
何が?
出来上がったものはめちゃめちゃレトロだったけど
内藤寛さんがYouTubeで今もアセンブラやってておもしろい
MSX40周年に触れてくれないのは黒歴史だからだろうか
唯一手がけたというゲーム「カーレース」のリメイク企画をやってほしいわ 16ビットだったら複数人での分業もありだと思うけど、
8ビットはメモリの取り合いになりそうで、ますますCを使うのが難しくなる
Cでソース利活用というのもわからんでもないが、会社の基幹を作ってるわけじゃないしね
MSXクラスだったら、アセンブラでZ80や周辺を最大活用したほうが楽しいと思うよ そう、デバッガの充実度が、開発の楽しさに直結してるよね
MSX-Cでのデバッグってどうやるんだ?
使ったことないからわからん MSX-C は、メインの開発環境にしてはいないので
C のソースコードでバッグはわからん。教えてください。
MAME と z88dk-gdb で C のソースコードデバッグを行うならこの辺
ttps://maple4estry.netlify.app/z88dk-msx/ 「Cでソース利活用」そう。あまり使い捨てのコード書くのは
仕事じゃないし辛いんだよね。MSX はあくまで家のホビー
プロジェクトという位置づけな人が多いよね。コマンドラインの
MSX 画像用のコンバータとか作るんだったら、MSX でも
Windows でも Mac でも Ubuntu でも動く感じにできるしね。
C なら自然にそれができる。ツールができれば、そのコードなり
構造体なりを使いまわして、MSX 側で画像表示するゲームが
自然にできるよね。MSX0 で msx0get2 みたいに通信するなら
通信相手は PC になるしますます、C でコード共有しないと
無理っしょ。MSX で完結するならアセンブラもありだけどね。 MSXファンもアカシックライブラリでオンライン提供したいらしい。
「したい」だけで、お願いは来年なのに注意
ttps://x.com/nishikazuhiko/status/1740240606964908389?s=20 やたらC推しがいるけど、配布ってどうするのかな
MSX-DOSってフリーだったっけ MSX0に限った話なのか、MSX全体の話なのかよーわからん やたらC推しというよりは今更グローバル変数・メモリ管理のみのBASICやアセンブラには戻れんってだけじゃね?
Cならライブラリ化するのも楽だし。
BASICはほぼ無理だしアセンブラも受け渡すレジスタ値とかコンパイラレベルのチェックある訳じゃないしね。
言語としての開発し易さはやっぱダんちだよ
1~2行の試しコードならそりゃBASICの方が楽かもだけど。
書き捨てコードばかり書き易くてもね...コード資産として積み上がらんでしょそれ >>894
>コマンドラインの
>MSX 画像用のコンバータとか作るんだったら、MSX でも
>Windows でも Mac でも Ubuntu でも動く感じにできるしね。
こういう重い作業こそアセンブラかな。MSXでは。
tRなら、Cで書いて使い回しがどうのこうの言う余裕がいくらかは出るかもしれないけど。 >>896
Z88DKはMSXのROMの開発にも対応してて、MSXのROM形式も出力できるよ MSX-CもマニュアルにROM化の方法が載ってるからROM作成に対応してるはず
リンカのL80はインテルHEX形式の出力できるし
MSXDOSのBSAVEコマンドで
たしかインテルHEX形式からBSAVE形式のバイナリに変換できるはず >>896
オンラインソフトなら .com だけ配布
ディスクイメージで配布したいなら
tablacus さんの、似非DOS for MSX
なんかの選択肢もあるね。
そもそも、z88dk は、.rom も .cas も
作れるのでメガロムとかカセットテープ
なんかもできるけどね。あるいは、.bin
形式で出力して BASIC から BLOAD という
のも可能は可能。C 開発だからといって
DOS 必須というわけでもないよ。
ゲームなら MSXPLAYer 組み込みして
もらって steam 配布なんか最高だね。
>>899
重い処理なので、Windows で済ませたい。
.bmp から .sc8 にしたりのイメージなので
あえて MSX 実機にこだわる必要はない。
動くにこしたことないけどね。こういうの
をあえてアセンブラにする意味がないわけ
です。圧縮なんかもそうだね。Windows で
圧縮も展開もできるようにして、展開
ルーチンだけ MSX で流用したい。C なら
意識して書くだけで勝手に両対応ができる。
補足だけどクロス開発が前提にはなっている。
MSX 側は、MSX0 と msx0get2 で .com を
送るのもアリだし、IOT とか使わないなら
openMSX のほうが早いでしょう。 当時はBASICでまず簡単なアセンブラとドット絵ツールつくって
ゲーム書いてたな
無知で時間のあるこどもだったからできた芸当 実機じゃなくていいなら、それこそBASICで組んでエミュの速度上げればいいわな
ドッチラケー >>903
ん?
>あえて MSX 実機にこだわる必要はない。
ならPCでやればいいじゃん。
>展開ルーチンだけ MSX で流用したい。
いや、やらなくていい。重いだけ。 >>903
>オンラインソフトなら .com だけ配布
フリーじゃないけど、MSXDOS.SYS、COMMAND.COMは同梱配布OKになったはず。
だからM・FANでも入れるようになった。 >>902
>MSXDOSのBSAVEコマンドで
そんなコマンドあったっけか・・・? MSX-Cの速度ってどんな感じなんだろう
ROM化したときのサイズも
MSX実機で満足できる速度で動かせるなら素晴らしいと思うけど 確かに、8ビット機の場合、ソースの綺麗さよりも速度とサイズだよなw
PV-7で動かせてこそのMSXソフトよ >>908
MSXDOS Toolsの中に入ってるよ
MSXDOS2 Toolsにも入ってる >>909
感じでいえば十分速いと思うよ。
ただ、見てるだけの画像変換なんかだと、ちょっと遅い×ピクセル数=だるい、となりがち。
順にレジスタ割り振って、足りなければスタックを使って、みたいなコンパイル結果になると思うけど、アセンブラで組む人は、
裏レジスタが使えないかとか、ここは演算結果からレジスタペア半分捨てていいなとか、この演算でフラグ立つからそのまま条件分岐に突っ込めるなとか、
前後関係アルゴリズムその他諸々考えながら削れるからコンパイラよりちょっぴり速いものが作れる。 >×ピクセル数
×ドット数
と言うべきだった。不覚。 コンパイラに任せた方が良いってなったのはキャッシュに任せた方が良くなってだな
キャッシュ絡みの最適化はアセンブラでやってられない
ザイログがZ800やZ280でキャッシュ付けたら実行速度がバラバラになってしまったそうで、組み込み用途に使えない高速化になったとか 最近のコンパイラはレジスタ割り当てとか以前に、無駄なコードを削除するとかアセンブリ言語にする前の最適化が滅茶苦茶進んでるからね
Cは書いた通りに動く言語ではあるけど、それでもコンパイラの最適化は半端ない >>914
MSX-Cも有料ソフト
アセンブラやリンカのM80もL80もMSXDOS Toolsに入ってる おまけに、MSX-Cは実行ファイル作るのにM80やL80が必要 MSXDOS Tools 14,800円
MSX-C Ver 1.1 19,800円
MSX Library 14,800円
当時MSXでMSX-C使うのにこれだけ金かかった
MSX LibraryはMSXのグラフィックスなどのMSX固有のライブラリや
32bit整数演算、倍精度浮動小数点演算のライブラリが入ったもの
MSX-Cはサブセットでlongやfloat、doubleに対応してないからね >>919
永久保存版3とか MSX0 には、このあたりが
付属しているので最近 MSX-C なり MSX-DOS2 の
話題が増えてるのだよね。 MSX0 Pro(今は MSX0+) で MSX-View が同梱されたら
そのあたりも前提にできるのかな?こっちは難しいか?
MSX マガジン(北根編集長?)復活で MSXPLAYer に
MSX-View 同梱とかしたらさらなる普及が見込まれるが 永久保存版3は超破格値だよね
MSXPlayerもTurboRに対応してるし、プリンセスメーカーなどのゲームも付いてる
MSX0もこれらのMSX-C関連のソフトが付属してて3万円はかなり安いね >>922
MSXでアセンブラだけやる人はMSXDOS Toolsのみでいい
MSX Libraryを買わない人用にもMSXで簡単なゲームが作れるように
MSX-C入門 下巻で簡単なゲーム用に
MSX Libraryのサブセットのような形の特製ライブラリが収録されてた あとはXで「MSX マンデルブロ」で検索すると出てくる
Z88DKやSDCCでマンデルブロ集合やってる人でソースコード公開してる人がいて
こっそりZ88DKやSDCC用のMSX-C入門下巻の特製ライブラリが中に入ってるね
そのライブラリを使ってグラフィック表示してるみたい
その中にMSX-C入門下巻に収録されてたもぐら叩きゲームも移植されて入ってるw べーしっ君なら使ってるけど、自然対数の低のグラフ描くと
鬼はやい、つうかBASICで描くとコーヒー入れてもまだ終わってない BASICだとベーコンというMSX用のBASICコンパイラ作ってる人もいるみたいだね
使ったことないけどどうなの? >>927
MSX-C入門下巻の特製ライブラリこれいいね。
これと z88dk でクロス開発かつ、シンプルな
MSX 用ライブラリで C 開発が快適に始められます。 >>919
タケル販売になってだいぶ安くなったよね。それで買えたクチ。
そうか、tools必須だったか。いっしょに買ったから忘れてたわ。
それでもライブラリは買わなかった。浮動小数点なんか重いだけだし
どうしても必要ならmath pack使えばいいじゃん、みたいな。 結論:
z88dk でソースコードデバッグできるし
MSX-C 入門下巻付属ライブラリの z88dk
移植版で快適 C ライフ楽しめる。
ベーコンもアセンブラも楽しめる >z88dk
なんかよく知らんけど、CP/MエミュとかMSXエミュとかMSX-DOSエミュとかで
M80使えばいいと思うわ。 Cとか金持ち専用なんだわ
ソフトも高いし資料も高い
貧乏小学生だった俺はBASICよ
なんせタダ
本体付属の説明書にBASICの説明も書いてあるから資料代もタダ MSX3もまだ来ないしズイキもやる気ないから現行MSXやエミュでゲームコンテストやれば面白くね
公開のDRopBoxやグーグルドライブにイメージUPしてハッシュタグ決めてSNSに投稿いいねの数で競うの
無料投げ銭アプリスマホに入れて作者応援で収益モデルも完備
夏冬開催でカテゴリーはMFANに準ずるみたいな セガマーク3がこんななめらかなのに
MSXがカクカクというのは重大事故と言う他ない
いったい幾らの損失だったんだか検討もつかんな
https://youtu.be/BIDfkYasTZw?t=1323 イースIIもIIIも移植できなかったマークIIIごときが何を言うのやら >本体付属の説明書にBASICの説明も書いてあるから資料代もタダ
「数当てゲーム」レベルなら作れるけど、数画面クラスのそこそこのソフトを作ろうと思うと、圧倒的に資料が足りない。 >>944
機種というかメーカーによるのかも
オレのはBIOSやI/Oの説明まで載ってたから運がよかった
VDP自体の仕様がなかったくらいかな
MSX1だから困らなかったけど コードその場で修正して直接反映できるのはつよない?
暴走しないのはホスト側のことだと思うけど
MSX側もステートロードで復旧できるしね
当時のCだとコンパイル後のコード想像しながら使ってたし
頭の中でソースへ戻せるならCで書いてても有用 フルアセンブラ最強勢は、現代社会と、うまく
折り合いをつけられているのか不安。最適化は
そりゃできるだろうけど、ソフトウェアの価値は
それだけではない。というか実際に書いてる?
人のソース読む柔軟性はある?
MSX-BASIC なら無料とか、お手軽勢も実際に書いて
いるのか疑問、付属マニュアルに書かれていない
ことも多くある。ある意味 C やマシン語より
覚えることあるし、ものすごく多機能な BASIC
なので、ハードウェア熟知して、どこのワークに
何を書けばいいかや、VDP にも熟知してれば
可能性がさらに広がる。
べーしっ君やベーコンもある現在は、本当に
底なし沼で大変なんですから。でも IOT を
一行で制御できたり、使い捨てコード
とかテストにはいいよね。 | |
|はいはいわろすわろす |
y────────────┘
∧_∧ ∩ バ───ソ
( ・∀・)ノ______
(入 ⌒\つ /|
ヾヽ /\⌒)/ |
|| ⌒| ̄ ̄ ̄|
´ | | Mac のソースコードデバッグはこの辺で試みている人がいるね
ttps://twitter.com/tokidol548/status/1654290323185754112
https://twitter.com/thejimwatkins レス数が950を超えています。1000を超えると書き込みができなくなります。