易码技术论坛

 找回密码
 加入易码
搜索
楼主: yan

[工具] 编译器Y2.26最终版 08/5/10更新

[复制链接]
发表于 2007-8-7 14:59:50 | 显示全部楼层
还在上学啊
要是能专职参与lvc就好了
 楼主| 发表于 2007-8-7 15:05:58 | 显示全部楼层
专职参与?
发表于 2007-8-7 15:10:02 | 显示全部楼层
就是打工喽
 楼主| 发表于 2007-8-7 15:21:54 | 显示全部楼层
哦,可惜了。
 楼主| 发表于 2007-8-12 03:02:56 | 显示全部楼层
鉴于4灰度软件的流行,制作了这个链接库,可以实现2色,4色,16色图片数据的任意转换

原型:int Chg2to4(int &pic4[],char &pic2[],int len,char bcolor,char fcolor);
功能:图片数据转换。
说明:将2色图片扩展成4色。将pic2所指的地址开始扩展len个字节,扩展后的图片数据放在pic4所指的地址中,并返回其数据长度。图片数据用bcolor(背景色),fcolor(前景色)填充,其中bcolor和fcolor取值范围:0~3。

原型:int Chg4to2(char &pic2[],char &pic4[],int len);
功能:图片数据转换。
说明:将4色图片压缩成2色。将pic4所指的地址开始压缩len个字节,压缩后的图片数据放在pic2所指的地址中,并返回其数据长度。

原型:int Chg2to16(long &pic16[],char &pic2[],int len,char bcolor,char fcolor);
功能:图片数据转换。
说明:将2色图片扩展成16色。将pic2所指的地址开始扩展len个字节,扩展后的图片数据放在pic16所指的地址中,并返回其数据长度。图片数据用bcolor(背景色),fcolor(前景色)填充,其中bcolor和fcolor取值范围:0~15。

原型:int Chg16to2(char &pic2[],char &pic16[],int len);
功能:图片数据转换。
说明:将16色图片压缩成2色。将pic16所指的地址开始压缩len个字节,压缩后的图片数据放在pic2所指的地址中,并返回其数据长度。

原型:int Chg4to16(int &pic16[],char &pic4[],int len,char &color[4]);
功能:图片数据转换。
说明:将4色图片扩展成16色。将pic4所指的地址开始扩展len个字节,扩展后的图片数据放在pic16所指的地址中,并返回其数据长度。图片数据用color(调色板)填充,其中color长度为4B,比如有一个调色板{0,5,10,15},表示:4灰度里的调色值0会扩充成调色板里的第一个值:0,依此类推:4灰度里的调色值2会扩充成10(意思是4灰度里的2阶灰度的点经过扩充后变成16灰度里的10阶灰度)。调色板的作用是将4灰度里的各个色阶扩充成调色板对应的16灰度里的色阶。

原型:int Chg16to4(char &pic4[],char &pic16[],int len);
功能:图片数据转换。
说明:将16色图片压缩成4色。将pic16所指的地址开始压缩len个字节,压缩后的图片数据放在pic4所指的地址中,并返回其数据长度。

举例:
#include <ChgPic.y>
char pic2[1600]={......};//黑白图片数据
char pic4[3200];
void main()
{int i;
SetScreen(0);printf("转换中...");
Chg2to4(pic4,pic2,1600,0,3);
SetGraphMode(2);
WriteBlock(0,0,160,80,1,pic4);
Refresh();
getchar();
SetGraphMode(1);
}
 楼主| 发表于 2007-8-12 03:15:56 | 显示全部楼层
下一版本将修正无法删除*.h的bug和Lumj提出的编译系统的bug。更新4灰度库,支持printf,putchar等,采用了gcwy的方法。
重要的是:在链接库中添加了系统相关的函数,如:
findfile//使用中断而不是fopen的形式,可以读取根目录
getcurdir//获取当前目录
bell//响铃,并调节其频率
ChkBattery//检测电池电力
nread//读取nor上的数据,与fread相对
nget//读取nor上的1B数据,与getc相对
PlayWordVoice//单词发音,TC808里的那个
还可以加入反查调节屏幕亮度等需要调用系统中断的函数.
发表于 2007-8-12 10:30:11 | 显示全部楼层
我用的是TC800内核,编译结束后,编译成功的程序自动放在lava里面
而机子默认的lav文件存放应该在lava2文件夹内~~~
这样编译后还要从lava里复制粘到lava2里,希望改下

ps:以前的2.10似乎没这个问题发生,不过下了2.17后出现的,我用的自动安装,选的TC800
发表于 2007-8-12 11:42:17 | 显示全部楼层
啊,确实阿
4灰度下面printf会出现错误的~~

还有~~
WriteBlock里面
int x,int  y
的数码是负数时
可能司机
发表于 2007-8-12 14:48:44 | 显示全部楼层
呵呵~~
4灰度越来越完美了~~~
支持搂住~~~
 楼主| 发表于 2007-8-12 15:34:40 | 显示全部楼层
哦,知道了.
发表于 2007-8-12 16:21:08 | 显示全部楼层
1110楼了,这贴凶
发表于 2007-8-12 16:22:20 | 显示全部楼层
yan 的 成就值得这么多的帖子啊
发表于 2007-8-12 17:03:35 | 显示全部楼层
星软第一高楼
发表于 2007-8-12 17:19:36 | 显示全部楼层
引用第1113楼a198911182007-08-12 17:03发表的“”:
星软第一高楼
第3的~~~
不过是第一非灌水高楼
发表于 2007-8-12 18:01:55 | 显示全部楼层
printf是用我的方法?
那应该是通用的啊
怎么会不能用
发表于 2007-8-12 18:07:09 | 显示全部楼层
再给点建议
这个getchar()也得改一改啊
因为在按热键退出时会由于没有切换为2色模式
所以会有些问题的
也就是改INT$C006
以下是NC3000的代码


;四灰度下用JSR Inkey代替INT $C006
Inkey:
  LDA $C7
  BMI inkey1
  LDA #$00
  STA $03F6
  CLC
  BCC Inkey
inkey1:
  LDA $C7
  CMP #$A1
  BEQ inkey2
  CMP #$98
  BEQ inkey2
  CMP #$80
  BCC inkey3
  CMP #$8D
  BCS inkey3
inkey2:
  LDA $C7
  PHA
  JSR Regain  :切换为2色
  PLA
  STA $C7
inkey3:
  INT $C006
  RTS
 楼主| 发表于 2007-8-12 18:59:29 | 显示全部楼层
想法不错,考虑加入。
发表于 2007-8-12 19:04:26 | 显示全部楼层
不支持热键的同时,也浪费了电力吧
 楼主| 发表于 2007-8-13 00:43:39 | 显示全部楼层
不支持热键?
什么意思?
另外切换到4灰度,机器比较耗电么?
发表于 2007-8-13 00:47:10 | 显示全部楼层
就是用热键退出时会将系统不能从4色模式下切出来

而还停留在4色
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-14 10:32 , Processed in 0.014356 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表