.nolist
#include ion.inc
.list

arrowx = sram+1
arrowy = sram+2
arrow2x = sram+3
arrow2y = sram+4
backn = sram+5
middlen = sram+6
frontn = sram+7
endn = sram+8
temp = sram+9
ground = sram+10
groundm = sram+12
groundb = sram+13
ratio = sram+14

#ifdef TI83P
    .org progstart-2
    .db $BB,$6D
#else
    .org progstart
#endif
     ret
     jr nc,lblStart

    .db "Car Studio",0

lblStart:
 xor a
 ld (X),a
 ld (Y),a
 ld a,28
 ld (arrowx),a
 ld (arrow2x),a
 ld a,20
 ld (arrowy),a
 ld (cost),a
 ld a,42
 ld (arrow2y),a
 ld a,1
 ld (frontn),a
 ld (endn),a
 ld (middlen),a
 bcall(_ClrLCDFull) 
 ld hl,titlepic
 ld bc,768
 ld de,plotSScreen
 ldir 
 call ionfastcopy
 bcall(_getkey)

MainMenu:
 bcall(_clrlcdfull)
 ld hl,menupic
 ld bc,768
 ld de,plotsscreen
 ldir
 call ionfastcopy

mainmenugetk:
  bcall(_getcsc)
  cp 38h
  jp z,exitprogram
  cp 12h
  jp z,exitprogram
  cp 22h
  jp z,lblstart2
  jr mainmenugetk

exitprogram:
 ret

lblstart2:
 xor a
 bcall(_ClrLCDFull)     
 ld hl, pic
 ld bc,768
 ld de,plotSScreen
 ldir         
 call ionfastcopy 

main:
 call arrows
 call carfront
 call carend
 call carmiddle

main_k:
 bcall(_getcsc)
 cp 01h
 jp z,down
 cp 02h
 jp z,left
 cp 03h
 jp z,right
 cp 04h
 jp z,up
 cp 0Fh
 jp z,exit
 cp 38h
 jp z,exitprogram
 jp main_k

down:
 ld a,(arrowx)
 cp 28
 jp z,dfront
 cp 44
 jp z,dmiddle
 cp 60
 jp z,dend
 
up:
 ld a,(arrowx)
 cp 28
 jp z,upfront
 cp 44
 jp z,upmiddle
 cp 60
 jp z,upend

dfront:
 call carfront
 ld a,(frontn)
 cp 1
 jp z,dfront2
 dec a
 ld (frontn),a
 call carfront
 jp main_k

dfront2:
 ld a,6
 ld (frontn),a
 call carfront
 jp main_k

dmiddle:
 call carmiddle
 ld a,(middlen)
 cp 1
 jp z,dmiddle2
 dec a
 ld (middlen),a
 call carmiddle
 jp main_k

dmiddle2:
 ld a,6
 ld (middlen),a
 call carmiddle
 jp main_k

dend:
 call carend
 ld a,(endn)
 cp 1
 jp z,dend2
 dec a
 ld (endn),a
 call carend
 jp main_k

dend2:
 ld a,6
 ld (endn),a
 call carend
 jp main _k

upfront: 
 call carfront
 ld a,(frontn)
 cp 6
 jp z,upfront2
 inc a
 ld (frontn),a
 call carfront
 jp main_k

upfront2
 ld a,1
 ld (frontn),a
 call carfront
 jp main_k

upmiddle: 
 call carmiddle
 ld a,(middlen)
 cp 6
 jp z,upmiddle2
 inc a
 ld (middlen),a
 call carmiddle
 jp main_k

upmiddle2:
 ld a,1
 ld (middlen),a
 call carmiddle
 jp main_k

upend: 
 call carend
 ld a,(endn)
 cp 6
 jp z,upend2
 inc a
 ld (endn),a
 call carend
 jp main_k

upend2:
 ld a,1
 ld (endn),a
 call carend
 jp main_k

carmiddle:
 ld a,(middlen)
 cp 1
 call z,carm1lbl
 cp 2
 call z,carm2lbl
 cp 3
 call z,carm3lbl
 cp 4
 call z,carm4lbl
 jp carmiddle2

carmiddle2:
 ld a,(middlen)
 cp 5
 call z,carm5lbl
 cp 6
 call z,carm6lbl
 ret

carend:
 ld a,(endn)
 cp 1
 call z,carb1lbl
 cp 2
 call z,carb2lbl
 cp 3
 call z,carb3lbl
 cp 4
 call z,carb4lbl
 jp carend2

carend2:
 ld a,(endn)
 cp 5
 call z,carb5lbl
 cp 6
 call z,carb6lbl
 ret

carfront:
 ld a,(frontn)
 cp 1
 call z,carf1lbl
 cp 2
 call z,carf2lbl
 cp 3
 call z,carf3lbl
 cp 4
 call z,carf4lbl
 jp carfront2

carfront2:
 ld a,(frontn)
 cp 5
 call z,carf5lbl
 cp 6
 call z,carf6lbl
 ret

left:
 call arrows
 ld a,(arrowx)
 cp 28
 jp z,left2
 ld a,16
 ld b,a
 ld a,(arrowx)
 sub b
 ld (arrowx),a
 ld (arrow2x),a
 call arrows
 jp main_k

left2:
 ld a,60
 ld (arrowx),a
 ld (arrow2x),a
 call arrows
 jp main_k

right:
 call arrows
 ld a,(arrowx)
 cp 60
 jp z,right2
 ld a,16
 ld b,a
 ld a,(arrowx)
 add a,b
 ld (arrowx),a
 ld (arrow2x),a
 call arrows
 jp main_k

right2:
 ld a,28
 ld (arrowx),a
 ld (arrow2x),a
 call arrows
 jp main_k

carf1lbl:
 ld a,10
 ld (ground),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,car1
 call ionLargeSprite
 call ionfastcopy
 ret

carf2lbl:
 ld a,8
 ld (ground),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,carf2
 call ionLargeSprite
 call ionfastcopy
 ret

carf3lbl:
 ld a,4
 ld (ground),a 
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,carf3
 call ionLargeSprite
 call ionfastcopy
 ret

carf4lbl:
 ld a,7
 ld (ground),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,carf4
 call ionLargeSprite
 call ionfastcopy
 ret

carf5lbl: 
 ld a,6
 ld (ground),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,carf5
 call ionLargeSprite
 call ionfastcopy
 ret

carf6lbl: 
 ld a,5
 ld (ground),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld ix,carf6
 call ionLargeSprite
 call ionfastcopy
 ret

carm1lbl: 
 ld a,8
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm1
 call ionLargeSprite
 call ionfastcopy
 ret

carm2lbl: 
 ld a,6
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm2
 call ionLargeSprite
 call ionfastcopy
 ret

carm3lbl: 
 ld a,9
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm3
 call ionLargeSprite
 call ionfastcopy
 ret

carm4lbl:
 ld a,8
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm4
 call ionLargeSprite
 call ionfastcopy
 ret

carm5lbl:
 ld a,4
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm5
 call ionLargeSprite
 call ionfastcopy
 ret

carm6lbl: 
 ld a,5
 ld (groundm),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,40
 ld ix,carm6
 call ionLargeSprite
 call ionfastcopy
 ret
 
carb1lbl:
 ld a,7
 ld (groundb),a 
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb1
 call ionLargeSprite
 call ionfastcopy
 ret

carb2lbl: 
 ld a,9
 ld (groundb),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb2
 call ionLargeSprite
 call ionfastcopy
 ret

carb3lbl: 
 ld a,4
 ld (groundb),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb3
 call ionLargeSprite
 call ionfastcopy
 ret
 
carb4lbl:
 ld a,6
 ld (groundb),a 
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb4
 call ionLargeSprite
 call ionfastcopy
 ret

carb5lbl: 
 ld a,5
 ld (groundb),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb5
 call ionLargeSprite
 call ionfastcopy
 ret

carb6lbl: 
 ld a,8
 ld (groundb),a
 ld b,16
 ld c,2
 ld a,24
 ld l,a
 ld a,56
 ld ix,carb6
 call ionLargeSprite
 call ionfastcopy
 ret

arrows: 
 ld b,4
 ld a,(arrow2y)
 ld l,a
 ld a,(arrow2x)
 ld ix,downarrow
 call ionPutSprite
 call ionfastcopy
 ld b,4
 ld a,(arrowy)
 ld l,a
 ld a,(arrowx)	
 ld ix,uparrow
 call ionPutSprite
 call ionfastcopy
 ret
exit:
 jp engine

uparrow:
 .db %00010000
 .db %00111000
 .db %01111100
 .db %11111110
downarrow:
 .db %11111110
 .db %01111100
 .db %00111000
 .db %00010000


car1:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00011111
 .db %00000011,%11100000
 .db %01111100,%00000000
 .db %10000000,%00000000
 .db %10000000,%00000000
 .db %01000000,%11100000
 .db %00100001,%00010000
 .db %01000010,%00001000
 .db %10000100,%00000100
 .db %11111100,%00000111
carf2:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00011111
 .db %00000011,%11100000
 .db %00001100,%00000000
 .db %00010000,%00000000
 .db %00010000,%00000000
 .db %00100000,%11100000
 .db %01000001,%00010000
 .db %00100010,%00001000
 .db %00010100,%00000100
 .db %00001100,%00000111
carf3:
 .db %00000000,%00000000 
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00001111
 .db %00000000,%01110000
 .db %00000000,%10000000
 .db %00000001,%00000000
 .db %00000010,%00000000
 .db %00000100,%11100000
 .db %00001001,%00010000
 .db %00110010,%00001000
 .db %01000100,%00000100
 .db %11111100,%00000111
carf4:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%11111111
 .db %00011111,%00000000
 .db %01100000,%00000000
 .db %10000000,%00000000
 .db %10000000,%00000000
 .db %10000000,%11100000
 .db %10000001,%00010000
 .db %01000010,%00001000
 .db %00100100,%00000100
 .db %00011100,%00000111
carf5:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00011111
 .db %00000011,%11100000
 .db %00000110,%00000000
 .db %00001000,%00000000
 .db %00010000,%00000000
 .db %00010000,%11100000
 .db %00010001,%00010000
 .db %00001010,%00001000
 .db %00000100,%00000100
 .db %00000000,%00000111
carf6:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00011111
 .db %00000000,%01100000
 .db %00000001,%10000000
 .db %00000010,%00000000
 .db %00001100,%00000000
 .db %00010000,%11100000
 .db %00100001,%00010000
 .db %01000010,%00001000
 .db %10000100,%00000100
 .db %11111100,%00000111
carm1:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000001,%11110000
 .db %00000110,%00001000
 .db %00011001,%11110110
 .db %01100111,%11111001
 .db %10011111,%11111101
 .db %00111111,%11111100
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000001
 .db %00000000,%00000010
 .db %00000000,%00000100
 .db %01111111,%11101000
 .db %11000000,%01111000
carm2:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000111,%11110000
 .db %00011000,%00001100
 .db %01100111,%10000010
 .db %10011111,%10011001
 .db %00111111,%10011000
 .db %00011111,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000001
 .db %00000000,%00000010
 .db %00000000,%00000100
 .db %00000000,%00001000
 .db %11111111,%11111000
carm3:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00011111,%11100000
 .db %00100000,%00010000
 .db %01001111,%11101100
 .db %01011111,%11110010
 .db %10011111,%11110001
 .db %00111111,%11110000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000001
 .db %00000000,%00000010
 .db %00000000,%00000100
 .db %00111111,%11001000
 .db %11000000,%00111000
carm4:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00001100,%00000000
 .db %00010100,%00010000
 .db %00101000,%00111000
 .db %01001000,%00111110
 .db %10010000,%01110001
 .db %00001111,%11100000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000001
 .db %00000000,%00000010
 .db %00000000,%00000100
 .db %00111111,%11001000
 .db %11000000,%00111000
carm5:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000001,%11110000
 .db %00001110,%00001100
 .db %00110001,%11100110
 .db %11001111,%11110001
 .db %00011111,%11100000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00001000
 .db %00000000,%00011001
 .db %00000000,%00110010
 .db %00000000,%00100100
 .db %11111111,%10001000
 .db %10000000,%11111000
carm6:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000110,%00000000
 .db %00011010,%00011000
 .db %01100100,%00111100
 .db %10001000,%00111111
 .db %01110000,%01110000
 .db %00001100,%01000000
 .db %00000011,%10000000
 .db %00000000,%00001100
 .db %00000000,%00011001
 .db %00000000,%00010010
 .db %00000000,%00000100
 .db %01111100,%00001000
 .db %11000011,%11111000
carb1:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %11000000,%00000000
 .db %00110000,%00000000
 .db %00001100,%00000000
 .db %00000110,%00000000
 .db %00000011,%00000000
 .db %11000001,%00000000
 .db %00100011,%00000000
 .db %00010010,%00000000
 .db %00001010,%00000000
 .db %00001100,%00000000
carb2:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %11000000,%00000000
 .db %00110000,%00000000
 .db %00001000,%00000000
 .db %00001000,%00000000
 .db %00000100,%00000000
 .db %11000100,%00000000
 .db %00100010,%00000000
 .db %00010010,%00000000
 .db %00001010,%00000000
 .db %00001100,%00000000
carb3:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %10000000,%00000000
 .db %01000000,%00000000
 .db %00110000,%00000000
 .db %00001100,%00000000
 .db %00000011,%00000000
 .db %11000000,%11000000
 .db %00100000,%01000000
 .db %00010000,%01000000
 .db %00001001,%10000000
 .db %00001110,%00000000
carb4:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %11100000,%00000000
 .db %00011100,%00000000
 .db %00000010,%00000000
 .db %00000001,%00000000
 .db %00000000,%10000000
 .db %11000000,%10000000
 .db %00100000,%10000000
 .db %00010000,%10000000
 .db %00001001,%00000000
 .db %00001110,%00000000
carb5:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %11111100,%00000000
 .db %00000011,%00000000
 .db %00000000,%10000000
 .db %00000000,%10000000
 .db %00000000,%10000000
 .db %11000000,%10000000
 .db %00100001,%10000000
 .db %00010011,%00000000
 .db %00001010,%00000000
 .db %00001100,%00000000
carb6:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %11110000,%00000000
 .db %00001110,%00000000
 .db %00000001,%00000000
 .db %00000000,%10000000
 .db %00000001,%00000000
 .db %11000001,%00000000
 .db %00100000,%10000000
 .db %00010000,%10000000
 .db %00001011,%00000000
 .db %00001100,%00000000

menupic:
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
 .db $ab,$00,$00,$00,$00,$00,$00,$00,$00,$00,$06,$ab
 .db $d5,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f5,$55
 .db $ab,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f6,$ab
 .db $d5,$7c,$7f,$ff,$e7,$ff,$ff,$ff,$ff,$ff,$f5,$55
 .db $ab,$7b,$7f,$ff,$e9,$ff,$ff,$7f,$ff,$ff,$f6,$ab
 .db $d5,$77,$ff,$ff,$ee,$ff,$ff,$ff,$ff,$ff,$f5,$55
 .db $ab,$77,$f1,$a7,$ef,$71,$c3,$79,$a7,$1d,$36,$ab
 .db $d5,$6f,$ed,$97,$ef,$ae,$bb,$76,$9a,$ec,$b5,$55
 .db $ab,$6f,$dd,$b7,$ef,$ad,$cf,$6e,$ba,$dd,$b6,$ab
 .db $d5,$6f,$dd,$bf,$ef,$a3,$f7,$6e,$ba,$3d,$f5,$55
 .db $ab,$6f,$5d,$bf,$ef,$6e,$fb,$6e,$ba,$ed,$f6,$ab
 .db $d5,$70,$e2,$bf,$f0,$f1,$87,$70,$bb,$1d,$f5,$55
 .db $ab,$7f,$ff,$ff,$ff,$ff,$ff,$fe,$ff,$ff,$f6,$ab
 .db $d5,$7f,$ff,$ff,$ff,$ff,$ff,$fe,$ff,$ff,$f5,$55
 .db $ab,$7f,$ff,$ff,$ff,$ff,$ff,$e1,$ff,$ff,$f6,$ab
 .db $d5,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f5,$55
 .db $ab,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f6,$ab
 .db $d5,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$05,$55
 .db $ab,$fe,$ff,$ff,$ff,$bf,$ff,$ff,$ff,$fd,$fe,$ab
 .db $d5,$56,$f0,$ff,$ff,$bf,$ff,$ff,$bf,$8d,$55,$55
 .db $aa,$aa,$ef,$ef,$ff,$b7,$ff,$ff,$3f,$75,$aa,$ab
 .db $d5,$56,$df,$ef,$ff,$bf,$ff,$ff,$bf,$75,$55,$55
 .db $aa,$aa,$df,$82,$ec,$37,$1f,$bb,$bf,$75,$aa,$ab
 .db $d5,$56,$e1,$ee,$eb,$b6,$ef,$bb,$bf,$75,$55,$55
 .db $aa,$aa,$fe,$ee,$eb,$b6,$ef,$d7,$bf,$75,$aa,$ab
 .db $d5,$56,$fe,$ee,$eb,$b6,$ef,$d7,$bf,$75,$55,$55
 .db $aa,$aa,$bd,$ee,$eb,$b6,$ef,$ef,$bb,$75,$aa,$ab
 .db $d5,$56,$c3,$ef,$0c,$37,$1f,$ef,$1b,$8d,$55,$55
 .db $aa,$aa,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fd,$aa,$ab
 .db $d5,$56,$00,$00,$00,$00,$00,$00,$00,$01,$55,$55
 .db $aa,$ab,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$aa,$ab
 .db $d5,$55,$55,$40,$00,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c4,$86,$20,$00,$e0,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$44,$46,$20,$01,$20,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c4,$25,$2f,$51,$0e,$ea,$aa,$aa,$ab
 .db $d5,$55,$55,$44,$24,$b7,$52,$12,$8d,$55,$55,$55
 .db $aa,$aa,$aa,$c4,$24,$79,$b2,$12,$8a,$aa,$aa,$ab
 .db $d5,$55,$55,$46,$24,$2e,$a1,$de,$8d,$55,$55,$55
 .db $aa,$aa,$aa,$c0,$40,$00,$00,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$40,$80,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c0,$00,$00,$00,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$4e,$80,$80,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c2,$40,$88,$00,$40,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$42,$21,$8e,$69,$e0,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$cc,$23,$ca,$99,$40,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$48,$22,$4a,$99,$40,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$ce,$22,$4e,$67,$40,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$40,$40,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c0,$80,$00,$00,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$40,$00,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c0,$00,$00,$00,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$4e,$83,$80,$80,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c2,$42,$00,$20,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$46,$22,$94,$f0,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c2,$23,$08,$a0,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$42,$22,$18,$a0,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$ce,$23,$a4,$a0,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$40,$40,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$c0,$80,$00,$00,$00,$0a,$aa,$aa,$ab
 .db $d5,$55,$55,$40,$00,$00,$00,$00,$0d,$55,$55,$55
 .db $aa,$aa,$aa,$ff,$ff,$ff,$ff,$ff,$fa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
titlepic:
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$e7,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$f8,$03,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$e0,$3f,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$03,$ff,$ff,$fe
 .db $7f,$ff,$fd,$ff,$ff,$ff,$ff,$ff,$80,$ff,$ff,$fe
 .db $7f,$ff,$fd,$ff,$ff,$ff,$ff,$ff,$c7,$bf,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$fd,$cb,$ef,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$c1,$7f,$ff,$fe
 .db $7f,$ff,$cf,$ff,$ff,$ff,$ff,$fc,$c3,$f7,$ff,$fe
 .db $7f,$fc,$00,$00,$ff,$ff,$ff,$f8,$c2,$bd,$ff,$fe
 .db $7f,$fc,$00,$00,$01,$ff,$ff,$f8,$ca,$04,$ff,$fe
 .db $7f,$ef,$00,$00,$00,$03,$ff,$f8,$cf,$04,$ff,$fe
 .db $7f,$ef,$80,$00,$00,$00,$07,$fb,$de,$04,$03,$fe
 .db $7f,$c0,$00,$00,$00,$00,$00,$00,$11,$e0,$e0,$fe
 .db $7f,$d0,$18,$00,$00,$00,$38,$00,$0f,$00,$80,$7e
 .db $7f,$d4,$00,$00,$00,$00,$e0,$00,$00,$00,$00,$3e
 .db $7f,$fe,$30,$00,$00,$01,$e1,$00,$00,$00,$00,$3e
 .db $7f,$ff,$e0,$80,$00,$08,$0c,$60,$00,$00,$00,$3e
 .db $7e,$ff,$f8,$00,$00,$00,$00,$60,$60,$00,$00,$3e
 .db $7f,$ff,$ff,$80,$00,$00,$10,$00,$70,$00,$01,$be
 .db $7f,$ff,$ff,$00,$00,$00,$00,$00,$f0,$00,$01,$be
 .db $7f,$ff,$ff,$f8,$00,$00,$00,$00,$70,$00,$03,$be
 .db $7f,$ff,$ff,$ff,$00,$00,$00,$01,$b0,$00,$07,$fe
 .db $7f,$ff,$ff,$ff,$00,$00,$00,$01,$d0,$00,$06,$fe
 .db $5f,$ff,$ff,$ff,$00,$00,$00,$03,$90,$00,$04,$9e
 .db $7f,$ff,$ff,$ff,$00,$ff,$e0,$03,$38,$00,$08,$be
 .db $7f,$ff,$ff,$ff,$00,$ff,$f0,$00,$78,$00,$e8,$be
 .db $7f,$ff,$ff,$ff,$e0,$7f,$f0,$00,$78,$00,$e8,$be
 .db $7f,$ff,$ff,$ff,$f8,$7f,$f0,$00,$e8,$01,$e8,$3e
 .db $7f,$ff,$ff,$ff,$f8,$3f,$f0,$00,$68,$01,$c8,$7e
 .db $7f,$ff,$ff,$ff,$ff,$00,$00,$00,$08,$00,$82,$7e
 .db $7f,$ff,$ff,$ff,$ff,$80,$00,$01,$88,$00,$00,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$80,$01,$c0,$00,$08,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$fc,$09,$c0,$00,$18,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$fb,$1f,$ff,$f8,$1e
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$3f,$ff,$f9,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$7f,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$0f,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$ff,$ff,$ef,$be
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$fb,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$df,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
pic:
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
 .db $aa,$ab,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$aa,$ab
 .db $d5,$56,$00,$00,$00,$00,$00,$00,$00,$00,$d5,$55
 .db $aa,$aa,$38,$9c,$06,$3e,$67,$9f,$17,$f8,$aa,$ab
 .db $d5,$56,$68,$92,$07,$10,$81,$23,$12,$24,$d5,$55
 .db $aa,$aa,$41,$51,$04,$bc,$c3,$63,$97,$a2,$aa,$ab
 .db $d5,$56,$83,$de,$04,$f8,$33,$5f,$57,$3c,$d5,$55
 .db $aa,$aa,$8a,$56,$04,$a1,$13,$47,$34,$2c,$aa,$ab
 .db $d5,$56,$76,$51,$07,$bd,$f7,$bb,$17,$a2,$d5,$55
 .db $aa,$aa,$00,$00,$00,$00,$00,$00,$00,$00,$aa,$ab
 .db $d5,$57,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$d5,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$55,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$57,$ff,$ff,$ff,$ff,$f5,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$00,$2a,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$67,$f1,$31,$e7,$35,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$81,$11,$b8,$48,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$c1,$11,$24,$d8,$b5,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$31,$11,$26,$d0,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$11,$19,$24,$d9,$b5,$55,$55,$55
 .db $aa,$aa,$aa,$ad,$f1,$0e,$3d,$ef,$2a,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$00,$35,$55,$55,$55
 .db $aa,$aa,$aa,$af,$ff,$ff,$ff,$ff,$ea,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
Engine:
 bcall(_ClrLcdFull)
 bcall(_homeup)
 ld hl, picfile
 ld bc,768
 ld de,plotSScreen
 ldir        
 call ionfastcopy 
 ld a,1
 ld (ratio),a
  
bubba:
 call sprite
 call dispstat
maingcsc: 
 bcall(_getcsc)
 cp 01h
 jp z,downe
 cp 02h
 jp z,lefte
 cp 03h
 jp z,righte
 cp 04h
 jp z,upe
 cp 0Fh
 jp z,exite
 cp 38h
 jp z,exitprogram
 jp maingcsc

righte:
 call sprite
 ld a,(ratio)
 cp 3
 jp z,right2e
 ld a,(ratio)
 inc a
 ld (ratio),a
 jp bubba

right2e:
 ld a,1
 ld (ratio),a
 jp bubba

lefte:
 call sprite
 ld a,(ratio)
 cp 1
 jp z,left2e
 ld a,(ratio)
 dec a
 ld (ratio),a
 jp bubba

left2e:
 ld a,3
 ld (ratio),a
 jp bubba

exite:
 jp rims
upe:
downe:
 ret

i4sprite:
 call clear
 ld hl,6500
 ld (Cost),hl
 ld hl,180
 ld (bhp),hl
 ld hl,450
 ld (weight),hl
 ld a,165
 ld (torque),a
 ld b,16
 ld c,2
 ld a,5
 ld l,a
 ld a,39
 ld ix,i4
 call ionLargeSprite
 call ionfastcopy
 ret

v6sprite:
 call clear
 ld hl,7300
 ld (Cost),hl
 ld hl,260
 ld (bhp),hl
 ld hl,580
 ld (weight),hl
 ld a,240
 ld (torque),a
 ld b,16
 ld c,2
 ld a,5
 ld l,a
 ld a,39
 ld ix,v6
 call ionLargeSprite
 call ionfastcopy
 ret

v8sprite:
 call clear
 ld hl,8200
 ld (Cost),hl
 ld hl,350
 ld (bhp),hl
 ld hl,735
 ld (weight),hl
 ld hl,330
 ld (torque),hl
 ld b,16
 ld c,2
 ld a,5
 ld l,a
 ld a,39
 ld ix,v8
 call ionLargeSprite
 call ionfastcopy
 ret

sprite:
 ld a,(ratio)
 cp 1
 call z,i4sprite
 cp 2
 call z,v6sprite
 cp 3
 call z,v8sprite
 ret

picture:
 ld hl, picfile
 ld bc,768
 ld de,plotSScreen
 ldir
 call ionfastcopy
 ret

dispstat:
 ld hl,$0018
 ld (pencol),hl
 ld hl,$0021
 ld (penrow),hl
 ld a,(ratio)
 cp 1
 ld l,a
 ld h,0
 call vdisphl
 ld hl,$0052
 ld (pencol),hl
 ld hl,$0021
 ld (penrow),hl
 ld hl,(weight)
 call vdisphl
 ld hl,$0016
 ld (pencol),hl
 ld hl,$002C
 ld (penrow),hl
 ld hl,(BHP)
 call vdisphl
 ld hl,$004C
 ld (pencol),hl
 ld hl,$002C
 ld (penrow),hl
 ld a,(Ratio)
 ld l,a
 ld h,0
 call vdisphl
 ld hl,$004C
 ld (pencol),hl
 ld hl,$0037
 ld (penrow),hl
 ld hl,(cost)
 call vdisphl
 ld hl,$0022
 ld (pencol),hl
 ld hl,$0037
 ld (penrow),hl
 ld hl,(torque)
 call vdisphl
 ret

vdisphl:
 bcall(_SETXXXXOP2)
 bcall(_OP2TOOP1)
 ld a,5
 bcall(_DISPOP1A)
 ret

clear:
 ld hl,0
 ld (cost),hl
 ld (bhp),hl
 ld (torque),hl
 ld (weight),hl

v8:
 .db %00000101,%00010100
 .db %00001010,%11101010
 .db %00010101,%11010101
 .db %00101011,%10101001
 .db %00110111,%11010011
 .db %01001110,%00100101
 .db %10000110,%00101001
 .db %10011000,%00010010
 .db %10101111,%10010110
 .db %10110111,%01101010
 .db %01011011,%10110100
 .db %01010101,%01011000
 .db %01011001,%10010000
 .db %00111001,%11100000
 .db %00011011,%00000000
 .db %00011100,%00000000

v6:
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000011,%10010000
 .db %00000101,%11101000
 .db %00001011,%11011000
 .db %00010111,%10111000
 .db %00101111,%01111000
 .db %01011110,%11011000
 .db %01111111,%10101000
 .db %00101101,%11010000
 .db %01000000,%10100000
 .db %01010110,%11000000
 .db %00101111,%10000000
 .db %00011111,%00000000
 .db %00001100,%00000000
 .db %00000000,%00000000
i4:
 .db %00000000,%00000000
 .db %00000001,%11111000
 .db %00000010,%11011100
 .db %00000101,%10101010
 .db %00001011,%01010010
 .db %00001111,%10100110
 .db %00010101,%01001010
 .db %00010111,%01010100
 .db %00001110,%10101000
 .db %00010001,%11010000
 .db %00010111,%11100000
 .db %00010011,%11000000
 .db %00001110,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000
 .db %00000000,%00000000

picfile:
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$57,$ff,$ff,$ff,$ff,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$ac,$00,$00,$00,$02,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$54,$00,$00,$00,$03,$55,$55,$55,$55
 .db $aa,$aa,$aa,$af,$ff,$ff,$ff,$fe,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $bf,$00,$00,$00,$00,$00,$11,$20,$86,$00,$00,$01
 .db $88,$00,$00,$00,$00,$00,$0b,$20,$02,$10,$00,$01
 .db $88,$9f,$72,$00,$00,$00,$0b,$4e,$bb,$bd,$00,$01
 .db $88,$59,$b0,$00,$00,$00,$0b,$56,$ca,$90,$00,$01
 .db $88,$6d,$c0,$00,$00,$00,$0d,$58,$ce,$90,$00,$01
 .db $88,$2f,$72,$00,$00,$00,$04,$8e,$fe,$91,$00,$01
 .db $80,$4c,$00,$00,$00,$00,$00,$00,$08,$00,$00,$01
 .db $80,$4c,$00,$00,$00,$00,$00,$00,$70,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $9d,$80,$00,$00,$00,$00,$07,$00,$10,$00,$00,$01
 .db $94,$80,$00,$00,$00,$00,$04,$81,$00,$00,$00,$01
 .db $94,$ef,$20,$00,$00,$00,$04,$5f,$d6,$40,$00,$01
 .db $9c,$a9,$00,$00,$00,$00,$07,$b5,$19,$00,$00,$01
 .db $93,$ad,$00,$00,$00,$00,$05,$a5,$19,$00,$00,$01
 .db $9d,$af,$20,$00,$00,$00,$04,$5d,$16,$40,$00,$01
 .db $80,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $bf,$00,$00,$00,$00,$00,$01,$c0,$00,$00,$00,$01
 .db $88,$00,$00,$00,$00,$00,$03,$40,$10,$00,$00,$01
 .db $88,$6f,$79,$72,$00,$00,$02,$19,$fc,$80,$00,$01
 .db $88,$9d,$99,$b0,$00,$00,$04,$27,$10,$00,$00,$01
 .db $88,$98,$99,$c0,$00,$00,$04,$64,$90,$00,$00,$01
 .db $88,$68,$ff,$72,$00,$00,$03,$9b,$90,$80,$00,$01
 .db $80,$00,$30,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $80,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$01
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff

Weight:
 .db 0,0
Bhp:
 .db 0,0
Cost:
 .db 0,0
Torque:
 .db 0,0

Rims:
 bcall(_ClrLCDFull)     
 bcall(_cleargbuf)
 ld a,1
 ld (temp),a
 ld a,30
 ld (X),a
 ld a,35
 ld (Y),a
 ld hl, pic
 ld bc,768
 ld de,plotSScreen
 ldir
 call ionfastcopy      
 call carfront
 call carend
 call carmiddle
 call findrim
main_kRim:
 bcall(_getcsc)
 cp 01h
 jp z,upRim
 cp 02h
 jp z,leftRim
 cp 03h
 jp z,rightRim
 cp 04h
 jp z,upRim
 cp 0Fh
 jr z,exitrim
 cp 38h
 jp z,exitprogram
 jr main_kRim 

exitrim:
 jp final

uprim:
 call findrim
 ld a,(Y)
 cp 36
 jp z,makey35
 cp 35
 jp z,makey36

makey36:
 ld a,36
 ld (Y),a
 call findrim
 jp main_krim

makey35:
 ld a,35
 ld (Y),a
 call findrim
 jp main_krim

RightRim:
 call findrim
 ld a,(temp)
 inc a
 ld (temp),a
 ld a,(temp)
 cp 9
 jr z,rightrim2
 call findrim
 jp main_krim

Rightrim2:
 ld a,1
 ld (temp),a
 call findrim
 jp main_krim

Leftrim:
 call findrim
 ld a,(temp)
 dec a
 ld (temp),a
 ld a,(temp)
 cp 0
 jr z,leftrim2
 ld (temp),a
 call findrim
 jp main_krim

leftrim2:
 ld a,8
 ld (temp),a
 call findrim
 jp main_krim

FindRim:
 ld a,(temp)
 cp 1
 call z,putrim1
 cp 2
 call z,putrim2
 cp 3
 call z,putrim3
 cp 4
 call z,putrim4
 jr findrim2

FindRim2:
 ld a,(temp)
 cp 5
 call z,putrim5
 cp 6
 call z,putrim6
 cp 7
 call z,putrim7
 cp 8
 call z,putrim8
 ret

putrim1: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim1
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim1
 call ionPutSprite
 call ionfastcopy 
 ld a,30
 ld (X),a
 ret
 
putrim2: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim2
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim2
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim3: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim3
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim3
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim4: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim4
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim4
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim5: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim5
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim5
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim6: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim6
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim6
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim7: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim7
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim7
 call ionPutSprite
 call ionfastcopy
 ld a,30
 ld (X),a
 ret

putrim8: 
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim8
 call ionPutSprite
 call ionfastcopy
 ld b,23
 ld a,(X)
 add a,b
 ld (X),a
 ld b,8
 ld a,(Y)
 ld l,a
 ld a,(X)
 ld ix,rim8
 call ionPutSprite
 call ionfastcopy 
 ld a,30
 ld (X),a
 ret

rim1:
 .db %00000000
 .db %00000000
 .db %00101000
 .db %10010010
 .db %10101010
 .db %01000100
 .db %00111000
 .db %00000000

rim2:
 .db %00000000
 .db %00000000
 .db %00010000
 .db %10111010
 .db %10010010
 .db %01000100
 .db %00111000
 .db %00000000

rim3:
 .db %00000000
 .db %00000000
 .db %00111000
 .db %10101010
 .db %10111010
 .db %01000100
 .db %00111000
 .db %00000000

rim4:
 .db %00000000
 .db %00111000
 .db %01101100
 .db %11000110
 .db %11101110
 .db %01111100
 .db %00111000
 .db %00000000

rim5:
 .db %00000000
 .db %00101000
 .db %01011100
 .db %11000110
 .db %11110110
 .db %01101100
 .db %00111000
 .db %00000000

rim6:
 .db %00000000
 .db %00101000
 .db %01000100
 .db %10010010
 .db %01000100
 .db %01101100
 .db %00111000
 .db %00000000

rim7:
 .db %00000000
 .db %00110000
 .db %00101100
 .db %11010110
 .db %11101010
 .db %01011100
 .db %00111000
 .db %00000000
rim8:
 .db %00000000
 .db %00110000
 .db %00010100
 .db %11101110
 .db %11010010
 .db %01011100
 .db %00111000
 .db %00000000

X:
 .db 0
Y:
 .db 0
finalg:
 .db 0
topspeed:
 .db 0
zerotosixty:
 .db 0

Final:
 bcall(_ClrLcdFull)
 bcall(_homeup)
 bcall(_cleargbuf)
 ld a,1
 ld (temp),a
 ld hl, finalpic
 ld bc,768
 ld de,plotSScreen
 ldir        
 call ionfastcopy 
 call carfront
 call carend
 call carmiddle
 call findrim
 call dispstatfinal
 xor a
 ld (andy),hl
Finalgetk:
 bcall(_getcsc)
 cp 01h
 jp z,upstat
 cp 04h
 jp z,downstat
 cp 0Fh
 jr z,exitstat
 cp 38h
 jp z,exitprogram
 jr finalgetk

exitstat:
 jp mainmenu

upstat:
 call dispstatfinal
 ld a,(temp)
 cp 7
 jp z,upstat2
 ld a,(temp)
 inc a
 ld (temp),a
 call dispstatfinal
 jp finalgetk 

upstat2
 ld a,1
 ld (temp),a
 call dispstatfinal
 jp finalgetk

downstat:
 call dispstatfinal
 ld a,(temp)
 cp 1
 jp z,downstat2
 ld a,(temp)
 dec a
 ld (temp),a
 call dispstatfinal
 jp finalgetk 

downstat2
 ld a,7
 ld (temp),a
 call Dispstatfinal
 jp finalgetk

Dispstatfinal:
 ld a,(temp)
 cp 1
 jp z,CostF
 cp 2
 jp z,WeightF
 cp 3
 jp z,zerotosixtyF
 cp 4
 jp z,topspeedF
dispfinalstat2:
 ld a,(temp)
 cp 5
 jp z,bhpF
 cp 6
 jp z,torqueF
 cp 7
 jp z,groundcoeficient
 ret

CostF:
 ld b,6
 ld c,3
 ld a,51
 ld l,a
 ld a,5
 ld ix,coststr
 call ionLargeSprite
 call ionfastcopy
 xor a
 ld (andy),hl
 ld hl,(cost)
 ld de,20000
 add hl,de
 ld (Andy),hl
 call disp
 ret

WeightF:
 ld b,8
 ld c,4
 ld a,51
 ld l,a
 ld a,5
 ld ix,weightstr
 call ionLargeSprite
 call ionfastcopy
 xor a
 ld (andy),hl
 ld hl,(weight)
 ld de,2000
 add hl,de
 ld (Andy),hl
 call disp
 ret

zerotosixtyF:
 ld b,6
 ld c,3
 ld a,51
 ld l,a
 ld a,5
 ld ix,zerotosixtystr
 call ionLargeSprite
 call ionfastcopy
 ld a,(groundb)
 dec a
 ld l,a
 ld h,0
 ld (andy),hl
 call disp
 ret

topspeedF:
 ld b,7
 ld c,5
 ld a,51
 ld l,a
 ld a,5
 ld ix,topspeedstr
 call ionLargeSprite
 call ionfastcopy
 ld a,(ratio)
 cp 1
 jp z,topspeedi4
 cp 2
 jp z,topspeedv6
 cp 3
 jp z,topspeedv8
topspeedf2:
 call disp
 ret

topspeedi4:
 ld a,(ground)
 ld b,a
 ld a,160
 sub b
 ld l,a
 ld h,0 
 ld (andy),hl
 jp topspeedf2

Topspeedv6:
 ld a,(ground)
 ld b,a
 ld a,180
 sub b
 ld l,a
 ld h,0
 ld (andy),hl
 jp topspeedf2
 
Topspeedv8:
 ld a,(ground)
 ld b,a
 ld a,195
 sub b
 ld l,a
 ld h,0
 ld (andy),hl
 jp topspeedf2

bhpF:
 ld b,6
 ld c,3
 ld a,51
 ld l,a
 ld a,5
 ld ix,bhpstr
 call ionLargeSprite
 call ionfastcopy
 xor a
 ld (andy),hl
 ld a,(ground)
 sub a
 sub a
 ld (de),a
 ld hl,(BHP)
 add hl,de
 ld (Andy),hl
 call disp
 ret

TorqueF:
 ld b,7
 ld c,4
 ld a,51
 ld l,a
 ld a,5
 ld ix,torquestr
 call ionLargeSprite
 call ionfastcopy
 xor a
 ld (andy),hl
 ld a,(ground)
 sub a
 sub a
 ld (de),a
 ld hl,(torque)
 add hl,de
 ld (Andy),hl
 call disp
 ret

groundcoeficient:
 ld b,6
 ld c,5
 ld a,51
 ld l,a
 ld a,5
 ld ix,groundcstr
 call ionlargesprite
 call ionfastcopy
 xor a
 ld a,(ground)
 ld b,a
 ld a,(groundm)
 add a,b
 ld b,a
 ld a,(groundb)
 add a,b
 ld l,a
 ld h,0
 ld (Andy),hl
 call disp
 ret

disp:
 ld hl,$0030
 ld (pencol),hl
 ld hl,$0033
 ld (penrow),hl
 ld hl,(ANDY)
 call vdisphl
 ret

coststr:
 .db %00000111,%00000000,%00000000
 .db %00001001,%00000000,%01000000
 .db %00001000,%01100111,%11100000
 .db %00010000,%10010100,%01000000
 .db %00010000,%10010010,%01000000
 .db %00001110,%01101110,%01000000

WeightSTR
 .db %00001001,%00100000,%10000000,%00000000
 .db %00001001,%00100000,%00000010,%00010000
 .db %00001011,%01001110,%10111011,%10111000
 .db %00001011,%01010110,%11001010,%10010000
 .db %00000100,%11011000,%11001010,%10010000
 .db %00000100,%10001110,%10111010,%10010000
 .db %00000000,%00000000,%00001000,%00000000
 .db %00000000,%00000000,%01110000,%00000000

Zerotosixtystr:
 .db %00001110,%00000100,%01110000
 .db %00010010,%00001000,%10010000
 .db %00010001,%00010100,%10001000
 .db %00010001,%11011010,%10001000
 .db %00010010,%00010010,%10010000
 .db %00001110,%00001110,%01110000

Topspeedstr:
 .db %00111111,%00000000,%00011100,%00000000,%00000000
 .db %00001000,%00000000,%00100000,%00000000,%00000010
 .db %00001000,%11011110,%00100001,%11101110,%11101110
 .db %00001001,%00110010,%00011101,%00110111,%01110010
 .db %00001001,%00110010,%00000101,%00111001,%10010010
 .db %00001000,%11011110,%00111101,%11101110,%11101110
 .db %00000000,%00010000,%00000001,%00000000,%00000000

BhpStr:
 .db %00001110,%01000101,%10000000
 .db %00001010,%01000110,%01000000
 .db %00001010,%01000110,%01000000
 .db %00001110,%01111111,%10000000
 .db %00001001,%01000110,%00000000
 .db %00001110,%01000110,%00000000

Torquestr:
 .db %00011111,%10000000,%00000000,%00000000
 .db %00000100,%00000000,%00000000,%00000000
 .db %00000100,%01100011,%01111001,%01110000
 .db %00000100,%10010100,%10011001,%10110000
 .db %00000100,%10010100,%10011001,%11000000
 .db %00000100,%01100100,%01100111,%01110000
 .db %00000000,%00000000,%00100000,%00000000

GroundCstr:
 .db %00000011,%10000000,%00000000,%00000000,%11100000
 .db %00000100,%00000000,%00000000,%00001001,%00100000
 .db %00001000,%00111011,%01001001,%10111001,%00000000
 .db %00001011,%10100100,%11001010,%11001010,%00000000
 .db %00001000,%10100100,%11001100,%11001010,%00000000
 .db %00000111,%00000011,%00111000,%10111001,%11000000

finalpic:
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
 .db $aa,$ab,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$aa,$ab
 .db $d5,$56,$00,$00,$00,$00,$00,$00,$00,$00,$d5,$55
 .db $aa,$aa,$00,$79,$00,$10,$39,$00,$80,$00,$aa,$ab
 .db $d5,$56,$00,$40,$00,$10,$41,$00,$80,$00,$d5,$55
 .db $aa,$aa,$00,$41,$71,$d0,$43,$9d,$cc,$00,$aa,$ab
 .db $d5,$56,$00,$79,$4a,$50,$31,$24,$90,$00,$d5,$55
 .db $aa,$aa,$00,$41,$4a,$50,$09,$24,$9c,$00,$aa,$ab
 .db $d5,$56,$00,$41,$4a,$50,$89,$24,$84,$00,$d5,$55
 .db $aa,$aa,$00,$41,$49,$d0,$71,$1c,$9c,$00,$aa,$ab
 .db $d5,$57,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$d5,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa,$ab
 .db $d5,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
 .db $aa,$aa,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $d5,$55,$80,$00,$00,$00,$00,$00,$00,$03,$55,$55
 .db $aa,$aa,$80,$00,$00,$00,$00,$00,$00,$02,$aa,$ab
 .db $df,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f5
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $a8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1b
 .db $d8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15
 .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff


Andy:
 .db 0,0

.end
END
