基于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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。