OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 36677|回复: 29

基于stm32汇编的nes模拟器

[复制链接]

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
发表于 2014-3-29 20:47:41 | 显示全部楼层 |阅读模式
基于stm32汇编的nes模拟器很久以前就开始尝试了,在要成功时本本被盗,新买电脑后就搁置了,
最近又下了个GBA的汇编nes模拟器源码,又开始移植,6502部分已完成。ppu用的c,
stm103超128M后60帧(显示部分跳3),我的是IO刷屏。ppu用汇编后不跳能全速,

吧dma改成了汇编,速度提升了3帧,加入了按键控制,在6502.s文件,要修改成自己开发板的按键对应,有详细注译
joy0_W ;4016  手柄1+选通 
;----------------------------------------------------------------------------
tst r0,#1
orr lr,#0x01 ;lr最低位置1防止进入arm状态
bxne lr

ldr r0,=0x40011408 ; 端口输入数据寄存器(GPIOD_IDR)0x40011408 按键端口
ldr r0,[r0]  ; PD9    11     12    13    14    15设置成的输入   按下为0
  ;   key 6     1      2  3    4  5

; ((右  <<7)|(左  <<6)|(下  <<5)|(上  <<4)|Start<<3)|Select<<2)|(B  <<1)| A   )
;   5  3 1   2 4 按键编号
lsr r0,r0,#8  ;>>8  只要高8位
rsb r0,r0,#0xff   ; R0 = #0xff-R0      反向减法?   取反   nes需要按下为1
; 76543210
; 54321 6 按键编号
; 11111010 8位数据

and r2,r0,#0x80   ;按键5 在对应位

and r1,r0,#0x20   ;按键3
orr r2,r1,lsl#1  ; <<1

and r1,r0,#0x8 ;按键1
orr r2,r1 ;按键1 在对应位

and r1,r0,#0x10 ;按键2
orr r2,r1,lsr#2 ;        >>2

and r1,r0,#0x40 ;按键4
orr r2,r1,lsr#6  ;    >>6  r2是键值
orr r2,r2,#0x100000   ;20位表示控制器在位

str r2,joy0serial
; orr lr,#0x01 ;lr最低位置1防止进入arm状态
bx lr

STM32_NES.rar

304.91 KB, 下载次数: 2034

STM32_NES_v0.11.rar

917.68 KB, 下载次数: 2954

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-8-20
在线时间
2 小时
发表于 2021-8-22 18:41:07 | 显示全部楼层
楼主威武,感谢楼主。  尝试了一下与infones合并,移植到TKM32F499平台,成功了
微信图片_20210822181646.jpg
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-30 11:42:42 | 显示全部楼层
移植到了战舰板,哈哈。

战舰板 版本.rar

402.1 KB, 下载次数: 1979

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2020-6-12
在线时间
28 小时
发表于 2023-1-2 20:35:06 | 显示全部楼层
你好,我想问下,为什么每次编译都找不到stm32f10x_lib文件
回复 支持 0 反对 1

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-29 23:18:19 | 显示全部楼层
回复【楼主位】ye781205:
---------------------------------
楼主威武,牛
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-3-29 23:20:13 | 显示全部楼层
回复【楼主位】ye781205:
---------------------------------
牛逼哄哄,小弟膜拜
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

3

主题

2177

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3321
金钱
3321
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-30 08:59:59 | 显示全部楼层
能整汇编的牛人
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-30 11:44:43 | 显示全部楼层
期待楼主PPU也改成汇编的啊,呵呵。
最好还支持map,这样可玩的游戏就多了,现在这个貌似也不支持map,所以能玩的 游戏也 很有限。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
 楼主| 发表于 2014-3-30 12:31:07 | 显示全部楼层
原子哥还没回答我的问题哦,呵呵
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
 楼主| 发表于 2014-3-30 12:31:53 | 显示全部楼层
原子哥还没回答我的问题哦,呵呵
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
 楼主| 发表于 2014-3-30 14:13:18 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
问个问题:c或汇编怎么把一个数组定义在指定内存地址
    u8 *nes_ramptr=(u8*)0x20008000; //nea ram 指针  假定 nea ram[2048]
   这样只能定义指针,但不能保证开始地址为 0x20008000 +2048的空间不会被其他变量所占。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-30 20:11:49 | 显示全部楼层
c我知道,汇编不晓得。
c:
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));
就是把mem2base的地址,强制设置在0X68000000处开始。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11471
金钱
11471
注册时间
2013-3-8
在线时间
1226 小时
发表于 2014-3-30 20:21:18 | 显示全部楼层
回复【楼主位】ye781205:
---------------------------------
unsigned char xArray[128] __at (0x68000000); // Array start at address 0x68000000
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
 楼主| 发表于 2014-3-30 20:31:05 | 显示全部楼层
回复【11楼】augustedward:
---------------------------------
百度到了,不过还是谢谢
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-7-24 22:05:18 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
请问是不是要在sd卡根目录放nes文件才可以玩的
回复 支持 反对

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2014-7-24 22:08:42 | 显示全部楼层
不错,cool
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-7-25 10:09:19 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
请问原子是怎么修改按键的(不懂汇编,没有手柄)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-25 23:41:32 | 显示全部楼层
回复【15楼】chengmingluo:
---------------------------------
我没有修改.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-7-26 09:21:35 | 显示全部楼层
回复【9楼】ye781205:
---------------------------------
楼主 我编译到
str r2,joy0serial;
这句出现错误 ..\NES\6502.s(1386): error: A1875E: Register Rn must be from R0 to R7 in this instruction
是怎么回事?
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-7-27 21:29:26 | 显示全部楼层
回复【9楼】ye781205:
---------------------------------
请问你的按键是怎么和nes文件夹中各个文件联系的,因为我编译后看不到有include "key.h"之类的
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-4-22
在线时间
0 小时
发表于 2015-4-22 20:53:14 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥  mini板能跑NES模拟器吗?
回复 支持 反对

使用道具 举报

头像被屏蔽

65

主题

277

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2013-8-11
在线时间
29 小时
发表于 2015-4-22 22:19:36 | 显示全部楼层
MARK,谢谢楼主!!!!!!!!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-22 22:24:45 | 显示全部楼层
回复【19楼】cxsjjd侨:
---------------------------------
也可以,就是速度慢。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-8-21
在线时间
47 小时
发表于 2016-8-21 18:07:45 | 显示全部楼层
求助,怎么在6502.s里增加按键
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2014-3-4
在线时间
0 小时
发表于 2017-5-24 16:08:31 | 显示全部楼层
楼主威武,感谢楼主
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-8-20
在线时间
2 小时
发表于 2021-8-22 18:38:44 | 显示全部楼层
楼主威武,感谢楼主。  尝试了一下,把代码移植到其他平台,成功了。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-9-9
在线时间
2 小时
发表于 2022-1-14 17:34:40 | 显示全部楼层
看视频说有STM32F4的汇编,与F1 的汇编不一样吧?CPU核都不一样,有STM32F4的版本吗?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-3
在线时间
30 小时
发表于 2022-10-28 10:14:35 | 显示全部楼层
M4支持M3所有指令,同理M3支持M0的所有指令,越高级指令越多。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2023-6-30
在线时间
10 小时
发表于 2023-8-2 22:10:26 来自手机 | 显示全部楼层
要是更新加上声音就好玩了,没有声音没有激情
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2017-1-6
在线时间
33 小时
发表于 2023-12-27 11:57:08 | 显示全部楼层
厉害厉害厉害厉害厉害厉害厉害厉害厉害厉害
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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