最近看linux kernel的源码看到天天做梦梦到代码,于是周日想放松一下,玩会游戏,无奈360已坏,还是逃不过三红的魔爪。PS2实在太画面不能忍,于是倒怀恋起 FC的游戏来,最想玩的当然是吞食天地2中文版阿。于是在ubuntu上装了个FCEUX,结果竟然玩不来这个经典的游戏。于是怒了,开始研究fceux 源码,又打开台式机的xp分析virtualNes的源码。还查了很多相关资料,尤其是国外的一个NESDEV网站,资料比较全。于是一发不可收拾,周日 竟然搞了一天,看了不少资料,发觉FC的体系还是蛮好玩的,那时的游戏程序员不容易阿,想想现在的程序员,活得太抽象了,太PM了。
星期天基本原 理掌握后,星期一一下班冲回家开始debug代码,最后发觉是mapper的问题,网上流传的几个版本都是mapper4的,但是标准的mapper4的 cart应该rom最大就512K,NESDEV上的wiki有相关资料,而virtualNes却认为它是640K,而吞食天地2中文版也是640K 的,而且它是和mapper4一样都是基于mmc3这块board的,盗版商外星科技果然强大,竟然改版过。于是准备开始改动src/boards /mmc3.cpp,

刚刚想把
static void GENPWRAP(uint32 A, uint8 V)
{
 setprg8(A,V&0x3F)
}
改 成
setprg8(A, V&0x4F);
来从512K,改到640K,具体原理以后有空再解释。

然后搜了一下 0x4F,结果有惊人发现,哈哈!

// ---------------------------- Mapper 198 -------------------------------

static void M198PW(uint32 A, uint8 V)
{
  if(V>=0x50) // Tenchi o Kurau II - Shokatsu Koumei Den (J) (C).nes
    setprg8(A,V&0x4F);
  else
    setprg8(A,V);
}

void Mapper198_Init(CartInfo *info)
{
 GenMMC3_Init(info, 1024, 256, 8, info->battery);
 pwrap=M198PW;
 info->Power=M195Power;
 info->Close=M195Close;
 wramsize=4096;
 wramtw=(uint8*)FCEU_gmalloc(wramsize);
 SetupCartPRGMapping(0x10, wramtw, wramsize, 1);
 AddExState(wramtw, wramsize, 0, "WRAMTW");
}

红 色字就是吞食天地2啊。原来是mapper198阿,fceux已经做了,那代码都不用改了,惊喜!!! 可惜当我发现的时候是星期二的早晨,哈哈,早上起来搞代码果然有效率阿。可惜时间不够了,只得上班去。
在公司的时候继续看无聊的java代码。
又 下班了,一到家,吃完饭就开始hack rom,用vi -b filename, %!xxd, 将第7,8个字节0x4300改成0x63c0,就是0x04(mapper4)改成0xc6(mapper198), 然后%!xxd -r; wq;本以为应该搞定了。
结果一试,我靠Segement fault,结果又debug一下fceux,有些代码写错了,改了改,再试,结果图像出来了,感动啊,我下的那个版本还不错,战斗不闪,开始爽 喽。。。。。。。记得选项里面要设置成PAL并重启生效。
下面附上修改后的fceux源码和修改后的rom,希望有爱的同学,可以在linux上面重温一把。安装方法见里面的 INSTALL文件。
fceux: http://docs.google.com/leaf?id=0B1JTQiBNgozPZTkwNmJkMmUtNWNjZC00MjMxLTk0ZTUtOGNmMDBiZDdlZTk1&hl=en

rom: http://docs.google.com/leaf?id=0B1JTQiBNgozPMDQwNzA1OTctYmZhMS00YmVjLTgzN2MtYjhiMDU0NTc4MmMz&hl=en

接下来有空的话我会开发一个iphone的NES模拟器版本,在自己iphone上爽,希望大家到时支持。

ubuntu fceux成功运行吞食天地2中文版。相关推荐

  1. Qt成功运行Zynq UltraScale+MPSoC平台上

    Qt交叉编译后aarch64-linux-gnu-成功运行在ZynqUltraScale+MPSoC上-Linux文档类资源-CSDN下载Qt交叉编译后aarch64-linux-gnu-成功运行在Z ...

  2. 如何在Ubuntu下成功连接iPhone设备

    如何在Ubuntu下成功连接iPhone设备 由于iTunes和爱思助手等没有对linux开发相对应的软件,导致linux的用户的iPhone连接后并不能做什么事情,以下有很好的解决方法,按照步骤来基 ...

  3. 3322linux自动更新ip,ubuntu开机自动运行动态域名更新

    想在Ubuntu开机自动运行时启动动态域名的更新,于是在网上找设置的方法.开始找到了使用sysn-rc-conf命令来设置自动运行程序.原本以为用它能实现,可是运行后发现它只能对现有的启动项进行设置( ...

  4. 龙芯处理器首次成功运行 OpenHarmony ;Log4j 被发现存在第三个漏洞;PyPI 服务出现中断 | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  5. 在Ubuntu中自动运行KMS服务

    在Ubuntu中自动运行KMS服务 安装最新的vlmcsd releases版本 使用wget下载: wget https://github.com/Wind4/vlmcsd/releases/dow ...

  6. Ubuntu:成功解决ubuntu使用su切换root出现Authentication failure用户时认证失败

    Ubuntu:成功解决ubuntu使用su切换root出现Authentication failure用户时认证失败 导读 最讨厌网上回答的啰嗦和不清晰!本人最讨厌啰嗦,直接上来,图文表达,简单明了, ...

  7. 安装spark集群,并成功运行

    基于上一篇的hadoop成功运行后,进一步启动spark集群: 上图中的内容,slave主机中也需要相应的设置 上图就是成功运行的结果:

  8. 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux

    去年 6 月份,中科院大学教授.中科院计算所研究员包云岗,发布了开源高性能 RISC-V 处理器核心 -- 香山. 近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后进行了串口调通,1 月 24 ...

  9. 如何数分钟创建并成功运行数千台云主机?

    "要把一件东西变得简单,需要真正地认识到潜在的挑战,并找出漂亮的解决方案.这需要很多努力." 秉持"用户的需求是我们下一个产品"产品观的UCloud,一直以&q ...

最新文章

  1. Datawhale Ring限量100份来了!
  2. golang刷Leetcode系列 --- 加1
  3. DirectShow开发快速入门之慨述
  4. 电脑没网络设备dns服务器没检测到响应,设备或资源dns没检测到有响应 网络无法连接...
  5. Android学习笔记(27):日历视图Calendar
  6. 常见的几种python字符串方法总结
  7. 云主机安mysql_如何在云服务器 ECS 安装 MySQL
  8. 华为hs8145v5如何改桥接_Linksys VelopAX5300和AC3900套装 Mesh组网实战 - 桥接
  9. 5V升压8.4V,5V转8.4芯片电路图
  10. 中国数字化城市行业现状调研及前景规划分析报告2022~2028年
  11. 智云通CRM:大客户销售流程,新手也能快速入门
  12. JavaScript(基础知识)
  13. solarflare低延迟网卡_Solarflare低延迟万兆网卡配置和性能调优实践
  14. ADAS-----智能驾驶辅助系统
  15. microsoft认证解说
  16. php怎么变成微信小程序,自己怎么开通微信小程序
  17. 如何精准化的做微信公众号运营?
  18. 【C++】win 10:VC 6.0 中文版下载、安装、使用
  19. 云米AI洗碗机Iron A1 AI消毒除菌版上手体验
  20. Noi Linux(guide)字体推荐

热门文章

  1. 把学校直播的电视节目保存到本地
  2. 2019年wine QQ最完美解决方案(多Linux发行版通过测试并稳定运行)
  3. 添加数量的html标签,dedecms织梦模板栏目列表中添加统计文档数量的标签
  4. 电脑微信号,Win10电脑登录多个微信号的方法
  5. [附源码]计算机毕业设计Python+uniapp驾校练车预约小程序9u0r2(程序+lw+远程部署)
  6. vue获取后台的文件流并且转换成图片
  7. 如何自学Linux云计算运维,关于系统学习Linux云计算运维,应该怎么什么学?
  8. PyYAML 实用的使用技巧!
  9. MkDocs 快速入门
  10. [半监督学习] FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence