People always whine about the keyboard controls on the Spectrum version of Ant Attack, so I've produced a hacked version of the snapshot which I hope will address such concerns. The changes I've made are:
Here's a zip file containing .z80 and .sna snapshots of the new version and a .pok file for the do-it-yourself types.
For the curious, here's the new code. In addition I nop'd out bits of the camera angle code, and changed the call instruction so it calls my keyboard handler.
I think the chunk of memory I put it in is unused...
; New keyboard code in patch space: .org $9400 ;37888 ; ### get player direction and flags ### start: ld a,($B422) ;city view number ld h,a ld d,(ix+4) ;player direction ld a,(ix+7) ;player flags and $f9 ;no walk/jump by default ld e,a ; ### jumping ### ld bc,$7FFE ;key port for jump1 key (space) in a,(c) and $01 ;key bit for jump1 key jr nz,nojump1 set 1,e nojump1: ld b,$FE ;key port for jump2 key (X) in a,(c) and $04 ;key bit for jump2 key jr nz,nojump2 set 1,e ; ### walking in current direction ### nojump2: ld b,$FE ;key port for walk key (V) in a,(c) and $10 ;key bit for walk key jr nz,nowalk set 2,e nowalk: ld a,(ix+6) ;boy sleep count and a jr nz,noturn ;no turning while asleep ; ### turning left/right ### inc d ;where left turn goes ld b,$7F ;key port for left key (N) in a,(c) and $08 ;key bit for left key jr z,doturn dec d ;where right turn goes dec d ld b,$7F ;key port for right key (M) in a,(c) and $04 ;key bit for right key jr z,doturn ; ### directional walk keys ### ld d,0 ld b,$FD ;key port for dir0 (A) in a,(c) and $01 ;key bit for dir0 jr z,dodir inc d ;dir1 ld b,$DF ;key port for dir1 (P) in a,(c) and $01 ;key bit for dir1 jr z,dodir inc d ;dir2 ld b,$FB ;key port for dir2 (Q) in a,(c) and $01 ;key bit for dir2 jr z,dodir inc d ;dir3 ld b,$BF ;key port for dir3 (L) in a,(c) and $02 ;key bit for dir3 jr nz,noturn dodir: ld a,d ;walk direction sub h ;view direction ld d,a set 2,e doturn: ld (ix+4),d ;set player direction noturn: ld (ix+7),e ;set player flags ; ### recenter view ### ld b,$BF ;key port for ENTER in a,(c) and $01 ;key bit for ENTER ret nz ;leave now if not ld de,$12FD ld a,h ;view direction and a jr z,doview ld de,$FDEE dec a jr z,doview ld de,$EE03 dec a jr z,doview ld de,$0312 doview: jp $843B ;into view rotation routine
Web page by Tyrone C. | Back to homepage