搜索
bottom↓
回复: 272

【开源】红牛三代开发板上移植 InfoNES 游戏机心得 (小霸王即乐无穷)

  [复制链接]

出0入0汤圆

发表于 2011-6-1 15:14:44 | 显示全部楼层 |阅读模式
视频录像:   
http://v.youku.com/v_show/id_XMjcwMjIxODI0.html



InfoNES 的移植过程:

(1)第一步需要解决的是基于 TF 卡实现 Fafts 文件系统。
     需要解决的问题是 4bit 的 SDIO 的读写。
     这里我们的准备工作为准备好
     STM32F10x_StdPeriph_Lib_V3.5.0  (可以在官方网站下载)
     
经过实验 STM32F10x_StdPeriph_Lib_V3.5.0 比 STM32F10x_StdPeriph_Lib_V3.4.0 的库例程中把 SDIO 读写 SD 卡有了更新, 具体表现为提高了主频, 但是很可惜的是这个官方的例子在 红牛 V3 开发板上没有调试通过, 因此我依旧选择了 STM32F10x_StdPeriph_Lib_V3.4.0 中的例子, 经过测试速度还可以, 读写大扇区也没有问题。

简单步骤为:
创建 sdio_sd.c 和 sdio_sd.h
主函数中设置 NVIC, 打开 SDIO 事件处理中断
在中断处理函数 SDIO_IRQHandler 中调用 SD_ProcessIRQSrc();
接下来就是移植 Fatfs , 主要需要移植的就是 disk.c 中的几个函数。
disk_initialize - Initialize disk drive  初始化磁盘
disk_status - Get disk status 获得磁盘状态信息 (本例程中没有移植)
disk_read - Read sector(s)  读扇区
disk_write - Write sector(s) 写扇区
disk_ioctl - Control device dependent features 获得设备的一些特性
get_fattime - Get current time 获得创建或者修改文件的时间 (本例程中没有移植)
移植过程中主要用到的是 Fatfs 中的以下几个文件
Ff.c  fatfs 文件系统
Diskio.c 移植的外部接口文件
Ffconfig.h 对 Fatfs 的一些配置文件,例如设置中文文件名, 长文件名等等
Cc936.c 对中文文件名的支持
了解完解决好这些问题后我们就可以来操作了。
第一步操作:f_mount(0,&FS);        //  初始化分区结构,它不初始化SD卡
第二步操作:f_open(&fsrc,"SYSTEM/FONT/GBK16.FON",FA_READ);  // 打开文件, 在这个操作中会初始化 SD 卡。
如果打开已经存在的文件可以使用 FA_READ 和 FA_OPEN_EXISTING 的参数
如果想创建一个新文件可以使用 FA_CREATE_ALWAYS 和 FA_WRITE 的参数
具体可以看 fstfs 对操作属性。
第三步操作:f_read(&fsrc,HzkCodeSRAM,fsrc.fsize,&br); //  读文件数据,长度file.fsize,
第四步操作:f_close(&fsrc); // 关闭文件。

当然除了这几个函数外还有两个常用的操作。f_lseek 和 f_write, 分别是移动文件指针和写文件操作。

(2)在 FATFS 文件系统中操作长文件名和中文文件名。
由于微软的 FAT版权的问题,默认为 DOS 8.3 文件名,即8个字节的文件名,一个”.“,然后3个字节的扩展名。

先到ffconf.h 中
#define _CODE_PAGE    437    // 437  - U.S. (OEM)
#define    _USE_LFN    1        /* 0, 1 or 2 */
然后在工程文件中包含 ccsbcs.c(FATFS\option\目录下面)

   ffconf.h  可以设置  #define _CODE_PAGE    936  //- Simplified Chinese GBK (DBCS, OEM, Windows)


总结: 经过上面两个步骤我们就完成了对文件系统的完整移植。接下来我们就会用到这些:
从 SD 卡中读字库文件
从 SD 卡中显示 bmp 图片
从 SD 卡中读取文件列别
从 SD 卡中读取 NES ROM 文件进行解码

(3)按键处理的编写
我们需要编写好构架, 第一处理按键必须精简,要尽可能少的占用系统资源, 在这里我们会选择在10mS 中断中处理按键处理和处理好按键防抖。

这部分我就不具体介绍了, 具体看代码。

(4)汉字字库的实现
基本思路
HZK16字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。我们在一些应用场合根本用不到这么多汉字字模,所以在应用时就可以只提取部分字体作为己用。

HZK16字库里的16×16汉字一共需要256个点来显示,也就是说需要32个字节才能达到显示一个普通汉字的目的。

我们知道一个GB2312汉字是由两个字节编码的,范围为A1A1~FEFE。A1-A9为符号区,B0到F7为汉字区。每一个区有94个字符(注意:这只是编码的许可范围,不一定都有字型对应,比如符号区就有很多编码空白区域)。下面以汉字“我”为例,介绍如何在HZK16文件中找到它对应的32个字节的字模数据。

前面说到一个汉字占两个字节,这两个中前一个字节为该汉字的区号,后一个字节为该字的位号。其中,每个区记录94个汉字,位号为该字在该区中的位置。所以要找到“我”在hzk16库中的位置就必须得到它的区码和位码。(为了区别使用了区码和区号,其实是一个东西,别被我误导了)

区码:区号(汉字的第一个字节)-0xa0    (因为汉字编码是从0xa0区开始的,所以文件最前面就是从0xa0区开始,要算出相对区码)

位码:位号(汉字的第二个字节)-0xa0

这样我们就可以得到汉字在HZK16中的绝对偏移位置:

offset=(94*(区码-1)+(位码-1))*32

注解:1、区码减1是因为数组是以0为开始而区号位号是以1为开始的

       2、(94*(区号-1)+位号-1)是一个汉字字模占用的字节数

       3、最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息(前面提到一个汉字要有32个字节显示)

有了偏移地址就可以从HZK16中读取汉字编码了,剩下的就是文件操作了,就不说了,可以参考工程中的代码。

在我们 InfoNES 的移植上我们选择了一次性的把 SD 卡中的 HZK 文件读到片外的 SRAM 中, 这样可以加快菜单刷新速度。不会觉得卡。
STM32F103ZET6 有 512K byte 的片内 flash, 也可以把 字库文件编写在文件中烧录到片内 Flash 中, 这里先不多做介绍了, 我们工程中也实现了, 看下汉字显示部分代码就可以了。

关于汉字库的生成推荐一个软件叫  多国文字点阵字库, 工程中已经有了, 你可以试试看。

(5)接下来讲一下分散加载的实现, 其实就是怎么把一些变量定义在外部 SRAM 中。
第一步: 在 Keil 中设置好 SRAM 的地址
第二步:对当个文件的 Option 进行设置, 这样就可以把这个文件的变量定义到外部 SRAM 中了。

(6)片外 SRAM 的初始化
常用的可以调用自己编写的 SRAM_Init 函数。
第二种办法在 STM32F10x_StdPeriph_Lib_V3.5.0 中的  system_stm32f10x.c 中做个宏定义就可以了。找到下面这段话, 取消对  DATA_IN_ExtSRAM 注释就好。
#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
/* #define DATA_IN_ExtSRAM */
   #define DATA_IN_ExtSRAM
#endif

(7)所有准备工作做好了, 就是对 InfoNES 的移植了,要主意一点, InfoNES 的变量因为有些是用到片外的 SRAM 中了, 但是有些 InfoNES 的全局变量在定义的时候就进行初始化了, 这些初始化是在外部 SRAM 初始化之前进行的, 所以要把这些变量拿到片内中来, 这个是最需要注意的。

(8)解决速度问题。
经过测试,STM32F103ZET6 在片外的运行速度相比片内的 SRAM 的速度差之甚远, 所以必须进行一些优化, 把部分解码工作放到片内来。
第二步是对 TFT 的刷屏速度的提高, 红牛V3 是用的液晶驱动芯片 SSD1963, 把刷屏改为窗口式刷屏, 接下来是把 InfoNES 的跳帧设为 3. 也就是跳掉显示的2帧画面, 得到游戏的基本流畅。 好了好上面的问题, 可以玩有些了。

(9)测试帧数
可以在刷帧的显示函数里面做一个计数, 每秒钟通过窗口发到窗口调试助手上。
经过测试 , 在基于 STM32F103ZET6 的红牛V3开发板上可以获得的每秒钟 5 帧的速度, 如果再想提高就有一定的优化困难了。

(10)小技巧
在调试过程中可以使用

PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  ITM_SendChar((uint8_t) ch);

  return ch;
}

在 debug 选项框中在调试时加载STM32DBG.ini文件。
并在 Trace 中允许 ITM Channel 选项, 并选择好第一通道。
这样就调试仿真的时候可以在 View / Serial Window / ITM Viewer 中看到打印信息了。
这种方式可以不占用窗口资源, 调试方便, 所以推荐一下。


代码下载: Gamer_STM32_InfoNES.rar  2011年06月01日 20:26
点击此处下载 ourdev_644967SW6FPE.rar(文件大小:1.60M) (原文件名:Gamer_STM32_InfoNES.rar)

Copy 到 TF 卡中的文件:Gamer_STM32_InfoNES.rar  2011年06月01日 20:43
点击此处下载 ourdev_644978JO7IZ1.rar(文件大小:5.06M) (原文件名:Copy 到 TF 卡中的文件.rar)



(原文件名:nes1.JPG)


(原文件名:nes2.JPG)


(原文件名:nes3.JPG)


(原文件名:nes4.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-6-1 15:25:24 | 显示全部楼层
..顶安哥。弱弱问下。源码呢?

出0入0汤圆

 楼主| 发表于 2011-6-1 15:29:59 | 显示全部楼层
哎,稍微大点的文件传起来很慢很慢 , 28M 文件我已经传了 20 几分钟了。

出0入0汤圆

发表于 2011-6-1 15:30:44 | 显示全部楼层
继续关注,楼主一出必定强帖!

出0入85汤圆

发表于 2011-6-1 15:34:27 | 显示全部楼层
强帖!

出0入0汤圆

发表于 2011-6-1 15:35:31 | 显示全部楼层
回复【4楼】Huaan
强帖!
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-6-1 15:37:19 | 显示全部楼层
NB

出0入0汤圆

发表于 2011-6-1 15:39:38 | 显示全部楼层
把生成的文件删除了体积就小了

出0入0汤圆

发表于 2011-6-1 15:41:10 | 显示全部楼层
cool

出0入0汤圆

 楼主| 发表于 2011-6-1 15:41:59 | 显示全部楼层
怎么回事, 老是说我上传的文件格式不对。

太浪费时间了。

出0入0汤圆

 楼主| 发表于 2011-6-1 15:44:42 | 显示全部楼层
验证了下, 不是我上传的工程的问题, 我试了下图片也不行, ouravr 的附件上传今天不顺畅。

出0入0汤圆

发表于 2011-6-1 15:44:58 | 显示全部楼层
回复【9楼】lvhaian 安哥
怎么回事, 老是说我上传的文件格式不对。
太浪费时间了。
-----------------------------------------------------------------------



我也是, 我还以为因为传了基本书被封了呢...

出0入0汤圆

发表于 2011-6-1 15:45:20 | 显示全部楼层
只上传源文件就可以了,不要工程文件

出0入0汤圆

发表于 2011-6-1 15:50:57 | 显示全部楼层
留个爪子,之前发的那个帖子还没看

出0入0汤圆

发表于 2011-6-1 16:09:09 | 显示全部楼层
太壮大了.

移植的思路是什么?

(1)这个nes模拟器需要自己写吗?
(2)还是移植好操作系统,用别人写好的模拟器.

为什么只有5帧/s, gba使用arm9上写的nes模拟器已经流畅运行了

出0入0汤圆

 楼主| 发表于 2011-6-1 16:12:21 | 显示全部楼层
模拟器是 infoNES。2000 年左右老外写的。
gba 是 arm7 把?
为什么只有 5帧 ,  是因为 STM32 性能差(个人认为)。

看看开源了有没有同仁可以把它优化快一些。

出0入134汤圆

发表于 2011-6-1 16:26:50 | 显示全部楼层
等代码来移植

出0入0汤圆

发表于 2011-6-1 16:33:07 | 显示全部楼层
顶!

出0入0汤圆

发表于 2011-6-1 16:58:00 | 显示全部楼层
等安哥的代码,看看能不能移植成功。。。。

出0入0汤圆

发表于 2011-6-1 18:28:38 | 显示全部楼层
回复【14楼】26532401 赵云
太壮大了.
移植的思路是什么?
(1)这个nes模拟器需要自己写吗?
(2)还是移植好操作系统,用别人写好的模拟器.
为什么只有5帧/s, gba使用arm9上写的nes模拟器已经流畅运行了

-----------------------------------------------------------------------

GBA 上模拟FC好像要把 NES 文件先处理一下?

出0入0汤圆

 楼主| 发表于 2011-6-1 18:32:32 | 显示全部楼层
模拟器都一样 , 都是先把 NES 文件处理下的。

出0入0汤圆

发表于 2011-6-1 18:33:40 | 显示全部楼层
好比是PSP上模拟 NEOGEO 街机的游戏, 由于内存太小, 某些大型游戏得先把ROM中的图像数据和声音数据解码合并成一个文件(应该也是模拟在内存中存储的格式), 运行时直接读取, 不用再实时解码, 牺牲空间来降低CPU和内存的消耗

出0入0汤圆

发表于 2011-6-1 18:36:19 | 显示全部楼层
回复【20楼】lvhaian 安哥
模拟器都一样 , 都是先把 nes 文件处理下的。
-----------------------------------------------------------------------
在机能允许情况下能直接载入NES

PC就不用说了, PSP 也是直接载入, 目前的手机(估计得到 ARM11上), 也能直接载入

出0入0汤圆

 楼主| 发表于 2011-6-1 18:37:04 | 显示全部楼层
也要有空间可以给你牺牲啊, STM32103 的外部 SRAM 只有内部速度的 1/6 速度, 再加上一共 2M 大小。

出0入0汤圆

发表于 2011-6-1 18:44:44 | 显示全部楼层
关注,

出0入0汤圆

发表于 2011-6-1 18:47:01 | 显示全部楼层
不光外部SRAM  在外部SD,FLASH 上应该也行
要是直接能将图像数据从 FALSH/SD 上 DMA 到FSMC屏幕上, 就更爽了...(不过不太现实, 其难度相当于重新开发个模拟器了)

NES 具体格式我不懂, 不过就街机上的一般做法, 是将 PROGRAM 程序段 载入内存, 将 GRAPH 图像数据 和 SOUND 声音数据 用到时再载入,

出0入0汤圆

 楼主| 发表于 2011-6-1 18:54:45 | 显示全部楼层
呵呵 你说的有些复杂, 暂时我感觉实现不了的。

出0入0汤圆

发表于 2011-6-1 19:10:42 | 显示全部楼层
安哥,加了您的QQ怎么没有消息呀

出0入0汤圆

发表于 2011-6-1 19:14:35 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-6-1 19:32:30 | 显示全部楼层
前几天我也弄了一下SDIO 4bit  FATFS,结果库3.5不给力啊,最后用的STM3210E-EVAL的demo程序,悲剧的是接收串口文件>3k就会出现错误,会丢失部分数据,用的512*2的DMA双缓冲呢,TIM检查超时,问题解决不了,现在放弃了.

出0入0汤圆

 楼主| 发表于 2011-6-1 19:49:07 | 显示全部楼层
我现在程序支持 4bit ^_^

出0入0汤圆

 楼主| 发表于 2011-6-1 20:27:14 | 显示全部楼层
代码已经上传, 感兴趣的顶一下把 ^_^

出0入0汤圆

发表于 2011-6-1 21:02:18 | 显示全部楼层
mark  ,.好东西。

出0入0汤圆

发表于 2011-6-1 21:14:34 | 显示全部楼层
太强大了,改天在我DX32的板子上试试,顶楼主

出0入0汤圆

发表于 2011-6-1 21:34:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 21:36:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 21:37:10 | 显示全部楼层
必须顶!!

出0入0汤圆

发表于 2011-6-1 21:45:25 | 显示全部楼层
好东西

出0入0汤圆

 楼主| 发表于 2011-6-1 21:50:05 | 显示全部楼层
【33楼】 tyqhaha
DX32 板子外扩了多大的 SRAM, 低于 2M 是不能用的。

出0入0汤圆

发表于 2011-6-1 21:52:37 | 显示全部楼层
太牛B啦。

出0入0汤圆

发表于 2011-6-1 21:59:55 | 显示全部楼层
回复【23楼】lvhaian 安哥
也要有空间可以给你牺牲啊, stm32103 的外部 sram 只有内部速度的 1/6 速度, 再加上一共 2m 大小。
-----------------------------------------------------------------------

如果STM32 外部SRAM速度真是如此低,那就杯具了,LZ还是换成任意一款ARM9来玩比较好点;
我也在使用这个NES模拟器,在S3C2416上,结构优化后,帧速已经达到64fps.

出0入0汤圆

 楼主| 发表于 2011-6-1 23:24:56 | 显示全部楼层
确实是这么低啊, 以后玩 ARM9 了。

出0入0汤圆

 楼主| 发表于 2011-6-2 00:01:00 | 显示全部楼层
liuweiele Liuwei
熟悉在 ARM9 没有操作系统情况下播放视频文件么。

出0入25汤圆

发表于 2011-6-2 00:23:20 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-6-2 08:18:04 | 显示全部楼层
很强大

出0入0汤圆

发表于 2011-6-2 10:53:07 | 显示全部楼层
MARK,很强大

出0入0汤圆

发表于 2011-6-2 11:00:15 | 显示全部楼层
mark! 回头玩玩

出0入0汤圆

发表于 2011-6-2 11:52:58 | 显示全部楼层
niu......

出0入0汤圆

发表于 2011-6-2 13:36:43 | 显示全部楼层
编译报错:


..\USER\InfoNES_Port\App_Main.c(220): error:  #20: identifier "NesHeader" is undefined
..\USER\InfoNES_Port\App_Main.c:        NesHeader.byID[0]=buf[i++];
..\USER\InfoNES_Port\App_Main.c:        ^
..\USER\InfoNES_Port\App_Main.c(255): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:     ROM = RomBuf;
..\USER\InfoNES_Port\App_Main.c:     ^
..\USER\InfoNES_Port\App_Main.c(265): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:       VROM = VROM_Buf;
..\USER\InfoNES_Port\App_Main.c:       ^
..\USER\InfoNES_Port\App_Main.c(304): error:  #140: too many arguments in function call
..\USER\InfoNES_Port\App_Main.c:       InfoNES_Load(buff);
..\USER\InfoNES_Port\App_Main.c:                    ^
..\USER\InfoNES_Port\App_Main.c: ..\USER\InfoNES_Port\App_Main.c: 0 warnings, 4 errors
compiling nes.c...
Target not created

出0入0汤圆

发表于 2011-6-2 13:57:24 | 显示全部楼层
第7步 InfoNES 的移植还有什么要注意的?

出0入0汤圆

发表于 2011-6-2 21:38:43 | 显示全部楼层
求助楼主,编译报错。

出0入0汤圆

 楼主| 发表于 2011-6-2 22:16:00 | 显示全部楼层
第7步 InfoNES 的移植还有什么要注意的?

=========================

没有啥要注意的, 你看下代码就知道了, 只有几个函数.

就是从 SD 卡中读下 ROM 文件

出0入0汤圆

 楼主| 发表于 2011-6-2 22:18:33 | 显示全部楼层
【50楼】 Excellence 精益求精

================

你怎么编译的, 我把工程从论坛上下载下来从新编译了下, 没有任何问题.


(原文件名:111111.JPG)

出0入0汤圆

发表于 2011-6-2 22:36:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 00:43:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 01:48:03 | 显示全部楼层
回复【30楼】lvhaian  安哥
我现在程序支持 4bit ^_^
-----------------------------------------------------------------------
4bit 使用 DMA 可能会出问题.

出0入0汤圆

发表于 2011-6-3 02:17:30 | 显示全部楼层
好东西,研究中...
下下来的代码编译错误,请指教:

(原文件名:1.png)

还有
WORD NesPalette[ 64 ]
在nes.c 和 k6502_rw.h 中重复定义...

出0入0汤圆

发表于 2011-6-3 02:18:38 | 显示全部楼层
回复【55楼】j-link
-----------------------------------------------------------------------

我使用4bit不使用DMA就会溢出...

出0入0汤圆

发表于 2011-6-3 05:06:07 | 显示全部楼层
回复【57楼】xiaowei061  - -
回复【55楼】j-link
-----------------------------------------------------------------------
我使用4bit不使用dma就会溢出...
-----------------------------------------------------------------------
红牛三代使用的 STM32 是为 "L" 版.因该没有这个问题.

(原文件名:l.JPG)

出0入0汤圆

发表于 2011-6-3 08:23:08 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-3 08:25:11 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-3 08:26:22 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-6-3 08:42:48 | 显示全部楼层
安子出品,必属精品。

出0入0汤圆

发表于 2011-6-3 09:07:00 | 显示全部楼层
下载后解压,编译。KEIL MDK 4.12版本。

又下载了一次,还是一样,难道就我一个?有没有编译报错的?

错误如下:

Build target 'HY-RedBull V3.0'
compiling main.c...
compiling stm32f10x_it.c...
compiling sdio_sd.c...
compiling ff.c...
compiling diskio.c...
compiling misc.c...
compiling stm32f10x_flash.c...
compiling stm32f10x_gpio.c...
compiling stm32f10x_rcc.c...
compiling stm32f10x_adc.c...
compiling stm32f10x_bkp.c...
compiling stm32f10x_can.c...
compiling stm32f10x_cec.c...
compiling stm32f10x_crc.c...
compiling stm32f10x_dac.c...
compiling stm32f10x_dbgmcu.c...
compiling stm32f10x_dma.c...
compiling stm32f10x_exti.c...
compiling stm32f10x_fsmc.c...
compiling stm32f10x_i2c.c...
compiling stm32f10x_iwdg.c...
compiling stm32f10x_pwr.c...
compiling stm32f10x_rtc.c...
compiling stm32f10x_sdio.c...
compiling stm32f10x_spi.c...
compiling stm32f10x_tim.c...
compiling stm32f10x_usart.c...
compiling stm32f10x_wwdg.c...
compiling core_cm3.c...
compiling system_stm32f10x.c...
assembling startup_stm32f10x_hd.s...
compiling AsciiLib.c...
compiling GLCD.c...
compiling HzLib.c...
compiling fsmc_sram.c...
compiling InfoNES.c...
compiling InfoNES_Mapper.c...
compiling K6502.c...
compiling InfoNES_MapperTable.c...
compiling App_Main.c...
..\USER\InfoNES_Port\App_Main.c(220): error:  #20: identifier "NesHeader" is undefined
..\USER\InfoNES_Port\App_Main.c:        NesHeader.byID[0]=buf[i++];
..\USER\InfoNES_Port\App_Main.c:        ^
..\USER\InfoNES_Port\App_Main.c(255): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:     ROM = RomBuf;
..\USER\InfoNES_Port\App_Main.c:     ^
..\USER\InfoNES_Port\App_Main.c(265): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:       VROM = VROM_Buf;
..\USER\InfoNES_Port\App_Main.c:       ^
..\USER\InfoNES_Port\App_Main.c(304): error:  #140: too many arguments in function call
..\USER\InfoNES_Port\App_Main.c:       InfoNES_Load(buff);
..\USER\InfoNES_Port\App_Main.c:                    ^
..\USER\InfoNES_Port\App_Main.c: ..\USER\InfoNES_Port\App_Main.c: 0 warnings, 4 errors
compiling nes.c...
Target not created

出0入0汤圆

发表于 2011-6-3 09:21:31 | 显示全部楼层
我顶啊!下载看看,不知道512k sram 可否跑

出0入0汤圆

 楼主| 发表于 2011-6-3 10:08:40 | 显示全部楼层
想起来了,工程中有个3的工程,一个4的工程,你打开3的,4估计工程少加进来个文件,因为慢所以一直用mdk3.8

出0入0汤圆

发表于 2011-6-3 10:11:09 | 显示全部楼层
口水啦,,,,嘿嘿

出0入0汤圆

发表于 2011-6-3 11:17:54 | 显示全部楼层
回复【65楼】lvhaian  安哥
想起来了,工程中有个3的工程,一个4的工程,你打开3的,4估计工程少加进来个文件,因为慢所以一直用mdk3.8
-----------------------------------------------------------------------
版主是否能修正一下
谢谢!!!
-----------------------------------------------------------------------
\USER\InfoNES_Port\App_Main.c(220): error:  #20: identifier "NesHeader" is undefined
..\USER\InfoNES_Port\App_Main.c:        NesHeader.byID[0]=buf[i++];
..\USER\InfoNES_Port\App_Main.c:        ^
..\USER\InfoNES_Port\App_Main.c(255): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:     ROM = RomBuf;
..\USER\InfoNES_Port\App_Main.c:     ^
..\USER\InfoNES_Port\App_Main.c(265): error:  #137: expression must be a modifiable lvalue
..\USER\InfoNES_Port\App_Main.c:       VROM = VROM_Buf;
..\USER\InfoNES_Port\App_Main.c:       ^
..\USER\InfoNES_Port\App_Main.c(304): error:  #140: too many arguments in function call
..\USER\InfoNES_Port\App_Main.c:       InfoNES_Load(buff);
..\USER\InfoNES_Port\App_Main.c:                    ^
..\USER\InfoNES_Port\App_Main.c: ..\USER\InfoNES_Port\App_Main.c: 0 warnings, 4 errors

出0入0汤圆

发表于 2011-6-3 11:59:29 | 显示全部楼层
安哥,怎么编译会有那么多的警告,而且这些警告都是 数组 下标超出范围呀。。。。。。

    // Frame IRQ in H-Sync
    FrameStep += STEP_PER_SCANLINE;
    if ( FrameStep > STEP_PER_FRAME && FrameIRQ_Enable )
    {
      FrameStep %= STEP_PER_FRAME;
      IRQ_REQ;
      APU_Reg[ 0x4015 ] |= 0x40;
    }

APU_Reg[ 0x4015 ] |= 0x40;   这个数组下标是 0x15 还是 0x4015

出0入0汤圆

发表于 2011-6-3 12:13:05 | 显示全部楼层
回复【58楼】j-link
-----------------------------------------------------------------------

我使用的是自己画的板子,芯片是一样的...关于4bit查询溢出原因没有仔细分析,1bit+查询可以正常使用,平时一直使用4bit+DMA也可以正常工作。

出0入0汤圆

发表于 2011-6-3 12:17:19 | 显示全部楼层
回复【65楼】lvhaian 安哥
-----------------------------------------------------------------------

“陷阱”啊...里面有两工程文件,竟然没注意到...习惯性的打开Project.uvproj了,Project.Uv2编译通过...不过一堆警告。等会尝试下去

出0入0汤圆

发表于 2011-6-3 12:37:15 | 显示全部楼层
回复【71楼】xiaowei061 - -
回复【65楼】lvhaian 安哥
-----------------------------------------------------------------------
“陷阱”啊...里面有两工程文件,竟然没注意到...习惯性的打开project.uvproj了,project.uv2编译通过...不过一堆警告。等会尝试下去
-----------------------------------------------------------------------

我刚把警告全部去除了,不知道能否正常运行,有个不知道更改的是否正确,等待安哥回复。。。。

出0入0汤圆

发表于 2011-6-3 13:25:13 | 显示全部楼层
呵呵。打开UVISION2的工程文件,编译通过,有41个警告。

谢谢。

想移植到LPC2368上,不知道行吗?
512K FLASH,58KRAM.

出0入0汤圆

发表于 2011-6-3 14:10:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-3 14:14:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 14:40:26 | 显示全部楼层
今天试了一下楼主的fatfs,失败了,现象和用3.5官方的一样,我只有用老程序的命啊

出0入0汤圆

发表于 2011-6-4 15:10:19 | 显示全部楼层
MARK,很强大 !

出0入0汤圆

发表于 2011-6-4 16:37:32 | 显示全部楼层
goooooooooooooood

出0入0汤圆

发表于 2011-6-4 22:46:19 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2011-6-5 19:18:26 | 显示全部楼层
【68楼】 j-link

===============

源文件都在文件夹下面, 你按照 mdk3 那个工程重新加下文件进去不就好了.

或者更加简单的办法, 你用 MDK4 打开 MDK3 的工程就会自动升级到 MDK4. 把原来的 MDK4 工程删了就好了.


【72楼】 _yuming

那些警告都是些无所谓的.




想移植到LPC2368上,不知道行吗?
512K FLASH,58KRAM.
=============================
有没有外扩的 SRAM 啊.

出0入0汤圆

发表于 2011-6-5 19:40:53 | 显示全部楼层
一直不知道小霸王是怎么做出来的

出0入0汤圆

 楼主| 发表于 2011-6-7 15:35:29 | 显示全部楼层
一直不知道小霸王是怎么做出来的

=============

小霸王在当年是单片机中最先进的技术了,非通用 CPU

出0入0汤圆

发表于 2011-6-8 11:22:48 | 显示全部楼层
膜拜安哥。。。来认真学习了

出0入0汤圆

发表于 2011-6-8 11:49:12 | 显示全部楼层
顶起,有空的时候,我也学习下。

出0入0汤圆

 楼主| 发表于 2011-6-9 10:58:04 | 显示全部楼层
以下蓝色文字由版主:lvhaian 于:2011-06-09,10:58:04 加入。
<font color=black>请发贴人注意:
本贴放在这分区不合适,即将移走
原来分区:[9999]开源充电器设计活动(已完成)
即将移去的分区:[3020]STM32/STM8 技术讨论区
移动执行时间:自本贴发表0小时后

任何的疑问或咨询,请可随时联系站长。谢谢你的支持!
</font>

出0入0汤圆

发表于 2011-6-15 16:32:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-15 17:31:37 | 显示全部楼层
这个一定要顶

出0入0汤圆

发表于 2011-6-16 19:52:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-17 10:21:19 | 显示全部楼层
强人啊,

出0入0汤圆

发表于 2011-6-17 22:15:09 | 显示全部楼层
强人

出0入0汤圆

发表于 2011-6-18 17:24:06 | 显示全部楼层
有时间做个

出0入0汤圆

发表于 2011-6-18 20:28:46 | 显示全部楼层
太牛了。

出0入0汤圆

发表于 2011-6-18 22:56:54 | 显示全部楼层
Mark!!!!

出0入0汤圆

发表于 2011-6-18 23:12:39 | 显示全部楼层
好东西

出0入25汤圆

发表于 2011-6-19 01:58:30 | 显示全部楼层
mark!

出0入4汤圆

发表于 2011-6-25 15:15:29 | 显示全部楼层
移植了你的这个怎么InfoNES_Cycle()后,屏上没什么反应?

出0入0汤圆

发表于 2011-6-25 16:06:42 | 显示全部楼层
顶安哥,能否看下文件不能下载了

出0入0汤圆

 楼主| 发表于 2011-6-28 14:46:29 | 显示全部楼层
【99楼】 liguangqang
移植了你的这个怎么InfoNES_Cycle()后,屏上没什么反应?

==============================

你要看你的解码都正常不?我这个需要的 RAM 比较大。

出0入0汤圆

发表于 2011-7-2 22:32:58 | 显示全部楼层
我也买了这个开发板有空试试

出0入0汤圆

发表于 2011-7-3 00:53:43 | 显示全部楼层
MARK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 18:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表