Skip to content

Latest commit

 

History

History
397 lines (322 loc) · 25 KB

bugs.md

File metadata and controls

397 lines (322 loc) · 25 KB

不具合

開発ツール

PD LIBC

GNU Make version 3.79 human68k-1.4

  • 仮想ディレクトリまわりの処理がまだ完全には解決していないはず。

C Compiler PRO-68K ver2.1 NEW KIT

  • STUDIO KAMADA > X680x0 のメーカー純正ソフトウェアの不具合について > 4. XC ライブラリの不具合
  • INCLUDE\TIME.HでCLOCKS_PER_SECが定義されていない。 (@towser_meow/1638474969494724609)
    • 代わりにINCLUDE\STDDEF.HでCLOCKS_PAR_SECが定義されている。
  • ライブラリディスクの\ASK30\FILES.Cの93行目の条件式がftotal <= MAXFILESとなっているため、ファイルが多いとバッファオーバーフローが起きる。
    		} while (nfiles() == 0 && ftotal <= MAXFILES);
  • 無償公開版に特有と思われる不具合。
    • XC2103.LZH, XC2103I.LZH: \ASK30\MAKEFILEの内容がACI.Hと同一。
  • (おそらく全バージョン) DOSLIBのIOCTRLFDCTL()IOCTRLDVCTL()が入れ替わっている。
    NEW KITの拡張マニュアルにはIOCTRLFDCTL()がドライブ番号driveを指定する関数という説明が記載されている。
  • SCD.X
    • (おそらくv3系すべて?) gcc -gで生成した実行ファイルのソースコードデバッグでステップ実行するとアドレスエラーが発生することがある。 -finline-functionsを指定する(または環境変数GCC_OPTION1=I)と発生しない。SCD.X側の問題かどうかは不明。

HAS060.X version 3.09+91

  • HAS060.X - アセンブラ - プログラミング - ソフトウェアライブラリ - X68000 LIBRARY > 既知の不具合
  • ベースディスプレースメントにサイズを指定しないと「オフセットが範囲外です」になることがある。
.cpu 68020
b:
  lea (a,pc,d0.l),a0
  .ds.b 32758
  lea (b,pc,d0.l),a0
a:

あるいは

.cpu 68020
  moveq #0,d0
  tst.b (foo,pc,d0.l)  ;Error: オフセットが範囲外です
  tst.b (bar,pc,d0.l)

; tst.b (foo,pc,d0.l)  ;barに.lをつければOK
; tst.b (bar.l,pc,d0.l)

; tst.b (foo+1,pc,d0.l)  ;foo+1またはfoo-1にしてもOK
; tst.b (bar,pc,d0.l)
  .dc $ff00

  .ds.b 32755
foo: .ds.b 9
bar: .ds.b 1
.end

Pure PASCAL Compiler v1.01

こ-BASIC ver.0.01 (H8/11/11 版)

X-BASIC version 2.02

  • print using "#,";1e308で「おかしな命令を実行しました」等のエラーが発生する。

ぺけ-BASIC ver.0.02

Ko-Window 開発基本セット Version 2.24+14

  • corlib.a::DefGraphicPalet()が動作しない(libcor.aのバグを見つけました)。 インラインアセンブラの記述にtrap #15が抜けているため。
    • コンパイル済みのライブラリファイルはないが、 Ko-Window ソースセット 2.24+14.2 のソースコードは修正されている。詳しく調査はしていないが、他にも更新されたファイルがある。

newlib-1.19.0-human68k

PCM to SMP Version 1.0

  • (参考情報) ヘッダ構造: PCMデータ数 1バイト、{ID 1バイト、データサイズ 2バイト}×データ数、PCMデータ×データ数
  • PCMファイルのサイズが131072バイトを超えるとバスエラー等が発生する(読み込みバッファが固定サイズでファイルサイズをチェックしていないため)。
  • PCMファイルのサイズの下位16ビットしかヘッダに書き込まれない。 このためPCMファイルがサイズが65536(0x10000)バイト以上の場合に問題が発生する。
    • 未確認だがSFXVIでのゲーム中、途中までしか再生されない、別IDのPCMが途中から再生される、などの問題があるかもしれない。
    • SMP2PCM.Xで正しくないファイルサイズで書き出される。

情報表示

cpupower.r Ver0.1

  • 実行時にMFP TCDR($e88023; Timer-Cデータレジスタ)の値を本来の値200から256相当に書き換えるが、 終了時に戻さないためTimer-C割り込みの間隔が1.28倍に変わってしまう。 (@kg68k/1492793567512711170)
    • カーソル点滅速度やSystem Informationのprocessor performance値に影響する。

Winner2.X v1.33R4

  • 最新バージョンはv1.33R4だが実行時の表示はVer 1.30R4となっている(integerの綴りが直っているのがv1.33R4)。
  • float performanceは実質的に「integer performance」の別バージョン。 (@kamadox/1684887533090660352)
  • 日曜日に実行すると時計の曜日が「?」になる。 (@kamadox/1684880439541215232)

ディスク

RAM DISK DRIVER 「GRAD.r」 Version 1.30

  • DOS _MALLOC2でメモリを確保しているプロセスがあるときにGRAD.rを-g -bオプションで登録しようとするとエラー終了するが、 その際にグラフィック画面の使用モード(IOCS _TGUSEMD)が「1:システムが使用中」に変更されてしまう。
    • GRADXで修正されている。

SUSIE V1.21A

  • SCSI IOCS未登録時に実行すると白帯エラー($01F5)が発生する。なおV1.14Aでは問題なく、V1.15Aはエラーになる。
    • トラブルシューティングの手順(OPT.1によるFD起動、SCSIDEV=OFF)で発生する。
    • SUSIEXで修正されている。

音源ドライバ

X68k RCD: RC play driver v3.01q

  • DOS _KEEPPRに渡す常駐バイト数にデータセクションの大きさが含まれておらず、またスタック範囲外の値を加算している。 他の部分のコードの影響により結果として問題が顕在化しないことが多いと思われるが、場合(値)によっては異常動作を引き起こす。

Z-MUSIC Version 2.08

  • 奇数アドレスに配置したZMDデータをOPMデバイスに書き込むとアドレスエラーが発生する。不具合として扱うべきかは検討の余地あり。 (@kg68k/1886460468925227335)
  • @Knの設定可能範囲は-768≦n≦768だが、±769~6144の値がエラーにならない。
  • @Kn1,n2,dlyの設定可能範囲は-768≦n?≦768だが、±769~6144の値がエラーにならない。
  • @Kn1,n2,dlyでn1==n2やdly>32767でエラーになったとき「@B COMMAND ERROR (No.29)」と表示される。
  • ピッチベンドの際に時折計算を間違えてデータ2バイトの最上位ビットが立ってしまう事がある (A ♪SOUND mind in a SOUND : Z-MUSIC for the Web - Qiita)
    • ZMDコマンド$d1において、MIDIデータを$e0, lower @b, higher @bと送信しているが、higher @bの最上位ビットが立つ。
    • @M(数値なしのスイッチング・オフ)実行時にp_detune_m + p_port_work2を求めたあとクランピングしていない。
    • 前述の@Kn@Kn1,n2,dlyでZMDコマンドが不正な値になっている場合。
  • ファンクション$09 m_stat
    • ベースチャンネルモードがMIDIチャンネル基準モード((b1))に設定されている場合、引数d2.l = 0で呼び出すと正しい値が取得できない (d0.lのビット31~25が常に0になる、ビット22~16がPCM2~8との論理和になる)。
    • (b1)モードの場合、引数d2.lの最上位ビットを1にすると上記挙動の影響を受け正しい値が取得できない。
  • ZMSC.X
    • 総トラック数が32を超えるZMDデータを再生するとバッファオーバーフローを起こし、最悪白帯になる。 (@kg68k/1886531820357120282)
  • ZP.R version 2.02
    • 常駐検査時に常駐プロセスではないメモリブロックを検査したり、メモリブロックの範囲外を参照することがある。 これにより誤判定やバスエラーが起きることがある。
      • 派生版も修正されていなければ同じ不具合あり(ZP3.Rでは修正されている)。
    • 空きメモリが少ない状態で実行するとプロセスのメモリブロック範囲外を読み書きすることがある。 これによりバスエラーやハングアップなどが起きる。
  • マニュアル(ZMSC2MAN.LZH)
    • 備考:配布アーカイブ(MANUAL.LZH)によっては全ファイルにMacBinaryが書き込まれている場合がある。 当アカウントのzmusic2リポジトリや、現在のX68000 LIBRARYの Z-MUSIC ver2にあるものは問題ない。
    • ZM3.MAN
      • m_tempo(tm)の引数「tm=トラック番号」は「tm=テンポ値」が正しい。
      • m_stat(ch)の引数2行目の「全て」は不要。
      • m_assign2(ch,tr)のコード例のchとtrが逆になっている。 (X-Basic_Manual.pdf Page 170)
      • m_wave_form()の「オルタニティヴ」は「オルタナティヴ」が正しいと思われる (ソースコードで該当する機能が「alternative」なので)。
    • ZM4.MAN
      • .WAVE_FORMの「オルタニティヴ」は「オルタナティヴ」が正しいと思われる。
    • ZM5.MAN
      • 備考:1735行~で解説されているスイッチング・オフについて、@B@Kの場合はオートベンドスイッチオフとなるが、 ZM12.MANにはオートベンド・スイッチ (MML @B) $BDとして載っている($BDを用いてオンにするMMLはない)。
    • ZM10.MAN
      • ファンクション$3a get_trk_tbl: ADPCM2~8のチャンネルが記載されていない。末尾に25~31が並び合計32バイト。
      • ファンクション$58 call_int_play_opeが記載されていない(ZMSC208.LZHのZMVER_UP.DOCに詳細あり)。
      • ちなみにファンクション$53はMMLで~_に割り当てられてる機能を相対ボリュームアップ/ダウンから 相対ベロシティアップ/ダウンに変更するかどうかを設定する機能。初期化コマンド(Un)から呼び出されている。
    • ZM12.MAN
      • 「ベースチャンネル設定 (ZMS (B)コマンド)」はZMDデータには出力されない (ただし再生は対応している。v1.09Dまでは出力していたが、v1.09Eで仕様が変更された)。
    • ZM16.MAN
      • m_stat()の引数「track_bit_pattern」は「channel_no」が正しい。詳しくはZMUSIC.Lの項を参照のこと。

Z-MUSIC Version 2.08e

  • ZPCONV.R version 2.04d
    • X68000(MPU 68000)で実行するとIOCS _SYS_STATを呼び出して白帯になる。
    • Z-MUSIC Version 2.08に同梱のZPCONV.R version 2.04を使えばよい。

ZMUSIC.L Version 2.01

  • zm_ver(): スーパーバイザモードで呼び出すとバスエラーが発生する。
    • スーパーバイザになるためのDOS _SUPERの返り値を見てユーザーモードに戻るための_SUPERを省略しなければならないが、 その処理が抜けているため。
    • X-BASIC用外部関数MUSICZ.FNCのライブラリ版という位置付けのため、もともとスーパーバイザモードを想定していないのかも。
  • zm_ver(): Z-MUSIC Ver.3が常駐していると、0(常駐していない)ではなくZ-MUSIC Ver.3のバージョン番号を返す。
  • m_stat(): 引数はチャンネル番号(または0=全チャンネル指定)なので、zmusic.hでの引数名track_bit_patternは正しくない。 m_assign()に合わせるとchannel_noが適切。
    • 備考:Z-MUSICのファンクション$09はビットマップで複数チャンネルを指定できるが、 MUSICZ.FNCとZMUSIC.Lはその呼び出し方法には対応していない。
  • m_play(), m_stop(), m_cont(): track_no?=='NASI'以降を無視しない。
  • m_out(): 引数に-1または'NASI'がない場合、スタック上の引数列の末尾を超えてメモリを読み込む。
  • m_mute(), m_solo(): ch_no?=='NASI'以降を無視しない。
    • zmusic.hのコメントの「全トラック」は「全チャンネル」が正しい。
  • zmusic.h: m_trk()のMML_ptrなど、書き換えをしないchar*引数にconstが付いていない。

Z-MUSIC Ver.3.02C

  • ZMSC3.X
    • メモリブロックの状況によっては、常駐解除時にメモリブロック範囲外を参照しバスエラーが発生したり、 他のプロセスが確保したメモリを誤認して解放してしまう。
    • ファンクション$13 ZM_SE_ADPCM1
      • MPCM.X非常駐時、優先度が低くて再生されない場合の戻り値d0.lの値が不定(0以外の値にはなる)。
      • MPCM.X常駐時、成功するとd0.lに0以外の値が返る。
        • MPCMの不具合の影響を受けているが、それだけではなく、マニュアル記載の仕様ではMPCMM_EFCT_OUTは「d0.l≧0 正常終了」であるのに対し、 ZMSC3.XZM_SE_ADPCM1は「d0.l=0:正常終了」であるので、戻り値の上書きが必要だがこれをしていない。
    • メモリ確保ルーチン(get_mem:): 下記不具合はファンクション$70 ZM_GET_MEMなど、メモリ確保を行う機能すべてに影響する。
      • 確保サイズ(d2.l)に-8を指定するとエラー(ILLEGAL_MEMORY_BLOCK_SIZE)にならず、確保したメモリブロック範囲外に 書き込みを行いバスエラーが発生したり、メモリ内容を破壊してしまう。
      • メモリが確保できなかった場合、エラー処理ルーチンが呼ばれエラー情報用のメモリが確保される。 このメモリも確保できなかった場合はエラー処理が繰り返されるため、スタックオーバーフローを起こしてハングアップ等が発生する。
  • ZMC.X
    • 上限下限あり8ビット値の配列で、値の直後の2連続セパレータが単独のセパレータとして解釈されてしまう。 (@kg68k/1482025079017926658)
    • 上限下限あり16ビット値の配列で、上限値・下限値が正しく適用されないことがある。 (@kg68k/1482027532736245763)
    • .FM_TUNE_SETUPをint16_tではなくint8_tとしてコンパイルしてしまう。 (@arith_rose/1481388558246051842)
    • 参考情報:隠し機能かもしれない挙動。
      • @Kn1,n2,dly,bnd@Bn1,n2,dly,bndのdlyに-32768~-1を指定できる。
    • 参考情報:ZMDフォーマット(ZM12.MAN)では対応しているが、ZMC.Xの動作やMMLコマンド解説(ZM5.MAN)では使用できない数値指定。
      • U±n@U±nKn@P±n[VOLUME v][@VOLUME v][VELOCITY u][@VELOCITY u][PANPOT p][@PANPOT p][CH_PRESSURE n] の下限は-127だが、ZMD仕様では-128。
      • _nの上限は127だが、ZMD仕様では128(ZMDデータ上は-128)。
      • @Kn1,n2,dly,bnd@Bn1,n2,dly,bndのbnd、@Qnの下限は-32767だが、ZMD仕様では-32768。
  • ZP3.R
    • ファイル名を大文字ドライブ名指定すると、そのドライブに対し特殊ブロックデバイス用のDOS _DRVCTRL (MD=$34xx) を発行し、返り値によってはファイルがあってもオープンできない。
      • FOPEN.HAS::check_drvchgでd0レジスタ(の上位バイト)を初期化していないため。
    • 空きメモリが少ない状態で実行するとプロセスのメモリブロック範囲外を読み書きすることがある。 これによりバスエラーやハングアップなどが起きる。
  • ZVT.X version 2.09
    • グラフィック画面の使用状況が3(破壊)だとエラー終了してしまう。
    • グラフィック画面が使用できない場合にエラーメッセージの後に使用法を表示してしまう。
    • version 2.09 patchlevel 1で修正されている。
  • マニュアル(ZM302_M.LZH)
    • ZM4.MAN
      • .FM_TUNE_SETUP.ADPCM_TUNE_SETUPのt1~t128の値の上限が+32768と書かれている(本文は正しい)。
    • ZM5.MAN
      • 値の範囲をA-Bと表記しているものと、A~Bと表記しているものがあり統一されていない。
      • [TRACK_DELAY n]のnの上限は32768ではなく32767。
      • [VELOCITY u]の「・u:-127~+127」は「・u:0~127」が正しい。
    • ZM10.MAN
      • ファンクション$13 ZM_SE_ADPCM1$14 ZM_SE_ADPCM2の「d4.lw:再生チャンネル(0-15)」は、 正しくは「d4.lw:再生チャンネル(0-7)」。
    • ZM15.MAN
      • ファンクション$10xx M_EFCT_OUTの「ファンクション$8005」は、正しくは「ファンクション$8006」。

ZMSC3LIB Version 0.01

  • ZMCHECKZMSC.HAS zm_check_zmsc(): スーパーバイザモードで呼び出すとアドレスエラーが発生する。
    • スーパーバイザになるためのIOCS _B_SUPERの返り値を見てユーザーモードに戻るための_B_SUPERを省略しなければならないが、 その処理が抜けているため。
    • X-BASIC用外部関数MUSICZ3.FNCのライブラリ版という位置付けのため、もともとスーパーバイザモードを想定していないのかも。
  • ZMADPCM1.HAS zm_se_adpcm1(): スタックに積まれた引数を正しく受け取れず、正しく動作しない。
    • move.b param2(sp),d1ではなくmove.b param2+3(sp),d1のように読み込む必要がある。
  • ZMADPCM2.HAS zm_se_adpcm2(): スタックに積まれた引数を正しく受け取れず、正しく動作しない。
  • ZM_ATOI.HAS zm_atoi(): ZM_STOPファンクションが呼ばれているため、正しく動作しない。
  • ZMPCMREAD.HAS zm_pcm_read(): char *param引数が無視され、a1レジスタが不定なため正しく動作しない。エラー時に0以外の値が返る。

PCMドライバ

MPCM version 0.45A

  • ファンクション$10xx M_EFCT_OUT
    • 再生中(DMA使用中)であっても常にDMAの転送開始設定を行ってしまい、音が乱れることがある。
      • ほかのファンクションと違い、ここだけfunc_00xx_DMA_startを呼ぶ前にplay_flagを見ていないため。
    • 成功時にd0.lに戻り値が代入されないため、エラーを正しく検出することができない。
      • チャンネル番号0~7または$ffを指定した場合、d0.lには負数を含む不定値が返る。
      • チャンネル番号$e0を指定した場合、d0.lの上位ワードには負数を含む不定値が返る (一応、下位ワードには割り当てたチャンネル番号が返る)。
    • チャンネル番号$e0を指定した場合、IOCS用のチャンネルで再生されることがある(d0.lの下位ワードには8が返る)。
  • ファンクション$8006 M_SET_ECHCNT
    • 起動時の初期状態およびd1.l = 0を指定すると、効果音発声数が不正な値に設定される (チャンネル0-7とIOCS用チャンネルの合計9チャンネルで発声される挙動)。

画面制御

768.x v1.23

  • IOCS _CRTMODd1.w = $ffff(現在の画面モードの取得)で呼び出すと、常にd0.l = $10が返される。

CRT_Hi.x Ver 1.00

  • IOCS _CRTMODを呼び出した際に低解像度から高解像度への変更が正しく行われない(例:モード3を指定するとモード2に変更される)。
  • 画面モード18以上に対応していない(例:モード18を指定するとモード17に変更される)。

2000年問題

この節では修正パッチや改造版があるソフトウェアも掲載しています。

Binary file updater v1.2 rel.2

  • bup -l/-lmでファイルの日付の表示が乱れる。パッチあり。

Ease Filer (95/04/07 版)

  • ファイルの日付の表示が乱れる。パッチあり。

EDR-plus version 2.0.1(yakko-chan)

  • セレクタ画面のファイルの日付の表示が乱れる。パッチあり

lhv version 0.95.2

  • セレクタ画面のファイルの日付の表示が乱れる。パッチあり。

WS v0.90

  • 現在の日付の表示が乱れる。パッチあり。

DI (DImain Ver0.93、DImain Ver0.93.4c)

  • 現在日時やファイルの日付の表示が乱れる。
  • DI V0.51+14Aは問題なし。

SHARP純正ソフトウェア

ドライバ

FASTIO.X

  • バッファ容量指定で大きい数値を指定した場合に「バッファーサイズが正しくありません」のエラーにならず、小さい容量として扱われることがある。 (@kg68k/1887513728209563689)

FASTOPEN.X

  • ヘルプメッセージの誤字「常時使用可能なオプション」。

SX-Window

時計.X (SX-Window version 3.10)

  • 西暦2000年以降で表示が乱れる。パッチあり。

市販ゲーム

アクアレス

ボスコニアン

ギャラガ'88

  • IOCS _CRTMODでグラフィックパレットの初期化が正しく行われない不具合を利用しているため、 _CRTMODが修正されると逆に問題が発生する(起動時のローディング画像の表示が乱れる)。
    • 修正環境としてXEiJやcrtmod16.xがあり、対策としてあえて不具合を再現するcrtmod16b.xがある。

スーパーリアル麻雀PIV

  • 同じ牌が5枚でる。フロッピーディスクでプレイするとアニメーションリプレイが正常に機能しない。メーカーから修正版送付あり。 (@Nitro_alpha/1791821035995865367)

OLTEUS II (オルテウス2)

幻影都市

  • 不明。メーカーから修正版送付あり(1993年7月に2回目の送付)。 (@Nitro_alpha/1782721863371927840)
  • 移動・メッセージ表示の設定を変更しても速くならないのはX68000のマシンパワー不足。

ドラゴンスレイヤー英雄伝説


他機種用ソフトウェア

DiskExplorer Version 1.69 (editdisk.exe)

  • ファイルサイズがクラスタサイズの倍数でFATの確保数が余計に1だけ多いファイル(例:2HDイメージ内の1024バイトのファイル) を取り出すと、ファイルサイズがクラスタサイズだけ大きくなる。

goto index / ツール