前面有了解到RESET中断相关代码,结尾处通过一句jmp进入了无限循环,之后CPU将会在每一帧PUU进入VBlank状态时,接收NMI中断信号,

跳转至NMI代码处继续执行,直到遇见RTI指令时又返回Start结尾处继续循环,或者通过复位按钮,再次触发RESET中断,从头执行Start的代码。

这是一个比较基本的CPU运行流程,SMB在NMI中断程序中维持了整个游戏系统的运行。

其中就包括OperModeExecutionTree——场景控制例程树程序,例程树算是我对JumpEngine之后定义的一系列函数的称呼吧,其实从源码中直译应该是操作模式执行树,如果想到合适的再改。

它根据OperMode中存储的值来选择进入不同的场景模块(实现原理参看001的JumpEngine)。

SMB程序一开始会进入标题画面场景,我们能够看到游戏标题,游戏人物选择菜单等内容,如果持续一段时间没有操作,游戏还会自动进入演示demo状态自动控制游戏角色运动起来。

开始游戏之后便进入了游戏主场景,在这个场景中我们便可以通过手柄控制游戏人物在地图中前进了。

胜利场景和失败场景应该就是通关时,游戏角色自动走入水管的状态控制,以及死亡时自动跳起并落入地板之下的状态,这个有待后续验证。

其实不论什么场景,最终都需要将画面显示到屏幕中,也就是要向VRAM区域的命名表,属性表,调色板等写入信息。

关于画面元素的渲染,则是靠ScreenRoutines这个例程树实现的。

之后我们先了解下AreaParserTaskControl这个任务控制程序的代码逻辑。

最新文章

  1. F2.Net工作流引擎系列索引
  2. [CareerCup] 4.7 Lowest Common Ancestor of a Binary Search Tree 二叉树的最小共同父节点
  3. Android 定时任务高度【schedule】与【scheduleAtFixedRate】差别
  4. directUI
  5. CSS3动画变形transition
  6. linux crontab 定时命令
  7. 完整的Ajax实例
  8. EasyUI - 操作 Tree 控件
  9. 如何有效抓取SQL Server的BLOCKING信息
  10. selenium-webdriver(python) 11
  11. 用JAVASCRIPT获得当前页的来路地址URL的五种方法
  12. Servlet3.0新特性使用详解
  13. JVM垃圾收集相关经常使用參数
  14. 分析AJAX抓取今日头条的街拍美图并把信息存入mongodb中
  15. 3D数学基础(四)四元数和欧拉角
  16. idea代码快捷
  17. CMM/CMMI的基本概念
  18. volatile原理解析
  19. POJ-2018 Best Cow Fences(二分加DP)
  20. POJ 3481 SBT做法

热门文章

  1. Spring Boot将Mybatis返回结果转为驼峰的三种实现方式
  2. TeamViewer11 万全免费
  3. Javascript-异步详解
  4. 关于XSS弹窗的小姿势
  5. 查看 Nginx 的日志目录
  6. 【linux题目】第二关
  7. SaaS 公司如何切入大客户
  8. Clickhosue 强大的函数,argMin() 和argMax()函数
  9. strip()的正则表达式版本
  10. CodeForces - 1047CEnlarge GCD(这题很难,快来看题解,超级详细,骗浏览量)