qiufuyu123 / CasioEmuNeo

卡西欧classwizard系列模拟器,支持调试,rop一件注入
GNU General Public License v3.0
38 stars 8 forks source link

MemEdit: 支持色彩标记 #11

Closed bczhc closed 5 months ago

bczhc commented 5 months ago

Screenshot_2024-04-15_21-35-37

只是个初步尝试,imgui我不会,纯凑着数据实现出来的,而且右边的ascii view没有做。目前是通过配置文件(暂时写死了"./colored-span")标记区域和颜色的,但可以动态加载,程序会每1s检测一下文件有没有改动。

后面还可以让指针停留在一块区域时显示tooltip。

灵感:https://github.com/ocornut/imgui_club/pull/27 可惜此PR修改的hex edit版本太老了,现在已合并不了

不知有没有人愿意完善这个功能

bczhc commented 5 months ago

加入了spans描述显示:

image
qiufuyu123 commented 5 months ago

可以可以 👍 可以尝试把区域描述写到model.lua里,然后加载不同的机型读取不同的区域范围

bczhc commented 5 months ago

都写到model.lua里没必要了,我把配置改成读<model>/mem-spans.txt了。感觉差不多了,有时间就review下吧。

这是目前配置的一个示例:

# Format:
# - 0x<start-hex>,<length>,<color-hex>[,<description>]
# - 0x<start-hex>,0x<end-hex>,<color-hex>[,<description>]

0xd180,200,ff8500,输入区
0xd248,200,ff0000,回放区
0xd318,2,ffff00,小端计数器
0xd310,10,ffff00,随机数种子

# 变量存储开始
# 1M Ans A B C D E F x y PreAns @
0xD31A,10,00ffcb,M
0xD324,10,ff00e0,Ans
0xD32e,10,00ffcb,A
0xD338,10,ff00e0,B
0xD342,10,00ffcb,C
0xD34C,10,ff00e0,D
0xD356,10,00ffcb,E
0xD360,10,ff00e0,F
0xD36A,10,00ffcb,x
0xD374,10,ff00e0,y
0xD37E,10,00ffcb,PreAns
0xD388,10,ff00e0,变量@

# 历史记录开始
0xD392,1,88ffff00,历史记录开始
qiufuyu123 commented 5 months ago

主分支暂时去掉了 filesystem 的使用 建议以后提交也不要使用 filesystem 任何函数,因为该库在 gcc8.1 (当前mingw64)版本中无法使用 mingw bug

然后把那个定时检测文件更新的去掉了,这玩意有点耗cpu(?)

bczhc commented 5 months ago

检测文件更新不至于吧,倒是挺方便的,实时更新。unistd的sleep是暂停cpu时间片的,不是spin sleep。代码有些地方写得随意,review意见可以给出我按着改

qiufuyu123 commented 5 months ago

那也行吧,但是你看看能不能不用filesystem的接口实现时间检测什么的,因为filesystem mingw用不了 其他没啥

Physics365 commented 4 months ago

可以加一条缓冲区。新的配置:

# Format:
# - 0x<start-hex>,<length>,<color-hex>[,<description>]
# - 0x<start-hex>,0x<end-hex>,<color-hex>[,<description>]

0xd180,200,ff8500,输入区
0xd248,200,ff0000,回放区
0xd318,2,ffff00,小端计数器
0xd310,10,ffff00,随机数种子
0xd522,200,54ff9f,撤消区

# 变量存储开始
# 1M Ans A B C D E F x y PreAns @
0xD31A,10,00ffcb,M
0xD324,10,ff00e0,Ans
0xD32e,10,00ffcb,A
0xD338,10,ff00e0,B
0xD342,10,00ffcb,C
0xD34C,10,ff00e0,D
0xD356,10,00ffcb,E
0xD360,10,ff00e0,F
0xD36A,10,00ffcb,x
0xD374,10,ff00e0,y
0xD37E,10,00ffcb,PreAns
0xD388,10,ff00e0,变量@

# 历史记录开始
0xD392,1,88ffff00,历史记录开始
bczhc commented 4 months ago

这个无所谓了,就是自己做做标记用的。比如我现在就用的是:

# Format:
# - 0x<start-hex>,<length>,<color-hex>[,<description>]
# - 0x<start-hex>,0x<end-hex>,<color-hex>[,<description>]
# Color Hex: RRGGBB/AARRGGBB

0xd180,200,ff8500,输入区
0xd248,200,ff0000,回放区
0xd318,2,ffff00,小端计数器
0xd310,10,ffff00,随机数种子

# 变量存储开始
# M Ans A B C D E F x y PreAns @
0xD31A,10,00ffcb,M
0xD324,10,ff00e0,Ans
0xD32e,10,00ffcb,A
0xD338,10,ff00e0,B
0xD342,10,00ffcb,C
0xD34C,10,ff00e0,D
0xD356,10,00ffcb,E
0xD360,10,ff00e0,F
0xD36A,10,00ffcb,x
0xD374,10,ff00e0,y
0xD37E,10,00ffcb,PreAns
0xD388,10,ff00e0,变量@(4B)

0xD392,10,00ffcb,变量@(4C)
0xD39C,10,ff00e0,变量@(4D)
0xD3A6,10,00ffcb,变量@(4E)
0xD3B0,10,ff00e0,变量@(4F)

0xDC02,10,ff00e0,变量$(24)

# 历史记录开始
0xD392,1,ffff00,历史记录#1开始
0xD39F,1,ffff00,历史记录#1算式开始

反正配置文件是设置成了<model>/mem-spans.txt,如果有分发价值的话倒是可以建个共同维护的这样的表,标记出一些常用通用的共同区域。