>>269

>ところで、書き込み不安定な原因って何なんでしょうか?
gba_nds_fatのFAT対応が不完全だからです。
fseekバグ、フリークラスタ検出バグ、二重FATエリアの無視、最適化オプションによる挙動の違い、などなど。
本当はchism氏が直してくれるといいのですが、前述のとおり彼はほかの事をしているみたいで。
ちなみに、fwriteバグは直っているそうなので、新規ファイルへのシーケンシャルな書き込みだけなら大丈夫…らしいです。私は信じていませんが。chkdskでエラー出るしね。
それなりに私も頑張ってみたのですが、FATわからない。お手上げっ!でした(苦笑

>回避方法は、PCでダミーファイル作って、それに上書き?
正直あんまり安全とは思えないのですが…普通にfwriteするより安全だと思える方法を。
1.Windows上で書き込み用ダミーファイルを作る。
2.gba_nds_fatでディレクトリエントリからダミーファイルの先頭クラスタを取得する。
3.クラスタリンクリストを使ってファイルサイズ分のセクタ番号一覧を作成して、テーブルにでも保存しておく。
4.あとはセクタ番号指定のダイレクト書き込みでディレクトリエントリやFATなどを一切触らず書き込む。
これで、とりあえずそれなりに安全な書き込みができると思います。

本当は、3のテーブル作成もgba_nds_fatに助けてもらいながらだと非常に楽なのですが、特にFAT32コードが信じられなくて。挙動が変なことが多数です。(最適化オプションによって安定するのかもしれませんが)
なんというか。面倒。すごい面倒。FAT16マンセー。SDFormatter最高。

でもなんというかチラ裏なのですが、「読み込めないぞなんだこれつかえねー」っていう被害と「書き込み失敗ディスク飛ばしたー」って被害では、レベルがまったく違うと思います。めんどくさいですが。
(うるせーよどこにも「正常に書き込めます」って書いてねーだろーってのもアリ…有?無?w)

まぁマジコンのファームウェアも自動セーブ退避やらなにやらでFAT壊すんだから、個人homebrew開発者が気にすることじゃないって思いますけどね。