- 注册时间
- 2006-9-9
- 最后登录
- 1970-1-1
|
[原创]在BAS中截图
作者:Final Moon(coolwell)(xioozq)曾用名太多了.这里不一一列举.
我也不知道是否有前人发过,不过昨天想到了就写了这个.如有雷同纯属巧合.
也没什么技术含量,原理就是取图象显存的数据.处理后编译成lava.
这个想法源于使用末浪的图片转换器没想到输出的是bas的dat.在这之前我还以为直接生成lava可用的dat.一高兴 就把原gif删了-_-!55555.便想了一晚上.终于想到了图象显存.
目的:将bas中任何可以显示在屏幕的图象转成16进制dat图片(lava可用)
条件:
1.有耐心
2.有耐心
3.还是有耐心.
4.知道机器图象显存地址.这里以我的tc1000s为例.6592~8191
5.pacmgr.20k.lav
6.星端编绎器 GSmaker 这里选GSmaker是因为只有GSmaker编译不需主函数.适合不懂lava的同学.
准备就续后就可以开始了.
1.先在要截的画面代码后加上以下代码.这里我不写行号了.BAS中要加上.
OPEN "BMP" FOR OUTPUT AS#1
REM 显存地址不同机型须改变
FOR A=6592 TO 8191
B=PEEK(A)
WRITE #1,B
NEXT A
CLOSE #1
PRINT "OK!"
运行完会生成BMP.DAT
2.打开pacmgr 设置用剪贴板覆盖不需确认.
再编辑刚才的dat.
在0字节处按F3 选搜索HEX.输入FF
再将FF在正常流览状态下改为2c.
因为BAS生成的DAT数字以FF相隔.我们一会要在文本编缉器(内置)用到这些数据.因次要以","相隔.对应的HEX也就是2C了.
在2C的那个字节处按一下"."再按一下输入.会把2c复制到检剪贴板.
再按<输入法>键.继须查找下一个FF.找到后按<P>.会用剪贴板中数据(2C)覆改(FF)
再就是一直按<输入法>和<P>直到找不到FF
再按空格跳到0字节处.按<输入法>看刚才有没有疏漏之处.有就继续覆盖.直到找不到FF这个HEX为止.
如果你已经作到这一部.你已经完成了90%啦!
接下来新建一个文本文档.用Pacmgr打开.在24字节处按<L>选刚才编辑的dat.从0字节开始粘帖.粘贴值为最大值.
再将文档的第10~11和19~20改为FF2F (HEX).
退出后进入文本编辑器.用如下方法稍加修改:
char bmp[]={这些是刚才的数据};
然后有两种方法:
1.保存后直接编译它.在用pacmgr打开在第21(跟据情况定 即在第 文件总长度-1600的地址)字节.按<f4> 随便选个保存位置按输入.
它会提示另存字节数.再输入 1600就ok啦 再用烩图器什么的打开刚才的文件就可以看到啦.
2.适合懂lava的同学.即这样写:
char bmp[]={刚才的数据};
void main()
{
char fp,tp[12801];
WriteBlock(0,0,160,80,1,bmp);
Refresh();
GetBlock(0,0,160,80,1,tp);
if (fp=fopen("我的图片/bmp.dat","w+"))==0){
printf("文件创建失败.");
fclose(fp);
getchar();
exit(0);
}
fwrite(tp,1,1600,fp);
TextOut(10,10,"写入成功!",1);
Refresh();
getchar();
}
看后还有不懂得就联系我:
QQ:455273859
http://xioozq.ys168.com
2007.10.28 |
|