基于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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
问个问题:c或汇编怎么把一个数组定义在指定内存地址
u8 *nes_ramptr=(u8*)0x20008000; //nea ram 指针 假定 nea ram[2048]
这样只能定义指针,但不能保证开始地址为 0x20008000 +2048的空间不会被其他变量所占。
一周热门 更多>