JSNES连发和连跳

JSNES是javascript做的网页版的nes模拟器,https://github.com/bfirsh/jsnes

JSNES没有连跳和连发,不习惯,尝试加了一下。

总体看来,正常游戏机和游戏原本不支持连跳和连发,需要手柄模拟连续点按A和B来实现。

然后修改keyboard.js,调试,原来键盘的J、K映射B和A,现在长按U模拟连续点按B,长按I模拟连续点按A,效果还好。

另外,看github上源码有所不同了,大意当还是如此。

    keyDown: function(evt) {
    	var that = this;
    	//console.log("sekey " + evt.keyCode);
    	if (evt.keyCode == 85 || evt.keyCode == 73) { // 按键 U I,连发和连跳
    		var keyno;
    		if (evt.keyCode == 85)
    			keyno = this.keys.KEY_B;
    		else if (evt.keyCode == 73)
    			keyno = this.keys.KEY_A;
		   	setTimeout(function() {
				that.state1[keyno] = that.state1[keyno] != 0x41 ? 0x41 : 0x40;
			}, 100);
    		
    		if (evt.preventDefault) {
	            evt.preventDefault();
	        }
    		return;
    	}
        if (!this.setKey(evt.keyCode, 0x41) && evt.preventDefault) {
            evt.preventDefault();
        }
    },
    
    keyUp: function(evt) {
    	if (evt.keyCode == 85 || evt.keyCode == 73) { // 按键 U I,连发和连跳
    		if (evt.keyCode == 85)
    			this.setKey(74, 0x40); // KEY_B-J-74
    		else if (evt.keyCode == 73)
    			this.setKey(75, 0x40); // KEY_A-K-75
    		if (evt.preventDefault) {
	            evt.preventDefault();
	        }
    		return;
    	}
        if (!this.setKey(evt.keyCode, 0x40) && evt.preventDefault) {
            evt.preventDefault();
        }
    },
    

从手柄协议看,是必须顺序读A B SELECT START UP DOWN LEFT RIGHT的状态,不会有读连发连跳状态。

见有修改手柄支持连发连跳,用555定时器触发的。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值