好.我希望它不会被关闭,因为我有25年的好奇心,我很想理解这个伎俩.
在商品64中,6569 VIC无法解决边界问题.您所能做的就是在中心区域绘制像素,即光标移动的像素.边框总是均匀的,虽然你可以用捅53280改变它的颜色,如果我没记错的颜色.
尽管如此,我清楚地记得游戏介绍边框的特色是图形,就像完全可以寻址一样.我试图理解它是如何工作的,但从未达到过这一点.传说说这是一个聪明的精灵用途,在某些情况下,可能会被边界划出,但我不知道它是否是一个都市传说.
编辑:只需从提供的链接中读取此内容即可
精灵在垂直光栅线上复用(超过8个精灵,有时多达120个精灵).在Group Crest于2007年5月发布Krestage 3之前,人们普遍认为在一条栅格线上不会出现超过8个精灵,但是分配新的Y坐标会使其重新出现在屏幕下方.
这是邪恶的....你击败了栅格并重新定位精灵然后到达那里......
我正在寻求开发一种新的Forth系统,旨在使游戏开发更容易在一个或几个复古的控制台平台上.我是第四个初学者,需要你帮助决定从哪个Forth代码库开始移植.
我基本上都在寻找特定Forths相互之间的优缺点.我已经阅读了JonesFORTH的来源,以及对它的赞美和批评,以及对ANS的讨论,不幸的是,我感到很困惑.据我所知,Forth社区似乎在标准遵守问题上相当粗暴地分裂,两个阵营都提出了非常好的论据,说明为什么标准既好又坏.然而,我似乎无法找到关于标准变化究竟是什么的良好实用建议,除了一般意义上它使事情变得比他们可能需要的更复杂和更臃肿.
我希望让程序员和业余爱好者更容易开发,因为他们在组装或C方面的发展前景吓坏了,所以我倾向于更简单的Forth,但我真的不太了解Forth还没有做出一个有教养的决定.
对于复古计算项目,我需要将20世纪70年代8080汇编语言的主体翻译成x86形式.曾经有一段时间,这样做的工具是英特尔推出80x86系列市场营销的关键部分.但我的谷歌搜索技巧似乎不能找到原始工具或类似的东西.有谁知道这样的工具是否可以在任何地方使用?
编辑
我已经决定添加一些背景信息,以便更清楚我想要做的事情.这是为了普遍的兴趣,也可能是为了更多的反馈.
在之前的一个项目中,我看了20世纪70年代的国际象棋程序Microchess,在作者的祝福下,Peter Jennings在现代机器上运行.彼得在他的网站上讲述了Microchess的故事,并提供了6502汇编语言源.我的贡献现在已添加到故事中,可以在以下位置找到;
http://benlo.com/microchess/microchess9.html
我处理该项目的方法是手动对代码进行最低限度的转换,以便与C语言语义相匹配,例如我对此进行了转换;
LDY #$0F ; CALCULATE
LDA SQUARE ; POINTS
ELOOP CMP BK,Y ; CAPTURED
BEQ FOUN ; BY THIS
DEY ; MOVE
BPL ELOOP
FOUN LDA POINTS,Y ;
Run Code Online (Sandbox Code Playgroud)
对此;
LDYi (0x0F); // CALCULATE
LDA (SQUARE); // POINTS
ELOOP: CMPx (BK,Y); // CAPTURED
BEQ (FOUN); // BY THIS
DEY; // MOVE
BPL (ELOOP);
FOUN: LDAf (POINTS,Y);
Run Code Online (Sandbox Code Playgroud)
我创建了匹配所有6502指令的C预处理器宏,例如LDYi()使用(i)mmediate值加载模拟寄存器Y.
一段时间后,我发现一个德国人安德烈·阿德里安已经接受了我的代码,并添加了一个界面,使代码可以从现代国际象棋GUI中驱动.非常酷,我希望我能想到这一点.这可以在他的网站上看到;
http://www.andreadrian.de/schach/index.html
在同一页面上(我使用谷歌翻译),他链接到Sargon的原始版本,另一个经典的国际象棋程序,可能是复古的国际象棋经典,并表示希望有人将这个代码恢复生活,就像我做的那样Microchess(我认为无论如何谷歌翻译都是这样说的).好吧,好的,我来这里服务!这次我也不会忽视添加GUI界面,或者我可能会与Andre合作.
Sargon汇编语言在这里;
http://web.archive.org/web/20040217034933/madscientistroom.org/chm/Sargon.html
安德烈删除了一切无关的东西,只留下汇编语言代码;
http://www.andreadrian.de/schach/sargon.asm
现在,情节变浓了.安德烈试图使用模拟器让这些东西自己工作.(编辑3jan2012 - 安德烈已经向前推进了很多,现在您可以在现代PC上运行旧的Sargon代码 - 请参阅下面的答案和上面链接的网站).但是我认为他并不理解这种并发症.Sargon代码实际上是针对Z80的.但是汇编语言不是普通的Z80组装,而是8080汇编,只有英特尔风格的助记符只能用于Z80的说明.一些背景; Zilog Z80是Intel 8080的第三方后代.它使用8080指令集的二进制兼容超集.Zilog决定为Z80提供更清晰,更正交但完全不同(源级)的汇编语言.第三个(第四个?)派对明确认定这是一个糟糕的决定,并制作了另一个英特尔风格的Z80汇编程序,其中Z80扩展以英特尔的方式表达.或者他们可能只是使用现有8080汇编程序的宏功能添加了Z80扩展.没关系; 复杂的是Sargon代码使用了这个相当奇怪的混合汇编程序. …
有时在ZX Spectrum Basic中进行编码时,我需要评估由两个操作数和逻辑xor形成的逻辑表达式,如下所示:
IF (left operand) xor (right operand) THEN
Run Code Online (Sandbox Code Playgroud)
由于ZX Basic只知道NOT,OR和AND我不得不求助于某种奇特的计算,其中包括左/右操作数的多种用法.这很尴尬,因为它消耗时间和内存,如果你在8位机器上工作,这两者都很稀疏.我想知道是否有一个模仿xor运算符的巧妙技巧.
为了测试结果,我提供了一个小代码示例:
5 DEF FN x(a,b)=(a ??? b) : REM the xor formula, change here
10 FOR a=-1 TO 1 : REM left operand
20 FOR b=-1 TO 1 : REM right operand
30 LET r=FN x(a,b) : REM compute xor
40 PRINT "a:";a;" b:";b;" => ";r
50 NEXT b
60 NEXT a
Run Code Online (Sandbox Code Playgroud)
你能帮我找一个高性能的解决方案吗?到目前为止,我尝试过,DEF FN x(a,b)=(a AND NOT b) OR (b AND NOT a)
但它有点笨拙.
编辑:
如果你想测试你的想法,我建议使用BasinC …
我最近感到无聊并启动了我的旧Mac OS Classic模拟器,然后怀念为系统编写旧式应用程序.所以,我的问题:
这纯粹是为了好玩,所以不要担心这是多么不切实际.我知道.
我只是在youtube上观看了超级马里奥兄弟-1世界故障,我真的开始怀疑这些游戏背后的代码.使用了哪种语言?视频游戏控制台的操作系统怎么样?有没有关于这个主题的资源的网站?(我是一个90年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但是如果你愿意的话,可以随意把它作为一个wiki并包含有关视频游戏编程资源的链接)
我正在为Mac OS X编写一个Mac OS 9"兼容层",因为我最近对这种怀旧感到震惊,并且因为所有当前的解决方案都要求你在虚拟机中运行Classic,它不支持所有应该运行的东西我想用.
为了实现这一目标,我实现了一个PEF可执行加载器,一个可以桥接到本机代码的PowerPC解释器,以及一些Mac OS 9库.整个事情都有点工作:解释器中有一些错误,但这是预期的,我正在努力.
到目前为止,我最大的问题是PowerPC程序是32位,所以指针需要是32位.为了满足这个约束,目前我只为i386编译.但是,当我试图围绕该核心进行构建时,它变得越来越受限制(例如,您不能将ARC与32位Cocoa应用程序一起使用).更不用说让PowerPC代码访问主机进程可以访问的所有东西并不是超级安全的.
我设计了"平台",最终切换到64位:解释器需要一个基地址,所有PowerPC指针都被该基地址偏移.(出于性能和设计原因,有一个将PowerPC地址转换为本地地址的地图是不可能的.)
由于64位地址空间有足够的空间容纳四十亿个独立的32位地址空间,这听起来像是一个很好的方式.
但我仍然有一个问题:我需要确保我能够在该地址范围内分配内存,因为PPC解释器不可能访问它之外的任何内容.
我现在正在考虑两种解决方案:
mmap
,但mmap
会要求页面倍数的分配,这对我来说似乎非常浪费,因为我需要为每个分配一个完整的页面,无论它多么小(尽管考虑到经典 - 这实际上可以是好的)与现代计算机相比,Mac的内存非常少;mmap
保留一个完整的0x100000000个字节PROT_NONE
,然后mprotect
在需要的页面在需要时实际分配内存,并把他们带回PROT_NONE
时,他们没有什么用处了.它在纸面上看起来不错,但这意味着我必须实施malloc
替代品.所以我该怎么做?是否有内置机制让我尝试malloc
在特定地址范围内分配内存?否则,是否有一个良好的,可读的,开源的实现,malloc
我可以自己?
我正在做一些有趣的复古编程.我想要创建的是使用EGA图形的DOS游戏,但我在网上找到一个很好的参考有点麻烦.每个谈论做DOS编程的人都假设程序员会使用模式13h,虽然有些页面提到了其他图形模式,但我还没有找到一个讨论正确使用的模式.
这就是我现在要努力的方法:
//------------------------------------------------------------------------------
// DOS graphics test
//
// Thanks to the following links:
// http://gamebub.com/cpp_graphics.php
//
// Written for Digital Mars C compiler to be compiled as a DOS 16 bit binary.
//------------------------------------------------------------------------------
#include <dos.h>
#include <stdio.h>
#define SCREEN_WIDTH 320;
#define SCREEN_HEIGHT 200;
unsigned char far *vram = (unsigned char far *)0xA0000000L;
//------------------------------------------------------------------------------
void set_video_mode(unsigned char mode)
{
union REGS in, out;
in.h.ah = 0;
in.h.al = mode;
int86(0x10, &in, &out);
}
//------------------------------------------------------------------------------
void plot_pixel(unsigned int x, unsigned int …
Run Code Online (Sandbox Code Playgroud) 继续" 如何编写和编译Amiga应用程序? "问题,需要哪个开发库才能从软盘启动Amiga应用程序?
更新:(2012-04-10)为了解决问题的解决,我编辑了标题和正文,只关注图书馆.仍然缺少从软盘部署工具启动,可以在另一个问题中询问.
很久以前,在一个遥远的星系中,有微型计算机运行BASIC并且具有简单的声音命令,这使得机器发出哔哔声,并以各种奇怪和奇妙的方式发出嘶嘶声.
除了发出一些好听的声音之外,它还非常有用,因为您可以听到代码的结果.
我希望能够通过其"信封"命令获得BBC Micro等机器的声音功能,但无需使用模拟器,学习或重新学习BASIC各种方言的所有怪癖.
我也想避免生成midi或wav文件,但想直接用代码制作声音.我已经尝试过winsound.Beep,但在大约4个音符之后,音符之间的时间似乎是随机的,而且即使像ZX频谱这样的功能也没有任何功能.
有谁知道如何用Python做到这一点?