NESASM教程总述

本教程是关于使用NESASM汇编器为任天堂娱乐系统(NES, Nintendo Entertainment System)编程的。该教程由浅入深,简化了NES汇编学习过程。在进一步尝试前你几乎必须了解另一种汇编语言,因为本文假设你(哪怕一丁点)基本汇编常识是具备的。例如了解GBA或者Intel x86汇编将对理解基础有很大帮助。祝你在学习NES汇编编程的旅途中一切顺利!

第一天——开始NES汇编

第二天——源代码文件结构

第三天——关于NES编程

第四天——制作并载入调色板

第五天——显示主角

第六天——跳转和按键处理

第七天——使用内存

第八天——比较

第九天——运动主角程序

第十天——主角DMA

第十一天——JSR指令

第十二天——VBlank和终端

第十三天——背景

第十四天——声道1-3

第十五天——噪声声道

第十六天——位掩码/位翻转

第十七天——主角属性字节

第十八天——背景滚动

第十九天——简化大的载入

第二十天——使用SRAM

第二十一天——堆栈

第二十二天——映射器2

第二十三天——属性

第二十四天——按键的完整字节

第二十五天——其他指令

以下内容为译者所述。

首先讨论下为什么要学习NES编程?这样一个过时的技术,学会了又不能升职加薪,何必浪费时间去研究呢?

我认为学习的动机有以下三种:

1. FC游戏记载了太多儿时乐趣,学习也是重温的过程(这对80后很有号召力);

2. 通过了解FC设计,可以更好地将软硬件知识结合在一起。我们的专业课都是分立的几个点,数字电路、单片机、汇编语言、体系结构、图像处理、音频处理、编译原理、高级程序设计语言、数据结构、算法……只有通过这样一个完整的项目我们才能知道扎实的专业知识能创造多么经典又好玩的游戏产品;

3. 对于一些游戏,如果能利用已有知识,Hack得到一个新版本(无限生命、强攻击力、隐藏角色、隐藏物品……甚至可以自己编写机器人实现通关),多有成就感!如果你对原始的NES游戏不满,比如分辨率低、色彩单一、卡通造型丑陋,完全可以利用自己的双手创造一个更好的版本;

接下来讨论学习的方向。我认为宏观上可分为两个方向:自底向上和自顶向下。这符合软件工程学。

自底向上,即先学习硬件基础,摸清基本原理如程序装载,PPU,手柄,音频,自己编写相应的库作为基础模块,再设计图形资源、音乐资源,整合在一起形成新的应用层,接着开发游戏场景、情节,逐渐形成新的游戏。这个难度会比较大,周期也很长,而且程序需要反复测试,debug会比较痛苦。

自顶向下,即从一个现有的游戏入手,通过反汇编、解析资源、分析算法,学习内在的各种库(不用自己写),获取大量游戏素材(不用自己设计),学习程序流程结构和游戏的规则(对于设计新游戏会有启发),逐步细化,得到自己想要的东西。这个难度较小,可以满足不同品味的人。

时间: 2024-10-09 21:05:24

NESASM教程总述的相关文章

Linux makefile教程之总述二[转]

Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令. 2.隐晦规则.由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的. 3.变量的定义.在Makefile中我们要定义一系列的变量,变

很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用make更新函数库文件 后序 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>

设计模式之总述篇

以下是对<Head First 设计模式>中提到的OO原则和设计模式的总结. OO原则和设计模式的联系:模式可以让我们建造出具有良好OO设计质量的系统.模式被认为是历经验证的OO设计经验. OO设计原则: 1.封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起: 2.多用组合,少用继承:良好的OO设计必须具备可复用.可扩充.可维护三个特性. 3.针对接口编程,而不是针对实现编程:"针对接口编程"真正的意思是"针对超类型(sup

暴力枚举总述

暴力枚举总述 暴力枚举就是就是把所有可能的答案一一列举出来再加以判断.虽然方法有些笨,但问题规模不大或者没有好的解法时,这也是一个能用的方法. 问题一:输入1~9范围内的整数n,字典序输出1~n这n个数的全排列. 分析:每个数字都是n位数,可看做由前缀A和后缀B组成.初始时前缀A为空.函数伪代码见下: void f(A,B){ //要求的全排列为:已确定的字符串A加上B集合中数字的全排列 if(B为空)  {输出全排列,return;} for(i=1;i<=n;i++){ 若数字i在B中,f(

Solr4.8.0源码分析(5)之查询流程分析总述

Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilter的dofilter开始.dofilter包含了对http的各个请求的操作.Solr的查询方式有很多,比如q,fq等,本章只关注select和q.页面下发的查询请求如下:http://localhost:8080/solr/test/select?q=code%3A%E8%BE%BD*+AND+l

新浪微博SDK开发(1):总述

花了几天时间,消耗了九牛六虎之力,新浪微博大部分API已经封装,但有部分API实在太难封装. 说起这封装,我必须严重地.从人品和技术层面鄙视一下新浪的程序员,实在太菜了.估计菜鸟都被大企业吸收了,菜到连面向对象都不懂. 同样的内容,返回的JSON对象居然会出现不同结构,更可恶的,像公共API中获取城市列表,国家区域代码列表的返回结果,实在让人不得不发笑.那些JSON用JS读起来都困难,更何况要进行封装呢.根本没法封装,因此在论坛上抱怨的人不少,可是新浪官方呢,置之不管,就当没看见一样,看来,大企

关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)

在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的.但是现实情况是像淘宝.京东这样的大型动态网站在承担高并发的情况下任然能保证快速的响应,这其中有什么样的技术手段可以达到动态网站支撑高并发的场景了,这也许是每个做web开发的朋友都很感兴趣的问题,今天我将写一个新的系列来探讨下这个问题,希望我的经验和研究能给大多数人

多进程编程总述

1.进程创建:fork函数族 fork()和vfork()函数的区别: (1) fork ( ):子进程拷贝父进程的数据段,代码段 vfork( ):子进程与父进程共享数据段 (2) fork( )父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec或exit 之后父进程才可能被调度运行.也就是说父进程在子进程调用exec或exit函数族之前一直保持阻塞. (3) vfork( )保证子进程先运行,在它调用exec 或ex

Web应用程序系统的多用户权限控制设计及实现-总述【1】

中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. 本文以实际项目开发中权限管理,用户管理模块为背景,通过数据库说明,开发代码说明,解析一个Web应用程序系统多权限,多用户配置管理的来龙去脉.特别说明: 1.实例所用数据库为sql sever 2012; 2.开发技术:ASP.NET MVC 4.0; 3.网站前台页面设计:EasyUI 1.4.3;