基于stm32汇编的nes模拟器

2019-08-18 19:08发布

基于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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
ye781205
1楼-- · 2019-08-19 18:32
原子哥还没回答我的问题哦,呵呵
ye781205
2楼-- · 2019-08-19 18:44
回复【6楼】正点原子:
---------------------------------
问个问题:c或汇编怎么把一个数组定义在指定内存地址
    u8 *nes_ramptr=(u8*)0x20008000; //nea ram 指针  假定 nea ram[2048]
   这样只能定义指针,但不能保证开始地址为 0x20008000 +2048的空间不会被其他变量所占。
正点原子
3楼-- · 2019-08-19 22:18
c我知道,汇编不晓得。
c:
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));
就是把mem2base的地址,强制设置在0X68000000处开始。
augustedward
4楼-- · 2019-08-19 22:29
回复【楼主位】ye781205:
---------------------------------
unsigned char xArray[128] __at (0x68000000); // Array start at address 0x68000000
ye781205
5楼-- · 2019-08-19 23:08
 精彩回答 2  元偷偷看……
chengmingluo
6楼-- · 2019-08-20 01:25
回复【5楼】正点原子:
---------------------------------
请问是不是要在sd卡根目录放nes文件才可以玩的

一周热门 更多>