This repository has been archived by the owner on Nov 3, 2019. It is now read-only.
forked from libertyernie/tgbdual_L
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmemo.txt
253 lines (212 loc) · 8.93 KB
/
memo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
注意事項(問題事項?)
・情報表示はスロット1のみ対応。
修正予定
・拡大時のフィルタ処理を選択可能に
→DirectDrawではほぼ強制、対応は難しい
やるならDirect3Dへ切り替えするべきか
追加予定
・GBKISS及びGBC赤外線通信機能の対応
・LuaDLLの実装(ソース or dll利用でok。dll利用が好ましいか)
→使い方
lib、ヘッダー等をプロジェクトに投入。実行ファイルのカレントにdllを置く。
→luaの呼び出し方法
ヘッダ中の任意の関数をプログラム上で呼び出す。
各関数については調査をする必要がある。
(VBArerecordingのソースを参考にするのが無難か)
→luaの関数を追加
停止機能やメモリ監視やキー入力等を組み込む
・音周りの改修
→nezplug++のコードを参考に移植予定。せっかくだからやっちゃおう
・レコード機能の改造
→TAS標準仕様があればそれに準ずる形に
・RAMバンク書換え(可能性低)
→RAMバンクビューアの実装
メモリビューアをそのまま流用
→流用できないがな
変数じゃなくて定数使ってるから全部修正しないと無理
13/01/19
・画面サイズをメニューバーを考慮したものに修正
(倍率指定時に160*144*Xに正確になるよう修正)
スロット2の操作機能を追加するため
通信機能部分を独立メニューに変更
・スロット2のステートセーブロードを実装
・スロット1&2の同時セーブロードを実装(ローカル通信プレイ時にステートセーブロードを使える)
・スロット2の画面サイズ変更を実装
・スロット2のメモリダンプを実装
ただしコールバック関数を丸々コピペして
使っているため後々リファクタリングが必要
コールバック関数をどうすれば抽象化できるか調べる必要あり
12/09/19
フレームステップの停止位置を変更
12/09/17
停止処理を修正
・フレームステップ中にブレークポイントで停止しない問題を修正
・フレームステップ時にサウンドが鳴り続けないようにサウンド停止処理が呼ばれるよう修正
12/09/11
・波形メモリの時間指定が正しく機能していなかった問題を修正
これによって波形メモリが鳴り続けてしまう不具合を解決
12/09/04
・git導入につき編集コメントを削除
・フレームステップ機能の導入
フラグ追加後ok→gb.cpp:gb::runにて実行VBLANK発生時or終了時に1フレームと考えればおk
・右CTRLによる停止処理コード削除。F8でできるしいらないよね。
同時に重複していたメニュー→ファイル内停止処理も削除
・なんかよくわからないけどgplライセンス表示変更&一部ファイルに追加
編集年は変更するべきだと思うけどコピーライトは追加しなくてもいい?その辺よくわからない
12/08/04
メモリダンプ改にて直接編集時に一度フォーカスが外れると以降復帰せずに編集不可となっていた問題を修正
11/03/07
1/10のログ取り対応が何故か元に戻っていたため再度ログを取るようにop_readを呼び出すように修正。
フラグレジスタ周りをいじって元に戻す時にこの変更分も戻してしまっていた?
情報表示画面のフラグレジスタ表記をTGBDualのものに変更。
どのフラグがどのビットに対応するかわかるようにビット位置を記載しておく。
11/01/12
dx_renderer::refresh()を呼べば右CTRL停止処理の復帰と画面再描写ができる?ついでにKEY入力も拾える?
フレームステップwinmainのループ内でnormal_modeを呼び出して処理を繰り返してる。
1回normal_modeを呼び出すたびに1フレーム経過してるけど画面の再描写(refresh)は行っていない。
ここでもrefreshを呼び出せばキー入力も受けられて万事OK?2回目のrefreshでキー入力は上書きされそうだけど‥
だめならgb::run内部でストップ処理を入れるしかないか(refresh呼び出し時)
11/01/10
チート改一応完成
RAMバンクの値がRAMバンクビューアの値と異なっていたため問題を探す
→RAMバンクビューアの方で0xd00aとするべきところを0xd010としていたため異なる値となっていた。こっちが原因。
・sramバンクに対応
ログ
0xDC実行時にログ取り失敗している。
本来であれば3バイト分取得しなければならないのにその後取得できていない。
→非常にまずい。移動系で移動しない時にOP読み込みをせずに直接PCに加算してスキップしてしまっている。
頻繁に呼ばれるわけではないので致命的な速度低下は起こらないと思うが、一定速度低下するのは決定的。
ログを取る必要があるため修正するが、やばい‥
・スキップせずにOP読み込みを呼び出すように変更
フラグレジスタ
フラグレジスタのフラグがgbの物ではなくz80標準の配置になってる‥
一応値を#defineで定義してるっぽいけど影響範囲が多すぎてやばい
→やばい、値を変えると動かない。どうにも各所でマジックナンバー使ってるっぽい‥
→見なかったことにする。どういう実装になってるのか調べるのは時間かかりすぎる。
11/01/09
チート改
・signed、unsignedを正しく扱えるように修正
11/01/08
チート改
・ビックエンディアンとして扱ってたのをリトルエンディアンに変更。
・タブオーダーを修正してラジオボタンを正しく動くように修正。
11/01/03
メモリダンプ改のちらつきを抑えるにはエディットコントロール部分を自作してダブルバッファにするか
更新対象を数値部分に限定する必要がありそう。後者は入力と同じようなロジックで値を置き換えてゆけば良い。
但し、その場合はstr表示部の更新も手動でやる必要が出る。しかし実装できればstr部への入力対応も容易。
11/01/02
チート改を改修
sramのバンクにも対応させるには、rom::get_sram_sizeにてsramのサイズがわかる?
サイズを確認したらref_gb->get_mbc()->get_sram()で0x2000からバンク1のメモリが読める?
メモリ周り見る限りVBAの方は1フレーム単位であらゆる処理をやってるっぽい。
そういう点では一応このソフトを利用する意味もあるか。NO$GBはこんな感じっぽいけど…
・16進<-->10進の表示切り替え対応
・BYTE,WORD,FWORD,DWORDの”表示”切り替え対応
・アドレスダブルクリック時の自動入力に対応
・RAMバンクのへの対応
10/12/30
チート改の機能の大部分を実装。
RAMバンク部分と16進<-->10進の表示切り替えと、BYTE,WORD,FWORD,DWORDの”表示”切り替え、
アドレスのダブルクリック時に自動的に入力する機能が残り。
10/12/29
チート改の実装作業。未完。
リストビューとチートモジュールの一部実装。
メモリの保持はbyteにしないと0x1000をサーチする時に00100000と続く値を見逃してしまう。
1byteずつずらしながら先頭から一致するかどうかチェック。
一致した場合にはその先頭のアドレスを記録
例:1111をサーチした時11 11 11 11と値が連続していれば 00番地:1111 01番地:1111 02番地:1111と3つヒットする。
10/12/28
なんか色々新機能を追加しようと思うけどぶっちゃけvba-rerecordingで十分。
まぁせっかくいじったんだから最後までやろうとあんまり意味のないであろう行為を続けることに。
・dialogs.hの内容が増えてきたので追加部分をdebugdialogs.hに移行。
・チート改のダイアログを作成。
・メニューに追加機能分を追加。
・メモリビューアの改造(値の連続入力、右端、下端での矢印入力への対応)
→メモリ選択時の移動を改善
→値を入力した時にそのまま連続入力できるように変更
・ログビューワに更新ボタン追加。
・情報表示に更新ボタン追加。更新を押すと停止します。
・ginfomodeの削除。情報表示時にスタートが効かなくなる機能を削除する。
modu.hppのinsert関数の処理をシンプルな物に変更してみた↓
loglist[top].nemonic = nemonic;
loglist[top].pc = pc;
top = (top+1) % size;
しかし速度が結構下がってしまったため元に戻す。
判定+インクリメントor代入よりも代入+加算+modの方がコスト高いらしい。
10/09/18
SRAMに対する書込みにもブレークポイントを設定できるように変更。
10/09/13
レジスタの変更に対応。
PCとSPはいじると落ちる可能性高いため注意。
10/09/12
メモリダンプ改を完成させる。
10/09/11
PC読込み時にはチェック処理を行わないように変更、
そのためチェックを行わない読込み関数を追加。
DbgInfoDisasm内でread_directを呼び出しているところをread_nocheckに変更。
これでチートコード入力時に異なる結果となるのを防ぐことができる。
STEP時にHALTは飛ばすように修正。割り込みから始まるため割り込み直後の命令まで飛ばしてしまうが仕様。
ログビューと情報表示のスクロールバーの挙動を修正。
メモリダンプからの書き込みに対応するためwrite_nocheck関数を追加。
通常のwrite関数を使うとチェックにひっかかるため、このような追加を行う。
10/09/10
メモリダンプの実装を一部行った。残りは近日中にできそう。
またデータ読込み時のブレークポイントも追加。
06/09/06
使い勝手が悪いためdisasm.hを削除し
元からあるz80cdisasmを修正改変。
disasmの問題はエディットボックスを普通の処理に
変えることにより簡単に解決。
アルゴリズム改変にかかった時間の半分以下…
我ながらあほだと思う。
06/09/03
disasmのアルゴリズムを改変し
disasm.hを作成。
しかし速度はほとんど改善されておらず
流用もし難い為利用するメリットがほとんどないことに…
そもそもめんどくさがってやらなかったエディットボックスの改変に踏み切ることに。
06/06/16
disasmがかなりのボトルネックとなっている。
情報表示に数秒~十数秒かかることが…
解決方法はボトルネックの解消か
範囲限定利用とするか…
(ログ表示速度を上げるにはdisasmを早くするしかないんだが…)
とりあえず保留にして後々何とかすることにしよう。
06/06/15
各種情報を取得する際g_gb[0]を直接呼び出す力技で対応。
これによりスロット2への対応が出来ない。
ここまで来たら全部グローバr・・・
06/06/14
ブレークポイント設定、削除の実装完了。(改良点は多々あり)
残りは情報表示処理とMEMDUMPの改造。
追記:熱闘闘神伝で停止処理を行うと致命的なエラーが発生するのを確認
13日の変更の影響も疑ったが以前の状態でも同じ現象が起きる様子。
追記:かなりの力技でメッセージループを停止処理ポイントに持ってくることに。
これによりわずらわしい処理がカットされバグも取り除け、しかも性能が上がる。
…が、代償として必要変数のグローバル化とモジュール化の破壊という掟破りの状態に。
06/06/13
停止処理チェック位置を変更
これにより正確な停止処理及びステップ処理が可能に。
ただ、他への影響も考えられるためとりあえず様子見。
追記:
上記事項で初期化処理の問題がおきたため
フラグを利用し停止状態時には初期化を行わないようにした。
06/05/17
デバッグ処理の仕込み終了。
残りはGUI周り。
変更されたファイル
・winmain.cpp
・cpu.cpp
・gb.h
・dialogs.h
新たに作成されたファイル
・modu.hpp
・z80cdisasm.cpp
・z80cdisasm.h
・opcodetonemonic.cpp
・twobyteopcodetonemonic.cpp
・memo.txt
変更履歴
・停止処理の抜本改革 06/06/14
・停止処理位置を変更
・ログ取得時にPCを取得するように変更