Site Map | Contact Info | Home  
  
 Home
 Products
 ROMHACK Toolbox
 Ordering Info
 Code Disassembly
  Bega's Battle
  Cliffhanger
  Thayer's Quest
 My Gameroom
 Links

 

 

Page1

Page2 

Page3 

Page4 

Page5 

Page6 

         STA L042A,X            ;
         STA L0446,X            ;
         STA L0454,X            ;
         STA L0462,X
         STA L0470,X
         STA L047E,X
         STA L040E,X
         LDA #$FF
         STA L0400,X
         STA L0438,X
         DEX
         BPL L6B4C
;----------------------------------------------------
;               
;----------------------------------------------------
         LDX #$0A               ;
         LDA #$00               ;
L6B75:   STA L048C,X            ;
         STA L0497,X
         STA L04A2,X
         STA L04AD,X
         DEX
         BPL L6B75
;----------------------------------------------------
;               
;----------------------------------------------------
         LDX #$11               ;
         LDA #$00               ;
L6B88:   STA L04B8,X            ;
         DEX
         BPL L6B88
;----------------------------------------------------
;               
;----------------------------------------------------
         LDA #$00               ;
         STA L00A7              ;
         STA L00A9              ;
         LDA #$7F               ;
         STA L00AB              ;
;----------------------------------------------------
;               
;----------------------------------------------------
         LDX #$0D               ;
         LDA #$00               ;
L6B9C:   STA L04CA,X            ;
         DEX                    ;
         BPL L6B9C              ;
;----------------------------------------------------
;               Reset Bega and Shot   
;----------------------------------------------------
         LDA #$00               ;
         STA CDTMV5+1           ;
         JSR L6D10              ; Set Bega's starting position
         LDA #$00               ;
         STA L00D2              ;
         STA L00D1              ;
;----------------------------------------------------
;               
;----------------------------------------------------
         LDX #$09               ;
         LDA #$FF               ;
L6BB4:   STA L0300 ,X           ;
         STA DAUX1,X            ;
         STA LaserXPos,X        ;
         STA HATABS+4,X         ;
         DEX                    ;
         BPL L6BB4              ;
;----------------------------------------------------
;               
;----------------------------------------------------
         LDX #$00               ;
L6BC5:   LDA #$03               ;
         STA L3EE0,X            ;
         LDA #$FF               ;
         STA L3AE0,X            ;
         INX                    ;
         BNE L6BC5              ;
;----------------------------------------------------
;               
;----------------------------------------------------
         LDA #$74               ;
         STA L00A6              ;
         LDA #$00               ;
         STA DMASK              ;
         LDA Level              ; Get Level
         CMP #$0C               ; Are we at Level 12?
         BCC L6BF6              ; Not yet so skip ahead
         CMP #$15
         BCC L6BEE
         LDA #$02
         STA CDTMA2+
1
         
JMP L6BFB
L6BEE:   LDA #$01
         STA CDTMA2+
1
         
JMP L6BFB
L6BF6:   LDA #$00
         STA CDTMA2+
1
;----------------------------------------------------
;              Do Difficulty Check
;----------------------------------------------------
L6BFB:   LDA L1002              ; Get DIP bank 2
         AND #$20               ; Check difficulty
         BEQ L6C08              ; Hard difficulty so jump ahead
         LDA CDTMA2+1           ;
         JMP L6C0E              ;
L6C08:   CLC
         LDA CDTMA2+
1
         
ADC #$04
L6C0E:   STA L04BA
         
CLC
         LDA L04BA
         
ADC L04D8
         STA L04BA
         RTS                   
; Return
;----------------------------------------------------
;         Play DEFAULT video sequence for level
;----------------------------------------------------
L6C1C:   LDA #$13               ; Video Sequence = ? (Frame xxxxx)
         JSR L54A7              ; Play LaserDisc video sequence
L6C21:   LDA SearchStatus       ; Check LDP search status
         CMP #$01
         BEQ L6C34
         
CMP #$02
         BEQ L6C34
         LDX #$01               
; Delay Count = 1
         JSR L4BD2              ; Run programmable Delay
         JMP L6C21
L6C34:   JSR L71D0             
; Clear Sprite Bank 1 & 2 (2800-281F,2BE0-2BFF)
         JSR L71EC              ; Erase Sprite RAM (3800-3FFF)
         JSR L71B8              ; Screen Transition, Clear from inside out
         JSR L5535              ; Update Scoring Overlay
         LDX #$72               ; Message = "" ($6C72)
         LDY #$6C               ; Message = "" ($6C72)
         JSR L4831              ; Print Text Message
L6C47:   LDA SearchStatus       ; Check LDP search status
         CMP #$02
         BEQ L6C56
         LDX #$01
         JSR L4BD2             
; Run Programmable Delay
         JMP L6C47
L6C56:   JSR L719E             
; Screen Transition, Fill from outside in
         LDA #$01               ; Set death marker
         STA LifeLost           ; Indicate to Main Loop that player died
         JSR L459A              ; Erase Video Screen
         LDY PlayerNumber
         LDA #$FF
         STA Player1Lives,Y
         LDX #$FF
         STX L04DA
         TXS
         
JMP L4145



;----------------------------------------------------
;               unknown data
;----------------------------------------------------
         ASL A
         .
BYTE $3A
         ORA L1A1F,X
         .
BYTE $0F,$1C
         
BRK
         .
BYTE $1A
         ASL DOSVEC+
1,X
         .
BYTE $23,$0F,$1C
         
INC L3A67,X
         .
BYTE $23
         ORA L561F,Y
         JSR APPMHI+
1
         .
BYTE $12,$0F
         ASL DiagMessage_HI,X
         .
BYTE $0F
         ASL L0C00
         .
BYTE $0F
         ORA (DOSVEC+
1),Y
         
INC L3AC9,X
         ORA L200B,X
         .
BYTE $0F
         
BRK
         ASL L0F12,X
         
BRK
         
AND (DiagMessage_LO,X)
         .
BYTE $1C
         ASL APPMHI,X
         .
BYTE $FF

;----------------------------------------------------
;             Jump Routine Address (0-23)
;----------------------------------------------------
L6CA7:   .WORD L8A51,L84BF,L84F4,L8486,L8A86,L86AF
         .
WORD L893B,L87E5,L886C,L88F8,L8974,L89AC
         .
WORD L84BF,L8A51,L8533,L8A86,L86AF,L893B
         .
WORD L8533,L886C,L89AC,L8A51,L844B,L8A86

;----------------------------------------------------
;              Jump Routine Sound (0-23)
;----------------------------------------------------
L6CD7:   .BYTE $09,$0D,$11,$10,$0F,$0E
         .
BYTE $12,$0F,$0E,$14,$13,$13
         .
BYTE $0D,$09,$0C,$0F,$0E,$12
         .
BYTE $0C,$0F,$13,$09,$0C,$0F


;----------------------------------------------------
;             
;----------------------------------------------------
L6CEF:   LDX #$03               ;
L6CF1:   LDA L0093,X            ;
         CMP #$FF               ;
         BEQ L6CFD
         STA Ptr1_LO
         CPY Ptr1_LO
         BEQ L6D0D
L6CFD:   DEX
         BPL L6CF1
         INX
L6D01:   LDA L0093,X
         
CMP #$FF
         BEQ L6D0D
         INX
         CPX #$04
         BNE L6D01
         
BRK                    ;
L6D0D:   STY L0093,X            ;
         RTS                    ;



;----------------------------------------------------
;         Setup Bega's starting position
;----------------------------------------------------
L6D10:   LDA #$40               ;
         STA MasterReg          ;
         LDA #$00               ;
         STA VNTD               ;
         LDA #$01               ;
         LDX #$05               ;
L6D1C:   STA ICPTHZ,X           ;
         DEX
         BPL L6D1C
;----------------------------------------------------
;         Setup Bega's sprite pictures
;----------------------------------------------------
         LDX #$05               ; Loop = 6 sprites to setup
         LDY #$6F               ; Pictures = $6A - $6F
L6D25:   STY BegaPic,X          ; Set Bega sprite picture
         DEY                    ; Next picture
         DEX                    ; Next sprite
         BPL L6D25              ; Loop until all 6 sprites initialized
;----------------------------------------------------
;         Set Bega's starting position x,y
;----------------------------------------------------
         LDA #$70               ; XPos = 112
         STA BegaXPos1L         ; Set Bega's x position (left half)
         STA BegaXPos2L         ; Set Bega's x position (left half)
         STA BegaXPos3L         ; Set Bega's x position (left half)
         LDA #$80               ; XPos = 128
         STA BegaXPos1R         ; Set Bega's x position (right half)
         STA BegaXPos2R         ; Set Bega's x position (right half)
         STA BegaXPos3R         ; Set Bega's x position (right half)
         LDA CDTMA1+1
         BNE L6D5B
         
JMP L6D5B
         LDA #$05               
; Sound = #5
         JSR L51CE              ; Play Sound
         LDA #$10
         STA BegaYPos1L
         STA FKDEF
         LDA #$20
         STA FKDEF+
1
         STA PALNTS
         LDA #$30
         STA LOGCOL
         STA ADRESS
         RTS
L6D5B:   LDA #$B0
         STA BegaYPos1L
         STA FKDEF
         LDA #$C0
         STA FKDEF+
1
         STA PALNTS
         LDA #$D0
         STA LOGCOL
         STA ADRESS
         RTS




;----------------------------------------------------
;         (called from Main Loop)
;----------------------------------------------------
L6D6E:   LDA DMASK              ;
         BEQ L6D76              ;
         JMP L6DFE
L6D76:   LDA L009D
         
AND #$F0
         BEQ L6D7E
         BNE L6DA4
L6D7E:   LDA MasterReg
         
AND #$F0
         BEQ L6D86
         BNE L6DA4
L6D86:   LDA GameStatus         
; Check Game Status
         BNE L6D94
         LDA SysTimer+
1
         
CMP #$10
         BCC L6D9D
         BCS L6DD3
L6D94:   LDA L1000             
; Get Switch Input
         EOR #$FF               ; Toggle all bits
         AND #$10               ; Check S3, Service switch
         BNE L6DD3              ; S3 Service switch pressed so skip ahead
;----------------------------------------------------
;            Service switch not pressed
;----------------------------------------------------
L6D9D:   LDA SysTimer           ; Check time on System Timer
         AND #$20               ; Flash message every 533ms
         BNE L6DB9              ; Not time yet, so print message
;----------------------------------------------------
;           Erase "SERVICE" message
;----------------------------------------------------
L6DA4:   LDA #$00               ; A = 00
         STA L38D9              ; Print to screen
         STA L38DA              ; Print to screen
         STA L38DB              ; Print to screen
         STA L38DC              ; Print to screen
         STA L38DD              ; Print to screen
         STA L38DE              ; Print to screen
         RTS                    ; Return
;----------------------------------------------------
;           Print "SERVICE" message
;----------------------------------------------------
L6DB9:   LDX #$86               ; Char $86 = SPACE
         STX L38D9              ; Print to screen
         INX                    ; Char $87 = SPACE
         STX L38DA              ; Print to screen
         INX                    ; Char $88 = SPACE
         STX L38DB              ; Print to screen
         INX                    ; Char $89 = SPACE
         STX L38DC              ; Print to screen
         INX                    ; Char $8A = SPACE
         STX L38DD              ; Print to screen
         INX                    ; Char $8B = SPACE
         STX L38DE              ; Print to screen
         RTS                    ; Return

;----------------------------------------------------
;             Service switch pressed
;----------------------------------------------------
L6DD3:   LDA #$08               ; Sound = #8
         JSR L51CE              ; Play Sound
         LDA #$20               ;
         ORA MasterReg          ;
         STA MasterReg          ;
         LDX #$06               ;
L6DE0:   LDA L009B,X            ;
         AND #$F0
         BNE L6DEC
         LDA #$20
         ORA L009B,X
         STA L009B,X
L6DEC:   DEX
         BPL L6DE0
         LDA #$00
         STA TMPLBT
         LDA #$1D
         STA ESCFLG
         LDA #$01
         STA DMASK
L6DFE:   LDA DMASK
         
CMP #$01
         BEQ L6E08
         
JMP L6F18
L6E08:   JSR L700E
         LDA TMPLBT
         
CMP #$1E
         BEQ L6E13
         RTS
L6E13:   JSR L71D0             
; Clear Sprite Bank 1 & 2 (2800-281F,2BE0-2BFF)
         LDX #$0D
L6E18:   LDA #$00
         STA L041C,X
         STA L042A,X
         STA L0446,X
         STA L0454,X
         STA L0462,X
         STA L0470,X
         STA L047E,X
         STA L040E,X
         LDA #$FF
         STA L0400,X
         STA L0438,X
         DEX
         BPL L6E18
         LDX #$0A
         LDA #$00
L6E41:   STA L048C,X
         STA L0497,X
         STA L04A2,X
         STA L04AD,X
         DEX
         BPL L6E41
         LDX #$11
         LDA #$00
L6E54:   STA L04B8,X
         DEX
         BPL L6E54
         LDA #$00
         STA L00A7
         STA L00A9
         LDA #$7F
         STA L00AB
         LDX #$0D
         LDA #$00
L6E68:   STA L04CA,X
         DEX
         BPL L6E68
         LDA #$00
         STA L00D2
         STA L00D1
         LDX #$09
         LDA #$FF
L6E78:   STA L0300 ,X
         STA DAUX1,X
         STA LaserXPos,X
         STA HATABS+
4,X
         DEX
         BPL L6E78
         LDX #$0D
         LDA #$00
L6E8B:   STA Sprite1_Prop,X
         DEX
         BPL L6E8B
         LDA CDTMA2+
1
         
AND #$03
         ASL A
         ASL A
         ASL A
         ASL A
         ASL A
         STA Ptr1_LO
;----------------------------------------------------
;                Random Level Warp
;----------------------------------------------------
         LDA Random             ; Get Random Number
         AND #$1F               ; Random number between 0-31
         CLC                    ; Clear carry
         ADC Ptr1_LO            ; Add random index to pointer
         TAY                    ; Create index to random level
         LDA L6F4E,Y            ; Get random Level
         STA Level              ; Jump to Level
         LDA L6FAE,Y            ; Get random Retry
         STA VVBLKD             ; Jump to Retry
;----------------------------------------------------
;             Point to Level Data     
;----------------------------------------------------
         LDA Level              ; Get Level number
         ASL A                  ; Mulitply by 2
         TAY                    ; Index based on Level
         LDA LB2F5,Y            ; Get address where level data is stored
         STA Ptr1_LO            ; Save address
         LDA LB2F6,Y            ; Get address where level data is stored
         STA Ptr1_HI            ; Save address
;----------------------------------------------------
;           Create "Jump Routine" for level     
;----------------------------------------------------
         LDY VVBLKD             ; Point to routine number (0,1,2)
         LDA (Ptr1_LO),Y        ; Get routine number
         STA CDTMA1             ; Save routine number
         ASL A                  ; Multiply by 2
         TAY                    ; Create index to routine address
         LDA L6CA7,Y            ; Get routine address LO
         STA L00CF              ; Setup routine address
         LDA L6CA8,Y            ; Get routine address HI
         STA L00D0              ; Setup routine address
         LDA CDTMA1             ; Get routine number
         JSR L720B              ; Setup Color Palette for routine
         LDA #$05
         STA L04BB
         LDA Level
         ASL A
         TAX
         LDA LB4DF,X
         STA Ptr1_LO
         LDA LB4E0,X
         STA Ptr1_HI
         LDY VVBLKD
         LDA (Ptr1_LO),Y       
; Get Video Sequence
         JSR L54A7              ; Play LaserDisc video sequence
L6EF6:   LDA SearchStatus       ; Check LDP search status
         CMP #$01               ;
         BEQ L6F09              ;
         CMP #$02               ;
         BEQ L6F09              ;
         LDX #$01               ;
         JSR L4BD2              ; Run Programmable Delay
         JMP L6EF6
L6F09:   LDA #$1C
         STA TMPLBT
         LDA #$01
         STA ESCFLG
         LDA #$02
         STA DMASK
L6F18:   JSR L70A8
         LDA TMPLBT
         BMI L6F21
         RTS                   
; Return
L6F21:   JSR L5535              ; Update Scoring Overlay
         LDA MasterReg
         
AND #$F0
         
CMP #$20
         BNE L6F32
         LDA #$0F
         
AND MasterReg
         STA MasterReg
L6F32:   LDX #$06
L6F34:   LDA L009B,X
         
AND #$F0
         
CMP #$20
         BNE L6F42
         LDA #$0F
         
AND L009B,X
         STA L009B,X
L6F42:   DEX
         BPL L6F34
         JSR L7BB5
         LDA #$00
         STA DMASK
         RTS




;----------------------------------------------------
;           Jump to Level (using service switch)
;----------------------------------------------------
L6F4E:   .BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01
         .
BYTE $01,$01,$01,$01,$01,$01,$01,$01

;----------------------------------------------------
;          Jump to Retry (using service switch)
;----------------------------------------------------
L6FAE:   .BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00
         .
BYTE $00,$00,$00,$00,$00,$00,$00,$00




;----------------------------------------------------
;                   Draw Box
;----------------------------------------------------
L700E:   LDX TMPLBT             ; Get index (0-30)
;----------------------------------------------------
;               Setup Boxes - layer 1
;----------------------------------------------------
         LDA L7144,X            ; Get Left edge screen pointer (21 apart)
         STA Ptr1_LO            ; Save EDGE_1
         STA Ptr2_HI+1          ; Save EDGE_2
         LDA L7145,X            ; Get Left edge screen pointer (21 apart)
         STA Ptr1_HI            ; Save EDGE_1
         STA TRAMSZ             ; Save EDGE_2
;----------------------------------------------------
;            Setup Box Corners and Width
;----------------------------------------------------
         LDA L7180,X            ; Get Upper Left pointer
         STA Ptr2_LO            ; Save LOWER_RIGHT
         LDA L7181,X            ; Get Upper Left pointer
         STA Ptr2_HI            ; Save LOWER_RIGHT
         LDA L7162,X            ; Get Upper Left pointer
         STA CMCMD              ; Save UPPER_LEFT
         LDA L7163,X            ; Get Upper Left pointer
         STA WARMST             ; Save UPPER_LEFT
         LDA ESCFLG             ; Get box width
         STA APPMHI             ; Save box width
;----------------------------------------------------
;                  Draw Line
;----------------------------------------------------
L7038:   LDA #$42               ;
         LDY APPMHI             ;
         STA (Ptr1_LO),Y        ;
         STA (Ptr2_LO),Y        ; Draw LOWER_RIGHT
         LDY #$00               ;
         STA (Ptr2_HI+1),Y      ;
         STA (CMCMD),Y          ; Draw UPPER_LEFT
         CLC                    ;
         LDA #$20               ;
         ADC Ptr2_HI+1
         STA Ptr2_HI+
1
         LDA #$00
         
ADC TRAMSZ
         STA TRAMSZ
         
CLC
         LDA #$20
         
ADC CMCMD
         STA CMCMD
         LDA #$00
         
ADC WARMST
         STA WARMST
         
DEC APPMHI
         BPL L7038
;----------------------------------------------------
;              Setup Screen Pointers
;----------------------------------------------------
         LDA #$20
         STA Ptr1_LO
         LDA #$28
         STA Ptr1_HI
         LDA #$3F
         STA Ptr2_LO
         LDA #$28               
;
         STA Ptr2_HI            ;
         LDX #$1D               ;
         LDY #$00               ;
;----------------------------------------------------
;                   Draw Line
;----------------------------------------------------
L7078:   LDA #$42               ; Char = |
         STA (Ptr1_LO),Y        ; Clear screen left edge
         STA (Ptr2_LO),Y        ; Clear screen right edge
         CLC                    ; Clear carry for addition
         LDA #$20               ; Move down one row (add 32)
         ADC Ptr1_LO            ; Add to LEFT edge pointer
         STA Ptr1_LO            ; Save LEFT edge pointer
         LDA #$00               ; Add carry to high byte
         ADC Ptr1_HI            ; Add to LEFT edge pointer
         STA Ptr1_HI            ; Save LEFT edge pointer
         CLC                    ; Clear carry for addition
         LDA #$20               ; Move down one row (add 32)
         ADC Ptr2_LO            ; Add to RIGHT edge pointer
         STA Ptr2_LO            ; Save RIGHT edge pointer
         LDA #$00               ; Add carry to high byte
         ADC Ptr2_HI            ; Add to RIGHT edge pointer
         STA Ptr2_HI            ; Save RIGHT edge pointer
         DEX
         BPL L7078
         
DEC ESCFLG
         
DEC ESCFLG
         
INC TMPLBT
         
INC TMPLBT
         RTS                   
; Return



;----------------------------------------------------
;                   Erase Box
;----------------------------------------------------
L70A8:   LDX TMPLBT             ;
         LDA L7144,X            ;
         STA Ptr1_LO            ;
         STA Ptr2_HI+1
         LDA L7145,X
         STA Ptr1_HI
         STA TRAMSZ
         LDA L7180,X
         STA Ptr2_LO
         LDA L7181,X
         STA Ptr2_HI
         LDA L7162,X
         STA CMCMD
         LDA L7163,X
         STA WARMST
         LDA ESCFLG
         STA APPMHI
L70D2:   LDA #$00
         LDY APPMHI
         STA (Ptr1_LO),Y
         STA (Ptr2_LO),Y
         LDY #$00
         STA (Ptr2_HI+
1),Y
         STA (CMCMD),Y
         
CLC
         LDA #$20
         
ADC Ptr2_HI+1
         STA Ptr2_HI+
1
         LDA #$00
         
ADC TRAMSZ
         STA TRAMSZ
         
CLC
         LDA #$20
         
ADC CMCMD
         STA CMCMD
         LDA #$00
         
ADC WARMST
         STA WARMST
         
DEC APPMHI
         BPL L70D2
         
INC ESCFLG
         
INC ESCFLG
         
DEC TMPLBT
         
DEC TMPLBT
         BPL L7143             
; Yes, so leave
;----------------------------------------------------
;             Clear Edges of Text Screen
;----------------------------------------------------
         LDA #$20               ; Address = $2820
         STA Ptr1_LO            ; Set left edge
         LDA #$28               ; Address = $2820
         STA Ptr1_HI            ; Set left edge
         LDA #$3F               ; Address = $283F
         STA Ptr2_LO            ; Set right edge
         LDA #$28               ; Address = $283F
         STA Ptr2_HI            ; Set right edge
         LDX #$1D               ; Loop = 30 Rows
         LDY #$00               ; Index = 0
L7120:   LDA #$00               ; Char = SPACE
         STA (Ptr1_LO),Y        ; Clear screen left edge
         STA (Ptr2_LO),Y        ; Clear screen right edge
         CLC                    ; Clear carry for addition
         LDA #$20               ; Move down one row (add 32)
         ADC Ptr1_LO            ; Add to LEFT edge pointer
         STA Ptr1_LO            ; Save LEFT edge pointer
         LDA #$00               ; Add carry to high byte
         ADC Ptr1_HI            ; Add to LEFT edge pointer
         STA Ptr1_HI            ; Save LEFT edge pointer
         CLC                    ; Clear carry for addition
         LDA #$20               ; Move down one row (add 32)
         ADC Ptr2_LO            ; Add to RIGHT edge pointer
         STA Ptr2_LO            ; Save RIGHT edge pointer
         LDA #$00               ; Add carry to high byte
         ADC Ptr2_HI            ; Add to RIGHT edge pointer
         STA Ptr2_HI            ; Save RIGHT edge pointer
         DEX                    ; Have we reached to bottom?
         BPL L7120              ; No, loop back and continue to erase
L7143:   RTS                    ; Return



;----------------------------------------------------
;            Text Screen Locations (15 each)
;----------------------------------------------------   
L7144:   .WORD $2821,$2842,$2863,$2884,$28A5   ; $21 apart
         .WORD $28C6,$28E7,$2908,$2929,$294A
         .
WORD $296B,$298C,$29AD,$29CE,$29EF

L7162:   .
WORD $283E,$285D,$287C,$289B,$28BA   ; $1F apart
         .WORD $28D9,$28F8,$2917,$2936,$2955   ; Upper Left Corner
         .WORD $2974,$2993,$29B2,$29D1,$29F0

L7180:   .
WORD $2BC1,$2BA2,$2B83,$2B64,$2B45   ; $1F backward
         .WORD $2B26,$2B07,$2AE8,$2AC9,$2AAA   ; Lower Right Corner
         .WORD $2A8B,$2A6C,$2A4D,$2A2E,$2A0F



;----------------------------------------------------
;    Transitional Effect - Fill from outside in
;----------------------------------------------------
L719E:   LDA #$00               ; Loop = 0
         STA TMPLBT             ; Set Loop (0-30)
         LDA #$1D               ; Height = 30 rows
         STA ESCFLG             ; Set Box Width
L71A8:   JSR L700E              ; Draw box
         LDX #$01               ; Delay = 1
         JSR L4BD2              ; Run Programmable Delay
         LDA TMPLBT             ; Check Loop
         CMP #$1E               ; Have we finished 30 rows?
         BNE L71A8              ; No, so loop back and continue
         RTS                    ; Return


;----------------------------------------------------
;     Transitional Effect - Clear from inside out
;----------------------------------------------------
L71B8:   LDA #$1C               ; 28 rows?
         STA TMPLBT             ;
         LDA #$01               ;
         STA ESCFLG             ;
L71C2:   JSR L70A8              ; Erase box
         LDX #$01               ; Delay = 1
         JSR L4BD2              ; Run Programmable Delay
         LDA TMPLBT             ; Have we finished all rows?
         BPL L71C2              ; No, so loop back and continue
         RTS                    ; Return


;----------------------------------------------------
;       Clear Sprite Bank 1 & 2 (2800-281F,2BE0-2BFF)
;----------------------------------------------------
L71D0:   LDA #$00               ; Clear RAM
         LDX #$1F               ; Loop = 1F
L71D4:   STA L2800,X            ; Erase 2800-281F
         STA L2BE0,X            ; Erase 2BE0-2BFF
         DEX                    ; Decrement loop
         BPL L71D4              ; Loop until RAM cleared
         RTS                    ; Return


;----------------------------------------------------
;   Clear Sprite Bank 3 & 4 (3800-381F,3BE0-3BFF)
;----------------------------------------------------
L71DE:   LDA #$00               ; Clear sprite RAM
         LDX #$1F               ; Loop = 1F
L71E2:   STA L3800,X            ; Erase 3800-381F
         STA L3BE0,X            ; Erase 3BE0-3BFF
         DEX                    ; Decrement loop
         BPL L71E2              ; Loop until RAM cleared
         RTS                    ; Return



;----------------------------------------------------
;             Erase Sprite RAM (3800-3FFF)
;----------------------------------------------------
L71EC:   LDX #$00               ; Start loop = 0
         TXA                    ; A = 0
L71EF:   STA L3800,X            ; Erase $3800-$38FF
         STA L3900,X            ; Erase $3900-$39FF
         STA L3A00,X            ; Erase $3A00-$3AFF
         STA L3B00,X            ; Erase $3B00-$3BFF
         STA L3C00,X            ; Erase $3C00-$3CFF
         STA L3D00,X            ; Erase $3D00-$3DFF
         STA L3E00,X            ; Erase $3E00-$3EFF
         STA L3F00,X            ; Erase $3F00-$3FFF
         DEX                    ; Decrement loop
         BNE L71EF              ; Loop until 255 spots erased
         RTS                    ; Return



;----------------------------------------------------
;              Setup Color Palette
;----------------------------------------------------
;                  A = 0 - 143
;----------------------------------------------------
L720B:   BPL L721E              ; A < 128 then skip ahead and use table data
L720D:   LDA L1003              ; Check verticle blanking
         BMI L720D              ; Loop here until we leave verticle blanking
;----------------------------------------------------
;   Copy Default Color Data into Video Color RAM
;----------------------------------------------------
         LDY #$37               ; 56 bytes to copy
L7214:   LDA L4428,Y            ; Get default Color RAM Data
         STA L1800,Y            ; Write data to Video Color RAM
         DEY                    ; Go to next byte
         BPL L7214              ; Loop until all 56 bytes are copied
         RTS                    ; Return
;----------------------------------------------------
;            Handle Color Index 0-128
;----------------------------------------------------
L721E:   ASL A                  ; Creat index into address table
         TAY                    ; Y = index into address table
         LDA L723A,Y            ; Get Address from table
         STA Ptr1_LO            ; Setup pointer to data
         LDA L723B,Y            ; Get Address from table
         STA Ptr1_HI            ; Setup pointer to data
L722A:   LDA L1003              ; Check verticle blanking
         BMI L722A              ; Loop here until we leave verticle blanking
;----------------------------------------------------
; Copy 56 bytes from ROM Color Table to Color Video RAM
;----------------------------------------------------
         LDY #$37               ; 56 bytes to copy from ROM table
L7231:   LDA (Ptr1_LO),Y        ; Get data byte from ROM table
         STA L1800,Y            ; Write data to Video Color RAM
         DEY                    ; Go get next byte
         BPL L7231              ; Loop back until all 56 bytes copied
         RTS                    ; Return



;----------------------------------------------------
;           Color Data Pointers (0-127)
;----------------------------------------------------
L723A:   .WORD $735A,$7392,$73CA,$7402,$743A,$7472,$74AA,$74E2
         .
WORD $751A,$7552,$758A,$75C2,$75FA,$7632,$766A,$76A2
         .
WORD $76DA,$7712,$774A,$7782,$77BA,$77F2,$782A,$7862
         .
WORD $789A,$78D2,$790A,$7942,$797A,$79B2,$79EA,$7A22
         .
WORD $7A5A,$7A92,$7ACA,$7B02,$735A,$7392,$73CA,$7402
         .
WORD $743A,$7472,$74AA,$74E2,$751A,$7552,$758A,$75C2
         .
WORD $75FA,$7632,$766A,$76A2,$76DA,$7712,$774A,$7782
         .
WORD $77BA,$77F2,$782A,$7862,$789A,$78D2,$790A,$7942
         .
WORD $797A,$79B2,$79EA,$7A22,$7A5A,$7A92,$7ACA,$7B02
         .
WORD $735A,$7392,$73CA,$7402,$743A,$7472,$74AA,$74E2
         .
WORD $751A,$7552,$758A,$75C2,$75FA,$7632,$766A,$76A2
         .
WORD $76DA,$7712,$774A,$7782,$77BA,$77F2,$782A,$7862
         .
WORD $789A,$78D2,$790A,$7942,$797A,$79B2,$79EA,$7A22
         .
WORD $7A5A,$7A92,$7ACA,$7B02,$735A,$7392,$73CA,$7402
         .
WORD $743A,$7472,$74AA,$74E2,$751A,$7552,$758A,$75C2
         .
WORD $75FA,$7632,$766A,$76A2,$76DA,$7712,$774A,$7782
;----------------------------------------------------
;       Color Data Pointers (128-143) not used?
;----------------------------------------------------
         .WORD $77BA,$77F2,$782A,$7862,$789A,$78D2,$790A,$7942
         .
WORD $797A,$79B2,$79EA,$7A22,$7A5A,$7A92,$7ACA,$7B02               



;----------------------------------------------------
;  36 Different Color RAM Data Series (56 bytes each)
;----------------------------------------------------
;  Note:  All data series are identical to default data
;----------------------------------------------------
L735A:   .BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

L7392:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

L73CA:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

L782A:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

L797A:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
L7A78:   .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

         .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         
L7ACA:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00

L7B02:   .
BYTE $FF,$F1,$C7,$C0,$3F,$38,$07,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$D5,$9B,$90,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         .
BYTE $FF,$F8,$FF,$C0,$3F,$9B,$49,$00
         
         

;----------------------------------------------------
;                     unknown (UNUSED)
;----------------------------------------------------
L7B3A:   LDA Lunas
         BMI L7B41
         
JMP L7B68
L7B41:   LDA Level
         
CMP #$05
         BEQ L7B5F
         
CMP #$10
         BEQ L7B5F
         
CMP #$16
         BEQ L7B5F
         
CMP #$1B
         BEQ L7B5F
         
CMP #$21
         BEQ L7B5F
         
CMP #$09
         BEQ L7B64
         
JMP L7B68
L7B5F:   LDA VVBLKD
         BNE L7B68
L7B64:   LDA #$40
         STA L009B
L7B68:   RTS
         LDA VVTP+
1
         BMI L7B70
         
JMP L7B8E
L7B70:   LDA Level
         
CMP #$12
         BEQ L7B85
         
CMP #$18
         BEQ L7B85
         
CMP #$1F
         BEQ L7B85
         
CMP #$23
         BEQ L7B85
         BNE L7B8E
L7B85:   LDA VVBLKD
         BNE L7B8E
         LDA #$40
         STA L009C
L7B8E:   RTS
         LDA STMCUR_swap
         BMI L7B96
         
JMP L7BB4
L7B96:   LDA Level
         
CMP #$11
         BEQ L7BAB
         
CMP #$17
         BEQ L7BAB
         
CMP #$1C
         BEQ L7BAB
         
CMP #$22
         BEQ L7BAB
         BNE L7BB4
L7BAB:   LDA VVBLKD
         BNE L7BB4
         LDA #$40
         STA L009D
L7BB4:   RTS



;----------------------------------------------------
;                     unknown
;----------------------------------------------------
L7BB5:   LDA L009D
         
AND #$0C
         LSR A
         TAX
         LDA #$00
         STA SpritePic1,X
         STA SpritePic2,X
         LDA #$FF
         STA STMCUR_swap
         STA L009D
         LDX #$01
         LDY #$00
         CPX L0093
         BEQ L7BDA
         INY
         CPX L0094
         BEQ L7BDA
         INY
         CPX POKADR
         BEQ L7BDA
         INY
L7BDA:   CPY #$02
         BCC L7BE6
         LDA #$FF
         STA L0093,Y
         
JMP L7C05
L7BE6:   CPY #$00
         BNE L7BF9
         LDA POKADR
         
CMP #$FF
         BEQ L7C05
         STA L0093
         LDA #$FF
         STA POKADR
         
JMP L7C05
L7BF9:   LDA POKADR+
1
         
CMP #$FF
         BEQ L7C05
         STA L0094
         LDA #$FF
         STA POKADR+
1
L7C05:   RTS                   
; Return




;----------------------------------------------------
;----------------------------------------------------
;        Run DEMO of game where it "plays itself"
;            UNUSED (similar to $40A1)
;----------------------------------------------------
;----------------------------------------------------
L7C06:   JSR L4501              ; DEMO - Determine number of Begas
         JSR L452D              ; DEMO - Clear variables, Clear "swap variables"
         LDA #$01               ; DEMO -
         STA VIMIRQ             ; DEMO -
         STA PADDL1             ; DEMO -
         LDA #$00               ; DEMO - Clock = 0
         STA SysTimer           ; DEMO - Reset System Timer
         STA SysTimer+1         ; DEMO - Reset System Timer
         STA NumPlayers         ; DEMO - Clear number of players
L7C1F:   LDA #$00               ; DEMO - Sound = #0
         JSR L51CE              ; DEMO - Play Sound
         JSR L6992              ; DEMO -
         LDA #$00               ; DEMO -
         STA DemoPointer        ; DEMO -
         JSR L80E8              ; DEMO - Get DEMO Movements
L7C2F:   LDA L1003              ; DEMO -
         BPL L7C2F              ; DEMO -
         LDY #$05               ; DEMO -
L7C36:   LDA L009C,Y            ; DEMO -
         BPL L7C41              ; DEMO -
         CMP #$FF               ; DEMO -
         BEQ L7C41              ; DEMO -
         BNE L7C4E              ; DEMO -
L7C41:   DEY                    ; DEMO -
         BPL L7C36              ; DEMO -
         LDA SearchStatus       ; DEMO -
         CMP #$02               ; DEMO -
         BNE L7C4E              ; DEMO -
         JMP L7CB2              ; DEMO -
L7C4E:   JSR L47D0              ; DEMO - Update Sprites
         INC SysTimer           ; DEMO -
         LDA SysTimer           ; DEMO -
         AND #$3F               ; DEMO -
         BNE L7C61              ; DEMO -
         INC SysTimer+1         ; DEMO -
         INC L04BB              ; DEMO -
;----------------------------------------------------
;          Pseudo-random Number Generator
;----------------------------------------------------
L7C61:   INC RandSeed           ; DEMO - Increment seed ROM pointer
         BCC L7C67              ; DEMO - Check if carry is set
         INC RandSeed+1         ; DEMO - Increment seed ROM pointer+1
L7C67:   LDA RandSeed+1         ; DEMO - Get seed ROM pointer
         AND #$07               ; DEMO - Set bounds ($4000-$4700)
         ORA #$40               ; DEMO - Set bounds ($4000-$4700)
         STA RandSeed+1         ; DEMO - Limit seed ROM pointer+1
         INC Random             ; DEMO - Increment the random number
         LDA L1000              ; DEMO - Mix the number with any joystick presses
         ADC Random             ; DEMO - Add previous random number
         LDY RandSeed           ; DEMO - Use seed ROM pointer
         ADC (RandSeed),Y       ; DEMO - Add ROM data byte to random number
         ADC L3BFB              ; DEMO - Add Y-raster position(?)
         STA Random             ; DEMO - Save random number
;----------------------------------------------------
;         
;----------------------------------------------------
L7C82:   LDA L1003              ; DEMO -
         BMI L7C82              ; DEMO -
         JSR L45D7              ; DEMO - Print "1UP" or "2UP"
         JSR L7D9B              ; DEMO - Check for loss of life
         JSR L5E23              ; DEMO -
         JSR L6325              ; DEMO -
         JSR L4891              ; DEMO -
         JSR L690F              ; DEMO -
         JSR L6D6E              ; DEMO -
         LDA CDTMA1+1           ; DEMO -
         BEQ L7CAA              ; DEMO -
         LDA #$7C               ; DEMO -
         PHA                    ; DEMO -
         LDA #$A9               ; DEMO -
         PHA                    ; DEMO -
         JMP (L00CF)            ; DEMO -
L7CAA:   LDA LifeLost           ; DEMO -
         BNE L7CB2              ; DEMO -
         JMP L7C2F              ; DEMO -
L7CB2:   LDA #$00               ; DEMO -
         STA LifeLost           ; DEMO -
         STA VVBLKD             ; DEMO -
         LDA Level              ; DEMO -
         BNE L7CC9              ; DEMO -
         INC Level              ; DEMO -
         LDA #$08               ; DEMO -
         STA Lunas              ; DEMO -
         JMP L7C1F              ; DEMO -
L7CC9:   CMP #$03               ; DEMO -
         BCS L7CD7              ; DEMO -
         INC Level              ; DEMO -
         LDA #$00               ; DEMO -
         STA VVTP+1             ; DEMO -
         JMP L7C1F              ; DEMO -
L7CD7:   RTS                    ; DEMO -
         LDA #$00               ; DEMO -
         JSR L51CE              ; DEMO - Play Sound
         LDA #$05               ; DEMO - Advance to Level 5
         STA Level              ; DEMO -
         LDA #$00               ; DEMO -
         STA VVBLKD             ; DEMO -
         STA VVTP+1             ; DEMO -
         LDA #$08               ; DEMO -
         STA Lunas              ; DEMO -
L7CED:   LDA #$00               ; DEMO -
         STA SysTimer           ; DEMO -
         STA SysTimer+1         ; DEMO -
         JSR L6992              ; DEMO -
         LDA #$00               ; DEMO -
         STA DemoPointer        ; DEMO -
         JSR L80E8              ; DEMO - Get DEMO Movements
L7D00:   LDA L1003              ; DEMO -
         BPL L7D00              ; DEMO -
         LDY #$05               ; DEMO -
L7D07:   LDA L009C,Y            ; DEMO -
         BPL L7D12              ; DEMO -
         CMP #$FF               ; DEMO -
         BEQ L7D12              ; DEMO -
         BNE L7D1F              ; DEMO -
L7D12:   DEY                    ; DEMO -
         BPL L7D07              ; DEMO -
         LDA SearchStatus       ; DEMO -
         CMP #$02               ; DEMO -
         BNE L7D1F              ; DEMO -
         JMP L7D83              ; DEMO -
L7D1F:   JSR L47D0              ; DEMO - Update Sprites
         INC SysTimer           ; DEMO -
         LDA SysTimer           ; DEMO -
         AND #$3F               ; DEMO -
         BNE L7D32              ; DEMO -
         INC SysTimer+1         ; DEMO -
         INC L04BB              ; DEMO -
;----------------------------------------------------
;          Pseudo-random Number Generator
;----------------------------------------------------
L7D32:   INC RandSeed           ; DEMO -  Increment seed ROM pointer
         BCC L7D38              ; DEMO -  Check if carry is set
         INC RandSeed+1         ; DEMO -  Increment seed ROM pointer+1
L7D38:   LDA RandSeed+1         ; DEMO -  Get seed ROM pointer
         AND #$07               ; DEMO -  Set bounds ($4000-$4700)
         ORA #$40               ; DEMO -  Set bounds ($4000-$4700)
         STA RandSeed+1         ; DEMO -  Limit seed ROM pointer+1
         INC Random             ; DEMO -  Increment the random number
         LDA L1000              ; DEMO -  Mix the number with any joystick presses
         ADC Random             ; DEMO -  Add previous random number
         LDY RandSeed           ; DEMO -  Use seed ROM pointer
         ADC (RandSeed),Y       ; DEMO -  Add ROM data byte to random number
         ADC L3BFB              ; DEMO -  Add Y-raster position(?)
         STA Random             ; DEMO -  Save random number
;----------------------------------------------------
;                                 
;----------------------------------------------------
L7D53:   LDA L1003              ; DEMO -
         BMI L7D53              ; DEMO -
         JSR L45D7              ; DEMO - Print "1UP" or "2UP"
         JSR L7D9B              ; DEMO -
         JSR L5E23              ; DEMO -
         JSR L6325              ; DEMO -
         JSR L4891              ; DEMO -
         JSR L690F              ; DEMO -
         JSR L6D6E              ; DEMO -
         LDA CDTMA1+1           ; DEMO -
         BEQ L7D7B              ; DEMO -
         LDA #$7D               ; DEMO -
         PHA                    ; DEMO -
         LDA #$7A               ; DEMO -
         PHA                    ; DEMO -
         JMP (L00CF)            ; DEMO -
L7D7B:   LDA LifeLost           ; DEMO -
         BNE L7D83              ; DEMO -
         JMP L7D00              ; DEMO -
L7D83:   LDA #$00               ; DEMO -
         STA LifeLost           
         STA VVBLKD
         LDA Level
         
CMP #$07
         BCS L7D9A
         LDA #$00
         STA PADDL1
         
JMP L7CED
L7D9A:   RTS




;----------------------------------------------------
;      Do Bega's Horizontal Movement - DEMO
;----------------------------------------------------
L7D9B:   LDA MasterReg          ; DEMO - Check MasterReg for Explosion (b7)
         BPL L7DA2              ; DEMO - No explosion so skip ahead
         JMP L807D              ; DEMO - Go update Bega Explosion
L7DA2:   ASL A                  ; DEMO - Check MasterReg for beginning stage (b6)
         BPL L7DA8              ; DEMO - Bega under joystick control so skip ahead
         JMP L7EBB              ; DEMO - Print STAGE Information Screen
;----------------------------------------------------
;                Check DEMO Movement
;----------------------------------------------------
L7DA8:   DEC DemoTime           ; DEMO - Decrement move timer
         LDA DemoTime           ; DEMO - Check if move timer has expired
         BNE L7DB3              ; DEMO - Move timer still running continue with current move
         JSR L80E8              ; DEMO - Go get new move and reset the timer
L7DB3:   LDA DemoMove           ; DEMO - Check the DEMO move
         BNE L7DBB              ; DEMO - DEMO move request so skip ahead
         JMP L7E5D              ; DEMO - Otherwise, no movement so skip ahead
L7DBB:   LSR A                  ; DEMO - Check joystick direction
         BCS L7DC1              ; DEMO - LEFT pressed so do left movement
         JMP L7E15              ; DEMO - RIGHT pressed so do right movement
;----------------------------------------------------
;            Joystick LEFT pressed - DEMO
;----------------------------------------------------
L7DC1:   LDA BegaXPos1L         ; DEMO - Get Bega's X Position
         CMP #$08               ; DEMO - Is it at far left?
         BCS L7DCA              ; DEMO - No, so continue
         JMP L7E5D              ; DEMO - No left movement so leave
L7DCA:   LDA L0093              ; DEMO - Check attachments
         CMP #$FF               ; DEMO - Is a person attached to Bega?
         BEQ L7DE5              ; DEMO - No so skip ahead
         LDA BegaXPos1L         ; DEMO - Get Bega's X Position
         CMP #$18               ; DEMO - Is it 24?
         BCS L7DD9              ; DEMO - Yes, so continue
         JMP L7E5D              ; DEMO - Just leave
L7DD9:   LDA POKADR             ; DEMO -
         CMP #$FF               ; DEMO -
         BEQ L7DE5              ; DEMO -
         LDA BegaXPos1L         ; DEMO -
         CMP #$28               ; DEMO -
         BCC L7E5D              ; DEMO -
;----------------------------------------------------
;    Move 6 sprites that make up Bega to the LEFT
;----------------------------------------------------
L7DE5:   LDX #$05               ; DEMO - 6 sprites make up BEGA
L7DE7:   LDA BegaXPos1L,X       ; DEMO - Get sprite x position
         SEC                    ; DEMO - Clear carry
         SBC L5C51              ; DEMO - Subtract left movement
         STA BegaXPos1L,X       ; DEMO - Save sprite x position
         DEX                    ; DEMO - Next sprite in BEGA
         BPL L7DE7              ; DEMO - Loop until all sprites moved
         LDX #$05               ; DEMO -
L7DF4:   LDA L009C,X
         
AND #$F0
         BNE L7E00
         LDA #$FE
         
AND L009C,X
         STA L009C,X
L7E00:   DEX
         BPL L7DF4
         LDA MasterReg
         
AND #$30
         BEQ L7E0C
         
JMP L7E5D
L7E0C:   LDA #$FD
         
AND MasterReg
         STA MasterReg
         
JMP L7E5D              ;
;----------------------------------------------------
;          Joystick RIGHT Pressed - DEMO
;----------------------------------------------------
L7E15:   LDA BegaXPos1L         ;
         CMP #$D9
         BCS L7E4C
         LDA L0094
         
CMP #$FF
         BEQ L7E33
         LDA BegaXPos1L
         
CMP #$C9
         BCS L7E4C
         LDA POKADR+
1
         
CMP #$FF
         BEQ L7E33
         LDA BegaXPos1L
         
CMP #$B9
         BCS L7E4C             
;
;----------------------------------------------------
;   Move 6 sprites that make up Bega to the RIGHT
;----------------------------------------------------
L7E33:   LDX #$05               ; 6 sprites make up BEGA
L7E35:   LDA BegaXPos1L,X       ; Get sprite x position
         CLC                    ; Clear carry
         ADC L5C51              ; Add right movement
         STA BegaXPos1L,X       ; Save sprite x position
         DEX                    ; Next sprite in BEGA
         BPL L7E35              ; Loop until all sprites moved
         LDA MasterReg
         
AND #$30
         BNE L7E4C
         LDA #$02
         ORA MasterReg
         STA MasterReg
L7E4C:   LDX #$05
L7E4E:   LDA L009C,X
         
AND #$F0
         BNE L7E5A
         LDA #$01
         ORA L009C,X
         STA L009C,X
L7E5A:   DEX
         BPL L7E4E
L7E5D:   LDA MasterReg         
; Check which Bega to show
         AND #$20               ; Is it Barrier Bega?
         BEQ L7E66              ; No, so skip ahead
         JMP L803E              ; Show Barrier Bega
L7E66:   LDA MasterReg          ; Check which Bega to show
         AND #$10               ; Is it Normal Bega?
         BEQ L7E6F              ; No, so skip ahead
         JMP L8014              ; Show Normal Bega
L7E6F:   LDA MasterReg
         
AND #$02
         ASL A
         ORA #$01
         LDX #$05
L7E78:   STA ICPTHZ,X
L7E7A:   DEX
         BPL L7E78
         LDA VNTD
         BNE L7E97
         LDA #$02
         STA VNTD
         LDA MasterReg
         
AND #$01               ;
         EOR #$01               ;
         TAX                    ;
         LDA #$FE               ;
         AND MasterReg          ;
         STA MasterReg          ;
         TXA                    ;
         ORA MasterReg
         STA MasterReg
L7E97:   LDA SysTimer
         
AND #$03
         BNE L7EA0
         
DEC VNTD
L7EA0:   LDA MasterReg
         
AND #$03
         ASL A
         TAY
         LDA L5C52,Y
         STA Ptr1_LO
         LDA L5C53,Y
         STA Ptr1_HI
         LDY #$05               
; 6 sprites to update
L7EB2:   LDA (Ptr1_LO),Y        ; Get picture
         STA BegaPic,Y          ; Set Bega sprite picture
         DEY                    ; Next picture
         BPL L7EB2              ; Loop until all 6 sprites updated
         RTS
L7EBB:   LDA VNTD
         BNE L7EC3
         LDA #$01
         STA VNTD
L7EC3:   LDA SysTimer
         
AND #$01
         BNE L7ECC
         
DEC VNTD
L7ECC:   BEQ L7ECF
         RTS
L7ECF:   LDA MasterReg
         
AND #$3F
         BNE L7F01
         LDX #$05
L7ED7:   
CLC
         LDA BegaYPos1L,X
         
ADC L5C50
         STA BegaYPos1L,X
         DEX
         BPL L7ED7
         LDA BegaYPos1L
         
CMP #$B8
         BCS L7EE9
         RTS
L7EE9:   LDA #$06               
; Sound = #6
         JSR L51CE              ; Play Sound
         LDX #$05
         LDY #$75
L7EF2:   STY BegaPic,X
         DEY
         DEX
         BPL L7EF2
         LDA #$41
         STA MasterReg
         LDA #$10
         STA VNTD
         RTS
L7F01:   LDX #$05               
; 6 sprites to update
L7F03:   LDA L5C88,X            ; Get picture
         STA BegaPic,X          ; Set Bega sprite picture
         DEX                    ; Next picture
         BPL L7F03              ; Loop until all 6 sprites updated
         LDA #$00
         STA MasterReg
;----------------------------------------------------
;           Print STAGE Number to screen
;----------------------------------------------------
         LDX #$23               ; Message = "STAGE" ($4D23)
         LDY #$4D               ; Message = "STAGE" ($4D23)
         JSR L4831              ; Print Text Message
         LDA Level
         ASL A
         TAX
         LDA LB200,X           
; Get Level address
         STA Ptr1_LO            ; Save address
         LDA LB201,X            ; Get Level address
         STA Ptr1_HI            ; Save address
         LDY VVBLKD             ; Y = 0,1,2
         LDA (Ptr1_LO),Y        ; Get STAGE Number
         TAY                    ; Temporarily save STAGE number
         AND #$0F               ; Get one's place digit
         CLC                    ; Clear carry
         ADC #$01               ; Make printable character
         STA L3993              ; Print STAGE Number (one's place)
         TYA                    ; Retrieve STAGE number
         LSR A                  ; Move digits over
         LSR A                  ; Move digits over
         LSR A                  ; Move digits over
         LSR A                  ; Move digits over
         CLC                    ; Clear carry
         ADC #$01               ; Make printable character
         STA L3992              ; Print STAGE Number (tens place)
         LDA NumPlayers
         BEQ L7F53
         LDX #$50               
; Message = "PLAYER" ($4D50)
         LDY #$4D               ; Message = "PLAYER" ($4D50)
         JSR L4831              ; Print Text Message
         CLC
         LDA PlayerNumber
         
ADC #$02
         STA L3913
L7F53:   LDA CDTMA1+
1
         BNE L7FB1
         LDX #$00
         STX FlashTime
L7F5D:   LDA SearchStatus
         
CMP #$02
         BEQ L7F81
         LDX #$CB               
; Message = "     " ($5DCB) Erase instructions
         LDY #$5D               ; Message = "     " ($5DCB) Erase instructions
         INC FlashTime
         LDA FlashTime         
; Get flash rate timer for text
         AND #$30               ; Check if it's time to flash text
         BEQ L7F76              ; Yes, so erase text this time
         LDX #$F4               ; Message = "xxxx" ($5CF4)
         LDY #$5C               ; Message = "xxxx" ($5CF4)
L7F76:   JSR L4831              ; Print Text Message
         LDX #$01
         JSR L4BD2             
; Run Programmable Delay
         JMP L7F5D
L7F81:   LDX #$CB               
;  DEMO - Message = "     " ($5DCB) Erase instructions 
         LDY #$5D               ;  DEMO - Message = "     " ($5DCB) Erase instructions
         JSR L4831              ;  DEMO - Print Text Message
         JSR L719E              ;  DEMO - Screen Transition, Fill from outside in
         LDA #$18               ;  DEMO - Video Sequence = ? (Frame xxxxx)
         JSR L54A7              ;  DEMO - Play LaserDisc video sequence
         LDA #$01               ;   
         STA CDTMA1+1           ;  DEMO -
L7F95:   LDA SearchStatus
         
CMP #$01
         BEQ L7FA8
         
CMP #$02
         BEQ L7FA8
         LDX #$01
         JSR L4BD2             
; Run Programmable Delay
         JMP L7F95
L7FA8:   JSR L71D0             
; Clear Sprite Bank 1 & 2 (2800-281F,2BE0-2BFF)
         JSR L71B8              ; Screen Transition, Clear from inside out
         JMP L7FFE              ; Erase Text instructions from screen
L7FB1:   LDX #$00
         STA FlashTime
L7FB6:   LDX #$CB               
; Message = "     " ($5DCB) Erase instructions
         LDY #$5D               ; Message = "     " ($5DCB) Erase instructions
         LDA FlashTime          ; Get flash rate timer for text
         AND #$30               ; Check if it's time to flash text
         BEQ L7FF1              ; Yes, so erase text this time
         LDA Level
         BEQ L7FDF
         LDA CDTMA2+
1
         BNE L7FF1
         LDA Lunas
         BMI L7FF1
         LDA Level
         
CMP #$02
         BEQ L7FE6
         LDA Level
         
CMP #$06
         BEQ L7FED
         BNE L7FF1
L7FDF:   LDX #$F4               
; Message = "TOUCH TO RESCUE LUNA!" ($5CF4)
         LDY #$5C               ; Message = "TOUCH TO RESCUE LUNA!" ($5CF4)
         JMP L7FF1
L7FE6:   LDX #$3F
         LDY #$5D
         
JMP L7FF1
L7FED:   LDX #$84               
; Message = "xxxx" ($5D84)
         LDY #$5D               ; Message = "xxxx" ($5D84)
L7FF1:   JSR L4831              ; Print Text Message
         LDX #$01               ; Delay Count = 1
         JSR L4BD2              ; Run programmable Delay
         INC FlashTime          ;
         BPL L7FB6              ;
;----------------------------------------------------
;           Erase Text Instructions from screen
;----------------------------------------------------
L7FFE:   LDX #$CB               ; DEMO -  Message = "     " ($5DCB) Erase instructions
         LDY #$5D               ; DEMO -  Message = "     " ($5DCB) Erase instructions
         JSR L4831              ; DEMO -  Print Text Message
         LDX #$38               ; DEMO -  Message = "        " ($4D38) Erase STAGE
         LDY #$4D               ; DEMO -  Message = "        " ($4D38) Erase STAGE
         JSR L4831              ; DEMO -  Print Text Message
         LDX #$59               ; DEMO -  Message = "        " ($4D59) Erase PLAYER
         LDY #$4D               ; DEMO -  Message = "        " ($4D59) Erase PLAYER
         JSR L4831              ; DEMO -  Print Text Message
         RTS                    ; DEMO -  Return
                                 
                                 

;----------------------------------------------------
;                    unknown
;----------------------------------------------------
L8014:   LDA MasterReg             ;
         AND #$03               ;
         BEQ L8039              ;
         CMP #$03               ;
         BEQ L8028
         LDA SysTimer
         
AND #$07
         BNE L8027
         
DEC MasterReg
L8027:   RTS
L8028:   LDX #$05
         LDY #$01
L802C:   LDA L5CA0,X
         STA BegaPic,X
         STY ICPTHZ,X
         DEX
         BPL L802C
         
DEC MasterReg
         RTS
L8039:   LDA #$00
         STA MasterReg
         RTS




;----------------------------------------------------
;             Show Barrier Bega
;----------------------------------------------------
L803E:   LDA MasterReg          ; DEMO -
         AND #$30               ; DEMO -
         CMP #$30               ; DEMO -
         BEQ L8049              ; DEMO -
         JMP L80E7              ; DEMO - Just leave
L8049:   LDA SysTimer
         
AND #$03
         BEQ L8051
         RTS                   
; DEMO - Return
;----------------------------------------------------
;     Find next sequence for Bega Barrier picture
;----------------------------------------------------
L8051:   LDA BarrierPic         ; DEMO - Get Bega Barrier picture sequence
         ASL A                  ; DEMO - Multiply by 2
         TAY                    ; DEMO - Create an index
         LDA L5C5A,Y            ; DEMO - Get Barrier picture pointer
         STA Ptr1_LO            ; DEMO - Save pointer
         LDA L5C5B,Y            ; DEMO - Get Barrier picture pointer
         STA Ptr1_HI            ; DEMO - Save pointer
         AND Ptr1_LO            ; DEMO - Check if this is the last in the sequence
         CMP #$FF               ; DEMO - Is this the last picture?
         BEQ L8078              ; DEMO - Yes, so just skip ahead
         INC BarrierPic         ; DEMO - Go to the next picture in the sequence
;----------------------------------------------------
;            Update Bega Barrier picture
;----------------------------------------------------
         LDY #$05               ; DEMO - 6 sprites to update
         LDX #$01               ; DEMO - 
L806D:   LDA (Ptr1_LO),Y        ; DEMO - Get picture
         STA BegaPic,Y          ; DEMO - Set Bega sprite picture
         STX ICPTHZ,X           ; DEMO -
         DEY                    ; DEMO - Next picture
         BPL L806D              ; DEMO - Loop until all 6 sprites updated
         RTS                    ; DEMO - Return
;----------------------------------------------------
;            Restart barrier sequence
;----------------------------------------------------
L8078:   LDA #$00               ; DEMO - Restart barrier sequence
         STA MasterReg          ; DEMO - Save barrier sequence
         RTS                    ; DEMO - Return


;----------------------------------------------------
;         
;----------------------------------------------------
L807D:   LDA MasterReg
         
AND #$7F
         BNE L8093
         LDX PlayerNumber       
; DEMO - Which player is playing?
         DEC Player1Lives,X     ; DEMO - That player loses a life
         LDA #$01               ; DEMO -
         STA VNTD               ; DEMO -
         INC MasterReg          ; DEMO -
         LDA #$03               ; DEMO -
         JSR L51CE              ; DEMO - Play Sound
L8093:   LDA SysTimer           ; DEMO -
         AND #$03               ; DEMO -
         BEQ L809B              ; DEMO -
         RTS                    ; DEMO -
L809B:   DEC VNTD               ; DEMO -
         BEQ L80A0              ; DEMO -
         RTS                    ; DEMO -
L80A0:   LDA #$02               ; DEMO -
         STA VNTD               ; DEMO -
         LDA MasterReg          ; DEMO -
         AND #$7F               ; DEMO -
         ASL A                  ; DEMO -
         TAX                    ; DEMO -
         LDA L5C72,X            ; DEMO -
         STA Ptr1_LO            ; DEMO -
         LDA L5C73,X            ; DEMO -
L80B2:   STA Ptr1_HI            ; DEMO -
         LDY #$05               ; DEMO -
L80B6:   LDA (Ptr1_LO),Y        ; DEMO -
         STA BegaPic,Y          ; DEMO -
         LDA #$01               ; DEMO -
         STA ICPTHZ,Y           ; DEMO -
         DEY                    ; DEMO -
         BPL L80B6              ; DEMO -
         INC MasterReg          ; DEMO -
         LDA MasterReg          ; DEMO -
         AND #$7F               ; DEMO -
         CMP #$0B               ; DEMO -
         BEQ L80CE              ; DEMO -
         RTS                    ; DEMO -
L80CE:   LDA #$00               ; DEMO -
         STA MasterReg          ; DEMO -
         LDX #$05               ; DEMO -
         LDA #$00               ; DEMO -
L80D6:   STA ICPTHZ,X           ; DEMO -
         STA BegaPic,X          ; DEMO -
         DEX                    ; DEMO -
         BPL L80D6              ; DEMO -
         LDA #$01               ; DEMO - Set death marker
         STA LifeLost           ; DEMO - Indicate that life was lost
         LDX #$25               ; DEMO - Delay = 37
         JSR L4BD2              ; DEMO - Run Programmable Delay
L80E7:   RTS                    ; DEMO - Return



;----------------------------------------------------
;               Get DEMO Movements
;----------------------------------------------------
L80E8:   LDA Level              ; Find out which level were on
         AND #$07               ; Isolate level (0-7)
         TAX                    ; X = level
         LDY L811B,X            ; Y = Get Index based on level
         LDA L8123,Y            ; Get Pointer LO to Demo Movements
         STA Ptr1_LO            ; Save Pointer LO to Demo Movements
         LDA L8124,Y            ; Get Pointer HI to Demo Movements
         STA Ptr1_HI            ; Save Pointer HI to Demo Movements
         LDA DemoPointer        ;
         ASL A                  ;
         CLC                    ;
         ADC Ptr1_LO            ;
         STA Ptr1_LO            ;
         LDA Ptr1_HI            ;
         ADC #$00               ;
         STA Ptr1_HI            ;
         LDY #$00               ;
         LDA (Ptr1_LO),Y        ; Get direction of move (LEFT/RIGHT)
         STA DemoMove           ; Save directon of move
         INY                    ; Go to the next byte in the table
         LDA (Ptr1_LO),Y        ; Get duraction of move (time)
         STA DemoTime           ; Save the duration of this move
         INC DemoPointer        ;
         RTS                    ; Return



;----------------------------------------------------
;                DEMO Move Indexes
;----------------------------------------------------
L811B:   .BYTE $00,$00,$02,$04,$06,$00,$08,$0A

;----------------------------------------------------
;                DEMO Move Pointers
;----------------------------------------------------
L8123:   .WORD $812F,$81A7,$821F,$8297,$830F,$8387

;----------------------------------------------------
;     Level 0,1,5  DEMO Move Data
;----------------------------------------------------
;       Direction     1=LEFT, 2=RIGHT, 0=IDLE
;       Duration      time (ms)
;----------------------------------------------------
L812F:   .BYTE $01,$20   ; LEFT  32ms
         .BYTE $02,$40   ; RIGHT 64ms
         .BYTE $00,$0F   ; IDLE  15ms
         .BYTE $01,$60   ; LEFT  96ms
         .BYTE $00,$04,  $02,$50,  $01,$30,  $02,$10,  $00,$04,  $01,$20
         .
BYTE $02,$30,  $00,$06,  $01,$20,  $02,$40,  $00,$0F,  $01,$60
         .
BYTE $00,$04,  $02,$50,  $01,$30,  $02,$10,  $00,$04,  $01,$20
         .
BYTE $02,$30,  $00,$06,  $01,$20,  $02,$40,  $00,$0F,  $01,$60
         .
BYTE $00,$04,  $02,$50,  $01,$30,  $02,$10,  $00,$04,  $01,$20
         .
BYTE $02,$30,  $00,$06,  $01,$20,  $02,$40,  $00,$0F,  $01,$60
         .
BYTE $00,$04,  $02,$50,  $01,$30,  $02,$10,  $00,$04,  $01,$20
         .
BYTE $02,$30,  $00,$06,  $01,$20,  $02,$40,  $00,$0F,  $01,$60
         .
BYTE $00,$04,  $02,$50,  $01,$30,  $02,$10,  $00,$04,  $01,$20
         .
BYTE $02,$30,  $00,$06                           

;----------------------------------------------------
;     Level 2  DEMO Move Data (direction,duration)
;----------------------------------------------------         
L81A7:   .BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06

;----------------------------------------------------
;     Level 3  DEMO Move Data (direction,duration)
;----------------------------------------------------
L821F:   .BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06

;----------------------------------------------------
;     Level 4  DEMO Move Data (direction,duration)
;----------------------------------------------------
L8297:   .BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06

;----------------------------------------------------
;     Level 6  DEMO Move Data (direction,duration)
;----------------------------------------------------
L830F:   .BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20,  $02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30,  $02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06

;----------------------------------------------------
;     Level 7  DEMO Move Data (direction,duration)
;----------------------------------------------------
L8387:   .BYTE $01,$20  ,$02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30  ,$02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20  ,$02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30  ,$02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20  ,$02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30  ,$02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20  ,$02,$40,  $00,$0F,  $01,$60,  $00,$04,  $02,$50
         .
BYTE $01,$30  ,$02,$10,  $00,$04,  $01,$20,  $02,$30,  $00,$06
         .
BYTE $01,$20  ,$02,$40,  $00,$0F,  $01,$30,  $02,$10,  $00,$04
         .
BYTE $01,$20  ,$02,$30,  $00,$06,  $01,$20,  $02,$40,  $00,$0F
         .
BYTE $01,$20,  $02,$30,  $00,$06



;----------------------------------------------------
;              Jump Routine #?
;----------------------------------------------------
L8405:   LDX #$0D               ;
         STX FlashTime          ;
;----------------------------------------------------
;              Jump Routine #?
;----------------------------------------------------
L840A:   LDX FlashTime
         LDA L0400,X
         BEQ L8427
         BMI L8420
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8427
L8420:   
CMP #$FF
         BEQ L8427
         JSR L8F61
L8427:   JSR LA33E
         JSR LA389
         
DEC FlashTime
         BPL L840A
         LDA L04BB
         
CMP #$02
         BCC L8440
         
CMP #$30
         BCS L8440
         JSR L969D
L8440:   LDA L04BB
         
CMP #$02
         BCC L844A
         JSR L9730
L844A:   RTS



;----------------------------------------------------
;              Jump Routine #?
;----------------------------------------------------
L844B:   LDX #$0D               ;
         STX FlashTime          ;
L8450:   LDX FlashTime
         LDA L0400,X
         BEQ L846D
         BMI L8466
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L846D
L8466:   
CMP #$FF
         BEQ L846D
         JSR L8F61
L846D:   JSR LA63A
         JSR LA389
         
DEC FlashTime
         BPL L8450
         LDA L04BB
         
CMP #$02
         BCC L8482
         JSR L9730
L8482:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L848B:   LDX FlashTime
         LDA L0400,X
         BEQ L84A8
         BMI L84A1
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L84A8
L84A1:   
CMP #$FF
         BEQ L84A8
         JSR L8F61
L84A8:   JSR LA75C
         
DEC FlashTime
         BPL L848B
         LDA L04BB
         
CMP #$02
         BCC L84BE
         
CMP #$30
         BCS L84BE
         JSR LA2BB
L84BE:   RTS



;----------------------------------------------------
;              Jump Routine #3
;----------------------------------------------------
L84BF:   LDX #$0D               ;
         STX FlashTime          ;
L84C4:   LDX FlashTime          ;
         LDA L0400,X            ;
         BEQ L84E1              ;
         BMI L84DA
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L84E1
L84DA:   
CMP #$FF
         BEQ L84E1
         JSR L8F61
L84E1:   JSR LA3F1
         
DEC FlashTime
         BPL L84C4
         LDA L04BB
         
CMP #$02
         BCC L84F3
         JSR L97F2
L84F3:   RTS
         LDX #$0D
         STX FlashTime
L84F9:   LDX FlashTime
         LDA L0400,X
         BEQ L8516
         BMI L850F
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8516
L850F:   
CMP #$FF
         BEQ L8516
         JSR L8F61
L8516:   JSR LA593
         JSR LA63A
         
DEC FlashTime
         BPL L84F9
         LDA L04BB
         
CMP #$02
         BCC L852F
         
CMP #$30
         BCS L852F
         JSR L9A70
L852F:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L8538:   LDX FlashTime
         LDA L0400,X
         BEQ L8555
         BMI L854E
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8555
L854E:   
CMP #$FF
         BEQ L8555
         JSR L8F61
L8555:   JSR LA389
         JSR LA63A
         
DEC FlashTime
         BPL L8538
         LDA L04BB
         
CMP #$02
         BCC L856A
         JSR L9EF3
L856A:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L8573:   LDX FlashTime
         LDA L0400,X
         BEQ L8590
         BMI L8589
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8590
L8589:   
CMP #$FF
         BEQ L8590
         JSR L8F61
L8590:   JSR LA593
         JSR LA63A
         
DEC FlashTime
         BPL L8573
         LDA L04BB
         
CMP #$02
         BCC L85A5
         JSR L9FF0
L85A5:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L85AE:   LDX FlashTime
         LDA L0400,X
         BEQ L85CB
         BMI L85C4
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L85CB
L85C4:   
CMP #$FF
         BEQ L85CB
         JSR L8F61
L85CB:   JSR LA33E
         JSR LA389
         JSR LA63A
         
DEC FlashTime
         BPL L85AE
         LDA L04BB
         
CMP #$02
         BCC L85E7
         
CMP #$30
         BCS L85E7
         JSR L9730
L85E7:   LDA L04BB
         
CMP #$02
         BCC L85F1
         JSR L969D
L85F1:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L85FA:   LDX FlashTime
         LDA L0400,X
         BEQ L8617
         BMI L8610
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8617
L8610:   
CMP #$FF
         BEQ L8617
         JSR L8F61
L8617:   JSR LA33E
         JSR LA389
         JSR LA3F1
         JSR LA63A
         
DEC FlashTime
         BPL L85FA
         LDA L04BB
         
CMP #$02
         BCC L8636
         
CMP #$30
         BCS L8636
         JSR L969D
L8636:   LDA L04BB
         
CMP #$02
         BCC L864E
         
CMP #$30
         BCS L8644
         JSR L9730
L8644:   LDA L04BB
         
CMP #$02
         BCC L864E
         JSR L97F2
L864E:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L8657:   LDX FlashTime
         LDA L0400,X
         BEQ L8674
         BMI L866D
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8674
L866D:   
CMP #$FF
         BEQ L8674
         JSR L8F61
L8674:   JSR LA33E
         JSR LA389
         JSR LA3F1
         JSR LA63A
         
DEC FlashTime
         BPL L8657
         LDA L04BB
         
CMP #$02
         BCC L8693
         
CMP #$30
         BCS L8693
         JSR L969D
L8693:   LDA L04BB
         
CMP #$02
         BCC L86AB
         
CMP #$30
         BCS L86A1
         JSR L9730
L86A1:   LDA L04BB
         
CMP #$02
         BCC L86AB
         JSR L97F2
L86AB:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L86B4:   LDX FlashTime
         LDA L0400,X
         BEQ L86D1
         BMI L86CA
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L86D1
L86CA:   
CMP #$FF
         BEQ L86D1
         JSR L8F61
L86D1:   JSR LA44D
         
DEC FlashTime
         BPL L86B4
         LDA L04BB
         
CMP #$02
         BCC L86E7
         
CMP #$30
         BCS L86E7
         JSR L98A8
L86E7:   RTS
         LDX #$0D
         STX FlashTime
L86ED:   LDX FlashTime
         LDA L0400,X
         BEQ L870A
         BMI L8703
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L870A
L8703:   
CMP #$FF
         BEQ L870A
         JSR L8F61
L870A:   JSR LA44D
         JSR LA4E2
         JSR LA54E
         
DEC FlashTime
         BPL L86ED
         LDA L04BB
         
CMP #$02
         BCC L8726
         
CMP #$30
         BCS L8726
         JSR L98A8
L8726:   LDA L04BB
         
CMP #$02
         BCC L8734
         
CMP #$30
         BCS L8734
         JSR L9943
L8734:   LDA L04BB
         
CMP #$02
         BCC L873E
         JSR L99F5
L873E:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L8747:   LDX FlashTime
         LDA L0400,X
         BEQ L8764
         BMI L875D
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8764
L875D:   
CMP #$FF
         BEQ L8764
         JSR L8F61
L8764:   JSR LA44D
         JSR LA4E2
         
DEC FlashTime
         BPL L8747
         LDA L04BB
         
CMP #$02
         BCC L877D
         
CMP #$30
         BCS L877D
         JSR L98A8
L877D:   LDA L04BB
         
CMP #$02
         BCC L8787
         JSR L9943
L8787:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L8790:   LDX FlashTime
         LDA L0400,X
         BEQ L87AD
         BMI L87A6
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L87AD
L87A6:   
CMP #$FF
         BEQ L87AD
         JSR L8F61
L87AD:   JSR LA44D
         JSR LA4E2
         JSR LA54E
         
DEC FlashTime
         BPL L8790
         LDA L04BB
         
CMP #$02
         BCC L87C9
         
CMP #$30
         BCS L87C9
         JSR L98A8
L87C9:   LDA L04BB
         
CMP #$02
         BCC L87E1
         
CMP #$30
         BCS L87D7
         JSR L9943
L87D7:   LDA L04BB
         
CMP #$30
         BCC L87E1
         JSR L99F5
L87E1:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L87EA:   LDX FlashTime
         LDA L0400,X
         BEQ L8807
         BMI L8800
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8807
L8800:   
CMP #$FF
         BEQ L8807
         JSR L8F61
L8807:   JSR LA4E2
         JSR LA63A
         
DEC FlashTime
         BPL L87EA
         LDA L04BB
         
CMP #$02
         BCC L881C
         JSR L9943
L881C:   JSR L9BD1
         RTS
         LDX #$0D
         STX FlashTime
L8825:   LDX FlashTime
         LDA L0400,X
         BEQ L8842
         BMI L883B
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8842
L883B:   
CMP #$FF
         BEQ L8842
         JSR L8F61
L8842:   JSR LA389
         JSR LA593
         JSR LA63A
         
DEC FlashTime
         BPL L8825
         LDA L04BB
         
CMP #$02
         BCC L885E
         
CMP #$30
         BCS L885E
         JSR L9730
L885E:   LDA L04BB
         
CMP #$02
         BCC L8868
         JSR L9A70
L8868:   JSR L9BD1
         RTS
         LDA L04BB
         
CMP #$03
         BCC L8876
         JSR L9351
L8876:   LDX #$0D
         STX FlashTime
L887B:   LDX FlashTime
         LDA L0400,X
         BEQ L8898
         BMI L8891
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8898
L8891:   
CMP #$FF
         BEQ L8898
         JSR L8F61
L8898:   JSR LA5DD
         JSR LA63A
         
DEC FlashTime
         BPL L887B
         LDA L04BB
         
CMP #$02
         BCC L88B1
         
CMP #$30
         BCS L88B1
         JSR L9B1F
L88B1:   RTS
         LDA L04BB
         
CMP #$03
         BCC L88BC
         JSR L9351
L88BC:   LDX #$0D
         STX FlashTime
L88C1:   LDX FlashTime
         LDA L0400,X
         BEQ L88DE
         BMI L88D7
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L88DE
L88D7:   
CMP #$FF
         BEQ L88DE
         JSR L8F61
L88DE:   JSR LA4E2
         JSR LA63A
         
DEC FlashTime
         BPL L88C1
         LDA L04BB
         
CMP #$02
         BCC L88F7
         
CMP #$30
         BCS L88F7
         JSR LA19E
L88F7:   RTS
         LDA L04BB
         
CMP #$03
         BCC L8902
         JSR L916B
L8902:   LDX #$0D
         STX FlashTime
L8907:   LDX FlashTime
         LDA L0400,X
         BEQ L8924
         BMI L891D
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8924
L891D:   
CMP #$FF
         BEQ L8924
         JSR L8F61
L8924:   JSR LA44D
         
DEC FlashTime
         BPL L8907
         LDA L04BB
         
CMP #$02
         BCC L893A
         
CMP #$30
         BCS L893A
         JSR LA238
L893A:   RTS
         LDX #$0D
         STX FlashTime
L8940:   LDX FlashTime
         LDA L0400,X
         BEQ L895D
         BMI L8956
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L895D
L8956:   
CMP #$FF
         BEQ L895D
         JSR L8F61
L895D:   JSR LA44D
         
DEC FlashTime
         BPL L8940
         LDA L04BB
L8968:   
CMP #$02
         BCC L8973
         
CMP #$30
         BCS L8973
         JSR L98A8
L8973:   RTS
         LDX #$0D
         STX FlashTime
L8979:   LDX FlashTime
         LDA L0400,X
         BEQ L8996
         BMI L898F
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8996
L898F:   
CMP #$FF
         BEQ L8996
         JSR L8F61
L8996:   JSR LA677
         
DEC FlashTime
         BPL L8979
         LDA L04BB
         
CMP #$03
         BCC L89A8
         JSR L9CC7
L89A8:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L89B1:   LDX FlashTime
         LDA L0400,X
         BEQ L89CE
         BMI L89C7
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L89CE
L89C7:   
CMP #$FF
         BEQ L89CE
         JSR L8F61
L89CE:   JSR LA677
         
DEC FlashTime
         BPL L89B1
         LDA L04BB
         
CMP #$03
         BCC L89E0
         JSR LA087
L89E0:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L89E9:   LDX FlashTime
         LDA L0400,X
         BEQ L8A06
         BMI L89FF
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8A06
L89FF:   
CMP #$FF
         BEQ L8A06
         JSR L8F61
L8A06:   JSR LA677
         
DEC FlashTime
         BPL L89E9
         LDA L04BB
         
CMP #$03
         BCC L8A18
         JSR L9CC7
L8A18:   JSR L912E
         RTS
         LDX #$0D
         STX FlashTime
L8A21:   LDX FlashTime
         LDA L0400,X
         BEQ L8A3E
         BMI L8A37
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8A3E
L8A37:   
CMP #$FF
         BEQ L8A3E
         JSR L8F61
L8A3E:   JSR LA6DF
         
DEC FlashTime
         BPL L8A21
         LDA L04BB
         
CMP #$03
         BCC L8A50
         JSR L9DDE
L8A50:   RTS

;----------------------------------------------------
;              Jump Routine #0
;----------------------------------------------------
L8A51:   LDX #$0D               ; Loop = 13
         STX FlashTime          ; Save loop
L8A56:   LDX FlashTime          ; Get index
         LDA L0400,X            ; Check 0400-040D
         BEQ L8A73
         BMI L8A6C
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8A73
L8A6C:   
CMP #$FF
         BEQ L8A73
         JSR L8F61
L8A73:   JSR LA712
         
DEC FlashTime          ; Decrement loop
         BPL L8A56              ; Loop back until all 13 checked
         LDA L04BB
         
CMP #$03
         BCC L8A85
         JSR L9E5B
L8A85:   RTS                   
; Return

;----------------------------------------------------
;              Jump Routine #1
;----------------------------------------------------
L8A86:   LDX #$0D
         STX FlashTime
L8A8B:   LDX FlashTime
         LDA L0400,X
         BEQ L8AA8
         BMI L8AA1
         JSR L8ABB
         JSR L90E5
         JSR L8C60
         
JMP L8AA8
L8AA1:   
CMP #$FF
         BEQ L8AA8
         JSR L8F61
L8AA8:   JSR LA4E2
         
DEC FlashTime
         BPL L8A8B
         LDA L04BB
         
CMP #$02
         BCC L8ABA
         JSR LA19E
L8ABA:   RTS


;----------------------------------------------------
;             Update Sprite Position
;----------------------------------------------------
L8ABB:   LDX FlashTime          ;
         TXA                    ;
         ASL A                  ;
         TAX                    ;
         LDA (L00B3,X)          ;
         TAY
         LDX FlashTime
         
CLC
         LDA LB100,Y
         
ADC Sprite1_X,X
         STA Sprite1_X,X
         
CLC
         LDA LB000,Y
         
ADC Sprite1_Y,X
         STA Sprite1_Y,X
         LDA L0400,X
         ASL A
         TAY
         LDA LB5D4,Y
         STA Ptr1_LO
         LDA LB5D5,Y
         STA Ptr1_HI
         LDY #$00
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         LDA (Ptr2_LO),Y
         STA Sprite1_Char,X
         LDA L0400,X
         ASL A
         TAY
         LDA LB5F2,Y
         STA Ptr1_LO
         LDA LB5F3,Y
         STA Ptr1_HI
         LDY #$00
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         LDA (Ptr2_LO),Y
         STA Sprite1_Prop,X
         LDA L0400,X
         ASL A
         TAY
         LDA LB610,Y
         STA Ptr1_LO
         LDA LB611,Y
         STA Ptr1_HI
         LDY #$00
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         
CLC
         LDA (Ptr2_LO),Y
         
ADC Sprite1_X,X
         STA Sprite1_X,X
         LDA L0400,X
         ASL A
         TAY
         LDA LB62E,Y
         STA Ptr1_LO
         LDA LB62F,Y
         STA Ptr1_HI
         LDY #$00
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
L8B55:   INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         
CLC
         LDA (Ptr2_LO),Y
         
ADC Sprite1_Y,X
         STA Sprite1_Y,X
         LDA L0454,X
         BEQ L8B70
         
DEC L0454,X
         
JMP L8B8F
L8B70:   TXA
         ASL A
         TAY
         
CLC
         LDA L00B3,Y
         
ADC #$02
         STA L00B3,Y
         STA Ptr1_LO
         LDA #$00
         
ADC L00B4,Y
         STA L00B4,Y
         STA Ptr1_HI
         LDY #$01
         LDA (Ptr1_LO),Y
         STA L0454,X
L8B8F:   LDA #$00
         STA L04C8
L8B94:   LDA L0438,X
         
CMP #$FF
         BNE L8B9C
         RTS
L8B9C:   
INC L04C8
         STX L04BF
         STA L04BD
         LDX FlashTime
         LDA L0400,X
         ASL A
         TAY
         LDA LB5D4,Y
         STA Ptr1_LO
         LDA LB5D5,Y
         STA Ptr1_HI
         LDA L04C8
         ASL A
         TAY
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         LDA (Ptr2_LO),Y
         LDX L04BD
         STA Sprite1_Char,X
         LDX FlashTime
         LDA L0400,X
         ASL A
         TAY
         LDA LB5F2,Y
         STA Ptr1_LO
         LDA LB5F3,Y
         STA Ptr1_HI
         LDA L04C8
         ASL A
         TAY
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         LDA (Ptr2_LO),Y
         LDX L04BD
         STA Sprite1_Prop,X
         LDX FlashTime
         LDA L0400,X
         ASL A
         TAY
         LDA LB610,Y
         STA Ptr1_LO
         LDA LB611,Y
         STA Ptr1_HI
         LDA L04C8
         ASL A
         TAY
         LDA (Ptr1_LO),Y
         STA Ptr2_LO
         INY
         LDA (Ptr1_LO),Y
         STA Ptr2_HI
         LDA L040E,X
         TAY
         LDX L04BF
         LDA (Ptr2_LO),Y
         
CLC
         
ADC Sprite1_X,X
         LDX L04BD
         STA Sprite1_X,X
         LDX FlashTime
         LDA L0400,X
         ASL A
         TAY
         LDA LB62E,Y
         STA Ptr1_LO
         LDA LB62F,Y
         STA Ptr1_HI
         LDA L04C8

NEXT PAGE

 

HOME  

 ROMHACK 2009