;
;  ship.s
;  BuGS
;
;  Created by Jeremy Rand on 2020-07-09.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
        
        case on
        mcopy ship.macros
        keep ship

ship start spriteSeg
        using globalData

drawShip entry
        _spriteHeader
        
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ...O|....
; ..OO|O...
; .RRO|RR..
; ORRO|RRO.
; OOOO|OOO.
; .OOO|OO..
; ..OO|O...
; ..OO|O...

		lda #0
        sta >collision
        
        lda $0,s
        _collision #$0c00,#$0
        and #$f0ff
        ora #$0800
        sta $0,s
        
        lda $a0,s
        _collision #$cc00,#$a0
        and #$00ff
        ora #$8800
        sta $a0,s
        
        lda $a2,s
        _collision #$00c0,#$a2
        and #$ff0f
        ora #$0080
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $0,s
        _collision #$cc0c,#$0
        and #$00f0
        ora #$4804
        sta $0,s

        lda $2,s
        _collision #$00cc,#$2
        and #$ff00
        ora #$0044
        sta $2,s
        
        lda $a0,s
        _collision #$cccc,#$a0
        lda #$4884
        sta $a0,s
        
        lda $a2,s
        _collision #$c0cc,#$a2
        and #$0f00
        ora #$8044
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $a0,s
        _collision #$cccc,#$a0
        lda #$8888
        sta $0,s

        lda $2,s
        _collision #$c0cc,#$2
        and #$0f00
        ora #$8088
        sta $2,s
        
        lda $a0,s
        _collision #$cc0c,#$a0
        and #$00f0
        ora #$8808
        sta $a0,s
        
        lda $a2,s
        _collision #$00cc,#$a2
        and #$ff00
        ora #$0088
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $0,s
        _collision #$cc00,#$0
        and #$00ff
        ora #$8800
        sta $0,s

        lda $2,s
        _collision #$00c0,#$2
        and #$ff0f
        ora #$0080
        sta $2,s
        
        lda $a0,s
        _collision #$cc00,#$a0
        and #$00ff
        ora #$8800
        sta $a0,s
        
        lda $a2,s
        _collision #$00c0,#$a2
        and #$ff0f
        ora #$0080
        sta $a2,s

        _spriteFooter
        
		lda >collisionAddr
		tax
		lda >collision
        rtl
        

drawShipShift entry
        _spriteHeader
        
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|O...
; ...O|OO..
; ..RR|ORR.
; .ORR|ORRO
; .OOO|OOOO
; ..OO|OOO.
; ...O|OO..
; ...O|OO..

		lda #0
        sta >collision

        lda $2,s
        _collision #$00c0,#$2
        and #$ff0f
        ora #$0080
        sta $2,s
        
        lda $a0,s
        _collision #$0c00,#$a0
        and #$f0ff
        ora #$0800
        sta $a0,s
        
        lda $a2,s
        _collision #$00cc,#$a2
        and #$ff00
        ora #$0088
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $0,s
        _collision #$cc00,#$0
        and #$00ff
        ora #$4400
        sta $0,s

        lda $2,s
        _collision #$c0cc,#$2
        and #$0f00
        ora #$4084
        sta $2,s

        lda $a0,s
        _collision #$cc0c,#$a0
        and #$00f0
        ora #$4408
        sta $a0,s
        
        lda $a2,s
        _collision #$cccc,#$a2
        lda #$4884
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $0,s
        _collision #$cc0c,#$0
        and #$00f0
        ora #$8808
        sta $0,s

        lda $2,s
        _collision #$cccc,#$2
        lda #$8888
        sta $2,s
        
        lda $a0,s
        _collision #$cc00,#$a0
        and #$00ff
        ora #$8800
        sta $a0,s
        
        lda $a2,s
        _collision #$c0cc,#$a2
        and #$0f00
        ora #$8088
        sta $a2,s
        
        tsc
        adc #$140
        tcs

        lda $0,s
        _collision #$0c00,#$0
        and #$f0ff
        ora #$0800
        sta $0,s

        lda $2,s
        _collision #$00cc,#$2
        and #$ff00
        ora #$0088
        sta $2,s
        
        lda $a0,s
        _collision #$0c00,#$a0
        and #$f0ff
        ora #$0800
        sta $a0,s
        
        lda $a2,s
        _collision #$00cc,#$a2
        and #$ff00
        ora #$0088
        sta $a2,s

        _spriteFooter

		lda >collisionAddr
		tax
        lda >collision
        rtl
        
; This differs from the above by being a tile draw routine for drawing the number of lives left.
; It assumes it is drawing to the background and overwrites what may be there and does not check
; for collisions
drawPlayer entry
        _spriteHeader
        
; $1 - Green
; $2 - Red
; $3 - Off-white
;
; ...O|....
; ..OO|O...
; .RRO|RR..
; ORRO|RRO.
; OOOO|OOO.
; .OOO|OO..
; ..OO|O...
; ..OO|O...
;
; Colours #$0000 - Black, Black, Black, Black (x1)
;         #$0300 - Black, Black, Black, Off-white (x1)
;         #$3300 - Black, Black, Off-white, Off-white (x3)
;         #$0030 - Off-white, Black, Black, Black (x3)
;         #$2302 - Black, Red, Red, Off-white (x1)
;         #$0022 - Red, Red, Black, Black (x1)
;         #$2332 - Off-white, Red, Red, Off-white (x1)
;         #$3022 - Red, Red, Off-white, Black (x1)
;         #$3333 - Off-white, Off-white, Off-white, Off-white (x1)
;         #$3033 - Off-white, Off-white, Off-white, Black (x1)
;         #$3303 - Black, Off-white, Off-white, Off-white (x1)
;         #$0033 - Off-white, Off-white, Black, Black (x1)

        pea $0000
        pea $0300
        
        adc #$00a0
        tcs
        
        pea $0030
        pea $3300
        
        adc #$00a0
        tcs
        
        pea $0022
        pea $2302
        
        adc #$00a0
        tcs
        
        pea $3022
        pea $2332
        
        adc #$00a0
        tcs
        
        pea $3033
        pea $3333
        
        adc #$00a0
        tcs
        
        pea $0033
        pea $3303
        
        adc #$00a0
        tcs
        
        pea $0030
        pea $3300
        
        adc #$00a0
        tcs
        
        pea $0030
        pea $3300

        _spriteFooter
        rtl
        
        end
