VM在Arduino编程环境中由人为的不确定因素使用quickcode和bikes编写。 还有一个类似C语言的编译器,使用相同的方法用JavaScript编写。 是的 您已经可以急于发表评论,扔石头。 好吧,对于仍然有兴趣的人,我邀请您继续阅读。

总的来说,
这里受人尊敬的
tormozedison已经涵盖了我的工作。 但是当时有一个球形的真空原型。 现在我有了RomanS设备,他非常乐意为我免费提供实验。 该设备称为ESPboy。 它使用MCP23017芯片的紧凑性和扩展插槽与其他工艺不同。
在这里您可以了解有关他的更多信息。
如果有人对如何想到微控制器上的虚拟机这种奇怪的想法感兴趣,那么可以在破坏者的下面阅读它。
背景知识上学后,我被一名游戏制作者从yoyogames带走,并且像许多人一样迷上了yoyogames,不知道是什么。 这些弯曲的,编写得不好的演示仍然可以为朋友吹嘘,但是在互联网上,他们却淹没在类似的演示中。 我意识到自己写一个简单的游戏是多么困难,更不用说严肃的游戏了。 但是写游戏的欲望并没有消失。 当我拿到手机时,我发现了Midlet Pascal,并玩了好几年。 毕竟,我意识到为弱小的设备编写游戏比让其强大的老大哥容易。 至少,人们总是不会谈论歪手,而是谈论平台的有限功能。 然而,按钮玩家让位给传感器的另一个征服世界的机会被错过了。 不过,在某个时候,我意识到我可以使用微控制器恢复梦想。
我从在arduino uno下编写游戏开始,如果没有它你会去哪里。 那时她是我唯一的一个,我非常担心她的表现。 我试图尽可能少地闪烁。 但是耙子的路很短。 对代码的每次小小的修改都会使其一次又一次地闪烁。 我决定写一个堆叠的虚拟机。 毕竟,板上有两千字节的RAM用于存储字节和代码的数据。 但是它的速度很慢,但是由于某种原因一直缺乏记忆。 可能的重点是,我所有的自行车都是方形车轮,行驶缓慢。 然后我决定在刚从中国来的Arduino Mega上编写一个Chip-8仿真器。 当然,那时候我想为她,第一个Playstation和一些超级计算机编写一个Gameboy模拟器。 结果,我了解了主要内容。 芯片8虚拟机非常简单,但过于简单。 如此之多,以至于在编写用于乘法或除法的游戏时,必须编写一个单独的慢子程序。 因此,您需要编写VM,摆脱致命的漏洞。 这时,又有一些esp8266上市,它们的空间为160MHz。
如果您觉得虚拟机浪费资源,那么我也为此重写了我的8芯片仿真器。 原来,虚拟机位于微控制器上的虚拟机中。 您可能可以走得更远,并在8芯片上编写图灵机。
ESP小游戏引擎规格
虚拟机包含16个寄存器,每个寄存器16位,零寄存器是堆栈指针。 每个指令都是双字节的,有些指令包含两个字节的数据。 可寻址内存64KB。 对于ESP8266,可用空间为20KB。 该程序可以从SPIFFS和UART下载。 如果需要,您可以从存储卡或通过WiFi添加下载。 除了通常的算术指令和移动数据指令外,还有用于处理精灵,屏幕和声音的单独指令。 屏幕尺寸128 x 128像素。 每个点16种颜色时,屏幕占用8KB内存,与绘制子画面和粒子的缓冲区数量相同。 尽管我使用的TFT_eSPI库能够每秒更新屏幕60次以上,但我不得不将自身限制为每秒20帧。 否则,虚拟机的处理器时间不足。 您可以绘制大小为128x128像素的图块和32个精灵,并可以旋转和镜像。 为了节省内存,您可以使用单位图像或RLE压缩。 简化了物理过程:检测小精灵与小精灵和图块的碰撞,碰撞分辨率,重力。 仅当行已更改像素时,才逐行更新屏幕。 VM速度取决于每秒绘制多少行,每秒的操作数为10万至90万。 您可以使用不同的彩色屏幕,可以将图像柔和地拉伸到所需的比例。
我在这里写的一些游戏可以在这里查看。在将ESP8266用作VM的同时,我为浏览器编写了一个JavaScript模拟器。 为了不手动编辑字节码,根据我对MOS6502的汇编器的经验,添加了一个简单的汇编器。 然后,我决定添加一种高级语言。 尽管如此,我的主要任务是快速编写简单的游戏,而不是编写冗长的调试汇编代码。 在我看来,编写编译器要比添加LLVM容易。 我用JavaScript编写了代码,因为我知道它不如其他语言那么糟糕。 目前,他还远不支持C标准,并且在编译时,您很容易在无法理解的地方遇到无法理解的错误。 但这很快,因为它需要少于2000行。
现在,我为什么在这里写下所有这些。 现在您已经可以编写和运行游戏了。 但是,完美仍然遥不可及。 如果有人想帮助我确定ESP LGE或编写我自己的游戏,那么我会很高兴。 如果您认为我的想法很有趣,并且想了解更多,那么我很乐意回答您的问题。 我警告您,Arduino的代码很难阅读。 部分原因是我自学成才。 部分原因是我试图减少函数调用次数以提高工作速度。 结果,许多函数都包含了巨大的代码足迹。 因此,请勿让孕妇和儿童进入屏幕。 我将逐步解决此问题并提高可读性。
对于那些阅读过的人来说,这是一个游戏的例子。 它以少于一百行且少于1KB的形式编译。
int stickCount; char key,previouseKey,takenSticks; void redraw(){ int i;
您可以立即对其进行
测试 。 单击链接,然后单击“编译”,然后运行。 如果您想进一步了解IDE的功能,可以阅读
教程 。 谢谢您的关注。