Search found 4 matches

by rebeLdanceR
Sat Jan 19, 2013 11:42 pm
Forum: NESdev China
Topic: 关于碰撞检测/About collision detection
Replies: 2
Views: 27868

Re: 关于碰撞检测/About collision detection

我的这个碰撞检测方法仅适用于tile级别的碰撞检测。 精灵初始化后,映射在ROM中的内存地址会保存在Sp_addr1,水平和垂直偏移量会置0。 所以精灵所在的tile将会有3种状态:仅占1个tile位置,此时水平偏移量Xp,垂直偏移量Yp均为0; 占2个tile位置,此时会是Xp==0&&Yp!=0,或者Xp!=0&&Yp==0,对应垂直方向占2格,水平方向占2格; 占4个tile位置,Xp!=0&&Yp!=0。 但是精灵的移动是按像素来的,所以将会在精灵完全进入下一个tile中后,改变其在ROM中映射的内存地址,这由每个按键事件的第一个判断语句来实现。 精灵在移动的过程中将会在这3中情况中变...
by rebeLdanceR
Fri Jan 18, 2013 9:10 pm
Forum: NESdev China
Topic: 关于碰撞检测/About collision detection
Replies: 2
Views: 27868

Re: 关于碰撞检测/About collision detection

上游戏文件,仿作的“世界最难小游戏”,仅有第一关。player与地图之间的碰撞和player与CPU精灵之间的碰撞算法是不同的。不过对于多个精灵之间的碰撞检测还没有完善,目前的算法只适用于少数精灵之间的碰撞(通过对比精灵4个边角的坐标)。
by rebeLdanceR
Fri Jan 18, 2013 7:21 pm
Forum: NESdev China
Topic: 关于碰撞检测/About collision detection
Replies: 2
Views: 27868

关于碰撞检测/About collision detection

当我成功的完成了我的碰撞检测算法后,真心想跟大家分享一下,希望大家多给些意见,让这个算法更加完善。 首先解释一下代码中用到的变量: $0D $0E $14 $15 $16 $17 $18 $19 (Sp_addr1~Sp_addr4) 这八个内存里面分别保存了4个ROM区的16位内存地址(低8为+高8位),用来记录player精灵当前所在的位置(最少占1格,最多占4格)。 思路就是将精灵的位置映射到地图中,地图数据保存在命名表,命名表的数据又是从ROM中提取出来的,所以直接将精灵的位置映射到ROM了。 $13 $0F (Xp,Yp) 分别保存了精灵的水平和垂直的偏移量(值都是在F9~07间变化...
by rebeLdanceR
Fri Jan 18, 2013 3:36 am
Forum: NESdev
Topic: Thinking clearly about collision detection
Replies: 43
Views: 8164

Re: Thinking clearly about collision detection

In my game,,collision detection is OK,, For the operation of the vram will be difficult But : LDA #$20 STA $2006 LDA #$00 STA $2006 LDA #$90 STA $01 LDA #$e0 STA $00 LDY #$00 LDX #$04 loop: LDA ($00),Y STA $2007 INY BNE loop INC $01 DEX BNE loop So:The location of the player will be mapped to the $9...