From RoadsideThoughts ...
A Bit of Vectrex History
 
Introduction
Programmer's
Guide
 
The RUM
 
Mine Storm
Fortress of
Narzod
 
Dark Tower
   
Sitemap
     
 

Vectrex 6809 Source Code

Fortress of Narzod




Index of Narzod Files

The top most file for the Fortress of Narzod:

NARZOD.ASM

The associated files:

CITDEL.NAR GBULET.NAR MAIN.NAR TAIL.NAR
COLLIDE.NAR GGUARD.NAR PACKS.NAR TIMERS.NAR
GAME.NAR GSPIKE.NAR PRSPCT.NAR WALLS.NAR
GBIRD.NAR INIT.NAR SOUND.NAR  
GBLAST.NAR KILLER.NAR SUBR.NAR  

KILLER.NAR - Rev. B

;
;
         IF      L.KIL = OFF      ;-------------------------------------------
         LIST    -L               ;--  KILLER  -------------------------------
         ENDIF                    ;-------------------------------------------
;
;
;
;
;  KILLER SEQUENCE
;  ===============
;
         SETDP   $C8
;        =====   ===
;
KILLER   LDA     #$01             ;  INITIALIZE KILLER SEQUENCE
         STA     KILFLG           ;  .    SET KILLER SEQUENCE FLAG
;
         LDA     #$50             ;  .    SET FORTRESS INTENSITY
         STA     KLLINT           ;  .    .
;
         JSR     CLRGAM           ;  .    CLEAR GAME TABLES
;
;==========================================================================JJH
;        CLR     ABORT            ;  CODE DELETED - REV. B CHANGES   ======JJH
;        CLR     LOCK             ;  .                               ======JJH
;==========================================================================JJH
;
         LDA     #$40             ;  .    SET-UP FOR SPIKERS TO SPLIT
         STA     GAMCMD           ;  .    .
;
         LDA     #$06             ;  .    SET KILLER HIT COUNTER
         STA     KILHIT           ;  .    .
;
         CLR     KILDED           ;  .    CLEAR KILLER DEAD FLAG
;
         LDD     #$0200           ;  .    SET KILLER 'X' DISPLACEMENT
         STD     KILXD            ;  .    .
;
         LDX     #KLGRD           ;  .    INITIALIZE GUARDIAN TABLE
         LDY     #GRDTBL          ;  .    .
         JSR     SMOVE            ;  .    .
;
         JSR     RANDOM           ;  .    SET-UP SPIKER RELEASE TIMER
         ANDA    #$1F             ;  .    .
         ORA     #$08             ;  .    .
         STA     SPKTIM           ;  .    .
;
         JSR     INTROD           ;  .    SET-UP ROADWAY LIMITS
         BRA     KILL10           ;  .    .
;
;
;
KLOCK1   JSR     LOCKUP           ;  LOCK-UP ON GAME SEQUENCE
;
;
KILL10   PSHS    DP               ;  SET 'DP' TO I/O
         JSR     WAIT             ;  WAIT FOR FRAME BOUNDARY
         JSR     CITDEL           ;  DRAW PLAY FIELD
;
         PULS    DP               ;  SET 'DP' TO RAM
         SETDP   $C8              ;  .
;
;
         LDD     KILXD            ;  EQUALIZE KILLER FRAGMENTS
         STD     GRD.00 + GRDXD   ;  .    RESET 'X' DISPLACEMENT
;
         LDU     #GRD.00 + GRDYD  ;  .    FRAGMENT #2
         LDX     #GRD.01 + GRDYD  ;  .    .
         LDA     #GRDLEN - 1      ;  .    .
         JSR     BLKMOV           ;  .    .
;
         LDX     #GRD.02 + GRDYD  ;  .    FRAGMENT #3
         LDA     #GRDLEN - 1      ;  .    .
         JSR     BLKMOV           ;  .    .
;
         LDX     #GRD.03 + GRDYD  ;  .    FRAGMENT #4
         LDA     #GRDLEN - 1      ;  .    .
         JSR     BLKMOV           ;  .    .
;
         CLR     TEMP1            ;  .    HAS ANY FRAGMENT BEEN HIT ?
         LDA     GRD.00 + GRDFLG  ;  .    .    FRAGMENT #1
         BPL     KILL20           ;  .    .    .
         ANDA    #$7F             ;  .    .    .    RESET FRAGMENT HIT FLAG
         STA     GRD.00 + GRDFLG  ;  .    .    .    .
         INC     TEMP1            ;  .    .    .    RECORD HIT
;
KILL20   LDA     GRD.01 + GRDFLG  ;  .    .    FRAGMENT #2
         BPL     KILL21           ;  .    .    .
         ANDA    #$7F             ;  .    .    .    RESET FRAGMENT HIT FLAG
         STA     GRD.01 + GRDFLG  ;  .    .    .    .
         INC     TEMP1            ;  .    .    .    RECORD HIT
;
KILL21   LDA     GRD.02 + GRDFLG  ;  .    .    FRAGMENT #3
         BPL     KILL22           ;  .    .    .
         ANDA    #$7F             ;  .    .    .    RESET FRAGMENT HIT FLAG
         STA     GRD.02 + GRDFLG  ;  .    .    .    .
         INC     TEMP1            ;  .    .    .    RECORD HIT
;
KILL22   LDA     GRD.03 + GRDFLG  ;  .    .    FRAGMENT #4
         BPL     KILL23           ;  .    .    .
         ANDA    #$7F             ;  .    .    .    RESET FRAGMENT HIT FLAG
         STA     GRD.03 + GRDFLG  ;  .    .    .    .
         INC     TEMP1            ;  .    .    .    RECORD HIT
;
;
;==========================================================================JJH
;KILL23  LDA     TEMP1            ;  CODE DELETED - REV. B CHANGES   ======JJH
;        LBEQ    KILL30           ;  .                               ======JJH
;==========================================================================JJH
;
;
;==========================================================================JJH
KILL23   LDA     TEMP1            ;  CODE ADDED - REV. B CHANGES     ======JJH
         BEQ     KILL30           ;  .                               ======JJH
;==========================================================================JJH
;
         DEC     KILHIT           ;  .    .    .    DECREMENT HIT COUNTER
;
         LDA     #$80             ;  .    .    .    SET 'OUCH' FLAG
         STA     OUCH             ;  .    .    .    .
         CLR     EXPLO1           ;  .    .    .    .    RESET EXPLOSION FLAG
         CLR     XACON            ;  .    .    .    .    .
;
         LDA     KILHIT           ;  .    .    .    SET NEW ENERGY LEVELS
         CMPA    #$02             ;  .    .    .    .    IS KILLER DEAD ?
         LBLT    KDYING           ;  .    .    .    .    .
;
         STA     GRD.00 + GRDERG  ;  .    .    .
         STA     GRD.01 + GRDERG  ;  .    .    .
         STA     GRD.02 + GRDERG  ;  .    .    .
         STA     GRD.03 + GRDERG  ;  .    .    .
;
;
KILL30   LDA     SPKTIM           ;  RELEASE A SPIKER THIS FRAME ?
         BNE     KILL90           ;  .    SPIKE TIMER = 0 ?
;
         LDA     FRAME            ;  .    RELEASE SPIKER AT TOP OF ARM SWING
         ANDA    #$18             ;  .    .
         CMPA    #$08             ;  .    .
         BEQ     KILL91           ;  .    .
         CMPA    #$10             ;  .    .
         BEQ     KILL91           ;  .    .
;
         LDU     #SPKTBL          ;  .    RELEASE SPIKER
         LDB     #GUARDS + 4      ;  .    .
;
KILL81   LDA     SPKFLG,U         ;  .    .    FIND ACTIVE SPIKER
         BEQ     KILL82           ;  .    .    .
;
         LEAU    SPKLEN,U         ;  .    .    TRY NEXT ENTRY
         DECB                     ;  .    .    .
         BNE     KILL81           ;  .    .    .
         BRA     KILL90           ;  .    .    .
;
KILL82   LDD     GRD.00 + GRDYW   ;  .    .    DROP INDICATED SPIKER
         ADDD    #$0A00           ;  .    .    .    SET 'Y' POSITION
         STD     SPKYW,U          ;  .    .    .    .
         LDD     GRD.00 + GRDXW   ;  .    .    .    SET 'X' POSITION
         STD     SPKXW,U          ;  .    .    .    .
         LDA     SPKYW,U          ;  .    .    .    SET 'YX' POSITION
         LDB     SPKXW,U          ;  .    .    .    .
         STD     SPKYX,U          ;  .    .    .    .
;
         LDA     #$01             ;  .    .    .    SET SPIKER FLAG
         STA     SPKFLG,U         ;  .    .    .    .
;
         JSR     RANDOM           ;  .    .    .    DIRECTED OR RANDOM SHOT ?
         BPL     KILL83           ;  .    .    .    .
;
         LDD     BLSTYX           ;  .    .    .    DIRECTED SPIKER SHOT
         SUBA    SPKYW,U          ;  .    .    .    .    CALCULATE DELTA 'YX'
         SUBB    SPKXW,U          ;  .    .    .    .    .
         JSR     CMPASS           ;  .    .    .    .    CALCULATE ANGLE
         SUBA    #$10             ;  .    .    .    .    .
         STA     SPKANG,U         ;  .    .    .    .    .
         BRA     KILL84           ;  .    .    .    .
;
KILL83   JSR     SWING            ;  .    .    .    RANDOM SPIKER SHOT
         ADDB    #$20             ;  .    .    .    .
         STB     SPKANG,U         ;  .    .    .    .
;
KILL84   LDA     #$50             ;  .    .    .    CALCULATE DISPLACEMENTS
         JSR     CALDSP           ;  .    .    .    .
;
         JSR     RANDOM           ;  .    .    .    RESET SPIKE TIMER
         ANDA    #$0F             ;  .    .    .    .
         ORA     #$04             ;  .    .    .    .
         STA     SPKTIM           ;  .    .    .    .
;
KILL90   DEC     SPKTIM           ;  DECREMENT SPIKE TIMER
;
;
KILL91   JSR     GBLAST           ;  HANDLE BLASTER GAME LOGIC
         JSR     GGUARD           ;  HANDLE KILLER GUARDIAN LOGIC
         JSR     GBULET           ;  HANDLE BULLET GAME LOGIC
         JSR     GSPIKE           ;  HANDLE SPIKER GAME LOGIC
         JSR     CBULT            ;  HANDLE BULLETS VS. BLASTER
         JSR     CGUARD           ;  HANDLE BLASTER VS. KILLER
         JSR     CSPIKE           ;  HANDLE BULLET VS. SPIKER COLLISIONS
         JSR     SOUND            ;  HANDLE TUNES AND SOUND-EFFECTS
         JSR     TAIL             ;  HANDLE TAIL-END LOGIC
;
;
         LDA     ABORT            ;  GAME ABORTED ?
         LBEQ    KILL10           ;  .
;
         LDA     EXPTMR           ;  SCORE ONE FOR KILLER - BLASTER JUST GOT IT
         CMPA    #$30             ;  .    WAIT FOR BLASTER EXPLOSION TO FINISH
         LBGE    KILL10           ;  .    .
;
;==========================================================================JJH
;        LDA     LOCK             ;  CODE DELETED - REV. B CHANGES   ======JJH
;        LBNE    KLOCK1           ;  .                               ======JJH
;        JMP     RSTLVL           ;  .                               ======JJH
;==========================================================================JJH
;
;==========================================================================JJH
         JSR     TAIL6A           ;  CODE ADDED - REV. B CHANGES     ======JJH
         LDA     LOCK             ;  .                               ======JJH
         LBNE    KLOCK1           ;  .                               ======JJH
         JMP     RSTLV0           ;  .                               ======JJH
;==========================================================================JJH
;
;
;
;        KILLER DYING SEQUENCE
;        ---------------------
;
KDYING   LDA     #$7F             ;  SET-UP FOR KILLERS DEATH
         STA     EKLTMR           ;  .    SET EXPLOSION TIMERS
;
         LDX     #GRD.00 + GRDYW  ;  .    INITIATE FRAGMENT #1
         LDU     #EKL.00          ;  .    .
         LDA     #$08             ;  .    .
         JSR     EXPDSP           ;  .    .
;
;==========================================================================JJH
;        LDX     #GRD.00 + GRDYW  ;  CODE DELETED - REV. B CHANGES   ======JJH
;==========================================================================JJH
         LDU     #EKL.01          ;  .    .
         LDA     #$10             ;  .    .
         JSR     EXPDSP           ;  .    .
;
;
;==========================================================================JJH
;        LDX     #GRD.00 + GRDYW  ;  CODE DELETED - REV. B CHANGES   ======JJH
;==========================================================================JJH
         LDU     #EKL.02          ;  .    .
         LDA     #$18             ;  .    .
         JSR     EXPDSP           ;  .    .
;
;
;==========================================================================JJH
;        LDX     #GRD.00 + GRDYW  ;  CODE DELETED - REV. B CHANGES   ======JJH
;==========================================================================JJH
         LDU     #EKL.03          ;  .    .
         LDA     #$20             ;  .    .
         JSR     EXPDSP           ;  .    .
;
         LDA     #$20             ;  .    SET EXPLOSION SOUND FLAG
         STA     SIZZLE           ;  .    .
         BRA     KDIE1            ;  .    .
;
;
;
KLOCK2   JSR     LOCKUP           ;  LOCK-UP ON GAME SEQUENCE
;
;
KDIE1    LDA     EKLTMR           ;  KILLER IS DYING
         CMPA    #$30             ;  .    KILLER EXPLOSION DONE ALREADY ?
         LBLT    KDIE2            ;  .    .
         SUBA    #$02             ;  .    DECREMENT TIMER
         STA     EKLTMR           ;  .    .
;
         LDX     #PKLL01          ;  .    HANDLE FRAGMENT #1
         LDU     #RGRD1           ;  .    .
         LDY     #EKL.00          ;  .    .
         LDA     #$FE             ;  .    .
         JSR     MOVEXP           ;  .    .
;
         LDX     #PKLL12          ;  .    HANDLE FRAGMENT #2
         LDU     #RGRD2           ;  .    .
         LDY     #EKL.01          ;  .    .
         LDA     #$02             ;  .    .
         JSR     MOVEXP           ;  .    .
;
         LDX     #PKLL23          ;  .    HANDLE FRAGMENT #3
         LDU     #RGRD3           ;  .    .
         LDY     #EKL.02          ;  .    .
         LDA     #$FD             ;  .    .
         JSR     MOVEXP           ;  .    .
;
         LDX     #PKLL30          ;  .    HANDLE FRAGMENT #4
         LDU     #GRD.01          ;  .    .
         LDY     #EKL.03          ;  .    .
         LDA     #$01             ;  .    .
         JSR     MOVEXP           ;  .    .
;
         PSHS    DP               ;  .    SET 'DP' TO I/O
         SETDP   $D0              ;  .    .
;
         JSR     WAIT             ;  .    WAIT FOR FRAME BOUNDARY
         JSR     CITDEL           ;  .    DRAW PLAY FIELD
;
         LDA     EKLTMR           ;  .    SET EXPLOSION INTENSITY
         JSR     INTENS           ;  .    .
;
;
;==========================================================================JJH
;        LDD     EKL.00 + EKLYX   ;  CODE DELETED - REV. B CHANGES   ======JJH
;        JSR     POSITD           ;  .                               ======JJH
;        LDX     #RGRD1           ;  .                               ======JJH
;        LDA     X+               ;  .                               ======JJH
;        LDB     GRD.00 + GRDSIZ  ;  .                               ======JJH
;        JSR     TDUFFY           ;  .                               ======JJH
;                                                                    ======JJH
;        LDD     EKL.01 + EKLYX   ;  .                               ======JJH
;        JSR     POSITD           ;  .                               ======JJH
;        LDX     #RGRD2           ;  .                               ======JJH
;        LDA     X+               ;  .                               ======JJH
;        LDB     GRD.00 + GRDSIZ  ;  .                               ======JJH
;        JSR     TDUFFY           ;  .                               ======JJH
;                                                                    ======JJH
;        LDD     EKL.02 + EKLYX   ;  .                               ======JJH
;        JSR     POSITD           ;  .                               ======JJH
;        LDX     #RGRD3           ;  .                               ======JJH
;        LDA     X+               ;  .                               ======JJH
;        LDB     GRD.00 + GRDSIZ  ;  .                               ======JJH
;        JSR     TDUFFY           ;  .                               ======JJH
;                                                                    ======JJH
;        LDD     EKL.03 + EKLYX   ;  .                               ======JJH
;        JSR     POSITD           ;  .                               ======JJH
;        LDX     #GRD.01          ;  .                               ======JJH
;        LDA     X+               ;  .                               ======JJH
;        LDB     GRD.00 + GRDSIZ  ;  .                               ======JJH
;        JSR     TDUFFY           ;  .                               ======JJH
;==========================================================================JJH
;
;
;==========================================================================JJH
         LDY     EKL.00 + EKLYX   ;  CODE ADDED - REV. B CHANGES     ======JJH
         LDX     #RGRD1           ;  .                               ======JJH
         LDB     GRD.00 + GRDSIZ  ;  .                               ======JJH
         JSR     DFSHRT           ;  .                               ======JJH
;                                                                    ======JJH
         LDY     EKL.01 + EKLYX   ;  .                               ======JJH
         LDX     #RGRD2           ;  .                               ======JJH
         JSR     DFSHRT           ;  .                               ======JJH
;                                                                    ======JJH
         LDY     EKL.02 + EKLYX   ;  .                               ======JJH
         LDX     #RGRD3           ;  .                               ======JJH
         JSR     DFSHRT           ;  .                               ======JJH
;                                                                    ======JJH
         LDY     EKL.03 + EKLYX   ;  .                               ======JJH
         LDX     #GRD.01          ;  .                               ======JJH
         JSR     DFSHRT           ;  .                               ======JJH
;==========================================================================JJH
;
;
         BRA     KDIE3            ;  .    .
;
;
KDIE2    PSHS    DP               ;  .    SET 'DP' TO I/O
         SETDP   $D0              ;  .    .
;
         JSR     WAIT             ;  .    WAIT FOR FRAME BOUNDARY
         JSR     CITDEL           ;  .    DRAW PLAY FIELD
;
KDIE3    PULS    DP               ;  .    SET 'DP' TO RAM
         SETDP   $C8              ;  .    .
;
         CLR     SHOOT            ;  .    CLEAR MISC. SOUND FLAGS
         CLR     OUCH             ;  .    .
;
         JSR     GBLAST           ;  .    HANDLE BLASTER GAME LOGIC
         JSR     GBULET           ;  .    HANDLE BULLET GAME LOGIC
         JSR     GSPIKE           ;  .    HANDLE SPIKER GAME LOGIC
         JSR     CBULT            ;  .    HANDLE BULLET VS. BLASTER COLLISIONS
         JSR     CSPIKE           ;  .    HANDLE BULLET VS. SPIKER COLLISIONS
         JSR     SOUND            ;  .    HANDLE SOUND EFFECTS
;
         LDA     FRAME            ;  .    RAMP FORTRESS INTENSITY
         ANDA    #$03             ;  .    .
         BNE     KDIE5            ;  .    .
         LDA     SIZZLE           ;  .    .    RAMP UP OR DOWN ?
         BMI     KDIE4            ;  .    .    .
         BEQ     KDIE4            ;  .    .    .
;
         INC     KLLINT           ;  .    .    RAMP INTENSITY UP
         BVC     KDIE5            ;  .    .    .
         LDA     #$7F             ;  .    .    .    INTENSITY LIMITED TO $7F
         STA     KLLINT           ;  .    .    .    .
         BRA     KDIE5            ;  .    .    .    .
;
KDIE4    LDA     KLLINT           ;  .    .    RAMP INTENSITY DOWN
         BEQ     KDIE5            ;  .    .    .
         DEC     KLLINT           ;  .    .    .
;
KDIE5    JSR     TAIL             ;  .    HANDLE TAIL-END LOGIC
;
         LDA     KLLINT           ;  .    END OF KILLER EXPLOSION SEQUENCE ?
         CMPA    #$20             ;  .    .
         LBGT    KDIE1            ;  .    .
;
;
;
         LDA     ABORT            ;  KILLER SEQUENCE DONE !
         BEQ     KDEAD            ;  .    GAME ABORTED ?
;
;==========================================================================JJH
;        LDA     LOCK             ;  CODE DELETED - REV. B CHANGES   ======JJH
;        LBNE    KLOCK2           ;  .                               ======JJH
;        JMP     RSTLVL           ;  .                               ======JJH
;==========================================================================JJH
;
;==========================================================================JJH
         JSR     TAIL6A           ;  CODE ADDED - REV. B CHANGES     ======JJH
         LDA     LOCK             ;  .                               ======JJH
         LBNE    KLOCK2           ;  .                               ======JJH
         JMP     RSTLV0           ;  .                               ======JJH
;==========================================================================JJH
;
;
;
KDEAD    JSR     INTREQ           ;  CLEAR SOUND REGISTERS
;
         LDX     #PLEVEL          ;  BUMP GAME LEVEL FOR THIS PLAYER
         LDA     ACTPLY           ;  .
         LDX     A,X              ;  .
         LDA     #$01             ;  .
         JSR     BYTADD           ;  .
;
         JSR     ACTPTR           ;  BUMP BLASTER COUNTER FOR THIS PLAYER
         INC     6,Y              ;  .
;
         JSR     CLRGAM           ;  START AT NEXT LEVEL
         CLR     LFLAG            ;  .    RESET LEVEL FLAG
         JMP     SEQNCR           ;  .
;
;
;
KLGRD    DB      (KEGRD - *) - 1  ;  KILLER GUARDIAN
         DB      $19
         DW      $0000,$0200,$E000,$0000,$E000
         DB      $00,$00,$00,$07
;
         DB      $21
         DW      $0000,$0000,$0000,$0000,$0000
         DB      $00,$00,$00,$00
;
         DB      $29
         DW      $0000,$0000,$0000,$0000,$0000
         DB      $00,$00,$00,$00
;
         DB      $31
         DW      $0000,$0000,$0000,$0000,$0000
         DB      $00,$00,$00,$00
KEGRD    EQU     *
;
;
         IF      L.KIL = OFF      ;-------------------------------------------
         LIST    *                ;-------------------------------------------
         ENDIF                    ;-------------------------------------------