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