トピック
ゆうぶー tyowwwomaww

スマイルツールのSBGED

というグラフィックエディタについて 質問なんですが UNDOの回数を増やすのにどうすれば いいのでしょうか?@UNDOSAVEや、@UNDOLOADをいじったのですが 変わりません。仕組みも教えて下さったら助かります。お願いします。
1そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
SBGEDはタッチして絵を描きかえる度に512*512ドットの絵を別のグラフィック面に転送して保存しています。 プチコン3号には6つのグラフィック面が存在していて、SBGEDではG0,G1,SP,BG の4つのグラビア面が編集できます。G2,G3が隠してあり一つは下画面を表示するために使われているので実質、アンドゥに使えるグラフィック面は一つです。そのため一回しかアンドゥできないのだと思います。
2そうだね
プレイ済み
返信[2]
親投稿
あきと SideBurnsM
グラビア面ってなんだ!?恥ずかしい。 それはそれとして、もう一段アンドゥを増やしたいならG1の編集を諦めて2つめのアンドゥ用グラフィック面にしてしまうという方法を取れば2段のアンドゥは作れるかもしれません。 違うやり方としてはUNDOSAVEで512*512ドットを丸々保存するのを止めるという方法で複数段にできるかもしれません。 描き変えたドット絵が32*32ドットの範囲に収まるならその範囲だけを保存するという方法にかえるということです。プログラムは大改造になるでしょう。 問題もあって、やりがちな操作間違いでうっかり透明色の部分を塗りつぶしたときは結局512*512の範囲丸々を保存しなければいけなくなってアンドゥ一回分でグラフィック面が埋まるということも起きてしまうと思います。
2そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
さらに本気で考えると「点を打った」「塗り潰した」「線を引いた」という操作を逐一メモリに保存して、アンドゥが呼ばれたらその操作を取り消すというプログラムを書けばメモリが許す限りアンドゥができるエディタが作れますが、もうそれは一から作るのと同じぐらい労力が必要でしょう。
2そうだね
プレイ済み
返信[4]
親投稿
なお naosus
アンドゥ用にページを丸ごと退避する先を、GRPでなくメモリ(配列)にすれば、数回分くらいは実現できるんじゃないでしょうか。 準備するもの:(メモリ超過はめどいので考えない) ①ワーク用に1ページ分のサイズの配列 ②アンドゥ可能数×1ページの大きさの配列 ③アンドゥ回数の管理用の変数 ④何か画像を操作しようとする前に、①にGLOADして、それを今のアンドゥ回数③に応じた②の配列上の位置に転送して、③を+1する処理(ただし③がアンドゥ可能数を超える場合は処理せず何らかの通知) ⑤アンドゥ時に④の逆をする処理 何にしても、ちょろっと変数をいじれば済むような簡単な改造ではないので、自身の根気&技術力とご相談下さい。
3そうだね
プレイ済み
返信[5]
親投稿
ゆうぶー tyowwwomaww
あきとさんへ ていねいに説明してくださりありがとうございました! おかげでUNDOの仕組みが分かりました!GRPの一つをUNDO用に使う方法をやってみたいと思います! ありがとうございました! なおさんへ そういう方法もあるんですね! ちょっと難しそうなのでもうちょっと 勉強してからやってみたいと思います! ありがとうございました!
0そうだね
プレイ済み