作者chenglap (无想流流星拳)
看板Old-Games
标题Re: [闲聊] 天使帝国制作人兼程式试用AI解读其源代码
时间Fri Apr 28 15:45:09 2023
※ 引述《alinwang (kaeru)》之铭言:
: 2.组合语言依然是我认为最神的语言.
: 光是能把它丢在显示记忆体上执行,这一点我就觉得很有趣了.
: 玩家绝对想不到萤幕上出现的刀光,其实图形的本体是一段程式码.
: {在没有哪个程式语言能这样搞的.
: 此时脑中出现一个不曾存在的画面..
我真的用组合语言写过游戏...
我小时候的时候,电脑是捡回来的,当然是没得挑,那是一部 80286,在
1990 年代来说,也是很落伍的机器(8 mHZ 的 CPU)。所以用组合语言写
游戏不是一个选择,而是没有选择。
到底那时候的电脑,有多需要组合语言呢?我举一个例子,懂写程式的人
应该也有用过 for loop 吧。而那个时候,只要你做一个 for loop 是由
1 数到 1000,里面甚麽都不做,已经可以做到让软体停下来差不多半秒
至一秒的效果。那时的电脑光是用 C++ 做 for loop 都会出现明显的效
能差别。
如果是做图像处理的东西,基本上你没有办法不用组合语言。
现在的程式员,一出身有些东西是理所当然的,例如你用 Unity 之类新
的平台,透明色和 alpha channel 这种东西是必要的,你做游戏的话总
有不同形象的图,总不能全部都是矩形吧?可是在 DOS 的年代,并没有
alpha channel 和透明色这种东西。
一是你的所有图都是矩形,你看早期游戏如创世纪,他的图就是全部都
是矩形的。但是如果你想像玛利奥一样出人形的图呢?那麽你就需要挑
一个颜色当透明色,然後做一个 mask,再将这个 mask 跟图和背景做一
次 XOR 运算... 如果你不是用组合语言的话,做完这个运算这个游戏基
本上都慢到不用玩了。
所以要做到这个这麽基本的效果,你都一定要用组合语言,另一点就是
输出中文,通常是直接偷中文系统的字形档,读这个东西再输出也很需
要效能。结果再不想学你还是有学,不学组合语言根本做不出像样的东
西出来。
不过实际上整个用组合语言写还是很不人道的,大部份人还是选择权衡
一下,在 C++ 里面用 inline assemebly,混合在高级语言(C++)用。
去到今天这种是屠龙之技,完全没有用了。
--
我的 patreon: patreon.com/chenglap
大部份文章是免费公开可以看的
--
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Old-Games/M.1682667911.A.C4F.html
※ 编辑: chenglap (58.152.242.151 香港), 04/28/2023 15:46:30
1F:推 POWERPC: 现在有ASM64,跟用高阶语言差不多了,更不用说精简指令集了 04/28 17:09
2F:推 if4: 厉害 XD 04/28 18:27
3F:推 Uber: c大上次出现是2020年 04/28 19:14
4F:推 katana89: 是C大!! 04/29 00:09
5F:推 Krix: 推C大!! 04/29 01:59
6F:→ chenglap: 欢迎来探我,我有空才能来 ptt,最近开发工作多太忙了。 04/29 05:46
7F:→ chenglap: 在 facebook 能找到我 04/29 12:29
8F:→ butts: 一样是286,我从basic开始耶,要我mov 02,ah,我没办法 04/30 19:05
9F:推 darkseer: 推 屠龙之技啊 05/05 03:41
10F:→ hmsboy: 我印象是写组合语言烧进80X86 05/22 20:41